Diffuse and Specular Reflection (3)

更加粗糙的表面將會有更大的和更黯淡的高光

鏡面反射是指被表面所反射的光,正如我們在之前的Light Ray章節中討論的一樣。光線被表面所反射並且沿一個不同的方向傳播。它遵循了反射定律,即在一個完美平面上反射角等於入射角。然後,值得注意的是大部分的表面是不規則的,大部分的反射光因此會根據表面的粗糙度而隨機變化方向。這雖然改變了光的方向,但是光強度保持不變。

更加粗糙的表面將會有更大的和更黯淡的高光。更光滑的表繆按將會保持集中的鏡面反射,當朝著正確的角度觀看時更明亮更強烈。同樣總量的光反射在如圖所示的兩種情況。

漫反射是指被折射的光。光線從一個介質傳播到另一個介質,在物體內部被多次散射。此時,它被再次折射出物體,大約在與第一次穿越的同一點傳播回原始的介質。如圖所示。

漫反射材質是相當能吸收的,意思是折射光在該材質體內傳播太久的話,它就有被完全吸收的好機會了。這意味著如果光永遠從該材質中出來,它很可能從進入點開始沒有傳播太遠(就出來了),這就是為什麼進口和出口的(光在材質內傳播的)距離可以被忽視的原因。蘭伯特(距離)模型是一個漫反射模型,通常用於傳統的著色場景里,它不把表面粗糙度(的影響)加入(渲染)核算中,但有些漫反射模型這樣做(計算表面粗糙度的影響),例如Oren–Nayar reflectance model。

那些具有高散射但低吸收的材質有時被稱為「參合介質(participating media)」或者「半透明材質(participating media)」。舉一栗子:煙霧,牛奶,皮膚,翡翠和大理石。在次表面散射(subsurface scattering)的添加型模型中,渲染後三個或許可行,該模型不再忽視光線的進入點和出來點之間的區別。精確的渲染具有高變化與非常低散射和吸收的材質(如煙霧或霧氣)或許要求更加昂貴的演算法,比如蒙的卡羅模擬(Monte Carlo simulations.)

推薦閱讀:

unity5.X的場景烘培速度慢到令人髮指是什麼原因?有什麼提高速度的優化方案?
C#初學者問一個問題?
作為Unity3D的腳本而言,c#中for是否真的比foreach效率更高?
如何讓3D遊戲中人物上下樓腳踏實地?
Unity工作一年能力應該到達什麼水平?

TAG:Unity游戏引擎 | 渲染 |