<!--
{
  "availability" : [
    "Reality Composer Pro: -",
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ComputeGraph",
  "identifier" : "/documentation/ComputeGraph/ComputeNodeGraph/Assembly",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Compute Graph",
      "ComputeGraph"
    ],
    "preciseIdentifier" : "s:12ComputeGraph0a4NodeB0V8AssemblyV"
  },
  "title" : "ComputeNodeGraph.Assembly"
}
-->

# ComputeNodeGraph.Assembly

Fully assembled configuration of compute graph nodes.

```
struct Assembly
```

## Overview

You can create an assembly from a ComputeNodeGraph to obtain the layout
of all buffers and uniforms needed by the graph.

Unless you need the layout before or without compiling the shaders, you
can compile [`ComputeNodeGraph.Pipelines`](/documentation/ComputeGraph/ComputeNodeGraph/Pipelines) directly from a [`ComputeNodeGraph`](/documentation/ComputeGraph/ComputeNodeGraph).

## Topics

### Structures

[`struct BufferBinding`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/BufferBinding)

Describes how a Metal buffer is bound to a compute pipeline stage.

[`struct TextureBinding`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/TextureBinding)

Describes how a Metal texture is bound to a compute pipeline stage.

[`struct UniformBinding`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/UniformBinding)

Describes how a uniform value is located within the graph’s uniform buffer.

### Initializers

[`init(ComputeNodeGraph) throws`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/init(_:))

### Instance Properties

[`var constantBuffers: [ComputeNodeGraph.Assembly.BufferBinding]`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/constantBuffers)

[`var deviceBuffers: [ComputeNodeGraph.Assembly.BufferBinding]`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/deviceBuffers)

[`var namedUniforms: [String : ComputeNodeGraph.Assembly.UniformBinding]`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/namedUniforms)

Uniforms that are named and exposed as parameters of this graph, keyed by name.

[`var sharedUniforms: [String : ComputeNodeGraph.Assembly.UniformBinding]`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/sharedUniforms)

Uniforms that are shared across multiple graphs, keyed by typeName.

[`var textures: [ComputeNodeGraph.Assembly.TextureBinding]`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/textures)

[`var uniformBufferSize: Int`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/uniformBufferSize)

[`var uniforms: [ComputeNodeGraph.Port.Address : ComputeNodeGraph.Assembly.Location]`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/uniforms)

### Enumerations

[`enum Attachment`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/Attachment)

Identifies where a resource is attached in the compute graph.

[`enum Location`](/documentation/ComputeGraph/ComputeNodeGraph/Assembly/Location)

## Relationships

### Conforms To

[`Sendable`](/documentation/Swift/Sendable)

[`Equatable`](/documentation/Swift/Equatable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

---

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)