A simple VR video player for Apple Vision Pro — Swift-first with a small Metal rendering pipeline for immersive playback.
- Purpose: Play VR 180 (Left/Right — Side‑By‑Side) videos and images on visionOS (Apple Vision Pro).
- Languages: Swift, Metal
- Supports VR 180 Left/Right (SBS/LR) format for H.264 and HEVC videos in mp4 container. As long as supported by the Preview app, NutshellPlayer can play it.
- Supports static VR180 images, jpeg and png.
- Codec/container support is limited to what AVFoundation provides on the target device.
- Xcode 26+
- visionOS 26+
- git clone https://github.com/halftan/NutshellPlayer.git
- Open NutshellPlayer.xcodeproj in Xcode.
- Signing with your own team or personal account in Signing & Capabilities tab of project config.
- Select your actual Vision Pro (not simulator) as target.
- Run the project (Cmd + R).
- GPL 3.0
The implementation uses ShaderGraph to create a custom material that can display different textures for left and right eye (aka stereoscopic image).
Basic idea comes from Apple demo project: Rendering a Windowed Game in Stereo
Warren Moore's great presentation and blog posts helped a lot in helping me understanding Metal.