1. 程式人生 > >Blinn光照模型對Phong光照模型高光斷層現象的改進

Blinn光照模型對Phong光照模型高光斷層現象的改進

Phong光照模型的鏡面光反射實現

在這裡插入圖片描述
由於Phong光照模型中,鏡面反射光照分量的公式為視角方向V和光線反射方向R的點積,而當V和R的夾角大於90度時,點積為出現負數,實現中我們常常將點積為負數部分設為0。這樣的話,當鏡面反射的反射度S非常小的時候(例如1),V和R夾角為90的位置的光照強度會發生突變,造成高光斷層的現象。
在這裡插入圖片描述

Blinn光照模型的鏡面光反射實現

而Blinn光照模型的實現中,採用了半程向量和法向量的夾角餘弦作為因子,與Phong光照模型中採用視角方向與反射光線夾角餘弦相比,半程向量與法向量的夾角在平面上方始終在90度以下,這樣就避免出現了鏡面反射分量發生突變的現象。
例如下圖中,計算相同的光照方向L和相同的視角方向V在兩種光照模型下的鏡面反射分量,Phong光照模型在法向量的左邊有許多區域的鏡面光分量被置為了0,因為該區域反射光方向與視角方向的夾角均大於90度。而Blinn在整個平面上方都不會出現半程向量與法向量夾角大於90度的現象。
在這裡插入圖片描述