团结引擎为您提供了虚拟几何体的强大功能。注意当前此功能处于试验性版本。
虚拟几何体是一套基于GPU Driven Render Pipeline的系统。虚拟几何体数据与传统的模型的关系类似于虚拟纹理。 通过一套内置的虚拟几何体数据,它可以支持大量的高质量、高面数模型,为次时代画质提供了有力支撑。您不在需要担心多边形给您的项目带来的困扰,也不需要关心所需的batching技术, 统统交给虚拟几何体就可以了。
如果您打开一个新的项目工程,虚拟几何体是默认关闭的。您需要手动开启它。通过选择Edit->Project Settings…->Graphics打开Graphics Settings,找到并开启Virtual Geometry (Experimental)选项;在编辑器重启后,虚拟几何体功能就被开启了。
选项 | 描述 |
---|---|
Virtual Geometry (Experimental) | 启用虚拟几何体系统 |
Keep Geometry Buffer | 始终保留顶点&索引缓冲,即使模型资产勾选了Virtual Geometry |
在开启虚拟几何体功能后,您项目中的所有模型都会被重新导入,并构建虚拟几何体所需的数据,这可能会增加您第一次导入项目的时间。
当开启虚拟几何体功能后,模型导入时会默认构建虚拟几何体数据,除非这个模型使用了半透明或alpha clip的材质。 您可以通过model impoter来设置您的虚拟几何体的配置:
您也可以通过AssetPostprocessor来订制您的导入设置。
下表列出了影响虚拟几何体构建的选项:
选项 | 描述 |
---|---|
Virtual Geometry | 开启后此模型会构建虚拟几何体数据 |
Allow VG Switch | 如果您想在运行时动态开关使用此模型的MeshRenderer的Virtual Geometry选项,请打开此选项 |
Position Precision | 构建虚拟几何体数据时,顶点数据的精度 |
Normal Precision | 构建虚拟几何体数据时,法线数据的精度 |
Tangant Precision | 构建虚拟几何体数据时,切线数据的精度 |
因为虚拟几何体数据不支持在CPU端修改,所以当Virtual Geometry打开后,Read/Write选项会失效;反之,当Read/Write选项选中后,Virtual Geometry会失效。因此如果您想在运行时脚本中修改模型的顶点信息的话,请确保打开Read/Write, 并关闭Virtual Geometry选项。 同时,虚拟几何体也不支持勾选Keep Quads。
注意:在运行时,手动创建的模型(非复制)是不支持虚拟几何体的。
目前只能在MeshRenderer上启用虚拟几何体功能。在MeshRenderer中有独立的开关可以让您选择是否在当前物体上开启虚拟几何体,以及虚拟几何体阴影。
虚拟几何体阴影可以使用虚拟几何体技术来实时的渲染您的级联阴影。
当启用虚拟几何体后,这个MeshRenderer将会以集群的方式渲染,而不再以Instance为单位渲染。
当不开启虚拟几何体时,此MeshRendereer会以传统方式渲染;某些情况下,其所使用的材质不支持虚拟几何体,比如alpha clip材质,则您有必要关闭Virtual Geometry选项以正确的渲染对象。
您可以通过下图的开关让Shader Graph支持虚拟几何体,请注意只有Lit材质可以支持虚拟几何体
在Shader Graph中,虚拟几何体可以和虚拟贴图配合使用。这可以使团结引擎更高效的渲染您的场景,并降低贴图的显存占用。
当前虚拟几何体只能在团结引擎的HDRP管线中使用。 HDRP中适配虚拟几何体的材质是有限制的,目前支持Lit.shader, LayeredLit.shader以及Shader Graph。
适配的平台:
以下几种情况虚拟几何体是失效的:
以下的API可以在满足条件(模型开启了Virtual Geometry)下支持虚拟几何体:
为了带来更多灵活性,我们并没有把模型的Virtual Geometry选项和MeshRenderer的Virtual Geometry强行绑定在一起。 但这也可能会引起意外的错误:比如当这些选项开关被错误的配置时。 当MeshRenderer的Virtual Geometry和模型的Virtual Geometry选项不匹配时,会产生下图的一个警告:
此时请确保MeshRenderer的Virtual Geometry和Mesh的Virtual Geometry是相互匹配的。 如果您希望某个模型即以虚拟几何体的方式使用,又以非虚拟几何体的方式使用,请确保此模型勾选上Allow VG Switch。
我们也提供了一个排查此问题的工具,通过Window->Analysis->Virtual Geometry Mismatch打开此工具。 此工具可以在场景中批量查找MeshRenderer的Virtual Geometry和模型的不匹配的情况,您可以根据具体需求进行快速修正。