地形分割/场景分割/异步加载

  1. Terrian分割,一个地形块 = 一个场景,
  2. 场景异步加载卸载
  3. 场景物体的加载卸载
  4. 多场景编辑操作

目前工作流:大世界由一个大场景(所有场景物体)分割

光照烘培

  1. Terrian光照信息烘培以及正确加载

  2. 场景物体光照信息烘培以及正确加载

  3. 烘培完大场景的Lightmap后,再将光照贴图打包,记录每张贴图

  4. 运行时动态设置当前lightmap以及刷新场景物体的Lightmap数据

  5. 静态物体合批操作

  6. 静态合批:会增加包体以及内存大小,不考虑使用,
    动态合批:限制过多也不考虑使用,

GPUInstacing:减少DC,使用CommandBuffer.DrawMeshInstanced更好
GPUinstacing光照贴图:https://www.xuanyusong.com/archives/4640
优化GPUInstancing:https://www.xuanyusong.com/archives/4683
BatchRendererGroup:https://zhuanlan.zhihu.com/p/105616808

SRPBatcher:不减少DC,加速CPU设置(减少SetPass Call),对于移动平台提升不是很明显,
SRPBatcher与GPUInstacing只能同时使用一种,GPUInstacing主要用于场景内重复的树等
,交互和碰撞等可以使用一个空碰撞体来实现,而SRPBatcher拥有实体,使用起来更方便
如果场景里Material多于5个 使用SRPBatcher会优于GPUInstacing

动态/静态合批/GPUInstancing/SRP Batcher:https://shimo.im/docs/6wk89JDtgQ6jcxjT/read

关于场景物体优化策略:

  1. GPUInstancing用于不可交互的草/树 BatchRendererGroup需要com.unity.rendering.hybrid包,官方用于DOTS渲染
  2. SPRBatcher: SRP材质支持就行 使用它就不用管静态/动态合批了
  3. 静态合批:不使用SRP还是要用,不过目前来说用处不大,还会影响内存
  4. 动态合批:条件太多,使用不当还会造成性能下降,不用

阴影

  1. 光照烘培能够正常设置,其烘培的阴影也正确了

地形刷 不能使用内置的,很耗性能

地形拼接问题 接缝处插值过渡(高度+贴图等)

结合天气系统

项目链接

相关链接