Tinting/lighting of passthrough limbs

In our fully immersive app (using the legacy Metal rendering path), we would like apply lighting to the visible “passthrough limbs” to better match the lighting in the game (i.e tint/desaturate/darken the passthrough feed). You can see this happening in other places in the OS, like when watching media. Is this exposed to apps? I can’t seem to find anything about it in Apple or Unity docs, but maybe I missed it somewhere… Thanks!

1 Like

Hello Mike, would you be able to share a screenshot of what you’re referring to? Thank you!

Sure, here’s a series of screenshots showing the darkening of the passthrough hands that happens when you start a video in the OS or go “full screen” into the theater. We would like to be able to darken the passthrough hands in a similar way to match the lighting in our VR environment. I don’t have the docs handy, but I believe this is something native apps can do on the platform…



Hi,

As far as I know, I don’t think that tinting control is currently exposed to apps, and VR/fully immersive apps will set the tinting on passthrough hands back to default. It might be worth filing feedback with Apple to let them know there is a desire to control passthrough tinting in an app.

There’s another thread on this topic here:
https://discussions.unity.com/t/dim-passthrough-at-runtime/310614

It suggests that its possible to edit some Swift in Xcode to enable this documented feature:

The problem I’m finding is that I can’t seem to access the “View” from the UnityMain.swift file we get with fully immersive apps. In the thread I linked above, it does seem possible via the UnityVisionOSSettings.swift file accessible to those using PolySpatial. Specifically like this:

        ImmersiveSpace(id: "Unbounded", for: UUID.self) { uuid in
            PolySpatialContentViewWrapper()
                .environment(\.pslWindow, PolySpatialWindow(uuid.wrappedValue, "Unbounded", .init(1.000, 1.000, 1.000)))
                .preferredSurroundingsEffect(.systemDark)
        } defaultValue: { UUID() }

Is there a similar way to do this with the setup in UnityMain.swift? Appologies, I’m a little outta my element sifting thru these swift files :slight_smile: