Unity Shader實現(xiàn)動態(tài)過場切換圖片效果
本文實例為大家分享了Unity Shader實現(xiàn)動態(tài)過場切換圖片的具體代碼,供大家參考,具體內(nèi)容如下
一、簡單介紹
Shader Language的發(fā)展方向是設(shè)計出在便攜性方面可以和C++、Java等相比的高級語言,“賦予程序員靈活而方便的編程方式”,并“盡可能的控制渲染過程”同時“利用圖形硬件的并行性,提高算法效率”。
本文介紹,如何使用 shader ,動態(tài)過場形式切換圖片的一點簡單效果。
二、實現(xiàn)原理
1、通過時間疊加判斷,當(dāng) 值小于 主圖 uv 的時候,進(jìn)行切換圖的渲染
// 過場切換的位置 float curPos = _Time.y*_Speed; if(curPos < i.uv.x){ col = tex2D(_CutTex,i.uv); }
三、注意事項
1、 當(dāng)小于 x,渲染_CutTex(開始都是小于 x的,開始渲染_CutTex), 隨著時間變化,切換為 _MainTex
四、效果預(yù)覽
五、實現(xiàn)步驟
1、打開Unity,新建一個工程
2、導(dǎo)入素材,和新建shader,并對應(yīng)新建材質(zhì)
3、編寫好shader,把材質(zhì)對應(yīng)賦值
4、場景中添加一個 Quad ,并把材質(zhì)賦給Quad,用來顯示
5、運(yùn)行場景,效果如上
六、關(guān)鍵代碼
Shader "Unlit/CutEffect" { Properties { _MainTex ("Texture", 2D) = "white" {} _CutTex("Cut Tex",2D)="white"{} // 切換速度 _Speed("speed",Range(-1,1))=0.2 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { 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; sampler2D _CutTex; float _Speed; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 col = tex2D(_MainTex,i.uv); // 過場切換的位置 float curPos = _Time.y*_Speed; // 當(dāng)小于 x,渲染_CutTex(開始都是小于 x的,開始渲染_CutTex), // 隨著事件變化,切換為 _MainTex if(curPos < i.uv.x){ col = tex2D(_CutTex,i.uv); } return col; } ENDCG } } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中如何自定義配置上周和本周起始日來查詢業(yè)務(wù)數(shù)據(jù)(思路詳解)
在C#中并沒有封裝的方法根據(jù)我們需要來直接獲取上一周某天到某天、本周某天到某天,所以需要我們自己封裝方法來實現(xiàn)(我們也可以按照這個思路使用其他語言來實現(xiàn)),感興趣的朋友跟隨小編一起看看吧2023-09-09