一张图片,通过鼠标点击产生水波纹理,shader比较简单,算法主要在C#那边,多线程优化计算
用下面shader创建一个材质,创建一个面片或Cube并挂上下面C#脚本,设置图片像素,默认是256*256,赋值材质图片纹理,运行,点击鼠标即可看到效果
shader
Shader "Zon/WaveTexture" {
Properties {
_MainTex ("水波纹理", 2D) = "" {}
}
SubShader {
pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
sampler2D _WaveTex;
struct v2f {
float4 pos:POSITION;
float2 uv:TEXCOORD0;
};
v2f vert(appdata_full v)
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv = v.texcoord.xy;
return o;
}
fixed4 frag (v2f IN) : COLOR
{
float2 uv = tex2D(_WaveTex, IN.uv).xy;
uv = uv * 2 - 1; //把0~1转成-1~1
uv *= 0.025;
IN.uv += uv;
fixed4 color = tex2D(_MainTex, IN.uv);
retu