注意下面的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);
}
标签:shadertoy,float,uv,学习,abs,vec2,vec3,col From: https://www.cnblogs.com/cute/p/17195497.html