光 cookies基本上是一种免费的方法,而不用支付昂贵的阴影地图的成本来模拟阴影图案。 流程非常简单:
- 添加一个
LightCookieData组件到一个光源上 - 分配您想抛出或作为阴影的任何网格
- 点击烘焙按钮
- 您也可以使用
Window --> Rendering --> Light Cookie Generator来管理和预览大量cookie,但这已经变得有点无用了,因为您可以只要在布撤动中选中您想要的cookie数据子组件(它有一个漂亮的图标lol)
包URL:https://github.com/Simoxus/light-cookie-generator-for-unity.git
仓库:https://github.com/Simoxus/light-cookie-generator-for-unity
为什么是“不可能”?
基本上,我的地图生成由成百上千种不同的预制体组成,每个预制体都连接着一个门户/门户。地图的布局可以无限地改变,但对预制体中的光照进行烘焙实在是没有任何 sentido,这样都费力不讨好,所以所有的光照都需要实时计算。整个游戏都发生在室内,这使这个过程非常痛苦;一间房间可能有 5-10 个光源,而(可能的) 100 个光源在每个布局的 100-150 个房间中都存在。剔除帮助了很多,但仍然避免不了在大房间中表现出很差的性能。原因是实时光照约束,我不得不尽可能优化光照,进而导致房间看起来非常丑陋。实际的光照是没有问题的;是阴影杀死了性能。所以我不得不关闭大部分光源的阴影,或者只用非常低分辨率的阴影。结果是,光线穿过门扉,房间也变得很平板,毫无生气。
这个工具有哪些功能使它值得花费 3-4 个月的时间制作?
- 支持 Spot、Directional 和 Point 灯 (包括 cube map 烘焙 !)
- 分别根据遮蔽者进行设置,例如透明度、扩张(dilation)、侵蚀(erosion)和倒置(inversion)。您可以通过这些设置创建大量酷炫的效果
- 可以选用的模糊效果,包括Gaussian、Kawase 和 Spiral(我的最爱)
- 自动命名的设置,几乎全部用于我的场景,但可能对您的场景也是很有用的lol。从右键菜单、Inspector 或者之前提到的Light Cookie Generator 窗口中批量烘焙
*用于计算扩张和模糊的着色器;这使烘焙可以在任何尺寸的纹理(包括2048x2048)中极快 - GUID 跟踪,这使得
LightCookieData具有每个唯一ID,名称管理系统就可以在烘焙时跟踪每个 light 所拥有的 cookie,并用同样的文件名来保存,而不是每次保存新的 cookie 文件,这样也避免了可能将一个 light 的 cookie 过写到另一个 light 上来的问题。不同情况(比如 cookie 被删除)应该会重新生成 GUID,但您也可以手动重新生成。
是否有任何限制?
- 因为光 cookie 是投影纹理,而不是实际的阴影地图,对于投影,深度理解是存在问题的。一个遮蔽者在光源附近,一个遮蔽者在光源远处,都会产生相同的阴影。对于静态的几何体,通过忽略这个限制,可以很容易的使其看起来很酷,但这并不是一个阴影的替代品。
它如何工作?
- 基本上就是在光源的位置设定一个临时相机,对每个遮蔽者进行逐一渲染,然后将所有图层合成,取每个图层中最小的值。如果选择一种模糊后,就会对结果进行一次模糊处理。最终的纹理会保存,然后在光源里重新分配给相应的 cookie。因为每个遮蔽者在渲染时分离出来,所以,个性化的控件也都可以用!
当然,为什么这个工具会花费我 3-4 个月呢?几乎都是因为我是在胡扯,并没有对这个基本概念有一个正确的理解。在那之前(它根本无法工作),我会分配一个临时相机,和本文中一样,但我也会使用一个实际的平面。然后我会允许软阴影,在灯光时开启动态阴影,然后恢复所有原始设置。结果完全取决于太多的因素,而且结果看起来也不好。在实际概念—在每个遮蔽者当做一张黑布来渲染,然后合成所有层级,然后通过一个最小值来进行计算。这比我想象的会更加好。实际上,我在解决这个问题时,对这一点感到非常傻瓜。
它看起来如何?
- 在 CristianQiu 的Unity-URP-Volumetric-Light解决方案中,效果看起来非常奇妙!下面的截图来自我自己的游戏,是基于 URP 的。这里没有任何实际的阴影。
https://preview.redd.it/a7qu8eeidvug1.png?width=1920&format=png&auto=webp&s=a9b9ace35b886e88d4b5e97080b5d54ddfaa684c
https://preview.redd.it/s0x3f490evug1.png?width=1920&format=png&auto=webp&s=f4c604d7ba5babcf5efb9c6bf3011cde4c87271a
https://preview.redd.it/itpm9r07evug1.png?width=1920&format=png&auto=webp&s=631ec621eb2c4678d280ea9d764779724b540495
https://preview.redd.it/j701daszfvug1.png?width=1920&format=png&auto=webp&s=38e42af649a3911137ec5751561817f0ce2b8fca
如果您对其进行了使用,我希望能看到它在您的方案中效果;)
也请不要告诉我,如果这样的工具已经存在;这个花了一切时间,不想因为我花了太长时间才想出来这一点而孤独一人。
评论 (0)