文章已于2024.2.18重写,去掉老旧的传统GI方案,准备全面转向VXGI

前言

一开始还是使用的lightmap+lightprobe的传统GI方案,但其实这套方案在大世界项目中并不适用,主要有以下几个缺陷

  • 数据量大,烘焙慢
  • 动态物体只能接受漫反射信息,不能影响场景和其他动态物体

其中第二点尤其致命

当前较为流行的大世界GI方案有以下几大类

其中VXGI是将场景体素化,并在体素存储几何和材质信息,从而实现实时ReLight

我们都知道,对于大世界来说,游戏的寻路和碰撞也是很令人头痛的一件事,尤其是在Unity上

  • 分块烘焙,实时拼接NavMesh
  • 对于GPU Driven的地形碰撞,需要提前预烘焙数据,并在运行时流式

那么我们可以借助VXGI的体素化流程,先对场景做一遍粗略,专供给Gameplay的体素化,再在此基础上进行正式的VXGI需要的体素化

这样我们就同时解决了Gameplay和GI问题,可谓两全其美,所以权衡之下选择了VXGI作为ProjectS的GI方案

GI知识体系

待续

参考

https://assetstore.unity.com/packages/tools/particles-effects/lumina-gi-real-time-voxel-global-illumination-226660

https://github.com/jose-villegas/VCTRenderer

https://liu.diva-portal.org/smash/get/diva2:1148572/FULLTEXT01.pdf

https://zhuanlan.zhihu.com/p/350753497

https://zhuanlan.zhihu.com/p/463309766