shadertoy学习 第3课
注意下面的segment函数,计算了uv点到直线的距离,小于width就是白色
//封装绘制网格函数
vec3 grid(vec2 uv)
{
vec2 cell = fract(uv);//取小数部分
vec3 col=vec3(0.);
//网格绘制
if(abs(cell.y)<fwidth(uv.y)) //横坐标绘制,小于一个像素,就是红色
{
col.r=1.0;
}
if(abs(cell.x)<fwidth(uv.x)) //纵坐标绘制,小于一个像素,就是蓝色
{
col.b=1.0;
}
//x y 坐标轴绘制
if(abs(uv.y)<fwidth(uv.y)) //横坐标绘制
{
col=vec3(1,1,1);
}
if(abs(uv.x)<fwidth(uv.x)) //纵坐标绘制
{
col=vec3(1,1,1);
}
return col;
}
//坐标归一化
vec2 fixUV(in vec2 uv, in float scale)
{
return scale*(2.0*uv-iResolution.xy)/min(iResolution.x,iResolution.y);
}
// 用向量计算点到直线距离,小于width就认为在这个直线上
float segment(in vec2 uv, in vec2 p0, in vec2 p1, float width)
{
vec2 a = uv - p0;
vec2 b = p1 - p0;
vec2 c = dot(a, b)/dot(b,b)*b;
vec2 e = c - a;
float d = length(e);
if(d<width)
return 1.;
else
return 0.;
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// 3x3大小的坐标
vec2 uv = fixUV(fragCoord, 3.0);
// Output to screen
// fragColor = vec4(grid(uv), 1.0);
vec3 color = vec3( segment(uv, vec2(0., 0.), vec2(1., 1.), 0.01));
fragColor = vec4(color, 1.0);
}
画线段,clamp怎么理解???
//封装绘制网格函数
vec3 grid(vec2 uv)
{
vec2 cell = fract(uv);//取小数部分
vec3 col=vec3(0.);
//网格绘制
if(abs(cell.y)<fwidth(uv.y)) //横坐标绘制,小于一个像素,就是红色
{
col.r=1.0;
}
if(abs(cell.x)<fwidth(uv.x)) //纵坐标绘制,小于一个像素,就是蓝色
{
col.b=1.0;
}
//x y 坐标轴绘制
if(abs(uv.y)<fwidth(uv.y)) //横坐标绘制
{
col=vec3(1,1,1);
}
if(abs(uv.x)<fwidth(uv.x)) //纵坐标绘制
{
col=vec3(1,1,1);
}
return col;
}
//坐标归一化
vec2 fixUV(in vec2 uv, in float scale)
{
return scale*(2.0*uv-iResolution.xy)/min(iResolution.x,iResolution.y);
}
// 用向量计算点到直线距离,小于width就认为在这个直线上
float segment(in vec2 uv, in vec2 p0, in vec2 p1, float width)
{
vec2 a = uv - p0;
vec2 b = p1 - p0;
vec2 c = clamp(dot(a, b)/dot(b,b), 0., 1.)*b;
vec2 e = c - a;
float d = length(e);
if(d<width)
return 1.;
else
return 0.;
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// 3x3大小的坐标
vec2 uv = fixUV(fragCoord, 3.0);
// Output to screen
vec3 color = grid(uv);
color += vec3( segment(uv, vec2(0., 0.), vec2(1., 2.), fwidth(uv.x)));
fragColor = vec4(color, 1.0);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2021-03-08 linux下访问物理地址
2019-03-08 qt ShaderEffect上的ShaderToy
2019-03-08 i-chips融合芯片分析
2019-03-08 交叉编译qxmpp cmake格式工程