BloomComponent lags behind the camera on iOS/macOS but not visionOS

BloomComponent (RealityKit 27) lags behind the geometry that produces it while the camera moves. The halo trails the emissive geometry by roughly one to three frames (eyeballed) and snaps back once the camera stops. Video attached — it's obvious at normal playback speed.

visionOS renders the identical scene correctly. Only iOS and macOS / Mac Catalyst lag, which points at the non-visionOS compositing path rather than the effect itself.

Filed as FB23960052. This should be fixed before 27 ships — bloom is unusable for anything with a moving camera in its current state on those platforms.

Ruled out:

  • Scope. Identical with BloomComponent(scope: .hierarchical) and .unbounded. .unbounded computes no per-entity screen-space bounds, so stale bounds are not the cause.
  • Input handling. The camera is RealityKit's own .realityViewCameraControls(.orbit) — no gesture code of mine involved.
  • Per-frame component writes. BloomOptionsComponent is set once and untouched during the drag.
  • Geometry and camera transform. Both track perfectly; only the glow lags.

Reproducer is ~130 lines, no assets — five emissive spheres inside a large inward-facing dark sphere:

var material = PhysicallyBasedMaterial()
material.baseColor = .init(tint: .black)
material.emissiveColor = .init(color: .cyan)
material.emissiveIntensity = 4

// ...

root.components.set(BloomComponent(scope: .unbounded))
var options = BloomOptionsComponent()
options.strength = 1
options.threshold = 1
options.blurRadius = 1
root.components.set(options)

shown in:

RealityView { content in
    content.camera = .virtual
    content.add(root)
}
.realityViewCameraControls(.orbit)

Xcode 27.0 beta 4, iOS 27.0 SDK, Apple Silicon. Affected: iOS 27, macOS 27 / Mac Catalyst 27. Not affected: visionOS 27 (immersive space).

Full project and screen recording attached to my radar.

Severity depends on the camera type, not on the platform. With a virtual camera (RealityView, content.camera = .virtual, .realityViewCameraControls(.orbit)) the lag is severe and identical on iPhone and on macOS / Mac Catalyst — this is not a Catalyst quirk. In world-tracked AR (content.camera = .spatialTracking) it is noticeably milder. Both checked in the same build of the attached reproducer, which now has an Orbit / AR switch on iOS. I report the AR difference as an observation only — I have no evidence for why the two differ. Either way, the worst-affected case is the virtual camera, which is what any non-AR 3D viewer on iOS and macOS uses.

BloomComponent lags behind the camera on iOS/macOS but not visionOS
 
 
Q