Эмуляция VFACE Semantic в шейдере PS_2_0 - PullRequest
1 голос
/ 11 февраля 2011

Я работаю над некоторыми из наших шейдеров HLSL, пытаясь заставить их работать в SM2.0.Я почти добился успеха, но один из наших шейдеров принимает параметр:

float alignment : VFACE

Насколько я понимаю из MSDN, это автоматический var, рассчитанный на тот случай, если он мне нужен, но он не поддерживается в SM2.0 ..Итак, как я могу воспроизвести это?Я не программист шейдеров, поэтому любой (псевдо) код был бы очень полезен.Я понимаю, что VFACE делает , но не то, как я мог бы сам рассчитать его в пиксельном шейдере или в VS и передать его в PS.Вычисление его за пиксель звучит дорого, поэтому, может быть, кто-то может показать скелет, чтобы рассчитать его в VS и использовать его в PS?

1 Ответ

1 голос
/ 11 февраля 2011

Вы не можете. Потому что VFACE означает ориентацию треугольника (сзади или спереди), и ступени VS или PS не имеют доступа ко всему примитиву (как на этапе SM4 / 5 GS).

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

...