Замедляет ли оператор If мой шейдер?

Я хочу знать, действительно ли «операторы If» внутри шейдеров (вершина / фрагмент / пиксель ...) действительно замедляют работу шейдера. Например:

Это лучше использовать это:

vec3 output;
output = input*enable + input2*(1-enable);

вместо того, чтобы использовать это:

vec3 output;
if(enable == 1)
{
    output = input;
}
else
{
    output = input2;
}

на другом форуме был разговор об этом (2013):http://answers.unity3d.com/questions/442688/shader-if-else-performance.html Здесь парни говорят, что операторы If действительно плохо влияют на производительность шейдера.

Также здесь они говорят о том, сколько внутри операторов if / else (2012):https://www.opengl.org/discussion_boards/showthread.php/177762-Performance-alternative-for-if-(-)

возможно, аппаратное обеспечение или шейдерный компилятор теперь лучше, и они как-то исправляют эту (возможно, не существующую) проблему с производительностью.

РЕДАКТИРОВАТЬ:

Что в данном случае, допустим, что enable - это единообразная переменная, и она всегда установлена ​​в 0:

if(enable == 1) //never happens
{
    output = vec4(0,0,0,0);
}
else  //always happens
{
    output = calcPhong(normal, lightDir);
}

Я думаю, что здесь у нас есть ветвь внутри шейдера, которая замедляет шейдер. Это верно?

Имеет ли смысл создавать 2 разных шейдера, как один для другого, а другой для части if?

Ответы на вопрос(2)

Ваш ответ на вопрос