glsl算法绘图之形状(一)
长方形
思路:
if ( (X GREATER THAN 1) AND (Y GREATER THAN 1) )
paint white
else
paint black
代码:
#ifdef GL_ES
precision mediump float;
#endif
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
void main(){
vec2 st = gl_FragCoord.xy/u_resolution.xy;
vec3 color = vec3(0.0);
// bottom-left
vec2 bl = step(vec2(0.1),st);
float pct = bl.x * bl.y;
// top-right
vec2 tr = step(vec2(0.1),1.0-st);
pct *= tr.x * tr.y;
color = vec3(pct);
gl_FragColor = vec4(color,1.0);
}

扩展
- 改变长方形的比例和大小。
- 用 smoothstep() 函数代替 step() 函数,试试在相同的代码下会有什么不同。注意通过改变取值,你可以不仅可以得到模糊边界也可以由漂亮的

本文探讨了使用GLSL在图形渲染中绘制长方形的方法,通过step和smoothstep函数实现边缘效果,并扩展到使用圆形,通过distance(), length()和sqrt()计算像素到中心的距离。同时介绍了如何创建可调整的形状函数和仅绘制边界的函数。
最低0.47元/天 解锁文章
1455

被折叠的 条评论
为什么被折叠?



