No Passthrough option on Pico 4 using OpenXR Vendor Plugin - Godot V4.4.1 Stable

I’m trying to make PT work on my Pico 4, running latest version. This is the code:

extends Node3D
@onready var viewport : Viewport = get_viewport()
@onready var environment : Environment = $WorldEnvironment.environment


func _ready():
	var xr_interface: XRInterface
	xr_interface = XRServer.find_interface("OpenXR")
	if xr_interface and xr_interface.is_initialized():
		print("OpenXR initialised successfully")

		# Turn off v-sync!
		DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)

		# Change our main viewport to output to the HMD
		get_viewport().use_xr = true
		print("Switching to ar:" )
		print(switch_to_ar())
		
	else:
		print("OpenXR not initialized, please check if your headset is connected")


func switch_to_ar() -> bool:
	var xr_interface: XRInterface = XRServer.primary_interface
	if xr_interface:
		var modes = xr_interface.get_supported_environment_blend_modes()
		print("Modes:" )
		print(modes)
		if XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND in modes:
			xr_interface.environment_blend_mode = XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND
			viewport.transparent_bg = true
		elif XRInterface.XR_ENV_BLEND_MODE_ADDITIVE in modes:
			xr_interface.environment_blend_mode = XRInterface.XR_ENV_BLEND_MODE_ADDITIVE
			viewport.transparent_bg = false
	else:
		return false

	environment.background_mode = Environment.BG_COLOR
	environment.background_color = Color(0.0, 0.0, 0.0, 0.0)
	environment.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR
	return true

print(modes) only yields a [0], suggesting that it doesn’t support neither the Alpha nor the Additive.

Passthrough should be working fine on Pico, I use it a lot myself.

Double check your project settings and make sure you’re on the latest vendors plugin. You may need to get the latest beta of the vendor plugin.

As I mentioned on Discord, Pico recently added support for the core alpha blend mode and it clashed with their support for the FB passthrough extension. We had to add some logic to make sure it prioritises one over the other.

I’ve manually and automatically (from the Godot’s AssetLib) installed both the 4.0.0 and the 3.1.2 of the OpenXR Vendor Plugin. What folder should it be in? “res:// → addons → godotopenxrvendors”, right?

Based on this this thread, it shouldn’t be visible in the Plugins list. I’ve lost an abundant hour trying to figure it out, but like so I can’t really know if it’s installed or not.

Yet, I don’t have the other modes available. I can only see pitch black.

EDIT: I’ve installed the Android Build Template too. In the “Export” settings the Pico 4 Plugin is enabled.
EDIT2: “OpenXRFbPassthroughExtensionWrapper.has_passthrough_capability()” yields false.
I really do not know what to change in the Project Settings. The XR tab is rather scarce.
EDIT3: I’ve found your message here. The plugin is in the correct folder.

Indeed the plugin no longer shows up in the list of plugins. If you can see the additions to the export window, then you’re all good and by the sounds of it you have.

My best guess is that the project settings aren’t correct so open up the project settings window, find the OpenXR section, and check if the passthrough extensions are enabled.

There is no such thing:


@dsnopek am I missing something here that we changed or haven’t added to a release yet? I thought with the fix for Pico we already introduced those project settings or is that still part of the work you’re doing atm?

1 Like

I’ve opened a GitHub issue.

@dsnopek am I missing something here that we changed or haven’t added to a release yet?

The project settings changes and the fix for the clash between the passthrough extension and alpha blend are merged into master on the godot_openxr_vendors plugin, but they aren’t in the last beta release. We need to make a new release!

2 Likes

When is it planned for?