【Unity Built-In】高斯模糊和2K以上高分辨率问题
用的是Built-In渲染管线,由于Unity的PostProcessing包里没有高斯模糊,所以自己实现一个。
网上的实现大多没有考虑到2K及以上分辨率会出现的问题。不能一味滥用采样间隔,太大网格化很丑,只能稍微加一点,配合降低迭代次数,以求性能优化。
2.1 需要初始化RT时就给一个比较小的大小比如1024*720。不然分辨率太大,再怎么模糊效果也不明显
2.2需要每次迭代让RT的分辨率降半,同上理。
(PS:分垂直,水平pass更多是为了提高卷积核边长,其次才是性能。如果你用3x3的核,我认为都没有分pass的必要,不一定能提高性能反而可能降低)
为了懒,Shader中实时计算高斯权重了,消耗应该不大。(消耗是不大,不过不分pass卷积边长上不去,效果不明显,干脆抄一个边长9*9的,权重不实时算了,配合step和expand和intensity,这样够用了。“够用”指可以模糊到非常夸张)
代码地址:
https://gist.github.com/ouerkakaChango/14bd31ef276c3849cdd5d51d074c57c4



测试看来高斯模糊没有我想象得费。(原图是2K的,缩成1K,b站压缩会出网格状,这个我没办法了)即使是2K分辨率渲染,实时高斯模糊还能达到非常强模糊的效果,最重要是没有滥用采样间距导致网格瑕疵。