Smooth VR experiences require scenes to be optimized for the headset.
Most VR headsets run at 90 Hz. To have a comfortable experience in-headset, VR scenes needs to run at 90 frames per second (FPS). If a scene is too heavy and runs slower than 90 FPS, the VR experience may cause users discomfort.
Turn off shadows
Shadows are known to cause performance issues in VR.
Turn off global shadows for your scene to avoid overburdening it. Follow these steps to toggle off global shadows (i.e. environment light) in your scene.
Unselect everything in the scene
Find the “Environment light” section in the right sidebar
Select the light bulb icon to the right of the environment light intensity controller
When global shadows are turned off, the environment light selection dropdown and intensity controller will turn grey
Reduce polygon count for 3D models
Models with high poly counts, often downloaded from external sources to be rendered as photorealistic images, are too big for VR scenes and real-time rendering.
Non-destructive methods to reduce polygon count:
Use models that are low-poly or created for VR whenever possible
Check the polygon count before downloading models from Sketchfab and Turbosquid
Avoid using too much subdivision, which increases poly count
Run models through these tools to minimize polygon count without affecting the shape:
MeshLab: Polygon reduction with MeshLab
Blender: How to reduce the polygons count
Unity: Mesh Optimizer
Use primitives (ex. box, cylinder, cone, plane, etc.) wherever possible, as they’re less burdensome on VR performance
Bake high-poly model details into a lower-poly model to generate a normal map that looks more realistic but doesn’t add to the geometry itself
Retopologize heavy meshes to minimize polycount
Reduce the number of objects
Too many objects in a scene can affect VR performance.
Remove or combine objects wherever possible to avoid performance issues.
Reduce the size and number of materials
Large texture file sizes or too many materials can affect VR performance.
Reduce the texture size to the smallest possible without blurring the model. Textures that are 512px or smaller tend to work best.
Reduce the number of materials used in the file. Using a material atlas can help with this.
Reduce number of lights
Too many lights in the scene can affect VR performance.
If modeling in another program, bake lights in there and import them in with textures instead of using light objects.
Area lights don’t perform well in headset. If there are area lights in your scene, try replacing them with other light objects.
Are the models in the scene low-poly or built for VR?
Have primitives replaced models wherever possible?
Are baked normal maps being used instead of geometry wherever possible?
Have unnecessary objects been removed from the scene?
Have sub-meshes been combined wherever possible?
Are image texture sizes as small as possible?
Have the number of materials used been minimized?
Is a material atlas being used?
Have the number of lights been minimized?
Are global shadows (i.e. environment lights) turned off?
Smooth VR experiences require scenes to be optimized for the headset.
Most VR headsets run at 90 Hz. To have a comfortable experience in-headset, VR scenes needs to run at 90 frames per second (FPS). If a scene is too heavy and runs slower than 90 FPS, the VR experience may cause users discomfort.
Turn off shadows
Shadows are known to cause performance issues in VR.
Turn off global shadows for your scene to avoid overburdening it. Follow these steps to toggle off global shadows (i.e. environment light) in your scene.
Unselect everything in the scene
Find the “Environment light” section in the right sidebar
Select the light bulb icon to the right of the environment light intensity controller
When global shadows are turned off, the environment light selection dropdown and intensity controller will turn grey
Reduce polygon count for 3D models
Models with high poly counts, often downloaded from external sources to be rendered as photorealistic images, are too big for VR scenes and real-time rendering.
Non-destructive methods to reduce polygon count:
Use models that are low-poly or created for VR whenever possible
Check the polygon count before downloading models from Sketchfab and Turbosquid
Avoid using too much subdivision, which increases poly count
Run models through these tools to minimize polygon count without affecting the shape:
MeshLab: Polygon reduction with MeshLab
Blender: How to reduce the polygons count
Unity: Mesh Optimizer
Use primitives (ex. box, cylinder, cone, plane, etc.) wherever possible, as they’re less burdensome on VR performance
Bake high-poly model details into a lower-poly model to generate a normal map that looks more realistic but doesn’t add to the geometry itself
Retopologize heavy meshes to minimize polycount
Reduce the number of objects
Too many objects in a scene can affect VR performance.
Remove or combine objects wherever possible to avoid performance issues.
Reduce the size and number of materials
Large texture file sizes or too many materials can affect VR performance.
Reduce the texture size to the smallest possible without blurring the model. Textures that are 512px or smaller tend to work best.
Reduce the number of materials used in the file. Using a material atlas can help with this.
Reduce number of lights
Too many lights in the scene can affect VR performance.
If modeling in another program, bake lights in there and import them in with textures instead of using light objects.
Area lights don’t perform well in headset. If there are area lights in your scene, try replacing them with other light objects.
Are the models in the scene low-poly or built for VR?
Have primitives replaced models wherever possible?
Are baked normal maps being used instead of geometry wherever possible?
Have unnecessary objects been removed from the scene?
Have sub-meshes been combined wherever possible?
Are image texture sizes as small as possible?
Have the number of materials used been minimized?
Is a material atlas being used?
Have the number of lights been minimized?
Are global shadows (i.e. environment lights) turned off?