【Unity5.x Shaders】使用Shader制作河流效果
来源:互联网 发布:银行服务排名 知乎 编辑:程序博客网 时间:2024/05/24 05:57
感觉终于开始做一些有意思的Shader了。这次来学习如何通过更改UV值来滚动纹理以达到河流,瀑布等动画效果。
这是相关Shader代码
Shader "Custom/ScrollingShader" { Properties { _MainTint("Diffuse Tint",Color)=(1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _ScrollXSpeed ("X Scroll Speed", Range(0,10)) = 2 //1 _ScrollYSpeed ("Y Scroll Speed", Range(0,10)) = 2 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Standard fullforwardshadows #pragma target 3.0 struct Input { float2 uv_MainTex; }; fixed4 _MainTint; fixed _ScrollXSpeed; //2 fixed _ScrollYSpeed; sampler2D _MainTex; void surf (Input IN, inout SurfaceOutputStandard o) { fixed2 scrolledUV = IN.uv_MainTex ; //3 fixed xScrollValue = _ScrollXSpeed * _Time; //4 fixed yScrollValue = _ScrollYSpeed * _Time; scrolledUV += fixed2(xScrollValue, yScrollValue); //5 half4 c = tex2D (_MainTex, scrolledUV); //6 o.Albedo = c.rgb * _MainTint; o.Alpha = c.a; } ENDCG } FallBack "Diffuse"}
为了控制纹理流动的速度我们添加了两个新属性:X方向的速度和Y方向的速度,因为UV就是这两个方向的数据
在CGPROGRAM中添加上相应的变量
在我们使用tex2D()之前新建一个变量存储UV值
新建两个fixed,分别存储按时间缩放的UV的x和y值,这里使用了内置变量_Time
Unity官方文档对内置变量的介绍:https://docs.unity3d.com/Manual/SL-UnityShaderVariables.html
Unity圣典:http://www.ceeger.com/Components/SL-BuiltinValues.html得到最终的UV偏移
应用纹理和颜色
书上的效果
Tips:
我使用书中的资源时直接把河流贴上面的时候河流变得很不自然,会觉得感觉河流被拉伸了
我们来看一下Material的Inspector面板
控制拉伸程度的是Tiling,它的值代表沿着XY轴平铺纹理的数量,如果使用它的默认值都为1的话,那就沿X,Y轴方向都只平铺一张纹理
注意:选中的这张纹理WrapMode必须设置成Repeat,否则你会看到更加拉伸的效果 (⊙﹏⊙)
这里我们将Material的Tiling的X,Y值分别设为1和7,这样一看效果好多了
1 0
- 【Unity5.x Shaders】使用Shader制作河流效果
- 【Unity5.x Shaders】Shader基本结构
- 【Unity5.x Shaders】Shader中的Texture纹理
- 【Unity5.x Shaders】Properties 属性
- Unity5.x Surface Shader使用alpha blend
- 【Unity5.x Shaders】最基本的Surface Shader-Diffuse shader以及Surface中的三种输出结构
- 【Unity5.x Shaders】压缩数组Packed arrays
- Unity5.x制作合金弹头(一)-DoTween组件的使用
- Unity5.x制作FPS游戏
- Unity5.x制作RPG游戏
- 【Unity5.x Shader】SubShader Tags 标签
- Unity5.x shader打包AssetBundle总结
- Unity5.x shader打包AssetBundle总结
- Unity5.x shader打包AssetBundle总结
- unity5.X AssetBundle使用(一 )
- unity5.X AssetBundle使用(二 )
- 关于Unity5.x版本AssetBundle打包Shader的问题
- 【Unity3D学习笔记】unity5.x中的双面材质shader实现
- Java回溯算法解数独问题
- caffe学习笔记(1)【在docker环境下安装caffe】
- CentOS安装mysql数据库
- Activiti学习笔记1
- 字符串拷贝当中的问题
- 【Unity5.x Shaders】使用Shader制作河流效果
- hdu 2181 哈密顿绕世界(dfs+回溯)
- protobuf,json,xml,binary,Thrift之间的对比
- python编码
- OPENGL究竟怎么配置
- 《锋利的jQuery》第六章、 jQuery与Ajax应用
- Oracle 12c 在windows10 安装问题
- ionic之样式复选框
- Python——set集合