高品质后处理渲染技术分享:十种图像模糊算法的总结与实现( 七 )
Kawase Blur渲染效果接近高斯模糊 , 但具有更好的性能:
文章图片
以下是在初始RT DownScale为1、Iteration为6的设置下 , Dual Kawase Blur的渲染步骤:
文章图片
同样 , 对模糊半径(Blur Radius)参数的调节 , 可以控制Kawase模糊的程度:
文章图片
四、双重模糊(Dual Blur)
Dual Kawase Blur , 简称Dual Blur , 是SIGGRAPH 2015上ARM团队提出的一种衍生自Kawase Blur的模糊算法 。 其由两种不同的Blur Kernel构成 , 如下图所示 。
文章图片
相较于Kawase Blur在两个大小相等的纹理之间进行乒乓blit的的思路 , Dual Kawase Blur的核心思路在于blit过程中进行降采样和升采样,即对RT进行了降采样以及升采样 。 如下图所示:
文章图片
由于灵活的升降采样带来了blit RT所需计算量的减少等原因 ,Dual Kawase Blur相较于上文中提到的Gauusian Blur、Box Blur、Kawase Blur等Blur算法 , 有更好的性能 , 下图是相同条件下的性能对比 。
文章图片
可以看到 , Dual Kawase Blur具有最佳的性能表现 。
为了带来更好的性能表现 , 可以将uv的偏移放在Vert Shader中进行 , 而Fragment Shader中基本上仅进行采样即可 。
Dual Kawase Blur的Fragment Shader实现为:
half4 Frag_DownSample(v2f_DownSample i): SV_Target
{
half4 sum = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv) * 4;
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv01.xy);
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv01.zw);
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv23.xy);
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv23.zw);
return sum * 0.125;
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 违反违反医疗事故处理条例 青岛交通医院被警告
- 个税APP提示退税“国库处理”……原来是这么回事!
- 陕西榆林女子制止两插队者被打 打人者已被警方处理
- 教师有这些行为或被开除!广东首份违反师德处理办法征求意见
- 推荐警惕!厨房突发爆燃竟和煤气无关,只因他这样处理剩菜剩饭…...
- 厨房突发爆燃,竟和煤气无关!只因他这样处理剩菜剩饭…
- 公积金速看!漯河将清理公积金长期封存账户,请及时处理
- 牵出黄岛一起打架牵出贩卖“笑气”案 三人被依法处理
- 外媒:美明尼苏达州总检察长将领导处理弗洛伊德案
- 【各个】幸福触手可及各个人物结局 迪丽热巴细节上处理的很好
