兩個重疊模型模擬雙pass,順便解決透明亂序問題

魁梧的摳腳大漢發表於2017-08-03

虛幻4除了能用rendertarget模擬雙pass行為,還可以用兩個模型來模擬雙pass。用兩個一模一樣的模型,第一個模型渲染customdepth 然後disable rendering in main pass 並且enable dinamic shadow,這樣就能有第一層深度和光照資訊。然後將第二個模型使用第一個模型在prepass中遺留下來的一些渲染資訊,就可以做到上圖所示的效果。在卡通渲染裡這種方法應該很有幫助。下面是我第二個模型的材質。



用這種方法還順帶解決了透明模型亂序的問題。



但是這種方法如果用來做骨骼模型的透明亂序就有點麻煩了,因為骨骼模型時刻會動。虛幻4.16+的版本還有一種解決方案。也是在Mesh的Rendering裡面開啟CustomDepthPass,然後再在material裡面開啟AllowCustomDepthWrite,再將OpacityMaskClipValue設定為0.001  

最後得到如下圖所示的效果

有幾個注意點:

【1】在強光和單一環境顏色下。效果不太明顯。

【2】translucent和其他材質模型混用的時候,translucent效果會出錯(可以拿官方自帶的人做實驗。只替換身體部分的材質,Logo胸口的材質保持原先。你就會發現奇怪的現象。我實驗的版本是4.16.2)

【3】TransactionWidth引數需要根據場景來調。

【4】這種方法和上面一種重疊模型的相比,沒有影子。

【5】這種方法只是讓90%的亂序問題消除了。自己還是有亂序(可以看到小人的手指部分還是亂序的)

至此虛幻4的各種亂序解決方法應該差不多了。這篇帖子更新了幾次。至於粒子的亂序暫不進行討論。

Note:為什麼要像上圖那樣“連”材質球呢,CustomDepth和pixeldepth相減到底得到了什麼呢,關於為什麼這麼做的原因在我這篇部落格裡有詳細解答,有興趣的朋友可以去看看。http://blog.csdn.net/qq_16756235/article/details/78303695




相關文章