Unity自带的Image Effects的blur组件用于实现全屏幕模糊的效果。本文对其扩展实现支持裁剪的模糊效果。
Down Sample
An old-school trick for cheap blurs is to down-sample your image , and then up-scale the image with linear filtering.we'll apply a nice quality gaussian blur to the downsized image
通俗的说,低分辨率的贴图本身就有种“糊”的感觉,在此基础上做模糊,效率和效果都比较合适。
Clip
Clip操作在down sample阶段进行,修改fragDownsample函数,添加代码:
color *= 1 - step(_Clip.y, i.uv.y) * step(1 - _Clip.w, 1 - i.uv.y)*
step(_Clip.x, i.uv.x) * step(1 - _Clip.z, 1 - i.uv.x);
上述代码中_Clip由C#传入,按屏幕坐标矩形区域进行“裁剪”——使得矩形框内的颜色为0,这么做是为了最后与原图的叠加操作。