Ouvi dizer que se as declarações devem ser evitadas em shaders, porque ambas as partes serão executadas e o errado será descartado (o que prejudica o desempenho).
Ainda existe um problema no DirectX 10? Alguém me disse que nele apenas o ramo certo será executado.
Para a ilustração, tenho o código:
float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3;
if(x>0.5){
x = 10 * y1 + b1;
}else{
x = 10 * y2 + b2;
}
Existe outra maneira de torná-lo mais rápido?
Se sim, como faz?
Os dois ramos são parecidos, a única diferença são os valores de "constantes" ( y1, y2, b1, b2
são iguais para todos os pixels no Pixel Shader).