Unity Shader关于uv动画和定点动画的个人浅见

uv动画是根据图片纹理的移动来达成效果的,uv动画一般(基本了吧)是先对图片进行采样,接着对uv进行增减来达成移动效果,而乘可以让其放大,除可以在做帧动画的时候可以用到。除法会获取到纹理涂的某一块区间。
这是uv移动动画对uv进行的操作

    v2f vert (a2v v)
    {
        v2f o;
        o.pos = UnityObjectToClipPos(v.vertex);
		//根据时间来偏移uv的x分量,从而让x分量达到移动效果
		o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex) + frac(float2(_ScrollX, 0.0)*_Time.y);
		o.uv.zw = TRANSFORM_TEX(v.texcoord, _DetailTex) + frac(float2(_Scroll2X, 0.0)*_Time.y);
        return o;
    }

    fixed4 frag (v2f i) : SV_Target
    {
        // sample the texture
        fixed4 col = tex2D(_MainTex, i.uv.xy);
        // apply fog
	fixed4 col2 = tex2D(_DetailTex, i.uv.zw);
	fixed4 cc = lerp(col, col2, col2.a);
        return cc;
    }

其中对uv的操作等价于

fixed4 frag(v2f i) : SV_Target
{
	// sample the texture
	 i.uv.xy += frac(float2(_ScrollX, 0.0)*_Time.y);//纹理采样后对uv进行增减
	fixed4 col = tex2D(_MainTex, i.uv.xy);
// apply fog
    fixed4 col2 = tex2D(_DetailTex, i.uv.zw);
    fixed4 cc = lerp(col, col2, col2.a);
    return cc;

}

这是帧动画对uv进行的操作



 fixed4 frag (v2f i) : SV_Target
            {
				float time = floor(_Time.y*_Speed);//floor函数取整
			    float row = floor(time / _HorizontalAmount);//time除以_HorizontalAmount的结果商来做诶当前的对应的行索引
				 //float row = fmod(time, _HorizontalAmount);
			    float column = time - row * _HorizontalAmount; //使用他们的余数作为列索引
			    _Test = _Test2;
				//half2 uv = i.uv + half2(column, -row);//对uv纹理进行偏移,xy的改变会让图片位置改变
				//uv.x /= _HorizontalAmount;//UV.x把图片分成HorizontalAmount份
				//uv.y /= _VerticalAmount;//uv。y把图片分成HorizontalAmount份

				fixed2 seqUV = float2((i.uv.x) / _HorizontalAmount, (i.uv.y) / _VerticalAmount);
				seqUV.x += row / _HorizontalAmount;
				seqUV.y -= column / _VerticalAmount;
				fixed2 uv = i.uv + fixed2(column, -row);
				uv.x /= _HorizontalAmount;
				uv.y /= _VerticalAmount;


				fixed4 c = tex2D(_MainTex, uv);
				c.rgb *= _Color;
			    return c;
            }

顶点动画是对顶点动态改变而形成动画Unity Shader关于uv动画和定点动画的个人浅见_第1张图片
对顶点改变主要是在顶点着色器中对顶点进行的改变,来造成图片向各个地方进行延伸或缩减
而上图的计算纹理就是对于上面的纹理动画,利用_Speed变量来控制纹理动画的快慢

你可能感兴趣的:(Unity,UnityShader,Unity,Shader,Unity,Shader,uv动画,图形图像学)