<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ImmersiveMediaSupport",
  "identifier" : "/documentation/ImmersiveMediaSupport/ImmersivePreviewRenderer/process(_:presentationDescriptor:drawable:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Immersive Media Support"
    ],
    "preciseIdentifier" : "s:21ImmersiveMediaSupport0A15PreviewRendererC7process_22presentationDescriptor8drawableyAA0A10VideoFrameV_AA012PresentationH0VSo03cp_I2_tVtYaF"
  },
  "title" : "process(_:presentationDescriptor:drawable:)"
}
-->

# process(_:presentationDescriptor:drawable:)

Performs the rendering of an immersive video frame.

```
@MainActor func process(_ frame: ImmersiveVideoFrame, presentationDescriptor: PresentationDescriptor, drawable: LayerRenderer.Drawable) async
```

## Parameters

`frame`

The `ImmersiveVideoFrame` to render.

`presentationDescriptor`

The presentation descriptor for the commands to process on the frame.

`drawable`

The drawable to render to.

## Discussion

This method is available on visionOS and integrates with the CompositorServices framework to provide
head-tracked stereoscopic rendering. It automatically processes both left and right eye views, applies
device anchor transforms for head tracking.

The rendering operation is asynchronous and completes when the frame has been submitted to the GPU.
Access [`commandBuffer`](/documentation/ImmersiveMediaSupport/ImmersivePreviewRenderer/commandBuffer) after this method returns to retrieve the command buffer for synchronization.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)