Unity Shader中實現漫反射光照模型

2021-10-10 12:48:21 字數 1162 閱讀 3515

逐頂點漫反射光照模型。

頂點著色器的最基本任務就是把頂點位置從模型位置轉換到裁剪空間中。pos = mul(unity_matrix_mvp,pos2)   pos為float4型別,pos2為float4型別。其中pos2要獲得模型空間座標 可在定義時:    float4 pos2 : position;。

計算漫反射光照需要知道4個引數:光源方向,漫反射顏色,表面法線,指向光源的單位向量。

在定義了合適的lightmode標籤後,我們可以使用 _lightcolor0 訪問該pass處理的光源的顏色和強度資訊

_worldspacelightpos0可以得到光源方向,只適用於場景中只有乙個平行光的情況。

在計算法線和光源方向的點積時,只有兩者處於乙個座標系下才有意義。而由float3 normal : normal;語義得到的頂點法線是位於模型空間下的。所以需要首先將法線轉換到世界座標下。

shader "my shader/chapter 6/diffuse vertex-level"

subshader

cgprogram

#pragma vertex vert

#pragma fragment frag

#include "lighting.cginc"

fixed4 _diffuse;

struct a2v ;

struct v2f ;

v2f vert(a2v v)

fixed4 frag(v2f i) : sv_target

endcg}}

}

逐畫素的漫反射效果

shader "my shader/chapter 6/diffuse pixel-level"

subshader

cgprogram

#pragma vertex vert

#pragma fragment frag

#include "lighting.cginc"

fixed4 _diffuse;

struct a2v ;

struct v2f ;

v2f vert(a2v v)

fixed4 frag(v2f i) : sv_target

endcg

} }}

Unity Shader 中實現凹凸對映

每乙個頂點都有自己的切線空間。在該空間中,z軸是頂點的法線方向,x軸是頂點的切點方向,而y方向則是兩者叉積的方向。我們需要在頂點著色器中把視角方向和光照方向從模型空間變換到切線空間中,即我們需要從模型空間到切線空間的變換矩陣。而很好求的是,這個變換矩陣的逆矩陣正是在頂點著色器中切線 x軸 副切線 y...

Unity Shader實現模糊效果

今天分享乙個超簡單實現模糊效果的方法,先上圖 核心 就這句 注意要在3.0以上的版本才能使用 在取樣後做偏移取樣再疊加,效果與下面的 類似 float4 frag v2f o sv target 下面的完整 shader custom testshader40 scale scale range 0...

Unity Shader實現翻書效果

這裡就隨便用的一張紋理了,我們還是稱為 翻木板 吧,哈哈。實現過程 其實這個效果實現起來還是挺簡單的,大概思路其實就是讓所有頂點都繞z軸旋轉,並且通過正余弦使之帶有一點弧度。下面開始讓我們一步一步的實現該效果。首先開啟unity新建乙個工程,場景,並且建立乙個名為openbookeffect的sha...