Here’s what I’ve tried, based on the official docs by the goat @VictorLerp
- Create a new UE5.7 VR project (same happens for UE5.6)
- Add these in DefaultEngine.ini in the rendering section
r.Mobile.PropagateAlpha=True(already there)r.PostProcess.PropagateAlpha=Truexr.OpenXRInvertAlpha=True(already there)
- Activate passthrough at runtime, either with these, in each case nothing happens but logged errors
- Left hand menu > toggle passthrough
- Using a BP_Passthrough
- By adding this to my level blueprint in a level containing nothing but a ground plane, a player start, and a directional light
It prints on screen:
false
Opaque
Opaque
And does not activate passthrough. It should print
true
Opaque
Alpha Blend
I’m using a Meta Quest 3S with the latest firmware. Here’s the full output log:
LogDebuggerCommands: Repeating last play command: VR Preview
LogCameraSystemEditor: No camera objects needed building (inspected 0 objects)
LogPlayLevel: PlayLevel: No blueprints needed recompiling
LogPlayLevel: Creating play world package: /Game/UEDPIE_0_Empty
LogPlayLevel: PIE: StaticDuplicateObject took: (0.001666s)
LogPlayLevel: PIE: Created PIE world by copying editor world from /Game/Empty.Empty to /Game/UEDPIE_0_Empty.Empty (0.001704s)
LogUObjectHash: Compacting FUObjectHashTables data took 0.76ms
LogChaosDD: Creating Chaos Debug Draw Scene for world Empty
LogRenderer: SceneCulling instance hierarchy is disabled as UseNanite(PCD3D_SM6) returned false, for scene: 'World /Game/UEDPIE_0_Empty.Empty'.
LogPlayLevel: PIE: World Init took: (0.001500s)
LogAudio: Display: Creating Audio Device: Id: 6, Scope: Unique, Realtime: True
LogAudioMixer: Display: Audio Mixer Platform Settings:
LogAudioMixer: Display: Sample Rate: 48000
LogAudioMixer: Display: Callback Buffer Frame Size Requested: 1024
LogAudioMixer: Display: Callback Buffer Frame Size To Use: 1024
LogAudioMixer: Display: Number of buffers to queue: 1
LogAudioMixer: Display: Max Channels (voices): 32
LogAudioMixer: Display: Number of Async Source Workers: 4
LogAudio: Display: AudioDevice MaxSources: 32
LogAudio: Display: Audio Spatialization Plugin: None (built-in).
LogAudio: Display: Audio Reverb Plugin: None (built-in).
LogAudio: Display: Audio Occlusion Plugin: None (built-in).
LogAudioMixer: Display: Initializing audio mixer using platform API: 'XAudio2'
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role='Console', Device='Speakers (Harman/Kardon SoundSticks)'
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role='Console', Device='Microphone (2- HD Pro Webcam C920)'
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role='Multimedia', Device='Speakers (Harman/Kardon SoundSticks)'
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role='Multimedia', Device='Microphone (2- HD Pro Webcam C920)'
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role='Communications', Device='Headphones (Oculus Virtual Audio Device)'
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role='Communications', Device='Microphone (2- HD Pro Webcam C920)'
LogAudioMixer: Display: Using Audio Hardware Device Headphones (Oculus Virtual Audio Device)
LogAudioMixer: Display: Initializing Sound Submixes...
LogAudioMixer: Display: Creating Master Submix 'MasterSubmixDefault'
LogAudioMixer: Display: Creating Master Submix 'MasterReverbSubmixDefault'
LogAudioMixer: FMixerPlatformXAudio2::StartAudioStream() called. InstanceID=6
LogAudioMixer: Display: Output buffers initialized: Frames=1024, Channels=2, Samples=2048, InstanceID=6
LogAudioMixer: Display: Starting AudioMixerPlatformInterface::RunInternal(), InstanceID=6
LogAudioMixer: Display: FMixerPlatformXAudio2::SubmitBuffer() called for the first time. InstanceID=6
LogInit: FAudioDevice initialized with ID 6.
LogAudio: Display: Audio Device (ID: 6) registered with world 'Empty'.
LogAudioMixer: Initializing Audio Bus Subsystem for audio device with ID 6
LogSlate: Updating window title bar state: overlay mode, drag disabled, window buttons hidden, title bar hidden
LogLoad: Game class is 'BP_XRGameMode_C'
LogWorld: Bringing World /Game/UEDPIE_0_Empty.Empty up for play (max tick rate 0) at 2025.12.27-17.50.13
LogWorld: Bringing up level for play took: 0.000669
LogOnline: OSS: Created online subsystem instance for: :Context_21
LogSlate: New Slate User Created. Platform User Id 8, User Index 8, Is Virtual User: 1
LogSlate: Slate User Registered. User Index 8, Is Virtual User: 1
LogBlueprintUserMessages: [Empty_C_0] false
LogBlueprintUserMessages: [Empty_C_0] Opaque
LogHMD: Error: Environment Blend Mode 3 is not supported. Environment Blend Mode remains 1.
LogBlueprintUserMessages: [Empty_C_0] Opaque
xr.SecondaryScreenPercentage.HMDRenderTarget = "100"
PIE: Server logged in
PIE: Play in editor total start time 0.266 seconds.
LogHMD: Warning: Requesting 10 bit swapchain, but not supported: fall back to 8bpc
LogSlate: Updating window title bar state: overlay mode, drag disabled, window buttons hidden, title bar hidden
LogWorld: BeginTearingDown for /Game/UEDPIE_0_Empty
LogSlate: Window 'VR57 Preview [NetMode: Standalone 0] (64-bit/PC D3D SM6) OpenXR Oculus (1.115.0)' being destroyed
LogWorld: UWorld::CleanupWorld for Empty, bSessionEnded=true, bCleanupResources=true
LogSlate: InvalidateAllWidgets triggered. All widgets were invalidated
LogPlayLevel: Display: Shutting down PIE online subsystems
LogSlate: InvalidateAllWidgets triggered. All widgets were invalidated
LogAudioMixer: Deinitializing Audio Bus Subsystem for audio device with ID 6
LogAudioMixer: Display: FMixerPlatformXAudio2::StopAudioStream() called. InstanceID=6, StreamState=4
LogAudioMixer: Display: FMixerPlatformXAudio2::StopAudioStream() called. InstanceID=6, StreamState=2
LogSlate: Slate User Unregistered. User Index 8
LogSlate: Slate User Destroyed. User Index 8, Is Virtual User: 1
LogUObjectHash: Compacting FUObjectHashTables data took 0.95ms
LogPlayLevel: Display: Destroying online subsystem :Context_21


