shader编程3

顶点着色器波动效果:顶点随时间进行移动

_Time:float4类型,包含四个值

        x:对应当前加载时间的1/20

        y:对应当前加载时间

        z:对应当前加载时间的2倍

        w:对应当前加载时间的3倍

Shader "Hidden/text4"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _A ("A",float) = 1  //幅度
    }
    SubShader
    {
       

        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;
            };

            float _A;

            v2f vert (appdata v)
            {
                v2f o;
                v.vertex.y += _A * sin(_Time.y + v.vertex.x);   //波纹效果
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            sampler2D _MainTex;

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                // just invert the colors
              
                return col;
            }
            ENDCG
        }
    }
}

片段着色器:UV随时间移动

 fixed4 frag (v2f i) : SV_Target
            {
                i.uv.y += _Time.y;    //uv随时间y方向滚动
                fixed4 col = tex2D(_MainTex, i.uv);
                // just invert the colors
              
                return col;
            }

UV随时间旋转

 

fixed4 frag (v2f i) : SV_Target
            {
                float angle = _Time.y;  //旋转角度
                float2 uv = (0,0);    //默认值

                i.uv -= float2(0.5,0.5);    //将所有点向左向下移动0.5,使得旋转中心位于cube中心

                // if(length(i.uv)>0.5){   //如果uv超过边界,则舍弃
                //     return fixed4(0,0,0,0);
                // }

                uv.x = i.uv.x * cos(angle) + i.uv.y * sin(angle);
                uv.y = i.uv.y * cos(angle) - i.uv.x * sin(angle);

                uv += float2(0.5,0.5);  //还原原uv坐标

                fixed4 col = tex2D(_MainTex, uv);
                // just invert the colors
               
                return col;
            }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值