Unity Shader - 顶点动画 - Sin 模拟简单的波浪

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linjf520/article/details/90649382
  • 创建一个shader,贴下下面code
  • 创建一个material,设置Shader:Custom/Wave
  • 纹理百度随便下载一个水贴图,设置到meterial中的Tex,(不设置也可以,默认white全白色,没那么直观)
  • 创建一个Plane,将material拖给它(或MeshRender.materials[0]设置上面创建的material)

Code

Shader "Custom/Wave"
{
    Properties
    {
		_TintColor ("Tint Color", Color) = (1,1,1,1)
        _Tex ("Tex", 2D) = "white" {}
        _Speed ("Speed", Float) = 1.0
        _Amp ("Amp", Float) = 0.3
    }
    SubShader
    {
			Pass
			{
				Tags { "RenderType" = "Opaque" }

				CGPROGRAM

				#pragma vertex vert
				#pragma fragment frag

                #include "UnityCG.cginc"

                struct appdata
                {
                    float4 vertex : POSITION;
                    float2 uv : TEXCOORD0;
                };

                struct v2f
                {
                    float4 vertex : SV_POSITION;
                    float2 uv : TEXCOORD0;
                };

				fixed4 _TintColor;
                sampler2D _Tex;
                float4 _Tex_ST;
                float _Speed;
                float _Amp;

				v2f vert(appdata i)
				{
                    v2f o = (v2f)0;
                    o.vertex = UnityObjectToClipPos(i.vertex);
                    o.vertex.y += sin(_Time.y * _Speed + o.vertex.x + o.vertex.y) * _Amp;
                    o.uv = TRANSFORM_TEX(i.uv, _Tex);
                    return o;
				}

				fixed4 frag(v2f i) : SV_TARGET
				{
					return tex2D(_Tex, i.uv) * _TintColor;
				}

				ENDCG
			}
    }
	FallBack "Diffuse"
}

Runtime

Wireframe下,可以清晰看到顶点的动画
在这里插入图片描述
在这里插入图片描述

References

Unity sharedMesh 制作波浪

猜你喜欢

转载自blog.csdn.net/linjf520/article/details/90649382
今日推荐