2018年6月28日 星期四

在Unity下模擬水接收陰影從淺灘到深海的過渡

基本上設計思路很簡單,就是先讓水可以接收陰影,之後再依照水平面深度逐漸將陰影顯現出來,在深度最深的時候完全接收百分百的光源衰減值。

在折射處理方面,因為是使用GrabPass,所以並沒有針對折射另外進行拍射陰影,不會增加額外的DrawCall,但有花了拷貝背景圖的成本。
重點如下:
  1. UNITY_LIGHT_ATTENUATION(LightAttenuation, Input, Input.WorldPosition)
  2. LightAttenuation = lerp(1.0, LightAttenuation, pow(DepthRatio, 5));
之後在打光的地方使用這個光源衰減值即可,相關影片如下(記得要住意岸邊與深海接收影子的過渡)。





Dream continues in...

沒有留言:

張貼留言