Is there a way to get the ambient light from the environment

I tried using polyspatial lighting to capture the ambient light but it doesn’t seem to be affected when i change environments in the simulator.

The PolySpatial Lighting Node only includes ambient contributions from the Unity scene, not the image based lighting provided by visionOS from the simulated/actual environment. Are you trying to get the ambient light on the CPU (C# code), or in a shader graph? The former is not possible, as far as I know. The latter is currently only possible by using a Lit shader graph target and having visionOS supply the ambient contribution as part of its overall lighting model. However, visionOS does supply a MaterialX node that samples the image-based lighting. Essentially, you provide it the lighting parameters–normal, base color, roughness, etc.–and it outputs the diffuse and specular lighting components, which you can use as a base for further calculations in the shader. We have it on our list to support this node in the future.

Thanks, got it.

I am looking for the image based lighting provided by visionOS to be accessible in the shader graph.

It sounds like this would be a new node in the future? Or added onto the PolySpatial Lighting Node.

It would be a new node, since there’s no equivalent in Unity shader graph (the closest would be the Reflection Probe node, but that’s not quite the same; it doesn’t take into account the material properties). We’d probably call it something like “PolySpatial Environment Radiance.” I’ll make sure that we add it in an upcoming release.


How is this going? Is there now a way to sample or get values from the actual environment?

Yes! Sorry I didn’t update the post. We added the PolySpatial Environment Radiance node, which is a direct proxy for visionOS’s Environment Radiance node. That makes it possible to get the light level within a shader graph, though there’s still no way to get the camera data/light level on the CPU (which is an intentional choice by Apple).