高光反射公式 : 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向量就是 攝影機向量 跟 光向量的一半
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ5XZMgc_jh0G7JsL8RjhbKcO6Si5fBHg2Q77jPVVkgbzJyD3pWZD_uQGGvIiIg9WKbkbhd_Q1WhL0T4qAPC8VYpFDTga5ejh5IQu4obvURGyT2_Z6ZtlKTgTGTTnOgl2B66rX9f4TOEM/s200/ggg.png)
完整公式 : (C-light · M-diffuse)max(0,n·h)^Mgloss
重點 :
1. Frag的法向量會從Vectex線性內插得出, " ^Mgloss " 這裡用了非線性算法,所以直接使用Vectex做計算會怪怪的。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8nVadhP0e3xOsqHd9vzyqlQmMRJ272l-MQgrKujDgxA2O3mc2thhtytn8cw2au4hiQoYFLxv3fszpq5emDCYlGJjLG_VURT3kU-OG9GZjiWAK6Ofw-fAbBj-jwUFWQRg5ZSbwgV951d8/s320/ggg.png)
2. Phong 公式裡 v·r 某個臨界值後 v 跟 r 的夾角會超過90度,
然後 v·r 就會變成負數這時候我們就會取成 0。
所以在一個角度後會出現一個奇怪的邊線
Blinn-phong 公式裡 n·h 的夾角永遠小於 90度, 所以沒有這種問題。
![](https://learnopengl.com/img/advanced-lighting/advanced_lighting_comparrison.png)
沒有留言:
張貼留言