OpenXR passthrough doesn't work on Unreal Engine 5.7

Hi,

short version: I can’t get OpenXR passthrough to work, even after follow instruction in Unreal Engine roadmap : here

For a project who need a multi HMD support (HTC, Pico, Meta Quest), i’ve tried to found one solution for all HMDs for displaying passthrough as demand (a simple passthrough, no need extra feature) without need to maintain multiple SDK implementations or need to make a different build of my project for each brand.

I’ve heard on Unreal Engine roadmap an “vendor specific OpenXR” implementation: here

I’ve start from the Unreal Engine 5.7 Virtual Reality Template and follow all the instruction in the roadmap post. (my DefaultEngine.ini file attached)

But i’ve never be able to make Paassthrough work properly in PCVR.

I’ve a Quest 3 and 3S, I’ve a black screen when I start VR Preview.

With Pico 4 Ultra Business, I seen the passthrough in transparancy over all the Unreal Render.

When I try to breakpoint on BP_Passthrough blueprint, I notice the “Is Composition Layer Inverted Alpha Enabled” is always false.

DefaultEngine.ini(20.6 KB)

Steps to Reproduce

  • use Unreal Engine 5.7 from Epic Games Launcher
  • start a project with Virtual Reality 5.7 Template
  • exit the project after first launch
  • do all this steps: here
  • re-open project with an HMD connected with a PC streaming solution (Pico 4 Ultra business or Meta Quest 3 / 3S)
    • For meta Quest, make sure you tick all advanced developper features in developper tap of meta quest link. Make sur Meta is Default OpenXR environment.
    • For Pico, launch Business straming software and SteamVR, make sure SteamVR is default OpenXR environment.
  • Launch VR Preview
  • Try to click on Passthrough Button on VR Menu.

up ?

Hi, “Is Composition Layer Inverted Alpha Enabled” is always false because none of the PC OpenXR runtimes support passthrough with the same extensions that we use to support passthrough natively on the Meta Quest runtime. There is currently no vendor-agnostic method of passthrough that doesn’t require different vendor extensions for support between the different runtimes.