嗚嗚喔學習筆記: UnityShader初體驗 - 6.2.4 高光反射 Phong && Blinn-phong

搜尋此網誌

2019年4月24日 星期三

UnityShader初體驗 - 6.2.4 高光反射 Phong && Blinn-phong








ㄠㄍ

高光反射公式 : phong

Mgloss -> 高光係數
v -> 攝影機看的向量



r = l - 2 * (n·l)*n   -> 光跟法向量 的 反射向量
















完整公式 : (C-light · M-diffuse)max(0,v·r)^Mgloss 

高光反射公式 : Blinn-Phong

h
=(v
+l
)
|v
+l |
  

-> h向量就是 攝影機向量 跟 光向量的一半





完整公式 : (C-light · M-diffuse)max(0,n·h)^Mgloss


重點 : 

1. Frag的法向量會從Vectex線性內插得出, " ^Mgloss  " 這裡用了非線性算法,所以直接使用Vectex做計算會怪怪的。



2. Phong 公式裡 v·r 某個臨界值後 v 跟 r 的夾角會超過90度,
然後 v·r 就會變成負數這時候我們就會取成 0。
所以在一個角度後會出現一個奇怪的邊線

Blinn-phong 公式裡 n·h 的夾角永遠小於 90度, 所以沒有這種問題。










沒有留言:

張貼留言