Unity shader 初学 表面着色器 简易模拟水

    Properties {
		_MainColor("MainColor",Color)=(1,1,1,1)
		_MainTex ("MainTex", 2D) = "white" {}
		_NormalMap("NormalMap",2D)="bump"{}

		_ScrollXSpeed("ScrollXSpeed",Range(0,1))=0
		_ScrollYSpeed("ScrollYSpeed",Range(0,1))=0

		_WaveA("WaveA",Range(0,0.3))=0.1
		_WaveB("WaveB",Range(0,5))=1
	}
	SubShader {

		Tags { "RenderType"="Opaque" }
		LOD 200

		CGPROGRAM
		#pragma surface surf Lambert vertex:vert

		fixed4 _MainColor;
		sampler2D _MainTex;
		sampler2D _NormalMap;

		float _ScrollXSpeed;
		float _ScrollYSpeed;

		float _WaveA;
		float _WaveB;

		struct Input 
		{
			float2 uv_MainTex;
			float2 uv_NormalMap;
			float2 Normal;
		};

		void vert(inout appdata_full v)
		{
			v.vertex.y+=_WaveA*sin((v.vertex.x+v.vertex.z)*_WaveB+_Time.y);
		}
		void surf (Input IN,inout SurfaceOutput o) 
		{
			fixed2 scrollUV=IN.uv_MainTex;
			scrollUV+=float2(_ScrollXSpeed*_Time.y,_ScrollYSpeed*_Time.y);

			fixed4 c=tex2D(_MainTex,scrollUV)*_MainColor;

			o.Albedo=c.rgb;
			o.Alpha=c.a;

			fixed2 scrollBumpUV=IN.uv_MainTex;
			scrollBumpUV-=float2(_ScrollXSpeed*_Time.y,_ScrollYSpeed*+_Time.y);
			o.Normal=UnpackNormal(tex2D(_NormalMap,scrollBumpUV));
		}
		ENDCG
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值