<!--
{
  "documentType" : "article",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/mesh-and-object-shader-resource-preparation-commands",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Mesh and object shader resource preparation commands"
}
-->

# Mesh and object shader resource preparation commands

Assign resources to mesh and object shaders, including buffers, textures, acceleration structures, sampler states, and function tables.

## Discussion

Mesh shaders share argument tables for each resource type, such as buffers, textures, and sampler states.
Object shaders share their own separate argument tables, distinct from mesh shaders and other shader types.

## Topics

### Assigning buffers for object shaders

[`func setObjectBuffer((any MTLBuffer)?, offset: Int, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectBuffer(_:offset:index:))

Assigns a buffer to an entry in the object shader argument table.

[`func setObjectBuffers([(any MTLBuffer)?], offsets: [Int], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectBuffers(_:offsets:range:))

Assigns multiple buffers to a range of entries in the object shader argument table.

[`- (void) setObjectBuffers:(id<MTLBuffer> const[]) buffers offsets:(const NSUInteger[]) offsets withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setObjectBuffers:offsets:withRange:)

Encodes a command that assigns multiple buffers to a range of entries in the object shader argument table.

[`func setObjectBytes(UnsafeRawPointer, length: Int, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectBytes(_:length:index:))

Creates a buffer from bytes and assigns it to an entry in the object shader argument table.

[`func setObjectBufferOffset(Int, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectBufferOffset(_:index:))

Updates an entry in the object shader argument table with a new location within the entry’s current buffer.

### Assigning textures for object shaders

[`func setObjectTexture((any MTLTexture)?, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectTexture(_:index:))

Assigns a texture to an entry in the object shader argument table.

[`func setObjectTextures([(any MTLTexture)?], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectTextures(_:range:))

Assigns multiple textures to a range of entries in the object shader argument table.

[`- (void) setObjectTextures:(id<MTLTexture> const[]) textures withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setObjectTextures:withRange:)

Assigns multiple textures to a range of entries in the object shader argument table.

### Assigning sampler states for object shaders

[`func setObjectSamplerState((any MTLSamplerState)?, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectSamplerState(_:index:))

Assigns a sampler state to an entry in the object shader argument table.

[`func setObjectSamplerState((any MTLSamplerState)?, lodMinClamp: Float, lodMaxClamp: Float, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectSamplerState(_:lodMinClamp:lodMaxClamp:index:))

Assigns a sampler state and clamp values to an entry in the object shader argument table.

[`func setObjectSamplerStates([(any MTLSamplerState)?], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectSamplerStates(_:range:))

Assigns multiple sampler states to a range of entries in the object shader argument table.

[`func setObjectSamplerStates([(any MTLSamplerState)?], lodMinClamps: [Float], lodMaxClamps: [Float], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setObjectSamplerStates(_:lodMinClamps:lodMaxClamps:range:))

Assigns multiple sampler states and clamp values to a range of entries in the object shader argument table.

[`- (void) setObjectSamplerStates:(id<MTLSamplerState> const[]) samplers withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setObjectSamplerStates:withRange:)

Assigns multiple sampler states to a range of entries in the object shader argument table.

[`- (void) setObjectSamplerStates:(id<MTLSamplerState> const[]) samplers lodMinClamps:(const float[]) lodMinClamps lodMaxClamps:(const float[]) lodMaxClamps withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange:)

Assigns multiple sampler states and clamp values to a range of entries in the object shader argument table.

### Assigning buffers for mesh shaders

[`func setMeshBuffer((any MTLBuffer)?, offset: Int, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshBuffer(_:offset:index:))

Assigns a buffer to an entry in the mesh shader argument table.

[`func setMeshBuffers([(any MTLBuffer)?], offsets: [Int], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshBuffers(_:offsets:range:))

Assigns multiple buffers to a range of entries in the mesh shader argument table.

[`- (void) setMeshBuffers:(id<MTLBuffer> const[]) buffers offsets:(const NSUInteger[]) offsets withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setMeshBuffers:offsets:withRange:)

Assigns multiple buffers to a range of entries in the mesh shader argument table.

[`func setMeshBytes(UnsafeRawPointer, length: Int, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshBytes(_:length:index:))

Creates a buffer from bytes and assigns it to an entry in the mesh shader argument table.

[`func setMeshBufferOffset(Int, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshBufferOffset(_:index:))

Updates an entry in the mesh shader argument table with a new location within the entry’s current buffer.

### Assigning textures for mesh shaders

[`func setMeshTexture((any MTLTexture)?, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshTexture(_:index:))

Assigns a texture to an entry in the mesh shader argument table.

[`func setMeshTextures([(any MTLTexture)?], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshTextures(_:range:))

Assigns multiple textures to a range of entries in the mesh shader argument table.

[`- (void) setMeshTextures:(id<MTLTexture> const[]) textures withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setMeshTextures:withRange:)

Assigns multiple textures to a range of entries in the mesh shader argument table.

### Assigning sampler states for mesh shaders

[`func setMeshSamplerState((any MTLSamplerState)?, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshSamplerState(_:index:))

Assigns a sampler state to an entry in the mesh shader argument table.

[`func setMeshSamplerState((any MTLSamplerState)?, lodMinClamp: Float, lodMaxClamp: Float, index: Int)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshSamplerState(_:lodMinClamp:lodMaxClamp:index:))

Assigns a sampler state and clamp values to an entry in the mesh shader argument table.

[`func setMeshSamplerStates([(any MTLSamplerState)?], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshSamplerStates(_:range:))

Assigns multiple sampler states to a range of entries in the mesh shader argument table.

[`func setMeshSamplerStates([(any MTLSamplerState)?], lodMinClamps: [Float], lodMaxClamps: [Float], range: Range<Int>)`](/documentation/Metal/MTLRenderCommandEncoder/setMeshSamplerStates(_:lodMinClamps:lodMaxClamps:range:))

Assigns multiple sampler states and clamp values to a range of entries in the mesh shader argument table.

[`- (void) setMeshSamplerStates:(id<MTLSamplerState> const[]) samplers withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setMeshSamplerStates:withRange:)

Assigns multiple sampler states to a range of entries in the mesh shader argument table.

[`- (void) setMeshSamplerStates:(id<MTLSamplerState> const[]) samplers lodMinClamps:(const float[]) lodMinClamps lodMaxClamps:(const float[]) lodMaxClamps withRange:(NSRange) range;`](/documentation/Metal/MTLRenderCommandEncoder/setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange:)

Assigns multiple sampler states and clamp values to a range of entries in the mesh shader argument table.



---

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)