Unity Shader 序列帧动画
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Unity Shader 序列帧动画,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2009字,纯文字阅读大概需要3分钟。
内容图文
shader中的序列帧动画属于纹理动画中的一种,主要原理是将给定的纹理进行等分,再根据时间的变化循环播放等分中的一部分。
名称 | 类型 | 描述 |
_Time | float4 | (t/20,t,2t,3t) 其中t为自该场景加载所经过时间 |
_SinTime | float4 | (t/8,t/4,t/2,t) 其中t为自该场景加载所经过时间的正弦值 |
_CosTime | float4 | (t/8,t/4,t/2,t) 其中t为自该场景加载所经过时间的余弦值 |
unity_DeltaTime | float4 | (dt,1/dt,sdt,1/sdt) 其中dt为时间增量,sdt为时间增量的平滑值 |
脚本如下:
1 Shader "MyUnlit/FrameAnimation" 2{ 3 Properties 4 { 5 _Color("Color Tint",color)=(1,1,1,1) 6 _MainTex ("Texture", 2D) = "white" {} 7 _CutX("CutX Amount",float)=4 8 _CutY("CutY Amount",float)=4 9 _Speed("Speed",range(1,100))=3010 } 11 SubShader 12 { 13//一般序列帧动画的纹理会带有Alpha通道,因此要按透明效果渲染,需要设置标签,关闭深度写入,使用并设置混合14 Tags { "RenderType"="transparent""queue"="transparent""ignoreprojector"="true" } 15 ZWrite off 16 blend srcalpha oneminussrcalpha 1718 Pass 19 { 20 Tags{"lightmode"="forwardbase"} 2122 CGPROGRAM 23#pragma vertex vert 24#pragma fragment frag 25#pragma multi_compile_fog 2627 #include "UnityCG.cginc"2829struct appdata 30 { 31 float4 vertex : POSITION; 32 float2 uv : TEXCOORD0; 33 }; 3435struct v2f 36 { 37 float2 uv : TEXCOORD0; 38 UNITY_FOG_COORDS(1) 39 float4 vertex : SV_POSITION; 40 }; 4142 sampler2D _MainTex; 43 float4 _MainTex_ST; 44 fixed4 _Color; 45float _CutX; 46float _CutY; 47float _Speed; 4849 v2f vert (appdata v) 50 { 51 v2f o; 52 o.vertex = UnityObjectToClipPos(v.vertex); 53 o.uv = TRANSFORM_TEX(v.uv, _MainTex); 54 UNITY_TRANSFER_FOG(o,o.vertex); 55return o; 56 } 5758 fixed4 frag (v2f i) : SV_Target 59 { 60//取得整数的时间61float time = floor(_Time.y*_Speed); 62//整除部分为行(因为播放顺序是从左到右,先行后列)63float row = floor(time / _CutX); 64//余数部分为列65float column = time - row * _CutX; 6667//计算偏移值,其中u向为列索引值,v向为行索引的相反数(播放原点是左上角,而uv采样原点是左下角,所以v向偏移应该取反)68 half2 uv = i.uv + half2(column,-row); 69//除以行列得到最终的采样值70 uv.x /= _CutX; 71 uv.y /= _CutY; 7273 fixed4 col = tex2D(_MainTex,uv); 74 col.rgb *= _Color; 75 UNITY_APPLY_FOG(i.fogCoord, col); 76return col; 77 } 78 ENDCG 79 } 80 } 81 FallBack "Transparent/VertexLit"82 }
原文:https://www.cnblogs.com/koshio0219/p/11119787.html
内容总结
以上是互联网集市为您收集整理的Unity Shader 序列帧动画全部内容,希望文章能够帮你解决Unity Shader 序列帧动画所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。