Version: 1.7
语言 : 中文
虚拟几何体
Alpha裁剪

如何使用?

如果您打开一个新的项目工程,虚拟几何体是默认关闭的。您需要手动开启它。通过选择Edit->Project Settings…->Graphics打开Graphics Settings,找到并开启Virtual Geometry选项;在编辑器重启后,虚拟几何体功能就被开启了。

如何开启VG
如何开启VG
选项 描述
Virtual Geometry 启用虚拟几何体系统
Keep Geometry Buffer 始终保留顶点&索引缓冲,即使模型资产勾选了Virtual Geometry

在开启虚拟几何体功能后,您项目中的所有模型都会被重新导入,并构建虚拟几何体所需的数据,这可能会增加您第一次导入项目的时间。

模型资产的导入

当开启虚拟几何体功能后,模型导入时会默认构建虚拟几何体数据,除非这个模型使用了半透明或alpha clip的材质。 您可以通过model impoter来设置您的虚拟几何体的配置:

Model Importer中的VG选项
Model Importer中的VG选项

您也可以通过AssetPostprocessor来订制您的导入设置。

下表列出了影响虚拟几何体构建的选项:

选项 描述
Virtual Geometry 开启后此模型会构建虚拟几何体数据
Ignore Simple Mesh 开启后对于简单的网格不再生成虚拟几何体
Allow VG Switch 如果您想在运行时动态开关使用此模型的MeshRenderer的Virtual Geometry选项,请打开此选项
Surface Compensation 启用表面补偿,详情见表面补偿
Position Precision 构建虚拟几何体数据时,顶点位置数据的精度,详情见优化生成数据量
Normal Precision 构建虚拟几何体数据时,顶点法线数据的精度,详情见优化生成数据量
Tangant Precision 构建虚拟几何体数据时,顶点切线数据的精度,详情见优化生成数据量
Reserve Triangle Percent 构建虚拟几何体数据时,最精细层级保留的三角形数量百分比,详情见优化生成数据量
Reserve Detail Level 构建虚拟几何体数据时,最精细层级保留的细节层级,详情见优化生成数据量

因为虚拟几何体数据不支持在CPU端修改,所以当Virtual Geometry打开后,Read/Write选项会失效;反之,当Read/Write选项选中后,Virtual Geometry会失效。因此如果您想在运行时脚本中修改模型的顶点信息的话,请确保打开Read/Write, 并关闭Virtual Geometry选项。 同时,虚拟几何体也不支持勾选Keep Quads。

注意:在运行时,手动创建的模型(非复制)是不支持虚拟几何体的。

在MeshRenderer上启用虚拟几何体

目前只能在MeshRenderer上启用虚拟几何体功能。在MeshRenderer中有独立的开关可以让您选择是否在当前物体上开启虚拟几何体,以及虚拟几何体阴影。

MeshRenderer中开启VG
MeshRenderer中开启VG

虚拟几何体阴影可以使用虚拟几何体技术来实时的渲染您的级联阴影。

当启用虚拟几何体后,这个MeshRenderer将会以集群的方式渲染,而不再以Instance为单位渲染。

MeshRenderer中开启VG
MeshRenderer中开启VG

当不开启虚拟几何体时,此MeshRendereer会以传统方式渲染;某些情况下,其所使用的材质不支持虚拟几何体,比如半透明材质,则您有必要关闭Virtual Geometry选项以正确的渲染对象。

错误排查

为了带来更多灵活性,我们并没有把模型的Virtual Geometry选项和MeshRenderer的Virtual Geometry强行绑定在一起。 但这也可能会引起意外的错误:比如当这些选项开关被错误的配置时。 当MeshRenderer的Virtual Geometry和模型的Virtual Geometry选项不匹配时,会产生下图的一个警告:

MeshRenderer的VG警告
MeshRenderer的VG警告

此时请确保MeshRenderer的Virtual Geometry和Mesh的Virtual Geometry是相互匹配的。 如果您希望某个模型即以虚拟几何体的方式使用,又以非虚拟几何体的方式使用,请确保此模型勾选上Allow VG Switch。

我们也提供了一个排查此问题的工具Virtual Geometry Mismatch,用于在场景中批量查找MeshRenderer的Virtual Geometry和模型的不匹配的情况,您可以根据具体需求进行快速修正。

在LODGroup上启用虚拟几何体

您可以启用LOD Group组件的Virtual Geometry选项,此时Virtual Geometry Mesh将使用自适应LOD算法实现自然的过度,低级别的Mesh Renderer不会被渲染。

LODGroup中开启VG
LODGroup中开启VG

当启用LODGroup组件后,该组件中所有 使用Virtual Geometry Mesh的Mesh Renderer 的Virtual Geometry选项将会与LODGroup的设置保持一致,不允许单独编辑。

注意 :您可能会遇到Virtual Geometry选项与LODGroup不一致的情况,可能的原因是该MeshRenderer使用了不支持Virtual Geometry的材质,如半透明材质。

使用VGMesh的LOD MeshRenderer的VG选项不可编辑
使用VGMesh的LOD MeshRenderer的VG选项不可编辑

当LODGroup内的MeshRenderer中,存在使用Virtual Geometry Mesh但未开启Virtual Geometry选项的情况时,Virtual Geometry Mismatch工具中将会列出该LODGroup组件所在的物体以及这类MeshRenderer子项,您可以根据具体需求进行修正。

注意 :使用开启Virtual Geometry的Mesh是使用虚拟几何体渲染的前提,因此Mesh未开启Virtual Geometry的LOD MeshRenderer不受LODGroup VG的限制。

为虚拟几何体创建Shader Graph着色器

Shader Graph现已支持生成兼容虚拟几何体的着色器,请参见在Shader Graph中使用虚拟几何体

Build出包时的Virtual Geometry Runtime选项

启用该选项将在Build Player或AssetBundles处理启用了Virtual Geometry的Mesh资产时,保留Cluster数据并舍弃顶点等几何数据(启用了 Allow VG Switch 的Mesh将同时保留这两组数据),

反之,不启用该选项将只保留Mesh的几何数据并 舍弃所有Mesh资产的Cluster数据 ,这也意味着在运行时不使用虚拟几何体。

注意 :请确保在Build出包前场景中不存在任何不匹配情况

File > Build Settings 中Build Player时,通过勾选 Player Settings > Player > Virtual Geometry Runtime 启用该选项。

通过Editor Build Player时启用Virtual Geometry Runtime
通过Editor Build Player时启用Virtual Geometry Runtime

调用BuildPipeline.BuildPlayer方法Build Player时,可以通过BuildPlayerOptions.BuildOptions中的BuildOptions.PackClustersIntoPlayer启用该选项。

调用BuildPipeline.BuildAssetBundles方法Build AB包时,可以通过BuildAssetBundleOptions中的BuildAssetBundleOptions.PackClustersIntoAssetBundle启用该选项。

虚拟几何体
Alpha裁剪