Unity Shader實(shí)現(xiàn)徑向模糊效果
在游戲里面有很多模糊效果,像賽車類游戲。當(dāng)你加速時,會發(fā)現(xiàn)2邊的場景變模糊。如下圖:

今天也來做一下徑向模糊效果,首先創(chuàng)建一個Material,給它添加一個紋理后將Material拖到新建的Plane上。如圖所示,可以看出模糊效果是從中心點(diǎn)由內(nèi)往外擴(kuò)散。接下來腦子里有了步驟
步驟一:定義徑向模糊的中心點(diǎn),通常取圖像的正中心點(diǎn)。
步驟二:計(jì)算采樣像素與中心點(diǎn)的距離,根據(jù)距離確定偏移程度,即離中心點(diǎn)越遠(yuǎn),偏移量越大。
步驟三:將采樣點(diǎn)的顏色值做平均求和。
Shader "liulongling/motion" {
Properties {
_MainTex("紋理",2D)="while"{}
_Level("強(qiáng)度",Range(0,100))=10
}
SubShader {
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
sampler2D _MainTex;
float _Level;
struct v2f{
fixed4 vertex:POSITION;
fixed2 uv:TEXCOORD;
};
v2f vert(appdata_base v){
v2f o;
o.vertex=mul(UNITY_MATRIX_MVP,v.vertex);
o.uv=v.texcoord;
return o;
}
fixed4 frag(v2f i):COLOR{
fixed4 c;
fixed2 center=fixed2(.5,.5);
fixed2 uv=i.uv-center;
fixed3 c1=fixed3(0,0,0);
for(fixed j=0;j<_Level;j++){
c1+=tex2D(_MainTex,uv*(1-0.01*j)+center).rgb;
}
c.rgb=c1/_Level;
c.a=1;
return c;
}
ENDCG
}
}
}
效果如下:


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
WPF+ASP.NET?SignalR實(shí)現(xiàn)簡易在線聊天功能的示例代碼
這篇文章將以一個簡單的聊天示例,簡述如何通過WPF+ASP.NET?SignalR實(shí)現(xiàn)消息后臺通知,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正2022-09-09
C#實(shí)現(xiàn)打開指定目錄和指定文件的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)打開指定目錄、打開指定目錄且選中指定文件、打開指定文件,感興趣的小伙伴可以嘗試一下2022-06-06
C# 解決datagridview控件顯示大量數(shù)據(jù)拖拉卡頓問題
這篇文章主要介紹了C# 解決datagridview控件顯示大量數(shù)據(jù)拖拉卡頓問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
C#使用Aspose.Cells創(chuàng)建和讀取Excel文件
這篇文章主要為大家詳細(xì)介紹了C#使用Aspose.Cells創(chuàng)建和讀取Excel文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10
C#實(shí)現(xiàn)判斷一個時間點(diǎn)是否位于給定時間區(qū)間的方法
這篇文章主要介紹了C#實(shí)現(xiàn)判斷一個時間點(diǎn)是否位于給定時間區(qū)間的方法,涉及C#針對時間的轉(zhuǎn)換與判定相關(guān)技巧,需要的朋友可以參考下2015-08-08
C#解決SQlite并發(fā)異常問題的方法(使用讀寫鎖)
這篇文章主要介紹了C#解決SQlite并發(fā)異常問題的方法,通過使用讀寫鎖達(dá)到多線程安全訪問,進(jìn)而解決SQLite并發(fā)異常的問題,具有一定參考借鑒價值,需要的朋友可以參考下2016-07-07

