虚拟几何体
团结引擎为您提供了虚拟几何体的强大功能。注意当前此功能处于试验性版本。
什么是虚拟几何体?
虚拟几何体是一套基于GPU Driven Render Pipeline的系统。虚拟几何体数据与传统的模型的关系类似于虚拟纹理。
通过一套内置的虚拟几何体数据,它可以支持大量的高质量、高面数模型,为次时代画质提供了有力支撑。您不在需要担心多边形给您的项目带来的困扰,也不需要关心所需的batching技术,
统统交给虚拟几何体就可以了。
虚拟几何体的优势
- 基于GPU驱动的渲染管线,这不仅可以降低CPU的开销,也可以更高效的使用GPU来渲染
- 场景支持海量的多边形
- 精细的GPU剔除
- 由于是虚拟的,所以几何体数据可以流式加载
- 内存和显存不再受限于模型的面数
- 相比于传统的LOD,其有自适应LOD算法并有自然的过度
与其他系统的关系
- 静态合批:虚拟几何体不参与静态合批。我们也推荐您尽量使用虚拟几何体而不是静态合批。
- 动态合批:虚拟几何体不参与动态合批。我们也推荐您尽量使用虚拟几何体而不是动态合批。
- GPU Instancing: 除非有必要,我们推荐更多的使用虚拟几何体。
- SRP batching: 虚拟几何体不参与SRP batching。
兼容性
当前虚拟几何体只能在团结引擎的HDRP管线中使用。
HDRP中适配虚拟几何体的材质是有限制的,目前支持Lit.shader, LayeredLit.shader以及Shader Graph。
适配的平台:
- Windows (DX11, DX12, Vulkan)
- Linux (Vulkan)
以下几种情况虚拟几何体是失效的:
- HDRP使用前向渲染管线
- 物体使用了半透明材质
- 物体使用了非MeshRenderer组件的其他Renderer组件
以下的API可以在满足条件(模型开启了Virtual Geometry)下支持虚拟几何体:
- Graphics.RenderMesh()
- Graphics.DrawMesh()
- Graphics.RenderMeshInstanced()
- Graphics.DrawMeshInstanced()