Shader筆記1 基礎光照 光照模型

2021-09-26 01:35:28 字數 1667 閱讀 5843

光照模型

1.定義:光照模型就是乙個公式,使用這個公式來計算在某個點的光照效果

2.標準光照模型

在標準光照模型中,我們把進入攝像機的光分為下面四部分:

1)自發光

2)高光反射

specular=平行光 * pow (max(0,cosθ),引數x)

(θ為平行光的反射光與視野方向的夾角)

************blinn光照模型和blinn-phong 光照模型 ************

blinn光照模型:specular =平行光 * pow ( max ( 0 , cosθ) , 引數x )

blinn-phong光照模型:specular =平行光 * pow ( max ( 0 , cosθ) , 引數x )

(θ為平行光與視野方向夾角的平分線與法線的夾角)

區別:blinn-phong 的高光範圍比blinn的大點,比較常用,因為效果好

3)漫反射

diffuse = 平行光.顏色 * max(0,cosθ)

(cosθ=光和法線的夾角)

(因為背光面與光的夾角都大於90°,取負數相乘的話沒意義,所以用max)

*cosθ的計算:

ps:逐頂點光照:要把光照的計算放在頂點函式裡;逐畫素光照,則放在片元函式裡面。

乙個模型頂點的數量較少,放在頂點函式裡計算會快點,不過效果可能不那麼好,想法放在片元函式裡效果會比較好,因為處理的次數更多,不過速度會慢

蘭伯特光照模型與半蘭伯特光照模型

蘭伯特光照模型:diffuse = 平行光.顏色 * max(0,cosθ)

半蘭伯特光照模型:diffuse = 平行光.顏色 * (cosθ * 0.5 +0.5)

區別:通過公式我們可以看到處於背光面(與平行光的夾角 >= 90° )的cosθ值基本全為0到-1,這樣呈現出來的顏色即全為黑色;而半蘭伯特通過變換公式,使得這部分的cosθ值處在0~1之間,使得背光面不是全黑的

4)環境光

3.相關平行變數

1)只有定義了正確的lightmode才能得到一些unity的內建光照變數

tags (forwardbase:前向渲染)

2)#include "lighting.cginc"包含unity的內建檔案,才可以使用unity內建的一些變數

3)normalize()把向量歸一化

4)max()用來取得函式中最大的乙個

5)dot() 用來取得兩個向量的cosθ值

6)_worldspacelightpos0 取得平行光的向量

_lightcolor0 取得平行光的顏色

unity_matrix_mvp 這個矩陣用來把乙個座標從模型空間轉換到剪裁空間

unity_lightmodel_ambient.rgb環境光的顏色

Shader 基礎光照 漫反射光照模型

漫反射 diffuse 當光線從光源照射到模型表面,該表面回向每個方向散射多少輻射量 漫反射符合蘭伯特定律 反射光線的強度與表面法線與光源方向之間的夾角的余弦值成正比.漫反射的計算 diffuse.png n表面法線和l指向光源的向量的單位向量點乘來表示余弦值,用max防止點乘結果為負數,防止物體被...

Shader 基礎光照 高光反射光照模型

高光反射計算公式 我們需要4個引數,光源的顏色和強度,材質的高光反射係數,視角方向和反射方向.在高光反射中我們要取得反射光線和視線的夾角.cg提供了反射光線的函式reflect i,n 1.宣告三個屬性,specular控制高光反射材質,diffuse漫反射材質,gloss控制高光區域大小 prop...

shader入門精要讀書筆記11 基礎光照模型

渲染包含了兩大部分 1.決定乙個畫素的可見性 2.決定這個畫素上的光照計算 一 光照模型背後的基本原理 1.光源 在光學中,我們用 輻照度 來量化光 確定乙個光源發出了多少光 光方向為l,光線間距為d 垂直照射時,物體表面光線間距d,垂直時 為0,也可以表示為d cos 斜著照射時,物體表面光線間距...