基礎光照模型

2021-09-19 12:42:17 字數 1368 閱讀 9702

一 漫反射光照模型:

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 光照模型)

環境光是對光照現像的最簡單抽象,因而侷限性很大。它僅能描述光線在空間中無方向並均勻散布時的狀態。很多情況下,入射光是帶有方向的,比如典型的陽光。如果光照射到比較粗糙的物體表面,如粉筆,由於這些表面從各個方向等強度地反射光,因而從各個視角出發,物體表面呈現相同的亮度,所看到的物體表面某點的明暗程度不隨...