J'ai entendu dire que si les instructions devaient être évitées dans les shaders, parce que les deux parties des instructions seront exécutées et que le mauvais sera supprimé (ce qui nuit à la performance).
C'est toujours un problème dans DirectX 10? Quelqu'un m'a dit que seule la bonne branche serait exécutée.
Pour l'illustration j'ai le code:
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-t-il un autre moyen de le rendre plus rapide?
Si oui, comment faire?
Les deux branches se ressemblent, la seule différence est les valeurs des "constantes" ( y1, y2, b1, b2
sont les mêmes pour tous les pixels dans Pixel Shader).