У меня есть довольно простой фрагментный шейдер с ветвью, и я немного не уверен, как он обрабатывается компилятором 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;
}
Я читал из AMD. документ , что иногда выполняются обе ветви, что в данном случае было бы не очень хорошей идеей. Без дополнительной информации и доступа к разборке я не уверен, что думать об этом и как этого избежать, если это проблема?
А также, насколько я понимаю, ветвление, основанное на унифицированной переменной, не повлечет за собой каких-либо значительных накладных расходов, поскольку она постоянна за один проход?