He escuchado que si las declaraciones deben evitarse en los sombreadores, porque ambas partes de las declaraciones se ejecutarán y luego se eliminará el error (lo que perjudica el rendimiento).
¿Sigue siendo un problema en DirectX 10? Alguien me dijo que en él solo se ejecutará la rama correcta.
Para la ilustración tengo el 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;
}
¿Hay alguna otra forma de hacerlo más rápido?
Si es así, ¿cómo hacerlo?
Ambas ramas se ven similares, la única diferencia son los valores de "constantes" ( y1, y2, b1, b2
son los mismos para todos los píxeles en Pixel Shader).