菲涅爾反射(Fresnel Reflection)


    離線渲染中,通常可以用kd,ks,kt(分別代表物體的漫反射系數,鏡面反射系數,透射系數)來簡單地描述一個物體的基本材質,例如,我們將一個物體設置為:kd=0,ks=0.1,kt=0.9,即代表一束光擊中該物體表面后,其中的90%發生透射(折射),另外10%被表面反射回來。這代表了無論光線以何種角度擊中物體表面,它的反射率和透射率都是一樣的。但是實際生活中是否是這樣的呢?

    試想,你站在湖邊,低頭看腳下的水,你會發現水是透明的,反射不是特別強烈;如果你看遠處的湖面,你會發現水並不是透明的,反射非常強烈。簡單的講,就是視線垂直於表面時,反射較弱,而當視線非垂直表面時,夾角越小,反射越明顯。如果你看向一個圓球,那圓球中心的反射較弱,靠近邊緣較強,這就是“菲涅爾效應”。不同材質的菲涅爾效應強弱不同,導體(如金屬)的菲涅爾反射效應很弱,就拿鋁來說,其反射率在所有角度下幾乎都保持在86%以上,隨角度變化很小,而絕緣體材質的菲涅爾效應就很明顯,比如折射率為1.5的玻璃,在表面法向量方向的反射率僅為4%,但當視線與表面法向量夾角很大的時候,反射率可以接近100%,這一現象也使得金屬與非金屬看起來不同。

    在圖形學中,我們也可以加入菲涅爾反射效應,以使玻璃,瓷器,水面等物體的反射顯得更真實。菲涅爾反射的方程可以由麥克斯韋電磁學方程推導出來(因為本質上講菲涅爾反射就是用波動的理論來解釋光的反射)。對於透明物體而言其結果為:

   

公式中的kr與kt分別代表了最終求得的反射率與折射率,η代表了該物體的相對折射率,θi和θt分別代表了入射角與折射角。可以看出對於透明物體而言,有多少光能被折射是跟物體的相對折射率以及入射角度都是相關的,值得注意的一點是,當發生全反射的時候這個公式並不適用。

    除此之外,菲涅爾反射效應也是可以用於漫反射等其他非透明材質之上的,用來描述其在各個入射角方向上的反射率,不過這種情況略微復雜一些,通常難以直接求解,但是它卻可以用有理多項式來逼近,比如在處理次表面散射(Subsurface scattering)的時候會加入Fresnel項:

    不過,我在代碼中加入了針對透明物體的菲涅爾反射,並對同一個場景做了測試,發現貌似區別並不明顯(暈+_+)。
                                                                     未加入菲涅爾反射:
                                                                       加入菲涅爾反射:
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM