高品质后处理渲染技术分享:十种图像模糊算法的总结与实现( 四 )
文章图片
, 其中M, N是需要进行滤波的图像的维数 , m、n是滤波器的维数 。
以下为一个Gaussian Kernel的线性分解过程:
文章图片
而下图很好的对Gaussian Kernel的线性可分进行了描述:
文章图片
实现方面 , 可以采用经过线性分解的高斯核的方案 , 且用乒乓RT交互blit的方法 。 高斯模糊对应的Fragment Shader的实现为:
float4 FragGaussianBlur(v2f i): SV_Target
{
half4 color = float4(0, 0, 0, 0);
color += 0.40 * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv);
color += 0.15 * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv01.xy);
color += 0.15 * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv01.zw);
color += 0.10 * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv23.xy);
color += 0.10 * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv23.zw);
color += 0.05 * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv45.xy);
color += 0.05 * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv45.zw);
return color;
}
篇幅原因 , 在这里以及后文中 , 对应后处理的Runtime + Shader的完整的实现就不贴了 , 但会给出XPL中的实现链接 。
完整高斯模糊的Runtime + Shader实现可见:
https://github.com/QianMo/X-PostProcessing-Library/tree/master/Assets/X-PostProcessing/Effects/GaussianBlur
以下是开启高斯模糊后处理前后的对比图:
文章图片
文章图片
以及展示了BlurRadius为3 , Iteration为6 , RTDownScale为1的设置下 , 经过横纵线性分解的高斯模糊的渲染过程的动图:
文章图片
对模糊半径(Blur Radius)参数的调节 , 可以控制高斯模糊的程度:
推荐阅读
- 违反违反医疗事故处理条例 青岛交通医院被警告
- 个税APP提示退税“国库处理”……原来是这么回事!
- 陕西榆林女子制止两插队者被打 打人者已被警方处理
- 教师有这些行为或被开除!广东首份违反师德处理办法征求意见
- 推荐警惕!厨房突发爆燃竟和煤气无关,只因他这样处理剩菜剩饭…...
- 厨房突发爆燃,竟和煤气无关!只因他这样处理剩菜剩饭…
- 公积金速看!漯河将清理公积金长期封存账户,请及时处理
- 牵出黄岛一起打架牵出贩卖“笑气”案 三人被依法处理
- 外媒:美明尼苏达州总检察长将领导处理弗洛伊德案
- 【各个】幸福触手可及各个人物结局 迪丽热巴细节上处理的很好
