【发布时间】:2021-08-01 01:43:21
【问题描述】:
几周前我开始学习 WebGL,在尝试通过实践学习时,我偶然发现了一个可以使用 p5.js 实现的着色器的简单示例。
在这个例子中,我使用这个片段从屏幕中心开始创建同心圆,其中u_resolution 和u_time 是从 p5 脚本传递下来的制服,分别为 [windowWidth, windowHeight] 和 frameCount如下:
void main(void) {
float maxAxis = max(u_resolution.x, u_resolution.y);
vec2 uv = gl_FragCoord.xy / maxAxis;
vec2 center = u_resolution / maxAxis;
gl_FragColor = vec4(
vec3(sin(u_time + distance(uv, center) * 255.0)),
1.0);
}
使用这个例子,我可以实现我想要的,但是我不明白为什么我不能使用公式计算片段的中心:
vec2 center = vec2(u_resolution.x * 0.5, u_resolution.y * 0.5);
如果我这样做,那么它会弄乱整个渲染。
是否存在我缺少的坐标系不匹配或其他问题?
为了更好的解释,我将我在 CodePen 中所做的原始实验的 sn-p 包含在 here 中。
【问题讨论】:
标签: javascript shader webgl p5.js fragment-shader