Я чув, що якщо тверджень слід уникати в шейдерах, тому що обидві частини висловлювань будуть виконані, а тоді неправильне буде випадене (що шкодить продуктивності).
Це все ще проблема в 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).