3乙個簡單的Shader

2021-10-02 17:26:35 字數 1023 閱讀 5970

乙個簡單的unityshader看起來是這樣:

cg**段: 由cgprogramendcg包圍起來

編譯指令這裡的用來告訴unity, 什麼是頂點著色器,什麼是片元著色器

#pragma vertex 頂點著色器函式名

#pragma fragment 片元著色器的函式名

在呼叫drawcall的時候, meshrender元件會把它負責渲染的模型資料 傳給 unityshader

在cg**中, 宣告乙個與 properties 下 同名,同型別 的變數即可.

也可以看作, properties 中的語句是 對cg**中的同名變數做了乙個初始化

型別對應關係如下:

為輸入變數指定從什麼 地方拿資料, 或者為輸出變數指定往什麼地方輸出資料.

一般的語義 是沒有特別含義的, 儲存什麼都可以

系統數值語義 會儲存渲染流水線中用的的變數, 不可以隨便用

unity支援的有特殊含義的語義 unity會用的變數, 不可以隨便用,如下:

.cginc結尾. 在cg**段中如下進行包含:

#include "名字"
unitycg.cginc: 有一些常用的結構, 函式, 巨集.

unityshadervariables.cginc: 自動包含, 有前面說過的全域性變數

寫的第乙個Shader

第乙個茶壺是可以運動的紋理,用時間的正弦值和余弦值加在紋理座標上產生偏移實現的,可以考慮用來實現水面的各種效果 第二個茶壺是顏色和紋理的混合,多層紋理的混合應該也是同樣的道理,就是把顏色值相乘就可以了 anipass float4x4 matviewprojection float fsintime...

第乙個Shader程式

fx檔案 1 float4x4 matworld 2float time 1.0f 3 4struct vs output5 910vs output vs float4 pos position,float4 color color 1119 20float4 ps vs output vsout...

unity 3D 第乙個shader指令碼

第乙個shader指令碼 乙個真笨的開始,乙個大的嚮往。記錄一下寫的第乙個shader 首先建立乙個專案,然後新建乙個shader shader內容如下 shader custom subshader blend srcalpha oneminussrcalpha pass half4 frag v...