Tales of系列最新作Tale of Arise终于要在今年发售,而其大幅进化的画面是最让玩家所期待的部分之一。
官方也非常懂人心地特地拿出一个噱头来宣传,即Atmos Shader。
在这种商业宣传中,我们技术人员根本无法了解“Atmos Shader”到底是什么,是一种特殊的光照算法还是后处理?总之意味不明。
原理
不过我们可以在万代南梦宫于CEDEC2019的技术分享上略窥一二,当时它还没有什么Atmos Shader这样的“高端”名,就是暂名Filter,那么很显然,它就是一个后处理效果。
在技术分享PPT中所展现的效果:
显然它这两张图之间相隔绝不止一个后处理……我们稍微感受一下水彩的效果就行了。
那么来看看原理,官方说是SNN+锐化+法线描边
关于SNN,可以参考ShaderToy的一个实现:
https://www.shadertoy.com/view/MlyfWd
说得直白一些的话,就是水彩化的后处理,但是实际用起来会发现它把物体的边界模糊太多,几乎没法单独使用。
因此就增加了一个锐化,以突出物体的边界,增加一些细节。
锐化则可以参考:https://www.shadertoy.com/view/XlycDV
实现
那么代码实现都有的Copy了,实现起来就比较简单了。
我们使用Unity URP的RenderFeature来实现一个多Pass后处理效果。
RenderFeature:
1 | using UnityEngine; |
SNN:
1 | Shader "Custom/SNN Filter" |
锐化:
1 | Shader "Custom/Sharpen Filter" |
虽然尝试加过法线描边,但是感觉效果不太好,而且锐化也已经产生了类似描边的效果。
未实现的部分
其中提到了一个Blend Weight,其遵从Bilateral性质,但说实话并没有懂
以及该后处理的强度随深度变化,还把SNN拆成了水平和垂直两个部分,最后只需要7+7,共14次采样
总之,他们根据项目需求对算法进行了一些魔改,最终达成了理想的开销并获得目标效果。
感谢您阅读完本文,若您认为本文对您有所帮助,可以将其分享给其他人;若您发现文章对您的利益产生侵害,请联系作者进行删除。