unity中的简单水效果实现

来源:互联网 发布:黄金比例算法 编辑:程序博客网 时间:2024/04/30 09:01

    最近有关于水的表现要求。UNITY自带的水效果在资源上存在消耗比较高的情况。根据项目的具体要求需要制作一种简单的水效果。

完成后和美术同志碰了一下感觉效果比较满意 ,要比简单的UV动画效果 好不少。抽时间发源码和大家分享一下。希望大家多多指正。


代码如下:

struct Input {
float2 uv_MainTex;
float2 uv_NoiseTex;
};
void vert(inout appdata_full v,Input o)
{
UNITY_INITIALIZE_OUTPUT(Input o);
o.vertcolor=v.color;
}


void surf(Input IN, inout SurfaceOutput o) {


float2 speed=float2(xscroll,yscroll)*_Time.x+IN.uv_NoiseTex;
fixed4 noise1 = tex2D(_NoiseTex,speed);
fixed4 noise2 = tex2D(_NoiseTex,speed);
half4 c=tex2D(_MainTex,float2(noise1,x+noise2,y,noise1.y+noise2.x));
o.Albedo = c.rgb * N.vertex.color.rgb + _MainColor.rgb;
o.Alpha = d.a*IN.vertex.color.a*_MainColor.a;
}


其中核心的部分就是使用noisetex贴图对maintex进行UV采样从而实现模拟的流水折射扭曲效果;

注:

UNITY_INITIALIZE_OUTPUT(type,name)这个函数的作用就是吧name类型 转成type类型;

0 0