螢幕後處理 運動模糊(通過畫素速度)

2021-10-09 16:17:28 字數 1331 閱讀 6449

在相機上掛指令碼,獲得引數: 模糊程度、前乙個視角投影矩陣、當前視角投影矩陣的逆矩陣,傳遞給到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特效,在學習完本節後,我們...