shader中一些光照模型

2021-07-27 04:58:28 字數 1267 閱讀 3553

漫反射光照模型

何為漫反射呢?即指光線被粗糙表面無規則地向各個方向反射的現象。通俗一點就是相對高光而言,沒有刺眼的光斑產生.

首先我們給出漫反射部分計算公式:

cdiffuse

=(clight*

mdiffuse

)max(0,n*l)

主要我們看看漫反射模型的shader**:

properties

這裡我們定義了乙個屬性即漫反射顏色_diffuse設定為(1,1,1,1)白色。

subshader

我們在管線裡面定義了通道,通道裡面再定義了乙個標籤,只有這樣我們才能使用內建光照,比如lightcolor0等。

**如下:

cgprogram

#pragma vertex vert

#pragma fragment frag

#include "lighting.cginc"

fixed4 _diffuse;

上面定義了兩個著色器vertex定點著色器和fragment片元著色器,然後引用unity內建燈光效果檔案,以及定義了乙個屬性的型別_diffuse.

struct a2v ;

struct v2f ;

使用兩個結構體定義了定點著色器和片元著色器所需的一些變數。

v2f vert(a2v v)

fixed4 frag(v2f i) : sv_target

endcg}}

fallback "diffuse" }

上面就是頂點著色器和片元著色器的具體實現,由於我們上面採用的是逐頂點光照的,所以片元著色器直接輸出即可,執行結果如下:

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

光照模型 1.定義 光照模型就是乙個公式,使用這個公式來計算在某個點的光照效果 2.標準光照模型 在標準光照模型中,我們把進入攝像機的光分為下面四部分 1 自發光 2 高光反射 specular 平行光 pow max 0,cos 引數x 為平行光的反射光與視野方向的夾角 blinn光照模型和bli...

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

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

(四)Shader中基本光照模型

所謂的光照效果,反映到螢幕上就是乙個個畫素問題,所以光照的計算公式就是計算的乙個乙個顏色值。這些公式基本屬於經驗公式範疇,只是讓人看起來像真正的光效。光分為環境光 自發光 漫反射以及高光反射,由於反映到畫素上就是顏色的疊加。即最終在片元著色器中返回的顏色值 環境光顏色 自發光顏色 漫反射顏色 高光反...