CG語言 之 POSITION vs SV_POSITION

1、以SV開頭的語義爲系統數值語義(system-value semantics),是在DirectX 10中引入的,這些語義在渲染流水線中有特殊的含義。

2、若使用SV_POSITION語義去修飾頂點着色器的輸出變量pos,就表示pos包含了可用於光柵化的變換後的頂點座標(即齊次剪裁空間中的座標)。

3、用這些語義描述的變量是不可以隨便賦值的,因爲流水線需要使用它們來完成特定的目的,如渲染引擎會把用SV_POSITION修飾的變量經過光柵化後顯示在屏幕上。

4、有時會出現同一個變量在不同的Shader裏面使用不同的語義修飾,如一些Shader會使用POSITION而非SV_POSITION來修飾頂點着色器的輸出。在大多數平臺上,它和POSITION語義是等價的,但在某些平臺(如索尼PS4)上必須使用SV_POSITION來修飾頂點着色器的輸出,否則無法讓Shader正常工作。同樣的例子還有COLOR和SV_Target。

5、爲了讓Shader有更好的跨平臺性,對於這些有特殊含義的變量,最好使用以SV開頭的語義進行修飾。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章