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


}

half4 Frag_UpSample(v2f_UpSample i): SV_Target
{
half4 sum = 0;
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv01.xy);
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv01.zw) * 2;
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv23.xy);
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv23.zw) * 2;
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv45.xy);
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv45.zw) * 2;
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv67.xy);
sum += SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv67.zw) * 2;

return sum * 0.0833;
}

完整的Runtime + Shader实现可见:

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


XPL中也提供了启发自Dual Kawase Blur的Dual Gaussian Blur、Dual Box Blur、Dual Tent Blur的实现 。

  • Dual Gaussian Blur:
    X-PostProcessing/Effects/DualGaussianBlur
  • Dual Box Blur:

    X-PostProcessing/Effects/DualBoxBlur

  • Dual Tent Blur:

    X-PostProcessing/Effects/DualTentBlur


Dual Kawase Blur最终的模糊效果截图如下 , 可以看到其与高斯模糊的模糊表现也非常接近:

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


以下是在初始RT DownScale为1、Iteration为5的设置下 , Dual Kawase Blur的渲染步骤:

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


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

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


五、散景模糊(Bokeh Blur)


散景(Bokeh)亦称焦外成像 , 是一个摄影名词 , 一般表示在景深较浅的摄影成像中 , 落在景深以外的画面 , 会有逐渐产生松散模糊的效果 。 散景效果有可能因为摄影技巧或光圈孔形状的不同 , 而产生各有差异的效果 。 例如镜头本身的光圈叶片数不同(所形成的光圈孔形状不同) , 会让圆形散景呈现不同的多角形变化 。 此外 , 反射式镜头焦外的散景 , 会呈现独有的甜甜圈形状 。

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


推荐阅读