Unity中光照系統分析

光照計算orm

光照計算主要目的是 爲了獲得 高頻 中頻 低頻 信息htm

高頻信息是細節,中低頻是總體控制遊戲

例如低模 自己是中低頻, normal map diffuse map 增長了高頻信息ip

高光也是高頻信息it

AO 遮蔽,高頻io

例如在計算霧效果時,簡單的線性距離深度變化是 低頻, 再加上基於高度變化,基於太陽光朝向顏色,基於距離的 mipmap, 增長了高頻細節渲染

光照系統分爲:map

預先計算反射

實時計算技術

光照系統的預先計算總體流程

  1. 設置光源,光源分爲直接光和間接光,
  2. 直接光光源分爲 平行光,點光 ,探照燈,區域光,基於圖像的光源 3.間接光 包括物體互相反射光,來自light probe,來自環境光,來自霧,來自反射探頭,間接光一般須要使用烘焙技術來計算 4.烘焙技術包括 基於 輻射度的 和 基於光線追蹤 5.烘焙產生光照貼圖,或者light probe 數據 6:在遊戲運行時,預先計算的間接光信息,陰影信息,簡化參與到物體渲染中

光照烘焙涉及到4個方面

光源,物體,材質,UV或者probe

光照烘焙貼圖,基於對場景中靜態物件進行UV展開,將光照信息寫入

寫入信息,能夠包括直接光, 間接光,陰影,的顏色和強度

光照貼圖還能夠包括主要光方向, directional lightmap 模式中,包括了主要光方向信息,用於實時計算的時候,結合normalmap 計算diffuse color , 而不是將light map 做爲環境光處理

有了主要光方向信息,結合normal map就能夠進行更多的計算

總體技術涉及到:

材質系統,光源,烘焙技術

光照最終效果,涉及到陰影,直接光,間接光 三個效果

在Unity中材質的光照模型主要能夠分爲,lambert phong 和 最新的 pbr 物理基於着色系統

材質模型:

half lambert 0.5*(N * L) + 0.5

材質也能夠toon shading normal * L normal * V 在texture 上採樣光帶

pbr 微表面, fresnel

光模型

Unity中的光,分爲三種,bake烘焙光,實時光,和mixed模式光

Unity中的烘焙系統,有Enlighten 基於輻射度的烘焙計算,和 progressive 基於光線追蹤的烘焙計算

其中enlighten 有兩種烘焙,純靜態光照貼圖烘焙和 實時GI烘焙

其中烘焙GI光照,能夠使用光照貼圖,也能夠使用light probe來收集,其中光照貼圖,分爲純Diffuse貼圖和 支持 normal map 的 directional lightmap。

light probe 和 光照貼圖區別就是,light probe 收集的是空間光照信息,而light map 收集的是 物體表面的光照信息

reflection probe 反射光照 probe

光照效果:

軟影子 寬高光, AO

Unity中的光照方案:

全烘焙,只使用enlighten 烘焙光照貼圖,使用純烘焙光,光照貼圖上包含 直接光,間接光,陰影信息

全實時光,使用 cascade shadow map 技術產生4級實時陰影, 使用pbr 材質模型,實時光進行光照計算

mixed light, 分爲三種模式

只烘焙 間接光 ,

烘焙陰影,

烘焙距離陰影,近處使用實時陰影

subtractive 模式,直接光 間接光 陰影都烘焙,實時陰影和烘焙陰影採用 subtractive模式混合

純 light probe + 實時光照, light probe 提供間接光照信息

相關文章
相關標籤/搜索