關於Unity中頂點片元Shader例項

2021-09-07 13:19:00 字數 2294 閱讀 2434

補充

float4 fixed4 _time

1: float4是內建向量 (x, y, z, w); float4 a; 訪問單獨成員a.x, a.y, a.z, a.w;

2: fixed4 是內建向量(r, g, b, a); fixed4 c; color.r, color.g, color.b, color.a;

3: float3是內建向量(x, y, z);

4: fixed3 是內建向量(r, g, b);

5: float2 是內建向量(x, y);

6: _time: 自場景載入開始所經過的時間t,4個分量分別是 (t/20, t, t*2, t*3);

7: _sintime: t 是時間的正弦值,4個分量分別是 (t/8, t/4, t/2, t);

8: _costime: t 是時間的余弦值,4個分量分別是 (t/8, t/4, t/2, t);

9: unity_deltatime: dt 是時間增量,4個分量的值(dt, 1/dt, smoothdt, 1/smoothdt),平滑時間,防止時間間隔起伏太大;

正弦波例項

1.建立unity工程目錄

2.建立乙個節點plane

3.在resources資料夾下面建立shaders資料夾

4.開啟shaders資料夾,建立乙個用於頂點片元著色的shader,create---->shader---->unlit shader,重新命名為sinshader

5.開啟sinshader

第二步:

shader "

custom/sinshader

" }

subshader

//標記 lod 100

pass

;struct

v2f ;

sampler2d _maintex;

float4 _maintex_st;

//對模型的頂點座標的修改寫在這裡面

fixed4 frag (v2f i) : sv_target

//對模型的畫素著色的修改寫在這裡面

endcg

//cg**的結束

} }

}

6.開啟shaders資料夾,建立乙個材質球叫sinshader,選擇shader的屬性custom---->sinshader

7.把貼圖拖進材質球sinshader

8.給平面plane關聯材質球sinshader,平面有了紋理,執行起來像水波

uv動畫(捕魚達人3中使用的技術)

1.把魚模型(jinqiangyu.fbx,jinqiangyu.png)拖進hierachy,設定魚materials/jinqiangyu的材質球的shader為為mobile diffuse

2.把caustics.png資源拖進resources

3.開啟shaders資料夾,建立乙個unlit shader,重新命名為uvshader

4.開啟uvshader

第二步:增加乙個紋理的定義

properties

_subtex ("texture", 2d) = "white" {}

}第三步:

shader "

custom/uvshader

" _subtex (

"texture

", 2d) = "

white

" {}//

放波光的紋理貼圖

} subshader

lod

100pass

;struct

v2f ;

sampler2d _subtex;

//要用就要再宣告一下,波光

sampler2d _maintex;//

要用就要再宣告一下,魚

float4 _maintex_st;

//對頂點座標的修改寫在這裡面,因為沒有修改頂點,所以沒有新增什麼

fixed4 frag (v2f i) : sv_target

//對畫素紋理的修改寫在這裡面

endcg}}

}

4.選擇魚材質球的shader為custom---->uvshader

5.把波光的貼圖拖進魚材質球的另外乙個貼圖屬性

6.執行就可以看見魚被動態波光籠罩

注意:

遇到函式使用有問題的,開啟#include 「unitycg.cginc」  unity-->edit-->data-->cgincludes;檢視

(二)Unity頂點 片元著色器基礎

6.結語 本文主要講解以下unity shader的一些基礎內容,以無光照shader為例進行說明,後續進行詳細分析與說明。此shader可以直接複製到unity中使用 unity2018 2018親測可用 建議邊使用邊看如下分析。shader如下所示 shader ll unlit unlitsh...

Shaders 頂點和片元程式

此教程將會教你書寫unity shader裡的頂點和片元程式的基礎。請檢視 開始學習 以獲取更多關於shaderlab的介紹。如果你想編寫與燈光相互作用的著色器,那麼請去閱讀 表面著色器 file d users hoxily documents unitydocs documentation.20...

shader中的片元函式與頂點函式

如圖,對於某個物體的渲染是通過操作點,或者渲染點組成的面兩種方式。所以shader中有頂點函式和片元函式。頂點函式通過對於渲染點,點之間部分通過插值運算得到,片元函式則是直接渲染點。upgrade note replaced mul unity matrix mvp,with unityobject...