unity水面波紋著色器

2021-08-07 11:58:32 字數 1477 閱讀 5134

#unity水波紋

shader "custom/animtextureshader"         // 資源圖  

_numtextiles("num tex tiles",vector) = (4,4,0,0) //瓦塊的數量 4*4

_replayspeed("replay speed",float) = 4

//紋理移動速度

_color("color",color) = (1,1,1,1) //背景色

} subshader

blend one one // 貼圖和背景疊加 無alpha透明通道處理 blend zero one:僅顯示背景的rgb部分 blend one zero: 僅顯示貼圖的rgb部分,無alpha透明通道處理。

cull off // cull off 雙面都渲染 cull back 單面渲染 cull front 剔除正面

lighting off //關閉燈光

zwrite off fog

cginclude

#include"unitycg.cginc"

sampler2d _maintex;

float4 _color;

float4 _numtextiles;

float _replayspeed;

float _randomize;

struct v2f

; float2 rand(float2 ij) //得到x方向 和y 方向上的隨機數

return result.xy;

} #endif

#if 1

tile.xy = float2(itime,floor(itime /_numtextiles.x));

tile.zw= float2(ntime,floor(ntime /_numtextiles.x));

#endif

tile = fmod(tile,_numtextiles.xyxy);

o.pos= mul(unity_matrix_mvp, v.vertex); // unity_matrix_mvp 用於將頂點/方向向量從模型空間轉換到剪裁空間 mul() 矩陣轉換函式

o.uv = (v.texcoord.xyxy + tile) * textilesize.xyxy; //得到uv值

o.col = float4(_color.xyz * v.color.xyz,ftime); //得到顏色值

return o;

} endcg

pass

endcg

}

} }

Unity著色器紋理動畫

unity中shader可以採用cg來書寫.此文演示了如何利用紋理座標來分段街區紋理.正常的紋理座標範圍 0.1 座標超出此範圍可以用多種方式來處理,如wrap,clamp,mirror等.假設紋理分為n段,則,每段對應的紋理座標為 0.1 n index 1 n 使用此規則就可以將紋理分段來擷取了...

Unity內建6種著色器

unity內部提供了一些可以直接使用的著色器,這些內建著色器包括以下6個方面 1 performance of unity shaders 著色器的效能和兩個方面有關 shader本身和render path。deferred lighting 每個物件都會被繪製2遍,無論其是否受到光照,效能與紋理...

著色器(Shader)之畫素著色器

畫素著色器實際上就是對每乙個畫素進行光柵化的處理期間,在gpu上運算的一段程式。不同與頂點著色器,畫素著色器不會以軟體的形式來模擬畫素著色器。畫素著色器實質上是取代了固定功能流水線中多重紋理的環節,而且賦予了我們訪問單個畫素以及訪問每乙個畫素紋理座標的能力 多重紋理就是我們同時啟用多層紋理,然後規定...