原生场景剔除

Creator 从 v3.4.0 开始支持原生场景剔除,包括 八叉树场景剔除遮挡查询剔除,仅对原生平台生效。

八叉树场景剔除

一般情况下,引擎剔除不在视锥(摄像机的可见范围)内的模型,是通过逐个检测模型的包围盒是否在视锥内,速度较慢。若开启八叉树场景剔除,则通过八叉树可以快速剔除不在视锥内的模型。

该功能默认关闭,若需要开启,在 层级管理器 中选中场景根节点 Scene,然后在 属性检查器 中便可看到 Octree Scene Culling 项,勾选 Enabled 即可:

octree scene culling

开启八叉树场景剔除后,在 场景编辑器 中会显示整个世界的包围盒(例如上图场景中白色边框的立方体)。

Octree Scene Culling 的属性说明如下:

属性说明
Enabled勾选该项即可开启八叉树场景剔除,仅对原生平台生效
World MinPos世界包围盒的最小顶点坐标(超出包围盒的物体不渲染)
World MaxPos世界包围盒的最大顶点坐标(超出包围盒的物体不渲染)
Depth八叉树深度,默认值为 8。若场景较小,该值建议不要设置太大,否则可能会耗费内存

遮挡查询剔除

遮挡查询剔除 默认关闭,如果开启,则 GFX 后端会通过图形 API 进行遮挡查询,若物体被遮挡,则只使用简化的包围盒及材质来渲染该物体,以提升性能。

该功能可通过代码开启:

  1. director.root.pipeline.setOcclusionQueryEnabled(true);

注意:GLES 2.0 不支持遮挡查询剔除,某些 GLES 3.0 设备如果没有 GL_EXT_occlusion_query_boolean 扩展也不支持。

性能优化建议

  • 如果场景中大部分物体都可见,建议不要开启 八叉树场景剔除遮挡查询剔除
  • 不同设备可能表现略有差异,可通过性能测试对比后,决定是否开启相应的剔除功能。