这个代码以前我用于我的一个资源包中,但我已经决定不再支持该代码并将其公开。 视频中展示的版本是 URP:https://github.com/daniel-ilett/blur-pro-urp
模糊技术是通过取周围像素颜色的平均值来消除图像上的特征信息。 如果像素平均值没有加权,那么你会得到一个盒子模糊效果(也支持),但你可以使用高斯加权值来得到一个平滑的效果,看起来就像视频中一样。
这种模糊核是可分离的,这意味着我们可以直接在输入图像上将其应用,然后再将结果进行水平扫描和垂直扫描,并且最终结果与将该核应用于两个维度是一样的,但是计算量会大大减少。 设定流程中的开销有一定影响,但对于核大小为n的情况,将一项 O(n^(2)) 处理替换为 O(n),这通常会大大减少处理时间。
本质上,一次扫描模糊会计算n^(2)个示例以获得每个像素的平均值,而两次扫描模糊会计算2n个示例。 对于小核,也许只需要进行一次扫描,但是当核尺寸达到例如n=10时,你将仅在一次扫描中比较100个示例,而在两次扫描中仅需要20个示例,差距会随着n的增加而迅速扩大。
我实现了一个名为"步进大小"的功能,使你能够将断点引入模糊核(称为“稀疏”核)以实现极其模糊的效率。 因此,缺失了一些像素的方法,引入了艺术品,但你可以最大限度地降低它们并节省大量计算资源。
径向模糊选取从屏幕中心到当前像素的直线上的像素,并取那些像素颜色的平均值。 在这种情况下,步进大小表示两个样本之间的间隔。 样本与中心的距离随着颜色取值,导致从中心向外一部分像素的“加速”效果。
这些效果支持Unity的体积系统,以及我希望人们能对代码进行深入探索,了解如何自己实现类似的效果。
我将该代码发布在MIT许可下。
URP版本支持从2022.3到6.3的 Unity版本,但我欢迎任何人可以将其添加到Unity的下一个版本或更多功能中如果他们愿意。 自 Unity移除了RenderGraph API后,该代码将不再在 Unity 6.4 中可用,但应该可以通过修改以使其相容:https://github.com/daniel-ilett/blur-pro-urp
内置管线版本应该是无限生命周期的,直到Unity完全弃用BiRP:https://github.com/daniel-ilett/blur-pro-builtin
HDRP版本正处于同样的状态 -我没有对其进行测试,但它可能在Unity的最新版本中有效:https://github.com/daniel-ilett/blur-pro-hdrp
评论 (0)