Showdown sample overview
Updated: May 11, 2026
The Showdown sample is a port of a PC VR cinematic to Quest, achieving 90 FPS via Application SpaceWarp. It includes a PSO cache workflow (GeneratePSOCache.bat), a runtime render settings menu, shipping build logging via DebugLog using __android_log_print, and features a New York City street scene with robots. The project requires the Oculus fork of Unreal Engine 5.6.
- Application SpaceWarp for frame rate optimization
- PSO (Pipeline State Object) cache workflow
- Runtime render settings adjustment
- Shipping build logging on Android
- PC VR to mobile VR porting techniques
- Meta Quest 2, Quest 3, or Quest 3S
- Oculus fork of Unreal Engine 5.6
- OculusXR plugin
- Clone the repository.
- Open the project using the Oculus fork of Unreal Engine 5.6.
- Run
GeneratePSOCache.bat to build the PSO cache. - Deploy to your Quest device.
- Use the runtime render settings menu to adjust quality.
| File / Scene | What it demonstrates | Key concepts |
|---|
New York City street scene | Full cinematic experience | Robots, environmental detail |
GeneratePSOCache.bat | PSO cache generation | Pipeline state pre-compilation |
Runtime settings menu | Live quality adjustment | Render setting toggles |
Application SpaceWarp config | Frame rate doubling | vr.SupportMobileSpaceWarp=True
|
DebugLog system | Shipping build logging | __android_log_print integration
|
The sample plays a New York City street scene cinematic with robots at 90 FPS on Quest hardware. Application SpaceWarp synthesizes intermediate frames, effectively doubling the perceived frame rate. The runtime settings menu allows toggling render features to observe performance impact. Shipping builds retain logging capability through the DebugLog system using __android_log_print.
Application SpaceWarp synthesizes intermediate frames to achieve 90 FPS while the application renders at half rate. Enable it with:
vr.SupportMobileSpaceWarp=True
The PSO cache pre-compiles pipeline states to avoid runtime shader compilation hitches:
This generates a cache file that ships with the application, ensuring smooth rendering from first frame.
For debugging shipping builds on Android, the sample uses a custom DebugLog that wraps __android_log_print:
__android_log_print(ANDROID_LOG_INFO, "Showdown", "Message: %s", *Message);
- Profile with and without Application SpaceWarp to measure gains
- Add additional PSO cache entries for new materials
- Implement dynamic quality scaling based on frame time
- Port additional PC VR content using the same workflow