<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.4.0 -",
    "macOS: 10.15.4 -",
    "tvOS: 16.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/MTLRasterizationRateMapDescriptor",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Metal"
    ],
    "preciseIdentifier" : "c:objc(cs)MTLRasterizationRateMapDescriptor"
  },
  "title" : "MTLRasterizationRateMapDescriptor"
}
-->

# MTLRasterizationRateMapDescriptor

An object that you use to configure new rasterization rate maps.

```
class MTLRasterizationRateMapDescriptor
```

## Overview

To create a new rate map, first create an
[`MTLRasterizationRateMapDescriptor`](/documentation/Metal/MTLRasterizationRateMapDescriptor) instance and set its property values.
Then, create a new rasterization rate-map by calling an [`MTLDevice`](/documentation/Metal/MTLDevice) instance’s  [`makeRasterizationRateMap(descriptor:)`](/documentation/Metal/MTLDevice/makeRasterizationRateMap(descriptor:)) method.

When creating a rate map, Metal copies into it property values from the descriptor.
You can reuse a descrptor by modifying its property values,
which doesn’t affect the other rate-map instances that already exist.

## Topics

### Creating rate map descriptors

[`init(screenSize:label:)`](/documentation/Metal/MTLRasterizationRateMapDescriptor/init(screenSize:label:))

A convenience initializer that creates a rate map descriptor with a given size and identifier.

[`init(screenSize:layer:label:)`](/documentation/Metal/MTLRasterizationRateMapDescriptor/init(screenSize:layer:label:))

A convenience initializer that creates a rate map descriptor with a single rate layer.

[`init(screenSize:layers:label:)`](/documentation/Metal/MTLRasterizationRateMapDescriptor/init(screenSize:layers:label:))

A convenience initializer that creates a rate map descriptor with a set of layer descriptors.

[`+  rasterizationRateMapDescriptorWithScreenSize:`](/documentation/Metal/MTLRasterizationRateMapDescriptor/rasterizationRateMapDescriptorWithScreenSize:)

Creates a rate map descriptor with a given size and identifier.

[`+  rasterizationRateMapDescriptorWithScreenSize:layer:`](/documentation/Metal/MTLRasterizationRateMapDescriptor/rasterizationRateMapDescriptorWithScreenSize:layer:)

Creates a rate map descriptor with a single rate layer.

[`+  rasterizationRateMapDescriptorWithScreenSize:layerCount:layers:`](/documentation/Metal/MTLRasterizationRateMapDescriptor/rasterizationRateMapDescriptorWithScreenSize:layerCount:layers:)

Creates a rate map descriptor with a set of layer descriptors.

### Identifying the rate map

[`label`](/documentation/Metal/MTLRasterizationRateMapDescriptor/label)

A string used to identify the rate map you create with the descriptor.

### Configuring the viewport size

[`screenSize`](/documentation/Metal/MTLRasterizationRateMapDescriptor/screenSize)

The size of the viewport coordinate system, in logical pixels.

### Configuring the rate map layers

[`layerCount`](/documentation/Metal/MTLRasterizationRateMapDescriptor/layerCount)

The number of layers in the rate map.

[`-  layerAtIndex:`](/documentation/Metal/MTLRasterizationRateMapDescriptor/layer(at:))

Returns the layer description for a layer in the rate map.

[`-  setLayer:atIndex:`](/documentation/Metal/MTLRasterizationRateMapDescriptor/setLayer(_:at:))

Sets a configuration for a layer rate map.

[`layers`](/documentation/Metal/MTLRasterizationRateMapDescriptor/layers)

The rasterization rates for one or more layers in the rate map.

[`MTLRasterizationRateLayerArray`](/documentation/Metal/MTLRasterizationRateLayerArray)

Descriptions for the rasterization rates to apply to the set of layers in a rate map.

## Relationships

### Conforms To

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

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

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

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

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

[`NSCopying`](/documentation/Foundation/NSCopying)

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

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)