Поведение ветвления GLSL

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

А также, насколько я понимаю, ветвление, основанное на унифицированной переменной, не повлечет за собой каких-либо значительных накладных расходов, поскольку она постоянна за один проход?

13
задан ronag 28 November 2010 в 22:30
поделиться