Unity3d Terrain地形制作系列(二)河流 |
您所在的位置:网站首页 › 河流地貌模型制作简单图片 › Unity3d Terrain地形制作系列(二)河流 |
游戏地形河流效果
河流效果
河流效果
这里要制作河流效果,我们要用到Unity3d的着色器也就是Shader,我们首先要对Shader有个基本了解。 要实现河流效果,也就是我们去改变贴图的uv坐标,让坐标随着时间的改变而改变,这样视觉上会形成流动效果。 表面着色器结构 Shader "Custom/river" { Properties { //属性栏 } SubShader { //子着色器 } FallBack "Diffuse"//回滚函数 }属性栏 Properties { _Color("color",color)=(1,1,1,1)//颜色 _River("river",2D)="white"{}//2D贴图 _XRange("xrange",Range(0,1))=0.1//在X轴上获取一个数 _YRange("yrange",Range(0,1))=0.1//在Y轴上获取一个数 }子着色器 SubShader { Tags { "RenderType"="Opaque" }//标签,这里是渲染不透明的对象 LOD 200//LOD越大则渲染效果越好 CGPROGRAM//语言从这里开始执行 #pragma surface surf Standard fullforwardshadows//该代码片段的编译指令 #pragma target 3.0 //这里我们要先申明一下前面属性里面的才可以使用。 sampler2D _River; fixed4 _Color; float _XRange; float _YRange; //输入结构 struct Input { float2 uv_River;//贴图的nv坐标 }; void surf (Input IN, inout SurfaceOutputStandard o)//inout输出 { float2 uv=IN.uv_River;//获取uv坐标 uv.x+=_Time*_XRange;//坐标X随时间的变化而变化 uv.y+=_Time*_YRange;//坐标Y随时间的变化而变化 half4 b=tex2D(_River,uv);//tex2D表示查询这个纹理 o.Albedo = b.rgb* _Color;//Albedo表示反射率,这里就是原始的颜色,这是默认的结构,我们不需要再去申明,直接使用。 o.Alpha = b.a;//Alpha表示透明度这里可以不要 } ENDCG//语言到这里结束 }后面我们还加一个回滚函数 Shader "Custom/river" { FallBack "Diffuse"//表示前面子着色器运行失败后,就执行这个 ,有点类似Try{}catch{}里面的catch }完整代码 Shader "Custom/river" { Properties { _Color("color",color)=(1,1,1,1) _River("river",2D)="white"{} _XRange("xrange",Range(0,1))=0.1 _YRange("yrange",Range(0,1))=0.1 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Standard fullforwardshadows #pragma target 3.0 sampler2D _River; fixed4 _Color; float _XRange; float _YRange; struct Input { float2 uv_River; }; void surf (Input IN, inout SurfaceOutputStandard o) { float2 uv=IN.uv_River; uv.x+=_Time*_XRange; uv.y+=_Time*_YRange; half4 b=tex2D(_River,uv); o.Albedo = b.rgb* _Color; o.Alpha = b.a; } ENDCG } FallBack "Diffuse" }运行效果 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |