Unity3d Shader 運動模糊

2021-09-05 12:27:27 字數 1703 閱讀 1591

攝影常用的一招就是延時攝影,以使運動的物體產生運動模糊。

攝影技巧為:1,三角架固定相機;2,調長**時間;3,物件有運動物體和靜止物體參照

用了延時攝影,**會產生藝術感,見下圖(2023年1月 拍攝於上海陸家嘴)

遊戲方面可喜的是unity3d也可以實現類似效果,先看效果圖

第一張為無運動模糊

第二張為有運動模糊:主體人物清晰,場景運動

第三張為第二張gif中的一幀

第四張為有運動模糊:攝像機不動,人物動的效果(凌波微步)

原理:累積緩衝區:允許在渲染到顏色緩衝區之後,不是把結果顯示到視窗上,而是把內容複製到累積緩衝區,這樣就可以把顏色緩衝區與累積緩衝區中的內容反覆進行混合,可以用來進行模糊處理和抗鋸齒。

我們**的實現是利用了一塊累積快取來混合多張連續的影象。我們不斷的不當前影象疊加到之前渲染好的影象中。

shader**

shader "mgo/motion_blur" 

_blursize("_blursize", range(0.001, 0.999)) = 0.9

} subshader

ztest off

cull off

zwrite off

blend srcalpha oneminussrcalpha

pass

; struct v2f

;uniform sampler2d _maintex;

uniform half _blursize;

fixed4 frag(v2f i) : sv_target

color.a = a;

//降低中心人物的運動模糊end

= 1 - _blursize;

return color;

}endcg

} }}

c#**

using unityengine;

namespace gamebase.effect

protected override void ondisable()

private rendertexture _accumulationrt;

void onrenderimage(rendertexture source, rendertexture destination)

_accumulationrt.markrestoreexpected();//效能開銷很大,看下官方文件

graphics.blit(source, _accumulationrt, material);

graphics.blit(_accumulationrt, destination);}}

}

Unity3D Shader 入門學習

unity3d 的所有渲染工作離不開著色器.shader 著色器其實是一小段程式,它負責將輸入的mesh網格.以指定的方式和輸入的貼圖或者顏色等組合作用.然後輸出.繪圖單元可以依據這個輸出來將影象繪製到螢幕上 輸入的貼圖或顏色等,加上對應的shader,以及對shader的特定引數設定,將這些內容 ...

unity3d shader之浮雕效果

浮雕就是對影象上的乙個畫素和它右下的那個畫素的色差的一種處理 非常容易,只需要乙個簡單的演算法 用fragment shader來實現 我們只看實現部分就好 在frag函式中 mc00mc tex2d maintex,i.uv maintex rgb 獲取當前點的顏色 mc11 tex2d main...

unity3D Shader《三》漫反射

一 漫反射的說明 對於粗糙物體表面的某一點,其亮度應該和入射光線與該點的垂直程度有關,也就是入射光線與此點的夾角相關。如果我們用l表示單位長度的入射光線,用c表示到達此點的光線強度和顏色,用n表示此點的髮線,那麼物體表面此點的亮度lum就可以用下面的公式來表示 lum c max 0,cos 表示的...