---
title: MTL4IndirectInstanceAccelerationStructureDescriptor
framework: metal
role: symbol
role_heading: Class
path: metal/mtl4indirectinstanceaccelerationstructuredescriptor
---

# MTL4IndirectInstanceAccelerationStructureDescriptor

Descriptor for an “indirect” instance acceleration structure that allows providing the instance count and motion transform count indirectly, through buffer references.

## Declaration

```swift
class MTL4IndirectInstanceAccelerationStructureDescriptor
```

## Overview

Overview An instance acceleration structure references other acceleration structures, and provides the ability to “instantiate” them multiple times, each one with potentially a different transformation matrix. You specify the properties of the instances in the acceleration structure this descriptor builds by providing a buffer of structs via its instanceDescriptorBuffer property. Compared to MTL4InstanceAccelerationStructureDescriptor, this descriptor allows you to provide the number of instances it references indirectly through a buffer reference, as well as the number of motion transforms. This enables you to determine these counts indirectly in the GPU timeline via a compute pipeline. Metal needs only to know the maximum possible number of instances and motion transforms to support, which you specify via the maxInstanceCount and maxMotionTransformCount properties. Use a MTLResidencySet to mark residency of all buffers and acceleration structures this descriptor references when you build this acceleration structure.

## Topics

### Instance Properties

- [instanceCountBuffer](metal/mtl4indirectinstanceaccelerationstructuredescriptor/instancecountbuffer.md)
- [instanceDescriptorBuffer](metal/mtl4indirectinstanceaccelerationstructuredescriptor/instancedescriptorbuffer.md)
- [instanceDescriptorStride](metal/mtl4indirectinstanceaccelerationstructuredescriptor/instancedescriptorstride.md)
- [instanceDescriptorType](metal/mtl4indirectinstanceaccelerationstructuredescriptor/instancedescriptortype.md)
- [instanceTransformationMatrixLayout](metal/mtl4indirectinstanceaccelerationstructuredescriptor/instancetransformationmatrixlayout.md)
- [maxInstanceCount](metal/mtl4indirectinstanceaccelerationstructuredescriptor/maxinstancecount.md)
- [maxMotionTransformCount](metal/mtl4indirectinstanceaccelerationstructuredescriptor/maxmotiontransformcount.md)
- [motionTransformBuffer](metal/mtl4indirectinstanceaccelerationstructuredescriptor/motiontransformbuffer.md)
- [motionTransformCountBuffer](metal/mtl4indirectinstanceaccelerationstructuredescriptor/motiontransformcountbuffer.md)
- [motionTransformStride](metal/mtl4indirectinstanceaccelerationstructuredescriptor/motiontransformstride.md)
- [motionTransformType](metal/mtl4indirectinstanceaccelerationstructuredescriptor/motiontransformtype.md)

## Relationships

### Inherits From

- [MTL4AccelerationStructureDescriptor](metal/mtl4accelerationstructuredescriptor.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Instance descriptors

- [MTLAccelerationStructureInstanceDescriptor](metal/mtlaccelerationstructureinstancedescriptor.md)
- [MTLAccelerationStructureUserIDInstanceDescriptor](metal/mtlaccelerationstructureuseridinstancedescriptor.md)
- [MTLAccelerationStructureMotionInstanceDescriptor](metal/mtlaccelerationstructuremotioninstancedescriptor.md)
- [MTLAccelerationStructureInstanceOptions](metal/mtlaccelerationstructureinstanceoptions.md)
- [MTLIndirectInstanceAccelerationStructureDescriptor](metal/mtlindirectinstanceaccelerationstructuredescriptor.md)
- [MTLIndirectAccelerationStructureInstanceDescriptor](metal/mtlindirectaccelerationstructureinstancedescriptor.md)
- [MTLIndirectAccelerationStructureMotionInstanceDescriptor](metal/mtlindirectaccelerationstructuremotioninstancedescriptor.md)
