Shader 常用記錄

2021-08-05 22:48:55 字數 1814 閱讀 9011

shaderlab 屬性型別和cg變數型別關率

關鍵字: color,vector   cg: float3 half4 fixed4

關鍵字: range,float    cg: float half,fixed

關鍵字:2d             cg: sampler2d

關鍵字:cube             cg: samplercube

關鍵字:3d

cg: sampler3d

(uniform fixed3 _color ,uniform僅作為變數初始值的相關資訊作用不大)

unity 常用包含檔案

unitycg.cginc   包含常用使用的幫助函式,巨集和結構體等

unityshadervariables.cginc

在編譯unity shader時,會被自動包含進來,包含了許多內建的全域性變數,如unity_matrix_mvp等

lighting.cginc  

包含了各種內建光照模型,如果編寫的是su***ce shader的話,會自動包含進來

hlslsupport.cginc

在編譯unity shader時,會被自動包含進來,宣告了很多用於跨平台編譯的巨集和定義

unitycg.cginc常用結構體

v2f_img      頂點著色器輸出  (裁剪空間的位置,紋理座標)

unitycg.cginc常用幫助函式

float3 worldspaceviewdir(float4 v)  (輸入頂點位置,返回世界空間中從該點到攝像機的觀察方向

float3 objspaceviewdir(float4 v)

(輸入頂點座標,返回模型空間中從該點到攝像機的觀察方向a)

float3 worldspacelightdir(float4 v)  (僅可用於前向演染中,輸入頂點座標,返回世界空間中從該點到光源的光照方向,沒有被歸一化)

float3 objspacelightdir(float3 v)    (僅可用於前向渲染中,輸入乙個模型空間中的頂點座標,返回模型空間中從該點到光源的光照方向,沒有被歸一化)

float3 unityobjecttoworldnormal(float3 norm)  (把法線方向從模型空間轉換到世界空間中)

float3 unityobjecttoworlddir(int float3 dir) (把方向向量從模型空間變換到世界空間中)

float3 unityworldtoobjectdir(float3 dir)

(把方向向量從世界空間變抽象到模型空間中)

傳入到頂點著色器中的模型頂點資料 unity常用支援語義

position   模型空間中的頂點座標 通常是float4

normal     頂點法線 通常是float3型別

tangent    頂點切線 通常是float4型別

texcoord   該頂點的紋理座標, 通常是float2或者float4型別

color      頂點顏色 通常是fixed4或float4型別

傳入到片元著色器(又可以叫做頂點著色器的輸出) untiy常用支援語義

sv_position  裁剪空間中的頂點座標,結構體中必須包含到乙個用該語義修飾的變數,

color0       通常用於輸出第一組頂點顏色,

color1       通常用於輸出第二組頂點顏色

texcoord0-texcoord7   通常用於輸出紋理座標

片元著色器輸出資料  untiy常用支援語義

sv_target   輸出值將會儲存到渲染目標中,等同於directx9中的color語義,但最好使用sv_target

Unity 流光shader 記錄分享

shader custom datafloweffect specular specular color 1,1,1,1 gloss gloss range 0 255 20.0 flowtex flow tex a 2d black flowcolor flow color rgba color ...

簡易shader實踐記錄4 流光效果

分享乙個流光效果 流光貼圖 2d white materialtoggle wualpha 黑白流光圖無alpha時勾選 float 0 liuguang color 流光 color color 0.5,0.5,0.5,1 liuguang qiangdu 流光強度 float 3 uvscale...

shader常用數學函式整理(持續更新)

step a,b b a 1 0 smoothstep x,y,a a如果小於x返回0 如果a y返回1 在x y之間返回 3a 2 2a 3 saturate x 如果x取值小於0,則返回值為0。如果x取值大於1,則返回值為1。若x在0到1之間,則直接返回x的值.lerp a,b,w a,b,w ...