1
フラグメントシェーダーでこれが非常に遅いのはなぜですか?
私はいくつかのFPS測定コードをWebGLでセットアップしました(このSO回答に基づいて)、フラグメントシェーダーのパフォーマンスに奇妙な点を発見しました。このコードは、1024x1024のキャンバス上に単一のクワッド(または2つの三角形)をレンダリングするだけなので、すべての魔法はフラグメントシェーダーで発生します。 このシンプルなシェーダー(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; …