visionOS 27 introduces Gaussian Splatting support in RealityKit, enabling developers to scan real-world objects and render them as photorealistic 3D Gaussian splats directly in their spatial experiences. This bridges the gap between physical reality and virtual content without requiring manual 3D modeling.
⢠Capture real-world objects with stunning detail (down to soil texture on a plant) and embed them directly into RealityKit scenes ā no modeling tools required
⢠Dramatically reduces asset creation time for objects that are difficult to hand-model, like organic shapes, cluttered surfaces, or highly detailed props
⢠Renders in real time on Apple Vision Pro's M5 chip, making photorealistic scanned objects viable for live, interactive spatial experiences
Loads a pre-captured Gaussian splat of a potted plant and renders it in a RealityKit ImmersiveSpace, allowing the user to walk around and inspect the photorealistic scanned object.
import SwiftUI
import RealityKit
@main
struct GaussianSplatDemoApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
ImmersiveSpace(id: "SplatSpace") {
SplatImmersiveView()
}
}
}
struct ContentView: View {
@Environment(\.openImmersiveSpace) private var openImmersiveSpace
@Environment(\.dismissImmersiveSpace) private var dismissImmersiveSpace
@State private var isImmersive = false
var body: some View {
VStack(spacing: 20) {
Text("Gaussian Splat Viewer")
.font(.title)
Button(isImmersive ? "Exit Immersive Space" : "View Scanned Plant") {
Task {
if isImmersive {
await dismissImmersiveSpace()
} else {
await openImmersiveSpace(id: "SplatSpace")
}
isImmersive.toggle()
}
}
}
.padding()
}
}
struct SplatImmersiveView: View {
var body: some View {
RealityView { content in
// Load a Gaussian splat entity from a .splat asset in the app bundle
if let splatEntity = try? await GaussianSplatEntity(
contentsOf: Bundle.main.url(forResource: "potted_plant", withExtension: "splat")!
) {
// Position the scanned plant roughly on a surface in front of the user
splatEntity.position = SIMD3<Float>(0, -0.5, -1.2)
splatEntity.scale = SIMD3<Float>(repeating: 0.8)
content.add(splatEntity)
}
}
}
}Liquid Glass is Apple's new material and visual design language introduced in iOS 27, bringing translucent, refractive glass-like surfaces to system and custom UI elements. It replaces the frosted vibrancy aesthetic with a more dynamic, depth-aware material that responds to content beneath it.
PaperKit is Apple's full-featured canvas framework ā previously internal-only ā now publicly available in iOS/macOS/visionOS 27. It powers the drawing and markup experience in Notes, Preview, and Freeform, giving developers access to a complete pencil, shapes, images, and text canvas with a rich data model.
Xcode 27 introduces a fully customizable toolbar and theme system, untitled scratch projects, coding agent integration directly in the editor, and the new Device Hub for evaluating apps across simulators and physical devices side-by-side.
In-depth guide
RealityKit & USDKit in iOS 27 āGaussian splat assets must be pre-captured and converted into RealityKit's splat format before loading; real-time scanning from within the app is not supported at runtime. Large splat files can significantly increase app bundle size. API is new in visionOS 27 and may have beta roughness in early Xcode builds.
Requires Apple Vision Pro with M5 chip for optimal real-time Gaussian splat rendering performance
iOS 27 introduces new SwiftUI drag and drop APIs including reorderable, reorderContainer, dragContainer, and configuration modifiers that enable reordering within and across collections, multi-item drag, and fine-grained control over how data is transferred during drag and drop operations.