1
为什么片段着色器中的这种条件如此缓慢?
我已经在WebGL中建立了一些FPS测量代码(基于此SO答案),并且发现我的片段着色器的性能有些奇怪。该代码仅在1024x1024画布上呈现一个四边形(或者说是两个三角形),因此所有魔术都发生在片段着色器中。 考虑一下这个简单的着色器(GLSL;顶点着色器只是一个传递): // some definitions void main() { float seed = uSeed; float x = vPos.x; float y = vPos.y; float value = 1.0; // Nothing to see here... gl_FragColor = vec4(value, value, value, 1.0); } 因此,这只是渲染白色画布。在我的机器上,平均速度约为30 fps。 现在,让我们增加数字运算的难度,并根据与位置相关的噪声的几个八度音程来计算每个片段: void main() { float seed = uSeed; float x = vPos.x; …