Best Practices for Rift and Android

All-In-One VR

This section describes performance targets and offers recommendations for developers.

General Best Practices

  • 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 (see Forward Rendering Path Details in the Unity Manual).
  • Enable Use Recommended MSAA Levels in OVRManager (see OVRManager for more information). Generally, the recommended MSAA level is 4x if you don’t plan to enable Use Recommended MSAA Level.
  • 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 (>1 on Android devices; >3 on Rift).
  • Avoid excessive render scale (>1.2).
  • Avoid excessive shader passes (>2).
  • Be cautious using Unity WWW and avoid 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.