SlideShare a Scribd company logo
Look Ma, No Jutter! Optimizing Performance Across Oculus Mobile
Optimizing Performance
Across Oculus Mobile
Gabor Szauer
Developer Relations Engineer, Oculus
Best balance of quality to file size
Maybe not for UI
ASTC Texture
Compression
UNCOMPRESSED
21.3 MB
ASTC COMPRESSED
1.3 MB
UNCOMPRESSED
21.3 MB
ASTC COMPRESSED
1.3 MB
UNCOMPRESSED
21.3 MB
ASTC COMPRESSED
1.3 MB
Half your draw calls!
OpenGL Extension
Renders to frame buffer array
CPU side win
Single Pass Stereo
MULTI PASS
SetPass Calls: 46
SINGLE PASS
SetPass Calls: 22
Batch Meshes
Atlas Textures
Reduce Number Of
Materials
Further Reducing
Draw Calls
UNBATCHED
915 Objects
BATCHED
2 Objects
LOTS OF TEXTURES
Unique Materials
More Draw Calls
SINGLE ATLAS
Shared Material
Less Draw Calls
4,306 POLYGONS

2 MATERIALS

4 TEXTURES

2,477 POLYGONS

1 MATERIAL

1 TEXTURE
Pixel Light Count
• 1 is ok
• 0 is preferred
Shadows
• hard shadows is ok
• disable shadows preferred
Bake shadow maps if
possible
Light & Shadows
Can't avoid additional resolve
Additional resolve: 1ms +
Bake environment lights
Few dynamic shadow casters
Real time shadows
Avoid shadow projector
Re-rendering batched
geometry is expensive
Simple quad at feet will do in
most cases
Blob shadows
Renders model twice
First render is the model
projected onto plane
No self shadowing
Same limitations as blob
shadows, but looks better
Planar Projection
Shadows
Environment should not be lit
in real time
Bake lighting / shadow maps
4096 is a pretty good size
These settings are very
project dependent.
Bake Lighting Data
Dynamic characters no
longer receive shadows
from baked objects
Bake Lighting Data
Sample light map to make moving
object kind of match lighting
Start with a recast down, then:
Renderer.lightmapIndex
LightmapData.lightmapColor
RaycastHit.lightmapCoord
Sample light map
for shadow value
Use light probes!
Fast, easy to set up,
looks great!
Lightprobe shadow
volumes
Use light probes!
Fast, easy to set up,
looks great!
Lightprobe shadow
volumes
Impostor geometry, just a
quad with some textures
Add particles to make extra
fancy
Fake lighting effects
Linear
• More Realistic
• OpenGL ES 3 Required
Gamma
• Less Realistic
• Works Everywhere
Color Space
GAMMA LINEAR
Per material color grading
Done in forward pass
Use Lookup Table
Edit lookup table in any
image editing application
Per Material
Color Grading
Per material color grading
Done in forward pass
Use Lookup Table
Edit lookup table in any
image editing application
Per Material
Color Grading
Set to 4x
Use the "Use Recommended
MSAA Level" in OVRManager
when possible
Anti Aliasing
2X MSAA0X MSAA 4X MSAA
No reason not to use
OpenGL ES 3
Vulkan fallback is ok
Vulkan is a CPU side win
Graphics API
Multithreaded rendering
Static Batching
GPU Skinning
Turn on
API Level 23+
Device Filter: ARM
Device filter can make about
10 MB difference in APK size
Other settings
Scripting back-end: IL2CPP
Prebake collision meshes
Keep Loaded Shaders Alive
Optimize Mesh Data
Consider these
Anisotropic: off
Bone weights: 2
V-Sync: Don't
Everything else
Try to get Render Texture
Switches down to 0 if
possible
* Not possible if using
real time shadows
Reduce Resolves
Avoid Using Post Effects
Add quad in front of camera
Fade quad to fade scene
Screen Fade
VR.WaitForGPU = Wait for Vsynch
If you are making frame rate, there
should be a few milliseconds
of VR.WaitForGPU
Frame Times:
30 FPS = 33.3 ms
60 FPS = 16.6 ms
72 FPS = 13.8 ms
Reading the profiler
Look Ma, No Jutter! Optimizing Performance Across Oculus Mobile
Internal Unity Profiler
Android Unity internal profiler stats:
cpu-player> min: 15.8 max: 16.9 avg: 16.4
cpu-ogles-drv> min: 0.0 max: 0.0 avg: 0.0
gpu> min: 0.0 max: 0.0 avg: 0.0
cpu-present> min: 0.3 max: 0.6 avg: 0.3
frametime> min: 16.1 max: 17.3 avg: 16.7
batches> min: 5 max: 5 avg: 5
draw calls> min: 5 max: 5 avg: 5
Profiling Workflow
Useful for measuring general performance
Not useful for knowing what is slow
Not enough info to really optimize
Frames per second
OVR Metrics Tool
Milliseconds per frame
30 FPS = 33.3 Milliseconds / Frame
60 FPS = 16.6 Milliseconds / Frame
90 FPS = 11.1 Milliseconds / Frame
Example: Frame Breakdown
A single frame takes 21.2 ms and waits 12 ms for the next vsynch
The current total frame duration is 33.3 ms
To run at 60 FPS, the frame needs to finish in 16.6 ms
To hit the 60FPS mark, at least 5.2 ms has to be optimized away from this frame
* This example assumes everything runs on one thread to make it easy to read
CPU or GPU Bound?
If the frame rate improved, the game was GPU Bound If the frame rate dod not improve, the game was CPU Bound
To determine if a game is CPU or GPU bound: Don't render anything!
Use Unity Profiler
CPU Bound
If the game is GPU bound, it
can be Vertex of Fill bound.
To determine which, change
render scale to something
small, like 0.01
Did performance improve?
Yes - Fill / Fragment Bound
No - Vertex Bound
GPU Bound
Qualcomm Snapdragon Profiler
Mali Graphics Debugger
Renderdoc
Fill Bound
Simplify meshes which contain
too many vertices
Consider combining meshes to
reduce draw calls
Cull invisible meshes and
enable LOD on meshes
Vertex Bound
Rinse and Repeat
Disable all rendering.
Did performance improve?
GPU or CPU
Bound
No CPU Bound Use instrumented profiler
GPU BoundYes
Vertex or Fill
Bound?
Set render scale to 0.01
Did performance improve?
No
Yes Fill Bound
Vertex Bound
Simplify Shaders
Simplify Geometry
Combine Geometry
Reduce Draw Calls
Questions?
Comments...
Rude Remarks?
Look Ma, No Jutter! Optimizing Performance Across Oculus Mobile

More Related Content

PDF
Native Augmented Reality: An Introduction to ARKit and ARCore
PDF
Megacity on mobile: How we optimized it with Adaptive Performance
PPTX
Introduction to Unity
PDF
PPTX
New Addressable Asset System for Speed and Performance
PPT
모바일 게임 최적화
PPTX
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
PPTX
Unity 3D game engine seminar
Native Augmented Reality: An Introduction to ARKit and ARCore
Megacity on mobile: How we optimized it with Adaptive Performance
Introduction to Unity
New Addressable Asset System for Speed and Performance
모바일 게임 최적화
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
Unity 3D game engine seminar

What's hot (20)

PPTX
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
PPTX
Unity 3d Basics
PDF
게임제작개론 : #8 게임 제작 프로세스
PDF
Unreal Engine 4 Introduction
PDF
Optimization in Unity: simple tips for developing with "no surprises" / Anton...
PDF
Netflix recommendation systems
PDF
CAD/BIM/GIS 융복합 활용 방향과 디지털 트윈
PPT
Destruction Masking in Frostbite 2 using Volume Distance Fields
PDF
Unreal Open Day 2017 Optimize in Mobile UI
PDF
「原神」におけるコンソールプラットフォーム開発
PPTX
위대한 게임개발팀의 공통점
PPT
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
PPTX
게임기획 포트폴리오 애니팡역기획 배상욱
PPTX
[Product Design] WTOS May 2016
PDF
Rendering AAA-Quality Characters of Project A1
PPT
Gaming Consoles
PDF
이원, MMORPG 스토리텔링의 금기들, NDC2010
PPT
Bending the Graphics Pipeline
PPTX
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
PDF
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
Unity 3d Basics
게임제작개론 : #8 게임 제작 프로세스
Unreal Engine 4 Introduction
Optimization in Unity: simple tips for developing with "no surprises" / Anton...
Netflix recommendation systems
CAD/BIM/GIS 융복합 활용 방향과 디지털 트윈
Destruction Masking in Frostbite 2 using Volume Distance Fields
Unreal Open Day 2017 Optimize in Mobile UI
「原神」におけるコンソールプラットフォーム開発
위대한 게임개발팀의 공통점
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
게임기획 포트폴리오 애니팡역기획 배상욱
[Product Design] WTOS May 2016
Rendering AAA-Quality Characters of Project A1
Gaming Consoles
이원, MMORPG 스토리텔링의 금기들, NDC2010
Bending the Graphics Pipeline
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
김동건, 게임팅커가 되자, 2015년 데브캣 스튜디오 워크샵
Ad

Similar to Look Ma, No Jutter! Optimizing Performance Across Oculus Mobile (20)

PPTX
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
PPT
Next generation graphics programming on xbox 360
PDF
Smedberg niklas bringing_aaa_graphics
PPTX
Rendering Technologies from Crysis 3 (GDC 2013)
PDF
Killzone Shadow Fall Demo Postmortem
PPTX
[Unite Seoul 2020] Mobile Graphics Best Practices for Artists
PPT
Threading Successes 06 Allegorithmic
PPTX
Anti-Aliasing Methods in CryENGINE 3
PDF
Crysis 2-key-rendering-features
PPTX
FGS 2011: Making A Game With Molehill: Zombie Tycoon
PDF
Screen Space Reflections in The Surge
PPT
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
PDF
OpenGL ES and Mobile GPU
PDF
Taking Killzone Shadow Fall Image Quality Into The Next Generation
PPT
NVIDIA Graphics, Cg, and Transparency
PPT
2.Hardware.ppt
PDF
Deferred rendering in_leadwerks_engine[1]
PPT
Gpu presentation
PPTX
Adding more visuals without affecting performance
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Next generation graphics programming on xbox 360
Smedberg niklas bringing_aaa_graphics
Rendering Technologies from Crysis 3 (GDC 2013)
Killzone Shadow Fall Demo Postmortem
[Unite Seoul 2020] Mobile Graphics Best Practices for Artists
Threading Successes 06 Allegorithmic
Anti-Aliasing Methods in CryENGINE 3
Crysis 2-key-rendering-features
FGS 2011: Making A Game With Molehill: Zombie Tycoon
Screen Space Reflections in The Surge
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
OpenGL ES and Mobile GPU
Taking Killzone Shadow Fall Image Quality Into The Next Generation
NVIDIA Graphics, Cg, and Transparency
2.Hardware.ppt
Deferred rendering in_leadwerks_engine[1]
Gpu presentation
Adding more visuals without affecting performance
Ad

More from Unity Technologies (20)

PDF
Build Immersive Worlds in Virtual Reality
PDF
Augmenting reality: Bring digital objects into the real world
PDF
Let’s get real: An introduction to AR, VR, MR, XR and more
PDF
Using synthetic data for computer vision model training
PDF
The Tipping Point: How Virtual Experiences Are Transforming Global Industries
PDF
Unity Roadmap 2020: Live games
PDF
Unity Roadmap 2020: Core Engine & Creator Tools
PDF
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
PPTX
Unity XR platform has a new architecture – Unite Copenhagen 2019
PDF
Turn Revit Models into real-time 3D experiences
PDF
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
PDF
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
PDF
QA your code: The new Unity Test Framework – Unite Copenhagen 2019
PDF
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
PDF
Supplying scalable VR training applications with Innoactive - Unite Copenhage...
PDF
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
PDF
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
PDF
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
PDF
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
PDF
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
Build Immersive Worlds in Virtual Reality
Augmenting reality: Bring digital objects into the real world
Let’s get real: An introduction to AR, VR, MR, XR and more
Using synthetic data for computer vision model training
The Tipping Point: How Virtual Experiences Are Transforming Global Industries
Unity Roadmap 2020: Live games
Unity Roadmap 2020: Core Engine & Creator Tools
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
Unity XR platform has a new architecture – Unite Copenhagen 2019
Turn Revit Models into real-time 3D experiences
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
QA your code: The new Unity Test Framework – Unite Copenhagen 2019
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Supplying scalable VR training applications with Innoactive - Unite Copenhage...
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019

Recently uploaded (20)

PPTX
Introduction to Artificial Intelligence
PPTX
history of c programming in notes for students .pptx
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Digital Strategies for Manufacturing Companies
PDF
System and Network Administraation Chapter 3
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
medical staffing services at VALiNTRY
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPT
Introduction Database Management System for Course Database
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Introduction to Artificial Intelligence
history of c programming in notes for students .pptx
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
VVF-Customer-Presentation2025-Ver1.9.pptx
How to Choose the Right IT Partner for Your Business in Malaysia
Digital Strategies for Manufacturing Companies
System and Network Administraation Chapter 3
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
medical staffing services at VALiNTRY
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Designing Intelligence for the Shop Floor.pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Introduction Database Management System for Course Database
Upgrade and Innovation Strategies for SAP ERP Customers
Which alternative to Crystal Reports is best for small or large businesses.pdf
PTS Company Brochure 2025 (1).pdf.......
2025 Textile ERP Trends: SAP, Odoo & Oracle
Wondershare Filmora 15 Crack With Activation Key [2025
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises

Look Ma, No Jutter! Optimizing Performance Across Oculus Mobile