bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

UnityShader如何實(shí)現(xiàn)序列幀動(dòng)畫效果-創(chuàng)新互聯(lián)

小編這次要給大家分享的是Unity Shader如何實(shí)現(xiàn)序列幀動(dòng)畫效果,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

目前創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、加格達(dá)奇網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Unity Shader如何實(shí)現(xiàn)序列幀動(dòng)畫效果  Unity Shader如何實(shí)現(xiàn)序列幀動(dòng)畫效果

實(shí)現(xiàn)原理

主要的思想是設(shè)置顯示UV紋理的大小,并逐幀修改圖片的UV坐標(biāo)。(可分為以下四步)

1、我們首先把 _Time.y 和速度屬性_Speed 相乘來得到模擬的時(shí)間,并使用CG 的floor 函數(shù)對(duì)結(jié)果值取整來得到整數(shù)時(shí)間time 

2、然后,我們使用time 除以_HorizontalAmount 的結(jié)果值的商來作為當(dāng)前對(duì)應(yīng)的行索引,除法結(jié)果的余數(shù)則是列索引。

3、接下來,我們需要使用行列索引值來構(gòu)建真正的采樣坐標(biāo)。由于序列幀圖像包含了許多關(guān)鍵幀圖像, 這意味著采樣坐標(biāo)需要映射到每個(gè)關(guān)鍵幀圖像的坐標(biāo)范圍內(nèi)。我們可以首先把原紋理坐標(biāo)i.uv 按行數(shù)和列數(shù)進(jìn)行等分,得到每個(gè)子圖像的紋理坐標(biāo)范圍。

4、然后, 我們需要使用當(dāng)前的行列數(shù)對(duì)上面的結(jié)果進(jìn)行偏移,得到當(dāng)前子圖像的紋理坐標(biāo)。需要注意的是,對(duì)豎直方向的坐標(biāo)偏移需要使用減法, 這是因?yàn)樵赨nity 中紋理坐標(biāo)豎直方向的順序(從下到上逐漸增大)和序列幀紋理中的順序(播放順序是從上到下〉是相反的。這樣,我們就得到了真正的紋理采樣坐標(biāo)。

Unity Shader實(shí)現(xiàn)序列幀動(dòng)畫的代碼:

Shader "Unlit/Demo-SequenceAnimation"
{
 Properties
 {
 _MainTex ("Sequence Frame Image", 2D) = "white" {} // 序列幀動(dòng)畫紋理
 _Color("Color Tint", Color) = (1, 1, 1, 1)   // 顏色
 _HorizontalAmount("Horizontal Amount", float) = 4 // 行數(shù)
 _VerticalAmount("Vertical Amount", float) = 4  // 列數(shù)
 _Speed("Speed", Range(1, 100)) = 30 // 播放速度
 }
 
 SubShader
 {
 // 由于序列幀圖像通常包含了透明通道,因此可以被當(dāng)成是一個(gè)半透明對(duì)象。
 // 在這里我們使用半透明的“標(biāo)配”來設(shè)置它的SubShader 標(biāo)簽,即把Queue 和RenderType 設(shè)置成Transparent,
 //把IgnoreProjector 設(shè)置為True
 Tags { "RenderType"="Transparent" "Queue"="Transparent" "IgnoreProjector"="True"}
 LOD 100
 
 Pass
 {
 Tags{"LightMode"="ForwardBase"}
 
 // 由于序列幀圖像通常是透明紋理,我們需要設(shè)置Pass 的相關(guān)狀態(tài),以渲染透明效果
 // 在Pass 中,我們使用Blend 命令來開啟并設(shè)置混合模式,同時(shí)關(guān)閉了深度寫入
 ZWrite Off
 Blend SrcAlpha OneMinusSrcAlpha
 
 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;
 };
 
 sampler2D _MainTex;
 float4 _MainTex_ST;
 fixed4 _Color;
 float _HorizontalAmount;
 float _VerticalAmount;
 float _Speed;
 
 v2f vert (appdata v)
 {
 v2f o;
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = TRANSFORM_TEX(v.uv, _MainTex);
 return o;
 }
 
 fixed4 frag (v2f i) : SV_Target
 {
 float time = floor(_Time.y * _Speed);   //所經(jīng)過的時(shí)間
 float row = floor(time / _HorizontalAmount); // 第幾行圖片 (和行數(shù)不能對(duì)應(yīng)起來)
 float column = time - row * _HorizontalAmount; // 第幾列圖片
 
 //每次更新的量
// float offserX = 1.0 / _HorizontalAmount; 
// float offserY = 1.0 / _VerticalAmount;
// half2 uv = float2(i.uv.x * offsetX, i.uv.y*offsetY);
 
 //將所顯示的圖片縮放至應(yīng)有的大小 (即一個(gè)關(guān)鍵幀圖像的大?。? half2 uv = float2(i.uv.x /_HorizontalAmount, i.uv.y / _VerticalAmount); // 等價(jià)于上面3句
 
 //下面方法雖然不能和序列幀動(dòng)畫一一對(duì)應(yīng),但仍符合序列幀動(dòng)畫的執(zhí)行順序
 uv.x += column / _HorizontalAmount; // 更換序列幀
 uv.y -= row / _VerticalAmount;  //等價(jià)于uv.y += 1.0 - row / _VerticalAmount; 
 
 // sample the texture
 fixed4 col = tex2D(_MainTex, uv);
 col.rgb *= _Color.rgb;   // 設(shè)置紋理顏色
 return col;
 }
 ENDCG
 }
 }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:UnityShader如何實(shí)現(xiàn)序列幀動(dòng)畫效果-創(chuàng)新互聯(lián)
當(dāng)前地址:http://vcdvsql.cn/article32/cscepc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、定制網(wǎng)站、網(wǎng)站導(dǎo)航網(wǎng)站策劃、做網(wǎng)站、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)