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.
iOS 27 brings significant updates to Live Activities and the Dynamic Island, including new expanded presentations, richer interactivity via App Intents directly from the island, and updated layout APIs for more expressive minimal and compact views.
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 enforces stricter adaptivity requirements for UIKit apps, making iPhone apps fully resizable in iPhone Mirroring and on iPad, while introducing new navigation bar minimization controls, sidebar opt-in for iPhone tab bars, and prominent tab customization.