Unity水波纹shader
时间: 2023-08-23 08:07:43 浏览: 180
在Unity中实现水波纹效果的一种常见方法是使用Shader来进行渲染。下面是一个简单的水波纹Shader示例代码:
```csharp
Shader "Custom/WaterRipple"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_DistortionStrength ("Distortion Strength", Range(0, 1)) = 0.1
_Speed ("Speed", Range(0, 10)) = 1
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
float _DistortionStrength;
float _Speed;
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o)
{
float2 distortion = tex2D(_MainTex, IN.uv_MainTex + _Time.y * _Speed).rg * _DistortionStrength;
float2 uv = IN.uv_MainTex + distortion;
o.Albedo = tex2D(_MainTex, uv).rgb;
o.Alpha = 1;
}
ENDCG
}
FallBack "Diffuse"
}
```
这个Shader使用了一个主纹理 `_MainTex`,通过在UV坐标上添加扰动来创建水波纹效果。`_DistortionStrength` 控制扰动的强度,`_Speed` 控制水波纹的速度。
你可以将以上代码保存为一个以 `.shader` 为后缀的文件,然后将其应用到Unity的材质上,即可在场景中渲染出水波纹效果。
阅读全文