Skip to main content

Immersive Environments for visionOS

Platforms: Apple Vision ProTools: Houdini, Reality Composer, Unity, Substance Painter, VEX, USD

I built the content authoring pipeline behind Apple Vision Pro’s immersive environments. The core problem: cinematic source assets with hundreds of millions of triangles need to run in real time on wearable hardware. This pipeline has shipped across more than ten photorealistic environments.

Technical Workflow: From Film Assets to Real-Time

Most source assets started in the hundreds of millions of triangles, while the runtime budget was closer to a few hundred thousand. I built a Houdini-based optimization pipeline with custom Digital Assets that made reduction repeatable, art-directable, and fast enough for day-to-day iteration.

I presented this work live at a visionOS developer event at Apple Park, then prepared a presentation based off that for the WWDC 2025 session “Optimize your custom environments for visionOS.”

Optimization Pipeline

Immersive Boundary Optimization

Concentrates geometry and texture budget inside Vision Pro’s fixed traversable boundary, then tapers detail outside it where users can look but not walk.

Adaptive Polygon Reduction

Custom HDAs preserve silhouettes and hero assets while cutting low-impact regions from millions of triangles to a few hundred thousand with no obvious visual loss.

Vista Billboard System

Converts distant geometry (1-3 km) into ray-cast billboard silhouettes, reducing millions of polygons to thousands while keeping the horizon convincing.

Backface & Occlusion Culling

Combines dot-product backface removal with ray-cast occlusion tests to strip hidden geometry, removing roughly 50% of the remaining triangles in this pass alone.

Procedural UV Partitioning and Projection

Spherical and multi-projection UV workflows allocate texel density by expected screen-space visibility, reducing texture footprint significantly while keeping distortion controlled.

Texture Baking and Atlas Compression

Consolidates gigabytes of PBR textures into atlases under 250 MB while preserving key lighting and material detail.

USD Partitioning for Frustum Culling

Structures environments into hierarchical USD partitions for real-time frustum culling so only visible entities reach the GPU, keeping draw calls under 100 per frame.

Download Houdini HDAs →

Shipped Environments

In visionOS, environments are immersive spatial scenes that surround the user while system UI and app windows float in front of them. They’re part of the OS itself, not standalone apps. Each release pushed the optimization pipeline further while keeping real-time performance stable.

Jupiter Environment with Time-of-Day Transitions

Jupiter introduced dynamic atmospheric transitions across different times of day. That raised runtime cost for lighting and atmosphere, so the environment needed more aggressive optimization to preserve headroom. I extended the pipeline and added automation to keep iteration fast despite the extra complexity.

App-Specific Environments

I also supported app-specific environments through the same optimization pipeline. For Keynote, the art team built the Conference Room and Steve Jobs Theater so people could rehearse presentations in realistic spaces. Those hard-surface interiors were a useful stress test beyond natural landscapes.