5. 5
● Launch title for HTC* Vive, Oculus*
Touch and Microsoft* Mixed
Reality
● Early access title since April 2016
● 1.0 since October 2017
● 150,000+ units sold
● Used worldwide in VR arcades and
as a demo experience
A Few Facts
6. 6
● Rift backer
● Valve / Vive kit
● Here’s a VR demo
“I’m never going to create a VR game”
8. 8
● Initial MSMR port
○ Together with Microsoft*
○ Up & Running in 3 days
○ Same min. spec of 970
● Mainstream audience demo feedback
○ Cool, can I run it on my ultrabook?
○ Affordable HMD <-> Expensive PC/Laptop
● Huge market opportunity, but at the time, limited quality content
Why Mainstream?
9. 9
● Initial mainstream version (Intel® Core™ i5 processor family, Intel®
HD620 Graphics, Intel® NUC)
○ 12 FPS
● No point-lights, no post-effects
○ Almost 30 FPS, ugly
● “I seriously doubt this, but let’s try”
Let’s do it! … But
10. 10
Before and After…
12 FPS
Constant Hitches
Fantastic Visual Quality
60 FPS
No Hitches
Good Visual Quality
18. 18
Shaders – Floor Visual Quality
Before (Standard Shader) After (Lambert Shader)
19. 19
Shaders – Microsoft* Windows Mixed Reality Toolkit
▪ Microsoft* has recreated all of Unity’s* built-in shaders to contain
significantly less math ops
▪ Quick action:
– Download the kit: https://github.com/Microsoft/MixedRealityToolkit-Unity
– When detecting Mainstream WinMR swap materials to the ones
contained in the kit
21. 21
Shaders - Material Batching With Unlit Shaders
No Batching or Instancing
# of Draws: 1300
# of Vertices: 1.5M
GPU Duration: 3.5ms
Batching and Instancing
# of Draws: 8
# of Vertices: 2M
GPU Duration: 1.7ms
(2x Performance Improvement)
24. 24
Remove Dynamic Lights
• Dynamic Lights need to
render multiple passes for
each light contributing
5ms of frame time!
• Events 83 and 84 are the
base pass, then 123-130
are the additional passes
for each dynamic light
26. 26
Post Processing Stacks - Bloom
Low Settings
• Ended up using the Mobile Bloom PFX
Stack.
• Consolidated all PFX into one pass
• GPU Duration: 0.6ms
(4x Performance Improvement)
High Settings
• Initially reduced number of passes to 14
• GPU Duration: 2.6ms
27. 27
Post Processing - HDR – Vertical Flip
▪ There is a required vertical flip
step that happens when using
HDR effects
▪ The way to avoid the .3 ms /
frame penalty is to uncheck all
HDR boxes on scene cameras
& to remove image effects that
may require it (usually
tonemapping / bloom / etc).
▪ If using post effects, use the
post effects stack and not
image effects
▪ Removed any effects with a
depth pass (Fog, etc.)
29. 29
Post Processing - TSCMAA
▪ Temporally Stable post effect anti aliasing
techniques like CMAA can provide equivalent
functionality at half the cost
▪ If necessary, use Temporally Stable CMAA
(TSCMAA) – good if rendering at less than
1280x1280 and upscaling.
Performance: 1.5X performance improvement with
TSCMAA over 4x MSAA
4x MSAA
TSCMAA
35. 35
RenderQueue Order for WinMR
1. Draw VR hands and any
interactibles (weapons, etc.)
2. Draw scene dressings,
dynamic / small static objects
3. Draw Large Set Pieces
(Buildings, Ship, etc.)
4. Draw the floor
5. Draw skybox (usually already
done last if using built-in Unity
skybox)
1
2
3
4
5
42. 42
Results – 4x Faster!
12 FPS on default settings
w/out lights and PFX, about 30 FPS
60 FPS (low) and 35 FPS (High)
Better performance on all platforms!