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