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

# LowLevelMaterialResource.SimpleSurfaceDescriptor

The configuration for a built-in surface shader that applies a tint color, a texture, or both.

```
struct SimpleSurfaceDescriptor
```

## Overview

Pass a `SimpleSurfaceDescriptor` to
[`makeSimpleSurfaceShader(descriptor:)`](/documentation/RealityKit/LowLevelRenderContext/makeSimpleSurfaceShader(descriptor:)-74vhb) to compile the
corresponding [`LowLevelMaterialResource.SurfaceShader`](/documentation/RealityKit/LowLevelMaterialResource/SurfaceShader) function.

The compiled function’s argument table contains the buffer and texture requirements for the
function. Resolve the parameter mappings using the function’s [`LowLevelMaterialParameterMapping`](/documentation/RealityKit/LowLevelMaterialParameterMapping).

## Topics

### Creating a surface descriptor

[`init(useTintColor: Bool, useTexture: Bool, outputChannel: LowLevelMaterialResource.SimpleSurfaceDescriptor.OutputChannel, outputOpacity: Bool)`](/documentation/RealityKit/LowLevelMaterialResource/SimpleSurfaceDescriptor/init(useTintColor:useTexture:outputChannel:outputOpacity:))

Creates a descriptor for the specified combination of inputs and outputs.

### Configuring color sources

[`var useTintColor: Bool`](/documentation/RealityKit/LowLevelMaterialResource/SimpleSurfaceDescriptor/useTintColor)

A Boolean value that indicates whether the shader reads a tint color from the
argument table and multiplies it with the surface output.

[`var useTexture: Bool`](/documentation/RealityKit/LowLevelMaterialResource/SimpleSurfaceDescriptor/useTexture)

A Boolean value that indicates whether the shader samples a texture from the
argument table and multiplies it with the surface output.

### Configuring the output

[`var outputChannel: LowLevelMaterialResource.SimpleSurfaceDescriptor.OutputChannel`](/documentation/RealityKit/LowLevelMaterialResource/SimpleSurfaceDescriptor/outputChannel-swift.property)

The surface output channel the shader writes to.

[`enum OutputChannel`](/documentation/RealityKit/LowLevelMaterialResource/SimpleSurfaceDescriptor/OutputChannel-swift.enum)

The output channel that the simple surface shader writes to.

[`var outputOpacity: Bool`](/documentation/RealityKit/LowLevelMaterialResource/SimpleSurfaceDescriptor/outputOpacity)

A Boolean value that indicates whether the shader also writes the computed alpha to
the surface opacity output.

## Relationships

### Conforms To

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

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

---

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)