Unity Shader 中 Offset 設置的作用

在這裏插入圖片描述
在Unity中,有一個 Offset 設置,它叫 z-fighting ,看名就知道了,是z值之間的戰鬥

原因是因爲我們的不同的多邊形共面時,在光柵階段生成的fragment的屏幕xy座標一樣,但depth值又不一樣的浮點誤差引起的問題,然後浮點round-off的四捨五入,導致z-fighting。
其實就是2個z值一樣,放在同一個平面下的多邊形,因爲他們的z值極其接近,所以會出現交替顯示,閃爍的現象,所以爲了不讓它繼續閃下去,我們可以通過 Offset 來分出它們之間的先後順序。

計算公式是

finalOffset = s * Factor + d * Unit;

一般不需要考慮這麼複雜的事,書寫發放一般是下面這樣:

Offset 1,1
Offset 2,2
Ofsset -1,-1
Ofsset -2,-2

產生的效果是,數值越小的,距離攝像機越近,數值越大的,距離攝像機越遠。
根據這個規律,我們就可以確保z值相同的多邊形,顯示效果也是有先後順序的了。

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