GLSL:从统一到永不修改的变量的赋值是否会导致复制?

时间:2018-01-16 09:24:43

标签: performance opengl glsl shader

我正在优化glUniform次来电。在某些着色器中,我有很多vec2统一变量。

最初他们的声明看起来像是

uniform vec2 foo;
uniform vec2 bar;
...

优化后我声明了以下内容:

uniform vec2 v2params[42];
vec2 foo = v2params[0];
vec2 bar = v2params[0];
...

在这种情况下,GLSL 130不允许将foo, bar, ...限定为const,但在进一步的代码中永远不会修改它们。

现代GLSL编译器会猜测它们的常量并消除复制吗?或者我应该使用v2params[0]而不是foo之类的值来确保没有复制?后者将显着降低代码可读性。

PS。我仅限于OpenGL 2和WebGL 1,因此UBO不可用。

0 个答案:

没有答案