UnityShader之積雪效果

2022-05-29 15:12:11 字數 1167 閱讀 2986

積雪效果是比較簡單的,只需要計算頂點法線方向和世界向上方向之間的點乘,將得到的值與預設的閥值比較,小於閥值為0,用這個值進行插值就ok了

**:

1 shader "

myshader/snowshader"//

紋理4 _snownum("

snow num

",range(-1,1))=0

//點乘閥值

5 _snowintensity("

snow intensity

",range(0,20))=1

//積雪強度

6 _snowcolor("

snow color

",color)=(1.0,1.0,1.0,1.0)//

積雪顏色7}

89subshader

12cgprogram

13#pragma vertex vert

14#pragma fragment frag

15 #include "

unitycg.cginc"16

17sampler2d _maintex;

18float4 _maintex_st;

19fixed

_snownum;

20fixed

_snowintensity;

21fixed4 _snowcolor;

2223

struct

a2v;

2829

struct

v2f;

3435

v2f vert(a2v v)

4243

fixed4 frag(v2f i):sv_target

53endcg54}

55}56 fallback "

diffuse

"57 }

view code

效果圖:

調整這幾個值也可以做出其它效果,比如放置已久積滿灰塵的物體

UnityShader例項11 積雪材質

積雪材質是我自己給這個材質取的名字,既然是積雪,那顧名思義,雪是從天而降的,因此積雪都是在物體朝上的表面 不管你的模型怎麼擺放 雪都保證是積在物體朝上 在unity裡就是y軸正方向 的表面,如下圖所示 要保證向上的面有積雪,其實就是模型表面的法線方向與世界座標空間的y軸正方向保持一致積雪多,否則積雪...

UnityShader 螢幕空間全息掃瞄效果

前段時間剛玩 使命召喚11 的時候發現裡面新增了一種很高科技的掃瞄手榴彈,可以產生一圈類似全息效果的掃瞄圈,並顯示出牆後的敵人,類似這樣 最近打算實現乙個用在第三人稱中類似的效果,如下 實現方案 1.根據 cameradepthtexture計算螢幕空間畫素點的世界座標 2.將掃瞄發起位置的世界座標...

Unity shader實現頂點動畫波動效果

需要了解的背景知識 波動例項 y asin x 決定波形與x軸位置關係或橫向移動距離 左加右減 決定週期 最小正週期t 2 a 決定峰值 縱向拉伸壓縮的倍數 頂點著色器的主要計算 1.頂點位置 2.矩陣轉換 片段著色器 1.紋理定址 2.燈光作用 time表示時間週期 float4 t 20,t,t...