Develop
Develop
Select your platform

Best practices for Quest and PCVR

Updated: Sep 15, 2024
This page lists performance optimizations and recommendations for developing Quest and PCVR apps in Unity.
Use the Project Setup Tool to apply recommendations and fixes
Use the Project Setup Tool to automatically apply several configuration updates and fixes that incorporate best practices in your project.

General Best Practices

  • Use Link for Developers and Meta XR Simulator to speed up development cycles.
  • Use trilinear or anisotropic filtering on textures. See Textures in the Unity Manual for more information.
  • Use mesh-based occlusion culling (see Occlusion Culling in the Unity Manual).
  • Always use the Forward Rendering path or Forward+ (see Forward Rendering Path Details in the Unity Manual).
  • Enable Use Recommended MSAA Levels in OVRManager. Generally, the recommended MSAA level is 4x if you don’t plan to enable Use Recommended MSAA Level.
  • Enable Link Time Optimization in OVRManager’s Build Settings options (release builds only). As this increases build times, set this option only when creating final release builds.
  • Watch for excessive texture resolution after LOD bias (greater than 4k by 4k on PC, greater than 2k by 2k on mobile).
  • Verify that non-static objects with colliders are not missing rigidbodies in themselves or in the parent chain.
  • Avoid inefficient effects such as SSAO, motion blur, global fog, parallax mapping.
  • Avoid slow physics settings such as Sleep Threshold values of less than 0.005, Default Contact Offset values of less than 0.01, or Solver Iteration Count settings greater than 6.
  • Avoid excessive use of multipass shaders (e.g., legacy specular).
  • Avoid large textures or using a lot of prefabs in startup scenes (for bootstrap optimization). When using large textures, compress them when possible.
  • Avoid realtime global illumination.
  • Disable shadows when approaching the geometry or draw call limits.
  • Avoid excessive pixel lights or use Forward+ which can speed up lighting computations.
  • Use Dynamic Resolution to help reduce stale frames and increase visual quality by getting access to GPU level 5.
  • Avoid excessive render passes (>2).
  • Be cautious when using Unity WWW and avoid it for large file downloads. It may be acceptable for very small files.
  • For Android apps with voice chat, you should use the Microphone APIs to avoid issues with Parties. For more information about Parties, go to the Parties and Party Chat topic.
Did you find this page helpful?