Unity ShaderLab特效教程 着色器实例 代码+注释 【沿x轴y轴方向移动贴图动画】

如果代码中有什么不清楚请查看以下基础知识

Shader基础知识
unity3d 中 七种坐标知识详解
沿x轴y轴方向移动贴图动画

设置移动速度和贴图,就动起来了

Shader "Custom/ScrollSurfaceShader"
{
	Properties{
		//叠加颜色
		_Color("Color", Color) = (1,1,1,1)
		//指定贴图
		_MainTex("Albedo (RGB)", 2D) = "white" {}
		//光泽
		_Glossiness("Smoothness", Range(0,1)) = 0.5
		//金属度
		_Metallic("Metallic", Range(0,1)) = 0.0
		//x轴滚动
		_ScrollXSpeed("X Scroll Speed", Range(0, 10)) = 0.2
		//y轴滚动
		_ScrollYSpeed("Y Scroll Speed", Range(0, 10)) = 0.2
	}
		SubShader{
			Tags { "RenderType" = "Opaque" }
			LOD 200

			//没在pass中,因为时表面着色器
			CGPROGRAM

			//声明表面着色器
			#pragma surface surf Standard fullforwardshadows // Physically based Standard lighting model, and enable shadows on all light types
			#pragma target 3.0 // Use shader model 3.0 target, to get nicer looking lighting

			sampler2D _MainTex;
			//定义输入结构
			struct Input {
				float2 uv_MainTex;
			};

			half _Glossiness;
			half _Metallic;
			fixed4 _Color;
			fixed _ScrollXSpeed;
			fixed _ScrollYSpeed;

			//表面着色器正文 第一个参数为输入,第二个参数为输出
			void surf(Input IN, inout SurfaceOutputStandard o)
			{
				//输入的速度值 * 时间
				fixed2 scrollValue = fixed2(_ScrollXSpeed * _Time.y, _ScrollYSpeed * _Time.y);
				//uv = 当前的uv值+根据时间变动的值
				float2 scrolledUV = IN.uv_MainTex + scrollValue;
				//返回小数部分   这是i因为uv 的满值是1,要接受1以内的小数
				scrolledUV = frac(scrolledUV);
				//镜像播放
				//scrolledUV = sin(scrolledUV);

				// 设置主色,由贴图颜色 * color设置颜色
				fixed4 c = tex2D(_MainTex, scrolledUV) * _Color;
				o.Albedo = c.rgb;
				//金属
				o.Metallic = _Metallic;
				//平滑
				o.Smoothness = _Glossiness;
				//透明度
				o.Alpha = c.a;
			}
			ENDCG
		}
			//默认效果
			FallBack "Diffuse"
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千年奇葩

从来没受过打赏,这玩意好吃吗?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值