光照模型
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 斜著照射時,物體表面光線間距...