遇到了一个经典的问题,想要实现动态时间的天气效果和间接光照。目标是实现一个非常高性能的系统,但又能产生可信的效果。尝试了很多方法,但最终这个方法效果最好。它并不是什么新鲜的想法,但我觉得它是一个很酷的技术,可能会对一些人有所兴趣。
本质上,我是在不同的“场景”中烘焙了光照,包括早晨、白昼、傍晚等。然后,我根据天空中的太阳位置来混合光照贴图。为了使动态对象能够接收间接光照,我使用了可适应光探测器,并且将它们的场景功能hook进去,以便同步所有内容。所有的过程都是自动化的,只需要一个点击,就可以自动烘焙所有的光照场景。
这个系统非常灵活和可塑性。工具支持的场景数量可以从最少到最多,根据需要我可以烘焙一个特殊的光照场景来实现游戏中的某个特定时刻,然后自然地融入和脱离它。如果我改变主意,需要替换一个场景或删除一个场景,我也可以这样做。最终的结果是动态时间的天气效果和间接光照,且渲染成本非常低。
然而,这个系统也有一些缺点。主要的问题就是存储成本。这个场景有 12 个场景,包括日出、日出到早晨、早晨等。对于这个场景,光照的存储成本是 300MB。通过进一步的调整,我认为场景数量和光照烘焙质量可以大大降低,且不会产生明显的断裂。对于所有场景的总计,这个 1km 场景烘焙所花费的时间大约是 3 分钟。
这个系统是在 Unity 6.3 LTS、URP 中运行的。
评论 (0)