光 cookies基本上是一种免费的方法,而不用支付昂贵的阴影地图的成本来模拟阴影图案。 流程非常简单:

  • 添加一个LightCookieData组件到一个光源上
  • 分配您想抛出或作为阴影的任何网格
  • 点击烘焙按钮
  • 您也可以使用Window --> Rendering --> Light Cookie Generator来管理和预览大量cookie,但这已经变得有点无用了,因为您可以只要在布撤动中选中您想要的cookie数据子组件(它有一个漂亮的图标lol)

包URLhttps://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

如果您对其进行了使用,我希望能看到它在您的方案中效果;)

也请不要告诉我,如果这样的工具已经存在;这个花了一切时间,不想因为我花了太长时间才想出来这一点而孤独一人。