View in English

  • Apple Developer
    • 시작하기

    시작하기 탐색

    • 개요
    • 알아보기
    • Apple Developer Program

    알림 받기

    • 최신 뉴스
    • Hello Developer
    • 플랫폼

    플랫폼 탐색

    • Apple 플랫폼
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    피처링

    • 디자인
    • 배포
    • 게임
    • 액세서리
    • 웹
    • 홈
    • CarPlay
    • 기술

    기술 탐색

    • 개요
    • Xcode
    • Swift
    • SwiftUI

    피처링

    • 손쉬운 사용
    • 앱 인텐트
    • Apple Intelligence
    • 게임
    • 머신 러닝 및 AI
    • 보안
    • Xcode Cloud
    • 커뮤니티

    커뮤니티 탐색

    • 개요
    • Apple과의 만남 이벤트
    • 커뮤니티 주도 이벤트
    • 개발자 포럼
    • 오픈 소스

    피처링

    • WWDC
    • Swift Student Challenge
    • 개발자 이야기
    • App Store 어워드
    • Apple 디자인 어워드
    • 문서

    문서 탐색

    • 문서 라이브러리
    • 기술 개요
    • 샘플 코드
    • 휴먼 인터페이스 가이드라인
    • 비디오

    릴리즈 노트

    • 피처링 업데이트
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • 다운로드

    다운로드 탐색

    • 모든 다운로드
    • 운영 체제
    • 애플리케이션
    • 디자인 리소스

    피처링

    • Xcode
    • TestFlight
    • 서체
    • SF Symbols
    • Icon Composer
    • 지원

    지원 탐색

    • 개요
    • 도움말
    • 개발자 포럼
    • 피드백 지원
    • 문의하기

    피처링

    • 계정 도움말
    • 앱 심사 지침
    • App Store Connect 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

    • 이벤트
    • 뉴스
    • 포럼
    • 샘플 코드
    • 비디오
 

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 자막 전문
  • 코드
  • 포비티드 스트리밍을 사용하여 visionOS에 몰입형 콘텐츠 적용하기

    포비티드 스트리밍이 원격으로 렌더링된 장면을 어떻게 Apple Vision Pro에 완전한 충실도로 구현하는지 알아보세요. 이 프레임워크가 네이티브 visionOS 기능과 타사 스트리밍 기술을 완전히 무선으로 결합하는 방법을 살펴보세요. OpenXR 장면과 NVIDIA CloudXR을 사용한 데모가 제공됩니다. FoveatedStreaming 프레임워크, NVIDIA CloudXR SDK와의 통합, 동적 포비티드 스트리밍이 개인정보를 보호하면서도 이점을 제공하는 방법에 대해 알아보세요.

    챕터

    • 0:00 - Introduction
    • 4:08 - How Foveated Streaming works
    • 4:46 - Set up the streaming endpoint
    • 5:18 - Create a visionOS receiver app
    • 8:02 - Integrate with the streaming endpoint
    • 11:28 - Measure performance
    • 11:56 - Enhance with visionOS features
    • 13:56 - Next steps

    리소스

    • Analyzing the performance of a foveated streaming session
    • Establishing foveated streaming sessions with Apple Vision Pro
    • Streaming a CloudXR application to Apple Vision Pro with foveation
    • Creating a foveated streaming client on visionOS
    • Foveated Streaming
    • StreamingSession: Streaming immersive content from a CloudXR™ application to visionOS and iOS
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC26

    • visionOS 그룹 랩
    • visionOS 27으로 차세대 경험 빌드하기
  • 비디오 검색…

    Hi I'm Adrian and I'm an engineer at Apple.

    visionOS allows you to bring people to new worlds and create rich spatial applications. Some existing spatial apps require an external device, such as a PC. Or they're built with alternative technologies like OpenXR. Now there's a new way to enhance these apps for Apple Vision Pro.

    It's called Foveated Streaming! Foveated Streaming helps Apple Vision Pro connect to external devices, like a PC, to stream OpenXR content.

    visionOS automatically sends input data, like hands, controller positions, and microphone. And the device streams your OpenXR content as video and audio.

    We introduced the Foveated Streaming framework in visionOS 26.4 and developers have already created some amazing experiences with it. For example, X-Plane 12 from Laminar Research brings a premium flight simulation experience to Apple Vision Pro. The X-Plane app on visionOS uses ARKit to understand your space and equipment, and streams the simulated experience from a PC. It feels incredible to interact with a physical flight simulator while fully immersed in the virtual world. You can look around the cockpit, or out the side windows. visionOS seamlessly blends the real and the virtual to deliver an immersive and effective simulation.

    iRacing, a motorsport racing game for PC, delivers an incredible sim racing experience on Apple Vision Pro.

    The iRacing Connect app uses ARKit hand tracking to match the position of your physical racing wheel with the virtual cockpit. So, you can see your hands holding the virtual wheel! And Innoactive brings Autodesk VRED to Apple Vision Pro. This enables designers and engineers to visualize massive 3D assets and simulations.

    In this video, designers at Kia use this technology to see their cars at one-to-one scale, and in rigorous detail. So, Foveated Streaming already enables some fantastic experiences on Apple Vision Pro. And the video quality is incredible, because our system intelligently optimizes the video stream.

    Foveated Streaming compresses video based on where a person is looking. We use the eye tracking technology in Apple Vision Pro to stream things you're focused on in higher detail. This sophisticated stream processing is built in to visionOS, so we've done the heavy lifting for you. It all happens so quickly that you don't even notice! Under the hood, visionOS comes with NVIDIA CloudXR™ streaming, built-in. This means that your immersive content is streamed with a high performance streaming protocol and with minimal latency. CloudXR™ is so performant that you can stream immersive content without any cables attached, over Wi-Fi. It can stream content from a local PC over your home network, or from the cloud.

    Your apps can also integrate with native visionOS frameworks. So you can build user interfaces with SwiftUI, you can mix your content and the real world with ARKit, and you can combine on-device RealityKit rendering with your streamed content. It's super easy to use. We've found that you can start streaming your OpenXR application in just one day. And in a week, you can enhance your application with capabilities that you can only find on visionOS. So let's talk all about it! First, I'll describe how Foveated Streaming works, and show you how to get started in just a few hours.

    Next, we will set up a visionOS app to display the streamed content.

    Then we'll set up your OpenXR client so that it can stream to Apple Vision Pro. And finally, I'll talk about how you can enhance your application with capabilities only possible on visionOS.

    So let's get started! Here is a block diagram that outlines the frameworks you will build on. Both for visionOS and for your streaming endpoint. Your OpenXR app should implement Apple's Foveated Streaming Protocol, which manages pairing with the device.

    Also, your app should use the OpenXR runtime provided by the NVIDIA CloudXR™ SDK.

    On visionOS, your app uses the FoveatedStreaming framework to connect to the streaming endpoint.

    And you can integrate with other visionOS frameworks such as ARKit, SwiftUI, and RealityKit.

    Let's begin by setting up your Streaming endpoint. We've provided an open source, end to end example on Apple's Github page.

    Our windows sample code contains a reference implementation of Apple's Foveated Streaming Protocol. We have also provided an example OpenXR application and helpful guides to help you set up the NVIDIA CloudXR™ runtime.

    So to get started, check out our Github page. And feel free to copy our reference implementation! This can help you set everything up in an afternoon. Next, let's talk about how to build a visionOS receiver app.

    The visionOS app you create welcomes people into your experience.

    It uses the FoveatedStreaming.framework to connect to streaming endpoints.

    And most importantly, it adds unique features to your experience by leveraging the great frameworks in visionOS.

    To get started, download our visionOS sample on developer.apple.com. You can use our sample code, both for visionOS and for Windows, to get your application streaming in an afternoon.

    For the remainder of the talk, I'll dig into how these samples work. To begin, let's talk more about the receiver app. The Foveated Streaming framework uses a session-based API. So your app should create a FoveatedStreamingSession.

    When you call connect, the framework will automatically present a list of endpoints your app can connect to. Apple Vision Pro must pair with your endpoint before beginning the stream. To do this, the endpoint presents a QR code with pairing information. We'll talk more about how to properly present this later. When the code is on screen, the framework automatically presents a user interface to scan. You scan the code by looking at it. Once you're connected, it's time to present the streamed content. You can do this with SwiftUI.

    On visionOS, you present spatial content with an ImmersiveSpace. If you pass a FoveatedStreamingSession to your ImmersiveSpace, it will include the streamed content.

    You can add additional windows, just like any other SwiftUI application. For example, our sample app adds a window to the scene to pause and resume the session.

    It also adds views to the ImmersiveSpace itself, like this widget to re-open the main window.

    And finally, it configures the immersive space to have a progressive immersion style. Progressive immersion is a great fit for Foveated Streaming. It allows people to view your experience through a portal, grounded in their physical environment. In fact, you have access to all of SwiftUI's features when using Foveated Streaming. So your streaming client can use native spatial gestures, and the visionOS look and feel.

    You can add SwiftUI windows to your app, including volumetric windows. And you can use immersion styles, like progressive immersion. If you're new to SwiftUI, there are a ton of resources to help you get started. I like the talk "Get started with building apps for spatial computing" from WWDC23. Now let's look at what your streaming endpoint needs to do to integrate with Foveated Streaming. I mentioned before that your OpenXR app needs to do two things.

    First, it should implement the Foveated Streaming Protocol, which handles authentication and pairing.

    Second, it should use the OpenXR runtime provided by the NVIDIA CloudXR™ SDK.

    Let's begin by talking about the Foveated Streaming Protocol. This is a lightweight, TCP-based connection which is established separately from the streaming connection. It helps to authenticate the secure foveated stream. It also communicates session state between visionOS and the endpoint. For details on the protocol format, see our article on developer.apple.com.

    We've also provided a reference implementation of the protocol on our Github page, so you can use that to get started.

    For example, here's what happens when your app calls connect().

    Endpoints become visible to your local network with Bonjour.

    When someone selects it, visionOS establishes a connection.

    Then, pairing occurs. And once that's done, the stream begins, and connect() returns.

    Let's dive in to the specific messages that are sent and received during barcode pairing. Messages in the Foveated Streaming Protocol are JSON-encoded. The protocol uses a request-acknowledge pattern. First, visionOS requests a connection, and if unpaired, it requests a pairing barcode. The barcode is also JSON-encoded.

    It contains two things: a client token, and a hash of the secure connection's certificate. Both of these are provided by the NVIDIA CloudXR™ SDK.

    visionOS will update your endpoint on the session status.

    And once the endpoint reports the content is ready, streaming begins.

    It's important that you monitor the session status to have a stable user experience.

    For example, when you take off the device, it goes to sleep.

    Just before, it informs your endpoint that the streaming session is paused.

    While asleep, all connections are severed.

    You should keep the endpoint available so that someone can reconnect when they put the device back on. Now, let's talk about how NVIDIA CloudXR™ integrates with your OpenXR client. NVIDIA CloudXR™ provides an OpenXR runtime for windows. Your OpenXR application automatically connects to this runtime, and CloudXR™ handles the streaming details.

    CloudXR provides visionOS input data to OpenXR automatically. For example, you can use the OpenXR extension for hand tracking.

    PlayStation VR2 Sense Controllers also pass through.

    We recommend using a depth buffer for the best experience. Also, provide an alpha channel to mix your content with the user's surroundings. For more information, see our article on developer.apple.com. You can also consult our sample code on Github to understand how to set up NVIDIA's runtime. Now that you have everything set up, let's talk about how to evaluate the performance of your streamed experience. We've provided an instrument in Xcode to measure statistics of the stream. The Foveated Streaming instrument informs you about the stream's bandwidth, pose latency, frame rate, and more. You can use this to diagnose issues with the streamed content.

    To learn more, see our article on developer.apple.com. Now that you have your streaming client up and running, I'll talk about some ways that you can enhance the experience with features you can only find on visionOS.

    As we've seen, your streaming experience is composed of two apps: the receiver app on visionOS and the host app on your streaming endpoint.

    The Foveated Streaming framework allows them to communicate with the message channels API.

    On visionOS, message channels are an API on FoveatedStreamingSession.

    And CloudXR provides an OpenXR extension for message channels.

    These messages are completely Opaque Data blobs, so you can send whatever you want! For example, you can present a SwiftUI interface to select a level in your game, and send a command to the OpenXR application to initiate the load.

    And while it's loading, the OpenXR app can report its progress.

    Or, your visionOS app can send ARKit data, to align the scene in the users's real space.

    X-Plane 12 is a great example of this. The visionOS app uses ARKit to find the location of a physical flight simulator. It uses message channels to sync this to the PC, so the real and the virtual are perfectly aligned.

    It's easy to use ARKit and message channels to enhance your OpenXR experience. FoveatedStreamingSession offers an API to convert between OpenXR and ARKit coordinate frames. As a reminder, controller and hand tracking are already built in! And use an alpha channel, to blend your content with a person's environment. You can also compose your streamed content with native RealityKit rendering! To do this, simply add a RealityView to your ImmersiveSpace. RealityKit content seamlessly composes with your streamed content. And if you supply depth to your OpenXR scene, the content will even occlude each other! And that concludes our session. I invite you to download and review our sample code, which makes it super easy for you to get started. Try to set up your own receiver app, and integrate your OpenXR client with our protocol.

    Have fun, and enjoy the rest of WWDC!

    • 6:03 - Connect to a streaming endpoint

      // Connect to a streaming endpoint
      
      import SwiftUI
      import FoveatedStreaming
      
      struct ConnectView: View {
          let session: FoveatedStreamingSession
      
          var body: some View {
              Button("Connect") {
                  Task {
                      try await session.connect()
                  }
              }
          }
      }
    • 6:44 - Display a Foveated Streaming session in your immersive space

      // Display a Foveated Streaming session in your immersive space
      
      import SwiftUI
      import FoveatedStreaming
      
      @main struct FoveatedStreamingSampleApp: App {
          private let session = FoveatedStreamingSession()
      
          var body: some SwiftUI.Scene {
              ImmersiveSpace(foveatedStreaming: session)
          }
      }
    • 6:55 - Compose SwiftUI content with Foveated Streaming

      // Compose SwiftUI content with Foveated Streaming
      
      import SwiftUI
      import FoveatedStreaming
      
      @main struct FoveatedStreamingSampleApp: App {
          private let session = FoveatedStreamingSession()
          private let appModel = AppModel()
      
          var body: some SwiftUI.Scene {
              Window("Main", id: appModel.mainWindowId) {
                  ContentView(session: session)
                      .environment(appModel)
                      .environment(session)
                      // ...
              }
            
              ImmersiveSpace(foveatedStreaming: session) {
                  SpatialContainer {
                      ReopenMainWindowView().environment(appModel)
                      TransformStreamWidgetView().environment(session)
                  }
              }
             
          }
      }
    • 13:42 - Compose RealityKit content with Foveated Streaming

      // Compose RealityKit content with Foveated Streaming
      
      import SwiftUI
      import RealityKit
      import FoveatedStreaming
      
      @main struct FoveatedStreamingSampleApp: App {
          private let session = FoveatedStreamingSession()
          private let appModel = AppModel()
      
          var body: some SwiftUI.Scene {
              ImmersiveSpace(foveatedStreaming: session) {
                  RealityView { content in
                      // ...
                  }
              }
      
          }
      }
    • 0:00 - Introduction
    • Overview of Foveated Streaming — a new framework in visionOS 26.4 that lets Apple Vision Pro connect to a PC and stream immersive OpenXR content with eye-tracking-based video optimization.

    • 4:08 - How Foveated Streaming works
    • Learn the architecture: the visionOS receiver app uses the FoveatedStreaming framework, the streaming endpoint implements the Foveated Streaming Protocol, and NVIDIA CloudXR handles the OpenXR runtime and Wi-Fi/cloud streaming.

    • 4:46 - Set up the streaming endpoint
    • Set up your Windows streaming endpoint using open-source sample code on GitHub, which includes a reference implementation of the Foveated Streaming Protocol and an example OpenXR application.

    • 5:18 - Create a visionOS receiver app
    • Build your visionOS receiver app using FoveatedStreamingSession to connect and pair with the endpoint, present streamed content in an ImmersiveSpace, and enrich the UI with SwiftUI windows and progressive immersion.

    • 8:02 - Integrate with the streaming endpoint
    • Configure your OpenXR client with the Foveated Streaming Protocol for authentication and pairing, and integrate the NVIDIA CloudXR runtime to handle input data, hand tracking, depth buffers, and alpha channel compositing.

    • 11:28 - Measure performance
    • Use the Foveated Streaming instrument in Xcode to measure your stream bandwidth, pose latency, and frame rate, and diagnose performance issues before shipping.

    • 11:56 - Enhance with visionOS features
    • Enhance your app with message channels to exchange data between the visionOS and OpenXR apps, ARKit to anchor virtual content to the physical world, and RealityKit to composite native 3D objects alongside the streamed content.

    • 13:56 - Next steps
    • Download sample code on GitHub and developer.apple.com to get started, set up your own receiver app, and integrate your OpenXR client with the Foveated Streaming Protocol.

Developer Footer

  • 비디오
  • WWDC26
  • 포비티드 스트리밍을 사용하여 visionOS에 몰입형 콘텐츠 적용하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • Apple Intelligence
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • Mini Apps Partner Program
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    최신 뉴스 읽기.
    Apple Developer 앱 받기.
    Copyright © 2026 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침