Showdown on Meta Quest is a port of the PC VR demo originally released for Oculus Rift. It is a helpful example of how to optimize a PC VR application to run smoothly on Quest 2, Quest Pro and Quest 3 mobile renderers, and demonstrates how to integrate Application SpaceWarp for a substantial performance boost. Showdown runs at a consistent 90 FPS on Quest 2, Quest 3 and Quest Pro.
Showdown for Quest is also available on Horizon Store as a playable application.
This project demonstrates how to optimize a PC VR application for Meta Quest mobile renderers, showcasing Application SpaceWarp integration and mobile rendering optimizations. It provides a practical example of achieving consistent 90 FPS performance across Quest 2, Quest Pro, and Quest 3 devices.
NOTE: Use the Meta Quest fork of Unreal Engine to run this project. See Dependencies for details.
- Ensure you have the project configured with the Oculus fork of Unreal Engine.
- Use Unreal Engine 5.4 with the Oculus v68 integration.
- Open a command prompt in the Unreal root directory and run:
.\GenerateProjectFiles.bat -Game Showdown -Engine "<full path to Unreal-Showdown directory>\Showdown.uproject"-
Open
Showdown.slnin theUnreal-Showdowndirectory. -
Set
Showdownas the startup project andDevelopment Editoras the configuration. -
Press
F5to build and debug the project and engine. -
Load the Showdown project.
-
To test in the Editor, use Quest Link:
Quest Link
- Enable Quest Link:
- Put on your headset, open "Quick Settings," and select "Quest Link" (or "Quest Air Link" if using Air Link).
- Choose your desktop from the list and select "Launch." This starts the Quest Link app, letting you control your desktop from the headset.
- With the headset on, select "Desktop" from the control panel to view your desktop in VR.
- In Unreal, change Play Mode to "VR Preview" using the button with three stacked dots in the main toolbar.
- The application will launch automatically on your headset.
- Enable Quest Link:
- Render Settings Menu Open/Close - B
- Menu Up - Right Trigger
- Menu Down - Right Grip Trigger
- Toggle Menu Option - A
- Head Lock Mode - Right Stick Click
This project requires the Oculus fork of Unreal Engine 5.6 - v81, available here as it includes App SpaceWarp and the Vulkan mobile tonemap subpass. NOTE: Access requires Epic's GitHub access.
To test this project in Unreal Engine, you also need:
The project depends on the Oculus fork of UE 5.4 - v68 which includes critical features like Application SpaceWarp.
The Oculus Unreal fork provides the latest Oculus feature integration. You must build the editor from source:
First, install Git LFS by running:
git lfs installThen clone the repository using the "Code" button above or this command:
git clone https://github.com/oculus-samples/Unreal-Showdown.gitIn order to avoid CPU stalls caused by Pipeline State Object creation at runtime, Epic provides tools to generate PSO caches in advance which can then be bundled in packaged builds.
We have simplified this process through the GeneratePSOCache.bat script. To use it, follow these steps:
- Push a build to your device of choice, this build will be used to discover new PSOs.
- If opened, close the Showdown app on the device.
- Run
GeneratePSOCache.bat <full path to your UE root>. - The script will automatically launch the application with the required parameters to collect PSOs.
- Wait for the showcase to complete several times, change the graphics settings to ensure full pipeline coverage (for instance, changing the View Effects Quality generates new PSOs for most static meshes in the scene).
- Close the application as usual, and press any key in the console to let the script generate the required PSO cache files (recorded cache, stable shader key files).
- Rebuild the application, the engine will automatically bundle the generated PSO cache.
Following are the tools used throughout the project:
- Meta Quest Developer Hub (MQDH) - The main tool for working with Meta Quest headsets
- Oculus OVR Metrics - Overlay live metrics in the headset
- RenderDoc for Oculus - GPU frame captures and profiling
- Snapdragon Profiler - More in-depth hardware profiling
- Unreal Session FrontEnd Profiler - Engine profiling
- Unreal Insights - More detailed engine profiling
Following are references used throughout the project:
- Unreal documentation
- Meta documentation
- "How Drifter Optimized & Delivered Robo Recall for Oculus Quest | Unreal Dev Days 2019"
Showdown is distributed under the Unreal Engine EULA. See LICENSE
https://www.unrealengine.com/en-US/eula/unreal
See the CONTRIBUTING file for how to help out.
