Unreal Engine 4:Pixel Depth Offset的使用
來源:
52vr |
責任編輯:傳說的落葉 |
發布時間: 2019-06-18 09:44 | 瀏覽量:
這篇文章解釋了Unreal Engine 4中的Pixel Depth Offset通道的使用心得,并且結合街頭霸王Ⅴ對該通道的使用來歸納出一些注意事項。
街霸Ⅴ所使用的游戲引擎是UE4,相對于街霸Ⅳ來說,街霸Ⅴ在畫面上有一個細節上的改進 —— 格斗的雙方模型不會出現直接的穿插,取而代之的是優先確保一方模型的完整性。在這個效果中,就是用了Pixel Depth Offset的材質通道。
Pixel Depth Offset說明
Pixel Depth Offset是UE4中材質編輯器中的一個通道:
這個通道表示的是針對于這個像素在Depth Buffer上的值進行一個Offset,說的通俗一些:那就是將這個像素的深度沿著攝像機到該像素的方向往后推一個值。
下圖中紅色的球使用的是我們自定義的材質,Pixel Depth Offset值目前為0。
將該值調整為50.0后:
可以看出,紅球右上角的一些像素被推至灰球表面之后了,因此導致灰球的一部分可以顯示出來。
街霸Ⅴ中的效果
可以看到,在兩個模型相互穿插的時候,Ryu的模型被完全顯示出來了,因此可以斷定是Ken的材質中Depth Offset被設定為了一個大于0的值,整個模型的像素深度被往后推,從而顯示出Ryu的整個模型。
使用Pixel Depth Offset的注意事項
深度換算
由于Pixel Depth Offset的值代表的是將這個像素的深度沿著攝像機到該像素的方向往后推一個值。如果將其設定為一個固定的值,則往往會出現V向量與N向量的夾角越大,平面向后推的像素深度越小的情況。
上圖中描述了如何將一個Surface深度向后推一個距離。因此該值不能設定為一個值,而應當設定為想要后推距離除以N向量與V向量的點乘:
通過這樣的方法能夠將一個面一起推后一個距離,而不會出現一個面上的不同像素推后距離不同的情況。
詭異的陰影
這應該是Pixel Depth Offset所產生的最嚴重的副作用了 —— 由于針對于深度的操作都是基于Depth Buffer,這樣就意味著雖然深度改變了,陰影還是按照原來的情況計算。這個情況目前(包括4.11及之前)無解,在街霸Ⅴ中也有這種問題,分析如下。
這種情況可以通過減弱陰影顏色來緩解,但是目前無法避免。Epic的官方回復是已經在解決中,但是還需要做一些工作才行。
-
分享到:
相關文章
網友評論
全部評論:0條
推薦
熱門