I have a RealityKit scene with one container entity and two children: an entity carrying a GaussianSplatComponent, and a plain Entity with a ModelComponent (an unlit white cube). A single OpacityComponent goes on the container, so one value covers both children in the same frame.
container.components.set(OpacityComponent(opacity: value))
On visionOS 27 this does exactly what I expect: both children fade together, continuously, across the whole range.
On iOS 27 and Mac Catalyst 27 the cube fades continuously but the splat does not. It renders at full opacity for every value above 0 and disappears at exactly 0. At 0.01 the cube beside it is already almost invisible while the splat is still drawing at full strength, so entity opacity behaves as a visibility switch on a splat rather than as a blend factor.
Things I have already ruled out:
- Not a propagation issue. Moving the OpacityComponent off the container and onto the splat's own entity (and the cube's own entity, to keep the A/B) changes nothing.
- Not the container failing to receive the value. The cube under the same component, in the same frame, fades correctly.
- Not the splat data. Per-splat alpha through GaussianSplatResource's opacity buffer is honoured, and projectionMode, sortingMode, scaleActivation and opacityActivation all take effect.
- Not a difference in scene construction per platform. The same file builds the container on all three platforms in my sample.
Confirmed on:
- iOS 27.0 (24A5418b), iPhone 16 Pro — reproduces
- macOS 27.0 (26A5416b), Mac Catalyst — reproduces
- visionOS 27.0 (24M5326g), Apple Vision Pro — correct
Filed as FB24431214 with a sample project that builds for all three from one target.
Would be great to see this fixed!