SV_POSITION vs POSITION

  • V_前綴的變量代表system value,在DX10以後的語義綁定中被使用代表特殊的意義,和POSITION用法並無不同。

  • 唯一區別是 SV_POSTION一旦被作爲vertex shader的輸出語義,那麼這個最終的頂點位置就被固定了(不能tensellate,不能再被後續改變它的空間位置?),直接進入光柵化處理,如果作爲fragment shader的輸入語義那麼和POSITION是一樣的,代表着每個像素點在屏幕上的位置(這個說法其實並不準確,事實是fragment 在 view space空間中的位置,但直觀的感受是如括號之前所述一般)

PS:最後這個回答者說了,在DX10版本之前沒有引入SV_的預定義語義,POSITION被用作vertex shader的輸入,輸出,fragment shader的輸入參數。

但DX10之後就推薦使用SV_POSITION作爲vertex shader的輸出和fragment shader的輸入了,注意vertex shader的輸入還是使用POSITION!切記。

但是DX10以後的代碼依舊兼容POSITION作爲全程表達,估計編譯器會自動判斷並替換的吧。好了SV_POSITION的疑惑就此解開

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