高品质后处理渲染技术分享:十种图像模糊算法的总结与实现(14)



half4 DirectionalBlur(VaryingsDefault i)
{
half4 color = half4(0.0, 0.0, 0.0, 0.0);

for (int k = -_Iteration; k < _Iteration; k++)
{
color += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.texcoord - _Direction * k);
}
half4 finalColor = color / (_Iteration * 2.0);

return finalColor;
}

完整的Runtime + Shader实现可见:

https://github.com/QianMo/X-PostProcessing-Library/tree/master/Assets/X-PostProcessing/Effects/DirectionalBlur


方向模糊后处理的渲染效果如下:

高品质后处理渲染技术分享:十种图像模糊算法的总结与实现
文章图片


同样 , 对模糊半径(Blur Radius)参数的调节 , 可以控制模糊的程度:

高品质后处理渲染技术分享:十种图像模糊算法的总结与实现
文章图片


而调节Angle参数 , 可以控制模糊旋转的方向:

高品质后处理渲染技术分享:十种图像模糊算法的总结与实现
文章图片


总结


本文开头已经提到 , 模糊算法在后处理渲染领域占据着非常重要的地位 。 很多产品级后处理的实现 , 都会直接或间接依赖于一种或多种图像模糊算法 。 后处理管线中所采用的模糊算法的优劣 , 决定了产品最终的渲染品质和消耗的性能大小 。

让我们重新看一下这十种模糊算法的横向对比 , 相信此时 , 大家对这十种模糊算法已经有了更全面的理解 , 以及自己的选择 。

高品质后处理渲染技术分享:十种图像模糊算法的总结与实现
文章图片


The End.

Reference

[1] GDC 2003, Frame Buffer Postprocessing Effects in DOUBLE-S.T.E.A.L (Wreckless)

[2] SIGGRAPH 2015, Bandwidth-Efficient Rendering

[3] SIGGRAPH 2001 , Fast Image Convolutions

[4] Gonzalez R C, Woods R E. Digital image processing, 4th edn. ISBN: 9780133356724[J]. 2017.

[5]https://computergraphics.stackexchange.com/questions/39/how-is-gaussian-blur-implemented

[6] http://datahacker.rs/opencv-average-and-gaussian-filter/

[7]https://towardsdatascience.com/image-processing-class-egbe443-4-filters-aa1037676130

[8] https://www.zhihu.com/question/20813608/answer/261346592

[9] https://en.wikipedia.org/wiki/Box_blur

[10] https://en.wikipedia.org/wiki/Gaussian_blur

[11] http://blog.marmakoide.org/?p=1


推荐阅读