В течение некоторого времени я избегал ветвления в моей шейдерной коде, вместоПрофильные графические шейдеры
float invert_value(in float value)
{
if(value == 0.0)
return 0.0;
else
return 1.0/value;
}
писать «умный» код, как этот
float invert_value_ifless(in float value)
{
float sign_value = sign(value);
float sign_value_squared = sign_value*sign_value;
return sign_value_squared/(value + sign_value_squared - 1.0);
}
Это возвращает именно то, что первая функция имеет и не имеет ветвей, поэтому она быстрее.
Не так ли? Я сражаюсь с призраками здесь?
Как профилировать графические шейдеры для скорости? Меня больше всего интересуют последние мобильные платформы (Android), но любые советы по графическому профилированию в целом приветствуются!
«Я здесь сражаюсь с призраками?» «[Да, вы.] (Http://stackoverflow.com/q/37827216/734069) –
Отличный ответ там Николь. – Leszek
Является ли это fighing с призраками? Вместо того, чтобы , если (а> 0) Ь = (1-а)/(2-а) еще Ь = (1 + а)/(2 + а) записи Signa = знак (а); b = (1-signA * a)/(2-signA * a); ? – Leszek