跳到主要内容

优化 WebXR 应用

简介​

高且稳定的帧率对舒适 XR 至关重要。开发 VR/AR 时应尽早测试优化,并全程维持目标帧率。

AR 的世界追踪有时开销很大,加之用户通常使用性能受限的移动硬件,需要谨慎管理。

VR 需为每眼渲染一次。引擎虽尽量复用工作,双目仍比单目昂贵。

透视混合体验结合 AR 和 VR 的成本,底层还要定位、图像处理、混合现实画面,以及深度、颜色、图像追踪等,同时每眼重复渲染。

现代头显还要求 75Hz、90Hz 或更高刷新,进一步增加优化需求。

PlayCanvas 提供多种功能以降低开销。

绘制调用与批处理​

每次绘制调用向 GPU 提供对象渲染信息。对象越多,调用通常越多。可通过剔除、静态批处理和实例化减少。

运行时光照贴图​

动态灯光每帧有成本,数量越多越慢。将静态光烘焙成贴图,可将成本降低到纹理渲染。可用三维工具离线烘焙,或使用内置运行时烘焙器。

谨慎使用实时阴影​

动态阴影也有每帧开销,尤其全向光需要六次场景渲染生成阴影,应避免过多动态投影灯。

注意填充率和过度绘制​

填充率是 GPU 单位时间处理的像素数。昂贵片元着色器与高分辨率组合,例如多灯复杂材质和高像素比手机,会难以维持高帧率。

过度绘制指同区域多层像素重复处理,有时为必要透明混合,有时远处像素最终被近处不透明像素覆盖,后者浪费 GPU。

提示

可使用 WebGL Insight 等扩展可视化过度绘制。

垃圾回收停顿​

浏览器自动回收无用 JavaScript 对象。引擎尽量减少运行时分配,业务代码也应预分配并复用向量等对象,避免每帧大量创建和丢弃。

性能分析工具​

PlayCanvas 内置性能分析器,在编辑器启动菜单启用 Profiler,即可带分析功能运行。

通用优化建议​

更多内容详见优化指南。