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类型;
启动unity3d软件,unity3d中提供了两个水资源包,分贝是water(basic)与water(pro),即专业版与免费版。我就打开一个之前随便创建的项目了,随便见了几个立方体。在菜单栏中找到Asset,单击它asset,再单击import package ,最后单击water(basic)。d出对话框,直接单击import,导入资源包。
这时在项目窗口,会出现导入的资源。可以看到其中有两个水体,通过名字,我们知道它们分别是模拟白天的水,与夜晚的水效果。
以其中一个为例,用鼠标直接将水体拖动到场景窗口中,就可以看到水效果了。
一个是在场景窗口中的显示,一个是在游戏窗口中的显示。
选择水体,在检视窗口,可以看到水体的细节调解,由于是简单水体,调解的东西不是很多。
下面介绍一下专业版水体的加入,在菜单栏中找到Asset,单击它asset,再单击import package ,最后单击water(pro)。d出对话框,直接单击import,导入资源包。
这时在项目窗口,会出现导入的资源。可以看到其中有两个水体,通过名字,我们知道它们分别是模拟白天的水,与夜晚的水效果。只不过是专业版的水体。
以其中一个为例,用鼠标直接将水体拖动到场景窗口中,就可以看到水效果了。
专业水体较一般水体而言,增加了水的折射与反射效果,看起来更加逼真。可以明显看到,水下的物体透过水面的效果与阳光在水面反射的效果。一个是在场景窗口中的显示,一个是在游戏窗口中的显示。
首先,在Project面板中的Assets文件夹单击右键。
在d出的菜单中选择【Import Package】——【Environment】,即导入环境资源包。
单击【Import】导入。
然后我们为场景中添加地形,如下图所示,我们要为下面地形的其中地方添加水资源。
在Project面板中的Assets文件夹选择【Standard Assets】——【Environment】——【Water】——【Prefabs】中其中一个文件,拖动到场景中。
拖动完成后在场景面板或Inspector面板中调整水适合的位置及其他参数。
最后完成添加。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)