Даются ли условные операторы в шейдерах дороже?
Как всегда: это зависит. Ничто не бесплатно. Современные графические процессоры могут хорошо справляться с ветвлениями, основанными на одинаковых условиях. Что действительно вредит, так это неравномерный поток управления, который, естественно, приведет к неиспользованию всех доступных ALU шейдеров. Используя вложенные условные выражения и / или циклы, вы можете легко получить одно активное ядро на группу SIMT, что означает потерю 31/32–63/64 потенциальной вычислительной мощности.
Я могу использовать условные операторы, чтобы минимизировать среднее чтение текстур
Будьте осторожны с выборкой текстуры в неоднородном потоке управления. Согласно спецификации, это приведет к неопределенным значениям . Проблема здесь в том, что вы запутываете вычисление производных для текстовых кордов, поэтому графический процессор не может решить, нужно ли ему использовать фильтр увеличения или минимизации, а также какой уровень mipmap использовать.