找回密码
 注册帐号

扫一扫,访问微社区

18803836360

简易水

220 2018-10-9 17:30 |个人分类:shader

最近有关于水的表现要求。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 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号