Skip to content

Conversation

@mikeskydev
Copy link
Member

@mikeskydev mikeskydev commented Dec 16, 2024

This PR implements the early stages of https://github.com/mikeskydev/unity-openxr-extensions, moving away from vendor specific XR SDKs towards using OpenXR for as many features as possible.

TODO:

  • Fix up AndroidManifest; some things are implemented in the package, others should be.
  • Test Pico a bit more thoroughly.
  • Re-orient pico controllers

Out of scope:

Test Matrix Nov '25:

  • Quest 3
  • Quest 1
  • Pico 3
  • Pico 4/Ultra
  • Windows

This removes dependency on the Oculus Core SDK and the Pico SDK, allowing us to use the same codepath. Annoyingly our package name is still different on Oculus, so we have to do a separate build. @mikeage could we consider using apktool to hack our own package as a post-build step, rather than building twice?

Oculus Passthrough is delivered via the new upm package, and as a plus we get passthrough on Pico and Quest PCVR!

Oculus Platform is required for age check (and some MR features that are currently commented out), but we check which platform we're running on before initializing, otherwise it can crash non-oculus android devices. I will reimplement the MR features in my OpenXR package at a later date.

Wave is removed (never actually used, and we can do it properly with OpenXR), as is the Pimax build, getting our current builds down to 6.

Closes #447

@mikeskydev mikeskydev added the enhancement Feature added label Dec 16, 2024
@mikeskydev mikeskydev mentioned this pull request Dec 16, 2024
@mikeage
Copy link
Member

mikeage commented Dec 16, 2024

apktool may be a drop problematic; we have to make sure it's signed properly. But it's probably possible. Maybe a followup PR?

@mikeskydev
Copy link
Member Author

Yeah it can be a followup, I'm hoping we can make the change then re-sign as we have our original keys

@smitdylan2001
Copy link

smitdylan2001 commented Sep 4, 2025 via email

@mikeskydev
Copy link
Member Author

@eeease did you build for Pico, or perhaps use the generated build from this PR? It will likely not show in-editor unless pico's streaming thing supports OpenXR and the passthrough extension, you will need to build to device.

@smitdylan2001 this PR is still draft so it's not in the store version.

@eeease
Copy link

eeease commented Sep 12, 2025

@eeease did you build for Pico, or perhaps use the generated build from this PR? It will likely not show in-editor unless pico's streaming thing supports OpenXR and the passthrough extension, you will need to build to device.

Hey, thanks for the response! I was actually just checking for the build from this PR but it looks like it's expired. I'm more used to Azure and TeamCity pipelines but I checked both the Actions tab and the specific job log. Both report expired builds:
https://github.com/icosa-foundation/open-brush/actions/runs/13786416598/job/38555463305?pr=798

Also, I'm most interested in Standalone (Windows) + Passthrough, so a dedicated PICO build doesn't help all that much.

@mikeskydev
Copy link
Member Author

hmm, i'll see if i can kick another run for you.

Standalone (Windows) + Passthrough

That's going to rely on your OpenXR runtime on windows supporting FB_Passthrough! I have played with the KHR environment blend option as another passthrough strategy, but it's not in this build yet.

@github-actions
Copy link

github-actions bot commented Sep 12, 2025

⚠️ Heads‑up:

The following package files were changed:

Packages/manifest.json
Packages/packages-lock.json

The following files from ProjectSettings were changed:

ProjectSettings/EditorBuildSettings.asset
ProjectSettings/ProjectSettings.asset

(Review: flagged files)

andybak and others added 3 commits September 12, 2025 23:11
# Conflicts:
#	.github/workflows/build.yml
#	Assets/Oculus/OculusProjectConfig.asset
#	Assets/Prefabs/NoPeekingCamera.prefab
#	Assets/Scripts/Multiplayer/MultiplayerManager.cs
#	Assets/Scripts/VrSdk.cs
#	Assets/XR/Settings/Oculus Settings.asset
#	Assets/XR/Settings/OpenXRPackageSettings.asset
#	Packages/manifest.json
@mikeskydev mikeskydev marked this pull request as ready for review November 4, 2025 16:55
@mikeskydev mikeskydev requested a review from mikeage November 4, 2025 16:55
Copy link
Member

@mikeage mikeage left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple of questions:

  1. For Q1, we had to force a few extra things in the manifest. I'm not sure if we still need those since we're not longer pushing to the store
  2. We still need a solution for the different package names. edit: I misread the build.yml
  3. Does Pimax still work?
  4. I think we should test manual uploads to a different release channel on the platforms that support it (i.e., Q2+ and Pico) just to make sure its happy. We need to make sure that this does not go to the beta or live channels, though, lest it cause problems with downgrades.

Also note that I'm going on vacation for a week or so starting on Thursday :-)

@mikeage
Copy link
Member

mikeage commented Nov 4, 2025

Also, I think you broke ArborXR publishing

@mikeage
Copy link
Member

mikeage commented Nov 4, 2025

And it looks like the Github publish might also be broken

@mikeskydev
Copy link
Member Author

mikeskydev commented Nov 4, 2025

@mikeage The build steps are what I wanted your review on, so thanks! Happy for you to touch up, you can probably get my intent and it might be quicker for you to fix.

EDIT: I can see that Arbor would be broken, it didn't have a merge conflict so I didn't notice it during the merge. Perhaps as they all use the same APKs, it could be a matrix job?

@mikeage
Copy link
Member

mikeage commented Nov 5, 2025

A few comments:

what about the Rift store build?

I think Pico will fail formal builds, b/c we can't upload the same version number to both channel 1 and channel 2. That's why we had that suffix.

I think that we specifically will need all of those FORCE_* for the Quest build; back when Q1 was still accepted, we needed them after we removed the OVR package. Now that we've removed it from Q2+ as well, I think we'll need them.

@mikeskydev
Copy link
Member Author

mikeskydev commented Nov 5, 2025

Rift store just uses the windows OpenXR build, as it should :)

Pico

Is that just because the checksums are different though? If it's the same build, I'd say it's really stupid if it can't be in both channels.

FORCE

I think (I'll double check!) that as it's all OpenXR, I've moved those manifest bits directly into the custom manifest we already use.

@mikeage
Copy link
Member

mikeage commented Nov 5, 2025

Pico

Is that just because the checksums are different though? If it's the same build, I'd say it's really stupid if it can't be in both channels.

Hmmm. That's a fair question. We didn't try (and it will be problematic to experiment).
When the builds differed, the two couldn't share a version code, even though they went to different, mutually exclusive, channels. I agree it's stupid!

We'll only be able to test this if/when we do a formal version. Might be ok, might need another, identical, build.

@mikeage
Copy link
Member

mikeage commented Nov 5, 2025

I pushed three commits with three smallish fixes that I think are important. Other than that, this looks good, but I think we need to test an upload to a different channel before merging

@mikeskydev
Copy link
Member Author

Good catch on the symbols, but do we really need the quest specific version? It's just a package ID change... I'd rather use our proper ID on places we have control over

@mikeage
Copy link
Member

mikeage commented Nov 5, 2025

Are you asking about Github or ArborXR? Or both?

I'd rather not break an upgrade for someone who previously installed that one.

Maybe on a major release we can talk about it, but not just slipped in like that.

@mikeskydev
Copy link
Member Author

Oof, yeah I forgot about that... what a pain. I hate past me.

I thought this was done?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Feature added

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Passthrough to Pico family of headsets

7 participants