Unity3D螢幕特效合成

2021-08-22 02:35:18 字數 1216 閱讀 4668

unity3d可以使用螢幕合成效果,估計很多人都知道,因為自帶的螢幕特效包裡面有很多這樣的例子。

比如原來攝像機渲染出來的效果是這樣的:

通過合成,你可以把它做顏色的偏移或者反**

或者可以在上面合成自己指定的紋理和效果等:

螢幕合成的原理其實很簡單,只是把原來螢幕渲染的東西,通過乙個特定的著色器改變內容成為新的畫面,然後替代了原來的畫面。

需要的東西有這麼幾樣:

1、乙個著色器程式

2、camera.onrenderimage(rendertexture,rendertexture)方法

3、graphics.blit方法

原理如下:

首先,在做合成處理的指令碼裡面寫方法

void onrenderimage(rendertexture src, rendertexture dest)

這個方法是在所有渲染工作完成之後呼叫的,輸入的src是渲染工作完成之後得到的畫面,而dest是目標的畫面,目標的畫面將會替代src顯示在螢幕上。

裡面呼叫的graphics.blit(src, dest, mat);方法,是把src給複製寫入dest中,mat是材質,如果有這個,那麼在複製過程中會使用mat中的著色器改變的內容。

**就是這麼簡單。如果你要容錯,可以做乙個檢查mat是否為空的操作。

剩下的工作就是編寫mat裡面的著色器的過程了。

這個著色器你可以使用vertex and fragment shader或者su***ce shader編寫都可以,沒有什麼神秘的地方,你可以使用各種的變數或者紋理。不過記得一點是,剛才我們的整個螢幕的渲染結果src會自動的成為_maintex紋理輸入,而這張由於是平鋪在螢幕上的,所以input的uv座標就是剛才那張_maintex的uv座標了。然後剩下的就是你在片段著色器程式或者表面著色器程式裡面通過改變它的uv資訊、偏移、顏色改變或者用各種紋理來疊加顏色。

而最後,如果你的疊加效果是有動畫效果的,那麼就在指令碼裡面動態改變material裡面的引數,就可以了。

Unity3D 螢幕自適應

其實說起來是老問題了,ngui時代,那時候的自適應大部分是交給ngui去處理,但是後來unity3d自家的ugui橫空出世之後,大部分人還是選擇了ugui,剛開始ugui的自適應並不好處理,但是現在已經變成了很容易的問題。在我紅筆標出來的地方就是影響自適應的關鍵地方,我現在的選擇是,1920 108...

Unity3D外掛程式 NGUI螢幕自適應

ngui可以比較方便的實現螢幕自適應,但是它的官方教程裡面針對這個問題沒有詳細的教程,所以可能在實現的時候會走比較多的彎路。以下是我在開發過程中找到的乙個比較方便的實現方法。1.uianchor 這個是用來確定控制項在螢幕中的位置,另外有一篇教程專門講它的功能,所有不會再贅述 2.uistretch...

Unity3D開發(九) Unity3d流光效果

遊戲開 壇 hello game 遊戲開發群 201276069 之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光...