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

# LowLevelMeshInstance

A single drawable object pairing a mesh part with a compiled pipeline state, optional
per-draw argument tables, a transform, and a sort category.

```
final class LowLevelMeshInstance
```

## Overview

Create a `LowLevelMeshInstance` using
[`makeMeshInstance(meshPart:pipeline:geometryArguments:surfaceArguments:lightingArguments:transform:sortCategory:)`](/documentation/RealityKit/LowLevelRenderContext/makeMeshInstance(meshPart:pipeline:geometryArguments:surfaceArguments:lightingArguments:transform:sortCategory:)).

Transform, bounds, sort category, and triangle fill mode can be updated after creation; the
renderer picks up changes automatically before the next `render(using:_:)` call.

To draw multiple copies of the mesh in a single draw call, assign a
[`LowLevelInstanceTransformResource`](/documentation/RealityKit/LowLevelInstanceTransformResource) via [`setInstanceTransforms(_:)`](/documentation/RealityKit/LowLevelMeshInstance/setInstanceTransforms(_:)).

## Topics

### Configuring the geometry and pipeline

[`var meshPart: LowLevelMeshPart`](/documentation/RealityKit/LowLevelMeshInstance/meshPart)

The mesh part this instance draws.

[`var pipeline: LowLevelRenderPipelineState`](/documentation/RealityKit/LowLevelMeshInstance/pipeline)

The compiled pipeline state used to render this instance.

### Positioning instances

[`var instanceTransforms: LowLevelInstanceTransformResource?`](/documentation/RealityKit/LowLevelMeshInstance/instanceTransforms)

The transform buffer for GPU instancing, or `nil` for single-instance rendering.

[`func setInstanceTransforms(LowLevelInstanceTransformResource?) throws(LowLevelRenderContextError)`](/documentation/RealityKit/LowLevelMeshInstance/setInstanceTransforms(_:))

Assigns or clears the transform buffer for GPU instancing.

### Providing shader arguments

[`var surfaceArguments: LowLevelArgumentTable?`](/documentation/RealityKit/LowLevelMeshInstance/surfaceArguments)

The optional argument table for the surface shader stage.

[`var geometryArguments: LowLevelArgumentTable?`](/documentation/RealityKit/LowLevelMeshInstance/geometryArguments)

The optional argument table for the geometry modifier stage.

[`var lightingArguments: LowLevelArgumentTable?`](/documentation/RealityKit/LowLevelMeshInstance/lightingArguments)

The optional argument table for the lighting function stage.

### Sorting instances

[`var sortCategory: LowLevelMeshInstance.SortCategory`](/documentation/RealityKit/LowLevelMeshInstance/sortCategory-swift.property)

The sort category of this mesh instance.

[`enum SortCategory`](/documentation/RealityKit/LowLevelMeshInstance/SortCategory-swift.enum)

The sort category of this mesh instance.

### Instance Properties

[`var bounds: BoundingSphereBox?`](/documentation/RealityKit/LowLevelMeshInstance/bounds)

The bounds of this mesh instance, in model space, or `nil` to derive bounds from the mesh part.

[`var transform: simd_float4x4`](/documentation/RealityKit/LowLevelMeshInstance/transform)

The local-to-world transform applied to this mesh instance.

[`var triangleFillMode: MTLTriangleFillMode`](/documentation/RealityKit/LowLevelMeshInstance/triangleFillMode)

The fill mode used when rasterizing this mesh instance’s triangles.

---

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)