テクスチャシェーダアニメーションの1つに属するフレームアニメーションシーケンスは、主な原理は、等分テクスチャーを与えられ、その後、等価時にループの部分を変更しています。
名前 | タイプ | 説明 |
_時間 | float4 | Tは、シーンのロード時から経過した(T / 20、T、2T、3T) |
_SinTime | float4 | (T / 8、T / 4、T / 2、T)Tはローディングシナリオサインの時間から経過した場合 |
_CosTime | float4 | Tは、シーンの自己荷重経過時間の余弦である(T / 8、T / 4、T / 2、T) |
unity_DeltaTime | float4 | 時間増分用(DT、1 / dtは、SDT、1 / SDT)dtは時間増分であり、SDT平滑化値 |
次のようにスクリプトは次のとおりです。
1シェーダ" MyUnlit / FrameAnimation " 2 { 3つの プロパティ 4 { 5 _Color(" 色味"、色)=(1、1、1、1 ) 6 _MainTex(" テクスチャ"、2D)= " 白" {} 7 _CutX (" CutX量"、フロート)= 4 8 _CutY(「CUTY量" フロート)= 4 。9 _SPEED(" スピード」、範囲(1、100))= 30 10 } 11 SubShader 12は { 13は // テクスチャアルファチャンネルとアニメーションシーケンスの一般的なフレームは、従ってYaoanの透明性をレンダリングタグが近い深い書き込みを設定する必要があり、混合使用して設定 14個の タグを{ 「RenderType 」 = 「透明」 「キュー」 = 「透明」 「ignoreprojector 」 = "真の"} 15 オフZWRITE 16 oneminussrcalphaブレンドSRCALPHA 17 18 パス 19 { 20個の タグ{ " lightmode " = " forwardbase " } 21 22 CGPROGRAM 23 の#pragma頂点VERT 24 の#pragma断片FRAG 25 の#pragmaは multi_compile_fog 26 27 の#include " UnityCG.cgincを" 28 29 構造体APPDATA 30 { 31 のfloat4頂点:POSITION。 32 するfloat2 UV:TEXCOORD0。 33 }。 34 35 構造体V2F 36 { 37 するfloat2 UV:TEXCOORD0。 38 UNITY_FOG_COORDS(1 ) 39 のfloat4頂点:SV_POSITION。 40 }。 41 42 sampler2D _MainTex。 43 のfloat4 _MainTex_ST。 44 fixed4 _Color。 45 フロート_CutX。 46 フロート_CutY。 47 フロート_Speed。 48 49 (APPDATA V)V2FのVERT 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)。 55 リターンO; 56 } 57 58 fixed4 FRAG(V2F I):SV_Target 59 { 60 // 取得整数的时间 61 フロート=床時間(_Time.y * _SPEED); 62である // アリコート部分列(左から右に再生シーケンス、最初の列ので) 63が フロート床(時間/ =行_CutX); 64 // カラムの残りの部分 65 フロートカラム=時間- *行_CutX; 66 67 // オフセット値が算出され、uが値の列インデックスであり、vは原点は左上隅が表示され、UVサンプル原点は左下隅である(行インデックスの反対です、オフセットV)ようにそれが否定されるべきである 68 - half2 UV + = i.uv half2(カラム;行) 69 // 最終行取得するためにサンプル値で割った 70 uv.x / = _CutXを、 71である uv.y / = _CutY; 72 73である fixed4 COL =tex2D(_MainTex、UV)。 74 col.rgb * = _Color。 75 UNITY_APPLY_FOG(i.fogCoord、COL)。 76 リターンCOL。 77 } 78 ENDCG 79 } 80 } 81 フォールバック" 透明/ VertexLit " 82 }