unity Shader基礎光照

2021-10-01 19:02:44 字數 1049 閱讀 4877

一、光:

1、輻射度:用來量化光。對於平行光來說,輻射度可以通過計算在垂直於l的單位面積上單位時間內穿過的能量來得到。

2、散射和吸收:光線和物體相交會發生的現象。

①散射:

ⅰ、只改變光線的方向,不改變光線的密度和顏色。

ⅱ、散射後兩個方向:折射和反射。

在關照模型中,高光反射部分體現反射,漫反射部分體現折射

②吸收:只改變光線的密度和顏色,不改變方向。

3、著色:根據材質屬性(如漫反射屬性等),光源資訊(光源方向),使用乙個等式去計算沿著某個觀察方向的出射度的過程,我們也把這個等式稱為光照模型。

4、brdf光照模型(雙向反射分布函式)

二、標準光照模型:它的基本就是把進入到攝像機的光線分為4個部分,每個部分使用一種方法來計算它的貢獻度;

1、自發光(emissive)

①自發光表面往往不會照亮周圍的表面,但是在unity5引入全新的全域性光照系統則可以模擬自發光物體對周圍物體的影響。

②unity中計算自發光,只需要在片元著色器輸出最後顏色前,把材質的自發光顏色新增到輸出顏色上即可。

②2、高光反射(specular)

3、漫反射(diffuse)

4、環境光(ambient)

①環境光unity在window->lighting中已經設定好,我們在shader中只需要通過unity_lightmodel_ambient就可以獲得環境光的顏色和強度資訊。

②在標準光照模型中,我們使用環境光來近似模擬間接光照

③5、計算光照模型時機

①逐畫素光照(在片元著色器)

②逐頂點光照(在頂點著色器)

6、半蘭伯特光照模型(為了解決被光面明暗關係)

①valve公司在開發《半條命》遊戲時提出的技術

②廣義公式:

③這樣也是為了讓

Unity Shader (六)基礎光照

一 輻照度 q1.如何量化光?a 用輻照度irradiance。q2 什麼是輻照度?圖中a點單位時間內穿過的能量就是輻照度。q2 怎麼計算輻照度呢?上圖中cos 值就是輻照度。0 時,cos 1,也就是說光線垂直於物體表面時,輻照度最大。越大,表示光線越不垂直,輻照度越小。二 吸收和散射 學過基礎光...

Unity Shader 光照模式

shader custom deferred forward vertex subshader blend one zero cgprogram pragma vertex vert pragma fragment frag include unitycg.cginc include lightin...

unity Shader複雜光照

一 渲染路徑 1 unity支援的渲染路徑 前向渲染路徑 forword 延遲渲染路徑 deferred 頂點照明渲染路徑 vertex lit 2 可以在專案上設定 也可以在攝相機上設定或者在shader上設定,在shader上利用lightmode標籤實現。3 pass的lightmode標籤支...