当前位置:网站首页>Shader实现帧动画-FrameAnimation
Shader实现帧动画-FrameAnimation
2022-08-09 00:08:00 【ThomasQxx】
Shader "QShader/FrameAmination_One"{
Properties{
_MainTex("Animation Texture",2D) = "white"{
}
_BaseColor("BaseColor",Color) = (1.0,1.0,1.0,1.0)
_XCount("XCount",Int) = 1
_YCount("YCount",Int) = 1
_Speed("Speed",Range(1,100)) = 30
}
SubShader{
Tags{
"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
pass {
Tags{
"LightMode" = "Always"}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#include "Lighting.cginc"
#include "UnityCG.cginc"
#include "AutoLight.cginc"
#pragma vertex Vertex
#pragma fragment Fragment
sampler2D _MainTex;
fixed4 _BaseColor;
int _XCount;
int _YCount;
float _Speed;
struct v2f {
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
};
v2f Vertex(appdata_base v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
return o;
}
fixed4 Fragment(v2f i) :SV_TARGET{
//Speed来控制速度
//_Time.y = 自该场景加载后经过的时间
float time = floor(_Time.y * _Speed);
float ypos = floor(time / _XCount);
float xpos = time - ypos * _XCount;
i.uv.x = (i.uv.x + xpos) / _XCount;
i.uv.y = 1 - (ypos + 1 - i.uv.y) / _YCount;
fixed4 c = tex2D(_MainTex,i.uv);
return c * _BaseColor;
}
ENDCG
}
}
}
边栏推荐
猜你喜欢
随机推荐
flutter shared_preferences 异步变同步
C#WPF简述
Dart高级(一)——泛型与Json To Bean
关于如何求两个字符串的最大公共子串的问题
第二章 关系数据库概述
第七章 无线与移动网络
Laravel框架之JSON
关于在core中使用minio对象存储
几种常见的开源软件许可协议(GPL, LGPL, Apache License, BSD)
爬虫学习整理
conda xgboost 安装 jupyter notebook
MySQL导入导出数据库
MySQL预处理及过程与对象创建数据库
第六章 物理层
蓝桥杯历届试题-合根植物(并查集)
第七章 数据管理技术的发展
GRPC学习(An RPC library and framework)
数据机构-哈夫曼树
pytorch 使用torch.autograd.grad 求导
矩阵乘法总结