我有一个带有分支的相当简单的片段着色器,我有点不确定GLSL编译器如何处理它以及它将如何影响性能.
uniform sampler2D sampler;
uniform vec2 texSize;
uniform vec2 targetSize;
void main()
{
vec4 color;
if(texSize == targetSize)
color = texture2DNearest(sampler, gl_TexCoord[0]);
else
color = texture2DBicubic(sampler, gl_TexCoord[0]);
gl_FragColor = color;
}
Run Code Online (Sandbox Code Playgroud)
我从AMD的文档中读到,有时两个分支都被执行,在这种情况下这不是一个好主意.如果没有进一步的信息或访问反汇编,我不确定该怎么想,如果有问题怎么避免呢?
而且根据我的理解,基于统一变量的分支不会产生任何显着的开销,因为它在一次传递中是恒定的?