<!--
{
  "availability" : [
    "macOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ImmersiveMediaSupport",
  "identifier" : "/documentation/ImmersiveMediaSupport/ImmersivePreviewRenderer/process(_:for:rotation:fieldOfView:presentationDescriptor:renderTexture:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Immersive Media Support"
    ],
    "preciseIdentifier" : "s:21ImmersiveMediaSupport0A15PreviewRendererC7process_3for8rotation11fieldOfView22presentationDescriptor13renderTextureyAA0A10VideoFrameV_AC3EyeOSo12SPRotation3DaSfAA012PresentationM0VSo10MTLTexture_ptYaF"
  },
  "title" : "process(_:for:rotation:fieldOfView:presentationDescriptor:renderTexture:)"
}
-->

# process(_:for:rotation:fieldOfView:presentationDescriptor:renderTexture:)

Performs the rendering of an immersive video frame.

```
@MainActor func process(_ frame: ImmersiveVideoFrame, for eye: ImmersivePreviewRenderer.Eye = .left, rotation: Rotation3D = .identity, fieldOfView: Float = 90, presentationDescriptor: PresentationDescriptor, renderTexture: any MTLTexture) async
```

## Parameters

`frame`

The `ImmersiveVideoFrame` to render.

`eye`

The eye of the user.

`rotation`

The rotation to apply to the `ImmersiveVideoFrame`.

`fieldOfView`

The field of view to be used when processing frame.

`presentationDescriptor`

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

`renderTexture`

The texture to render to.

## Discussion

This method is available on macOS and provides manual control over camera pose and projection parameters.
It updates the camera pose based on the provided rotation, configures the projection matrix using the
specified field of view, and processes presentation commands to determine the active camera and rendering
parameters.

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)