在相機上掛指令碼,獲得引數: 模糊程度、前乙個視角投影矩陣、當前視角投影矩陣的逆矩陣,傳遞給到shader中
shader中,先對深度紋理取樣,得到深度值。再通過之前傳遞的矩陣,得到世界空間中,當前幀改點所在位置與前一幀改點所在位置。 再根據這兩個點,求得速度值(也就是上一步求得的兩個點的中心點)。使用傳入的模糊程度值*速度值,得到新的取樣點。
將這些取樣點求和再求平均值,得到最終點。進行返回。
using system;
using system.collections;
using system.collections.generic;
using unityengine;
public
class
motionblurwithdepthtexture1
:posteffectbasetest}[
range
(0.1f,1f
)]public
float blursize =
0.5f
;private
camera mycamera;
public
camera camera
return mycamera;}}
private
matrix4x4 previousviewprojectmatrix;
private
void
onenable()
private
void
onrenderimage
(rendertexture src,
rendertexture dest)
else
}}
shader "custom/motionblurwithddepthtexturetest"
_blursize (
"_blursize"
, float)
=1.0
} subshader
;
;
fixed4 frag
( v2f i)
: sv_target
c/=3
;//取均值
return
fixed4
(c.rgb,1)
;//返回最終結果};
endcg
pass
} fallback "off"
}
螢幕後處理
void onrenderimage rendertexture src,rendertexture dest 螢幕後處理函式 graphics.blit src,dest,mat,pass 螢幕後處理 src當前螢幕紋理 graphics.drawmesh amesh,vector3.zero,q...
螢幕後處理 邊緣檢測
如上圖所示,使用卷積核,計算螢幕影象每個點的畫素和當前點周圍的畫素,進行卷積操作,可以得到梯度值。主要演算法如下 for int it 0 it 9 it half edge 1 abs edgex abs edgey 計算最後的梯度值 如果當前畫素左右色差大,說明處於邊緣的位置,根據上面演算法得到...
第十一章 螢幕後處理效果(4)
bloom特效是遊戲中常見的一種螢幕效果。這種特效可以模擬真實攝像機的一種影象效果,它讓畫面中較量的區域 擴散 到周圍的區域中,造成一種朦朧的效果。下圖給出了動畫短片 大象之夢 英文名 elephants dream 中的乙個bloom效果。本節將會實現乙個基本的bloom特效,在學習完本節後,我們...