高光反射計算公式:
我們需要4個引數,光源的顏色和強度,材質的高光反射係數,視角方向和反射方向.
在高光反射中我們要取得反射光線和視線的夾角.
cg提供了反射光線的函式reflect(i,n)
1.宣告三個屬性,_specular控制高光反射材質,_diffuse漫反射材質,_gloss控制高光區域大小
properties
2.在subshader語句塊中定義pass語句塊,tags指明光照模式
subshader
3.定義著色器 包含內建檔案 定義結構體 定義與屬性相同型別的變數等
cgprogram
#pragma vertex vert
#pragma fragment frag
#include "lighting.cginc"
fixed4 _diffuse;
fixed4 _specular;
float _gloss;
struct a2v ;
struct v2f ;
4.頂點著色器:包含了ambient環境光,diffuse漫反射光,specular高光
v2f vert(a2v v)
5.片元著色器:輸出色彩
逐畫素渲染光照更加平滑
將光照的處理交給fragment
實現完整的phong光照模型
在blinn模型中我們引入乙個新的向量h
blinn-phong.png
得到乙個新的公式
fixed3 halfdir = normalize(worldlightdir + viewdir);
fixed3 specular = _lightcolor0.rgb*_specular.rgb*pow(saturate(dot(worldnormal,halfdir)), _gloss);
更改高光部分的**
對比phong模型,高光部分更加明顯
Shader 基礎光照 漫反射光照模型
漫反射 diffuse 當光線從光源照射到模型表面,該表面回向每個方向散射多少輻射量 漫反射符合蘭伯特定律 反射光線的強度與表面法線與光源方向之間的夾角的余弦值成正比.漫反射的計算 diffuse.png n表面法線和l指向光源的向量的單位向量點乘來表示余弦值,用max防止點乘結果為負數,防止物體被...
高光反射Phong光照模型
高光反射是一種經驗模型,並不完全符合真實世界中的高光反射現象。先根據表面法線 視角方向 光源方向計算出反射方向。通過 phong 模型來計算高光反射的部分。一般都用逐畫素,得到更平滑的高光效果。公式 高光反射光線強度 入射光線顏色 高光反射顏色 max 0,視角方向 反射方向 高光反光度 case ...
shader入門5 高光反射
高光反射一般用於實現金屬光澤的效果,原理是反射光與物體朝相機的方向的夾角cos值為標準進行光照補償,夾角越小補償值越高.其實現原理與在漫反射基礎上加了高光補償的部分,要注意的是世界座標系中的光照與入射角方向是相反的 n是normaldir v是viewdir l是lightdir 因為反射公式的入射...