Я слышал, что если в шейдерах следует избегать операторов, потому что обе части операторов будут выполнены, а неправильные будут отброшены (что вредит производительности).
Это все еще проблема в DirectX 10? Кто-то сказал мне, что в этом будет выполнена только правая ветка.
Для иллюстрации у меня есть код:
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;
}
Есть ли другой способ сделать это быстрее?
Если так, как это сделать?
Обе ветви выглядят одинаково, единственное отличие - это значения «констант» ( y1, y2, b1, b2
одинаковые для всех пикселей в Pixel Shader).