<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/LowLevelRenderer/RenderState",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:19RealityCoreRenderer08LowLevelC0C11RenderStateV"
  },
  "title" : "LowLevelRenderer.RenderState"
}
-->

# LowLevelRenderer.RenderState

The per-frame render state passed to the `render(using:_:)` callback.

```
struct RenderState
```

## Overview

`RenderState` is non-copyable and non-escapable; it is only valid for the duration
of the `render(using:_:)` callback. Use its methods to encode individual draw calls,
or access `encoder` to issue custom Metal commands between draws.

## Topics

### Accessing the encoder

[`var encoder: any MTLRenderCommandEncoder`](/documentation/RealityKit/LowLevelRenderer/RenderState/encoder)

The underlying Metal render command encoder for this render pass.

### Rendering mesh instances

[`func render(meshInstancesArrayIndex: Int, meshInstanceIndex: Int)`](/documentation/RealityKit/LowLevelRenderer/RenderState/render(meshInstancesArrayIndex:meshInstanceIndex:))

Encodes a draw call for a single mesh instance.

[`func render(meshInstancesArrayIndex: Int, range: Range<Int>)`](/documentation/RealityKit/LowLevelRenderer/RenderState/render(meshInstancesArrayIndex:range:))

Encodes draw calls for a contiguous range of mesh instances.

[`func reset()`](/documentation/RealityKit/LowLevelRenderer/RenderState/reset())

Resets the render encoder state to renderer defaults.



---

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)