Даются ли условные операторы в шейдерах дороже? - PullRequest
0 голосов
/ 30 апреля 2018

Я могу использовать условные операторы, чтобы минимизировать средние чтения из текстуры, но если условные операторы стоят дорого, как с процессорами (которые препятствуют прогнозированию и т. Д.), Это может привести к сложному коду, который не имеет выгоды или даже имеет меньше эффективность. Они приходят по более высокой цене?

1 Ответ

0 голосов
/ 30 апреля 2018

Даются ли условные операторы в шейдерах дороже?

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

Я могу использовать условные операторы, чтобы минимизировать среднее чтение текстур

Будьте осторожны с выборкой текстуры в неоднородном потоке управления. Согласно спецификации, это приведет к неопределенным значениям . Проблема здесь в том, что вы запутываете вычисление производных для текстовых кордов, поэтому графический процессор не может решить, нужно ли ему использовать фильтр увеличения или минимизации, а также какой уровень mipmap использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...