Данные DirectX 11 на лицо

Мой вопрос прост в теории — каков наилучший способ ввода данных на лицо в пиксельный шейдер? Если бы он был введен через простой массив cbuffer, я мог бы получить доступ к данным, используя значение SV_PrimitiveID. Однако ограничение 8096 операций с плавающей запятой на cbuffer, очевидно, будет проблемой для любой модели с умеренной детализацией.

Есть ли альтернатива этому методу? Возможно, используя отдельный поток вершин?

В идеале, я бы вводил данные для каждой вершины, но данные для каждого лица содержат индекс текстуры, который будет использоваться для каждого лица, которое нужно искать в массиве текстуры. Конечно, интерполяция данных texcoord по вершинам испортила бы этот индекс, если бы он использовался для каждой вершины? Если есть что-то сделать для каждой вершины, я все уши!

Большое спасибо за любую помощь, которую вы можете предоставить.

0

Решение

Геометрические шейдеры выполняются по отдельности и могут использоваться для передачи данных по полигонам в пиксельный шейдер.

При использовании в треугольниках они принимают в качестве входных 3 вершин и выходных 3 вершин, но на этом этапе они практически не дублируются, поэтому тот факт, что одна вершина является общей для нескольких треугольников, не имеет значения из шейдера геометрии и далее. Поскольку uints не интерполируются, у вас нет проблем в этом отношении, индекс берется из «ведущей» вершины треугольника.

Геометрические шейдеры на MSDN

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]