<!--
{
  "documentType" : "article",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/LowLevelRenderContextStandalone/LowLevelRenderContext-Implementations",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "LowLevelRenderContext Implementations"
}
-->

# LowLevelRenderContext Implementations

## Topics

### Instance Properties

[`var device: any MTLDevice`](/documentation/RealityKit/LowLevelRenderContextStandalone/device)

The Metal device that backs this render context.

### Instance Methods

[`func makeArgumentTable(descriptor: LowLevelArgumentTable.Descriptor, buffers: [LowLevelBufferSlice], textures: [LowLevelTextureResource]) throws -> LowLevelArgumentTable`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeArgumentTable(descriptor:buffers:textures:))

Creates an argument table that binds the provided buffer slices and textures.

[`func makeBufferResource(descriptor: LowLevelBufferResource.Descriptor) throws -> LowLevelBufferResource`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeBufferResource(descriptor:))

Creates a GPU-managed buffer resource from the given descriptor.

[`func makeDefaultGeometryModifier() -> sending LowLevelMaterialResource.GeometryModifier`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeDefaultGeometryModifier())

Returns a pass-through geometry modifier that performs no vertex transformation.

[`func makeGeometryModifier(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeGeometryModifier(descriptor:))

Synchronous variant of [`makeGeometryModifier(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeGeometryModifier(descriptor:)). Blocks the current thread until compilation completes.

[`func makeGeometryModifier(descriptor: LowLevelMaterialResource.GeometryModifier.Descriptor) async throws -> sending LowLevelMaterialResource.GeometryModifier`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeGeometryModifier(descriptor:)-4p20q)

Asynchronously creates a geometry modifier from a user-authored Metal function described
by the given descriptor.

[`func makeGeometryModifier(descriptor: LowLevelMaterialResource.GeometryModifier.Descriptor) throws -> sending LowLevelMaterialResource.GeometryModifier`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeGeometryModifier(descriptor:)-6cl2f)

Synchronous variant of [`makeGeometryModifier(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeGeometryModifier(descriptor:)-6cl2f). Blocks the current thread until compilation completes.

[`func makeInstanceTransformResource(instanceCapacity: Int) throws -> LowLevelInstanceTransformResource`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeInstanceTransformResource(instanceCapacity:))

Creates a transform buffer resource for GPU instancing.

[`func makeMaterialResource(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMaterialResource(descriptor:))

Synchronous variant of [`makeMaterialResource(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMaterialResource(descriptor:)). Blocks the current thread until compilation completes.

[`func makeMaterialResource(descriptor: LowLevelMaterialResource.Descriptor) throws -> sending LowLevelMaterialResource`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMaterialResource(descriptor:)-2qjge)

Synchronous variant of [`makeMaterialResource(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMaterialResource(descriptor:)-2qjge). Blocks the current thread until compilation completes.

[`func makeMaterialResource(descriptor: LowLevelMaterialResource.Descriptor) async throws -> sending LowLevelMaterialResource`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMaterialResource(descriptor:)-8pruc)

Asynchronously compiles a material resource from a geometry modifier, surface shader,
and lighting function.

[`func makeMeshInstance(meshPart: LowLevelMeshPart, pipeline: LowLevelRenderPipelineState, geometryArguments: LowLevelArgumentTable?, surfaceArguments: LowLevelArgumentTable?, lightingArguments: LowLevelArgumentTable?, transform: simd_float4x4, sortCategory: LowLevelMeshInstance.SortCategory) throws -> LowLevelMeshInstance`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMeshInstance(meshPart:pipeline:geometryArguments:surfaceArguments:lightingArguments:transform:sortCategory:))

Creates a drawable mesh instance pairing a mesh part with a compiled pipeline state
and optional per-draw argument tables.

[`func makeMeshInstanceArray(renderTargets: LowLevelRenderTarget.DescriptorSet, count: Int) throws -> LowLevelMeshInstanceArray`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMeshInstanceArray(renderTargets:count:))

Creates a fixed-capacity ordered collection of mesh instances for the given render targets.

[`func makeMeshPart(resource: LowLevelMeshResource, indexOffset: Int, indexCount: Int, primitive: MTLPrimitiveType, windingOrder: MTLWinding, bounds: BoundingSphereBox) throws -> LowLevelMeshPart`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMeshPart(resource:indexOffset:indexCount:primitive:windingOrder:bounds:))

Creates a mesh part that selects a contiguous range of indices from a mesh resource.

[`func makeMeshResource(descriptor: LowLevelMeshResource.Descriptor) throws -> LowLevelMeshResource`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeMeshResource(descriptor:))

Creates a mesh resource from the given descriptor.

[`func makeRenderPipelineState(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeRenderPipelineState(descriptor:))

Synchronous variant of [`makeRenderPipelineState(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeRenderPipelineState(descriptor:)). Blocks the current thread until compilation completes.

[`func makeRenderPipelineState(descriptor: LowLevelRenderPipelineState.Descriptor) throws -> sending LowLevelRenderPipelineState`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeRenderPipelineState(descriptor:)-550yp)

Synchronous variant of [`makeRenderPipelineState(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeRenderPipelineState(descriptor:)-550yp). Blocks the current thread until compilation completes.

[`func makeRenderPipelineState(descriptor: LowLevelRenderPipelineState.Descriptor) async throws -> sending LowLevelRenderPipelineState`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeRenderPipelineState(descriptor:)-9x6v9)

Asynchronously compiles a Metal render pipeline state from the given descriptor.

[`func makeSimpleSurfaceShader(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSimpleSurfaceShader(descriptor:))

Synchronous variant of [`makeSimpleSurfaceShader(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSimpleSurfaceShader(descriptor:)). Blocks the current thread until compilation completes.

[`func makeSimpleSurfaceShader(descriptor: LowLevelMaterialResource.SimpleSurfaceDescriptor) async throws -> sending LowLevelMaterialResource.SurfaceShader`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSimpleSurfaceShader(descriptor:)-3f0mt)

Asynchronously creates a simple surface shader using a built-in tint color or
texture implementation, as described by the given descriptor.

[`func makeSimpleSurfaceShader(descriptor: LowLevelMaterialResource.SimpleSurfaceDescriptor) throws -> sending LowLevelMaterialResource.SurfaceShader`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSimpleSurfaceShader(descriptor:)-6filb)

Synchronous variant of [`makeSimpleSurfaceShader(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSimpleSurfaceShader(descriptor:)-6filb). Blocks the current thread until compilation completes.

[`func makeSurfaceShader(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSurfaceShader(descriptor:))

Synchronous variant of [`makeSurfaceShader(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSurfaceShader(descriptor:)). Blocks the current thread until compilation completes.

[`func makeSurfaceShader(descriptor: LowLevelMaterialResource.SurfaceShader.Descriptor) throws -> sending LowLevelMaterialResource.SurfaceShader`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSurfaceShader(descriptor:)-35raz)

Synchronous variant of [`makeSurfaceShader(descriptor:)`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSurfaceShader(descriptor:)-35raz). Blocks the current thread until compilation completes.

[`func makeSurfaceShader(descriptor: LowLevelMaterialResource.SurfaceShader.Descriptor) async throws -> sending LowLevelMaterialResource.SurfaceShader`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeSurfaceShader(descriptor:)-9hqo9)

Asynchronously creates a custom surface shader from a user-authored Metal function descriptor.

[`func makeTextureResource(descriptor: LowLevelTextureResource.Descriptor) throws -> LowLevelTextureResource`](/documentation/RealityKit/LowLevelRenderContextStandalone/makeTextureResource(descriptor:))

Creates a texture resource from the given descriptor.

[`func waitForCommandBuffer(any MTLCommandBuffer)`](/documentation/RealityKit/LowLevelRenderContextStandalone/waitForCommandBuffer(_:))

Adds a command buffer that the renderer should wait on before using resources for rendering.

---

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)