《鎮魔曲》手游水、皮膚材質渲染的思路?

在學習Unity渲染,發現鎮魔曲的手游很好的實現了效果和性能的平衡,

嘗試還原了一下渲染效果,參考了知乎上一篇前輩寫的文章,在皮膚和水的效果上糾結良久,皮膚的明暗過渡效果和非常自然的紅潤感覺、水體邊緣的處理都沒有得到很好的解決。

求指教!

後記:Adreno Profiler看了一下並沒有看懂shader的GLSL源碼,如果有需要可以傳貼圖和GLSL大家一起學習一下


圖不太清晰,當SSS看吧。

用Pre-Integrated Skin 或者 pbr + translucent 簡單模擬都是可以的。

下面是translucent函數。

// Translucency.
half3 transLightDir = lightDir + s.Normal * _Distortion;
float transDot = pow ( max (0, dot ( viewDir, -transLightDir ) ), _Power ) * _Scale;
fixed3 transLight = (atten * 2) * ( transDot ) * s.Alpha * _SubColor.rgb;
fixed3 transAlbedo = s.Albedo * _LightColor0.rgb * transLight;

效果如圖,一前一後打了兩盞燈。


這是傳說中的絲襪效果啊,會根據法向量跟視線方向的夾角再加一個東西上去。你先讓你老婆穿上絲襪,然後好好研究研究,自己猜個函數出來八九不離十。


下面兩點都是我猜的,猜錯不負責任:

  1. 目測皮膚就是普通的PBR,鎮魔曲的鏡頭拉近後,場景里的光源不只一個,你感覺到的通透效果應該是打光的功勞(就目前移動平台的性能來說,SSS的性價比太低)
  2. 鎮魔曲的水體是沒有做折射的,這種半透明效果通過深度或者高度控制一下Alpha就好了


@阿蒙 的答案就是抄 Fast Subsurface Scattering in Unity (Part 2) - Alan Zucconi

看原作者比較好。 知乎上這不是第一個抄襲國外不給credit的了


你想知道直接開Nsight調試下不就行了。


推薦閱讀:

使用unity如何在低幀率下實現高速穿透子彈?
如何評價使用Unity引擎製作的《琪亞娜·極樂凈土》?
蘇打世界和拍拍卡洛琳這種扁平化風格遊戲動畫用什麼軟體做的?
如何自己做一個好的遊戲引擎?需要哪些必備知識?
Unity5中如何寫出好的透明(Transparent)效果shader?

TAG:Unity遊戲引擎 | 計算機圖形學和可視化 | 鎮魔曲 |