App optimization

Optimize application to run with the best performance

Graphical Optimizations

Remove Heavy Post Processing effects

Not all post-processing effects are made to be used for mobile AR/VR

Effects that are too expensive for mobile VR and should be removed are as follows:

  • Screen Space Reflection

  • Screen Space Ambient Occlusion

Effects NOT to use because they can cause nausea and disorientation are:

  • Lens distortion (causes motion sickness)

  • Chromatic aberration (occurs naturally in VR)

  • Motion blur (cause motion sickness)

  • Depth-of-field (user’s eyes need to focus themselves)

Light-impacting post-processing effects in the cost of the order are as follows:

  • Vignette

  • Color grading

  • Bloom (with High-Quality Filtering disabled)

  • Anti-aliasing (FXAA is recommended for mobile VR)

Bake lights

Avoid real-time lights and bake lights as much as possible to get the best performance on your app.

Batching and reducing draw calls

  • Set non-moving objects as static

  • Combine Meshes together

  • Create sprite atlas for materials in your scene

Occlusion Culling

Bake occlusion information and enable occlusion culling on all cameras in your scene.

Billboarding

Use billboards and Level of Detail meshes (LODs) wherever possible to avoid wasting computation on far away objects.

Quality settings

Change the quality setting to low.

Additionally, the quality settings can be optimized to perform on mobile devices and be interchanged depending on device performance.

Optimizing Terrain Settings

  • Trees can be rendered as optimized meshes instead of terrain trees

  • Allow GPU instancing on materials

  • Remove excessive trees and foliage

  • Reduce all texture size

  • Reduce detail distance

Scripting Optimization

Removing any expensive scripts

  • Use object pooling whenever possible

  • Avoid debugging logs and stack traces in builds

  • Pre-cache data in scripts

  • Avoid using every frame calls like Update, LateUpdate, and FixedUpdate.

  • Avoid searching the entire hierarchy for objects, and do NOT use functions like FindObjectOfType, FindObjectWithTag, etc.

Project Settings Optimization

  • Set to incremental GC

  • Enable multithreaded rendering

  • Build with IL2CPP and ARM64

JMR specific optimization

If you don't want to enable the screencast feature in your application, remove additional cameras that are not being used.

  • Screencast Camera

  • POV Camera

Last updated