Unity Shader 之 简单滚动(uv)动画的效果实现

Unity Shader 之 简单滚动(uv)动画的效果实现

 

目录

Unity Shader 之 简单滚动(uv)动画的效果实现

一、简单介绍

二、实现原理

三、注意事项

四、效果预览

五、实现步骤

六、代码


 

 

一、简单介绍

Shader Language的发展方向是设计出在便携性方面可以和C++、Java等相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“尽可能的控制渲染过程”同时“利用图形硬件的并行性,提高算法效率”。

滚动的动画,走马灯效果,图片走动的效果。


二、实现原理

1、uv 某个方向(或者两个方向xy)随着时间变化,从而实现滚动动画效果;

 

三、注意事项

1、合适的设置时间运动速度,以达到更好的效果;

 

四、效果预览

Unity Shader 之 简单滚动(uv)动画的效果实现_第1张图片

 

五、实现步骤

1、新建Unity场景,添加 Cylinder

Unity Shader 之 简单滚动(uv)动画的效果实现_第2张图片

2、场景中导入要滚动的图片,并新建 shader ,和对应的材质,如下图

Unity Shader 之 简单滚动(uv)动画的效果实现_第3张图片

3、把图片赋值给材质,然后把材质赋值给 Cylinder ,如下图

Unity Shader 之 简单滚动(uv)动画的效果实现_第4张图片

Unity Shader 之 简单滚动(uv)动画的效果实现_第5张图片

4、运行场景,效果如下

Unity Shader 之 简单滚动(uv)动画的效果实现_第6张图片

 

六、代码

Shader "Unlit/UVScrollAnimation"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}

		// 滚动速度
		_Speed("Speed",float) = 1
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag


            #include "UnityCG.cginc"

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

            struct v2f
            {
                float2 uv : TEXCOORD0;

                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float _Speed;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);

				// 添加 x 上的滚动动画效果 (根据需要可以进行 y 上的效果添加)
				o.uv = o.uv + float2(_Speed,0) * _Time.y;

                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);

                return col;
            }
            ENDCG
        }
    }
}

 

你可能感兴趣的:(Unity,Shader)