一 漫反射光照模型:
shader 「diffusevertexlevel」
properties
subshader
//只有定義了正確的 lightmode 才能得到要用的 _lightcolor0
cgprogram
#pragma vertex vert
#pragma fragment frag
#include "lighting.cginc"
//得到要使用的 _lightcolor0 等內建變數
fixed4 _diffuse;
struct a2v ;
struct v2f ;
v2f vert(a2v v)
fixed4 frag(v2f i) : sv_target
endcg }}
fallback "diffuse"
如果要改為逐畫素光照,需要改變 struct v2f,
struct v2f ;
剩下的工作就是把 vert函式中的部分挪到 frag函式中。
另,**中的半lambert光照模型是為了解決在實際中,普通漫反射在光照不到的情況下是暗黑色的問題。
二 高光反射光照模型
// upgrade note: replaced 『_object2world』 with 『unity_objecttoworld』
// upgrade note: replaced 『_world2object』 with 『unity_worldtoobject』
shader 「custom/6_specularvertexlevel」
subshader
cgprogram
#pragma vertex vert
#pragma fragment frag
#include "lighting.cginc"
fixed4 _diffuse;
fixed4 _specular;
float _gloss;
struct a2v ;
struct v2f ;
v2f vert(a2v v)
fixed4 frag(v2f i) : sv_target
endcg }}
fallback "specular"
如果改為逐畫素光照需改動 struct v2f
struct v2f ;
然後換上相應的即可。
**中給出了用的最多的blinnphong模型,目前用的最多。
逐頂點光照和逐畫素的區別在於計算的相對少和多,得到效果肯定計算多的逐畫素更加顯得平滑。
Shader筆記1 基礎光照 光照模型
光照模型 1.定義 光照模型就是乙個公式,使用這個公式來計算在某個點的光照效果 2.標準光照模型 在標準光照模型中,我們把進入攝像機的光分為下面四部分 1 自發光 2 高光反射 specular 平行光 pow max 0,cos 引數x 為平行光的反射光與視野方向的夾角 blinn光照模型和bli...
Shader 基礎光照 漫反射光照模型
漫反射 diffuse 當光線從光源照射到模型表面,該表面回向每個方向散射多少輻射量 漫反射符合蘭伯特定律 反射光線的強度與表面法線與光源方向之間的夾角的余弦值成正比.漫反射的計算 diffuse.png n表面法線和l指向光源的向量的單位向量點乘來表示余弦值,用max防止點乘結果為負數,防止物體被...
簡單光照模型(Lambert 光照模型)
環境光是對光照現像的最簡單抽象,因而侷限性很大。它僅能描述光線在空間中無方向並均勻散布時的狀態。很多情況下,入射光是帶有方向的,比如典型的陽光。如果光照射到比較粗糙的物體表面,如粉筆,由於這些表面從各個方向等強度地反射光,因而從各個視角出發,物體表面呈現相同的亮度,所看到的物體表面某點的明暗程度不隨...