---
title: MTLVertexFormat
framework: metal
role: symbol
role_heading: Enumeration
path: metal/mtlvertexformat
---

# MTLVertexFormat

The vertex data format options for render pipelines.

## Declaration

```swift
enum MTLVertexFormat
```

## Overview

Overview Set the format property of MTLVertexAttributeDescriptor to one of these format values. The format configures how Metal interprets the vertex data in memory for the corresponding argument in your vertex shader. Choose a format that matches the type and component count the shader expects. Normalized integer formats Normalized signed integer formats have Normalized in the name and signed types like MTLVertexFormat.char or MTLVertexFormat.short. For these formats, values in the range [-1.0, 1.0] map to [MIN_INT, MAX_INT], where MIN_INT is the most negative integer and MAX_INT is the most positive integer for the number of bits in the storage size. Positive values and zero distribute uniformly in the range [0.0, 1.0], and negative integer values greater than (MIN_INT + 1) distribute uniformly in the range (-1.0, 0.0). important: For normalized signed integer formats, the values MIN_INT and (MIN_INT + 1) both map to -1.0. Normalized unsigned integer formats have Normalized in the name and unsigned types like MTLVertexFormat.uchar or MTLVertexFormat.ushort. For these formats, values in the range [0.0, 1.0] map to [0, MAX_UINT], where MAX_UINT is the largest unsigned integer for the number of bits in the storage size. Metal stores data in little-endian byte order, with the least-significant byte at the lowest memory address. Formats with multibyte components also store each component in little-endian byte order.

## Topics

### 32-bit floating-point formats

- [MTLVertexFormat.float](metal/mtlvertexformat/float.md)
- [MTLVertexFormat.float2](metal/mtlvertexformat/float2.md)
- [MTLVertexFormat.float3](metal/mtlvertexformat/float3.md)
- [MTLVertexFormat.float4](metal/mtlvertexformat/float4.md)
- [MTLVertexFormat.floatRG11B10](metal/mtlvertexformat/floatrg11b10.md)
- [MTLVertexFormat.floatRGB9E5](metal/mtlvertexformat/floatrgb9e5.md)

### 32-bit integer formats

- [MTLVertexFormat.int](metal/mtlvertexformat/int.md)
- [MTLVertexFormat.int2](metal/mtlvertexformat/int2.md)
- [MTLVertexFormat.int3](metal/mtlvertexformat/int3.md)
- [MTLVertexFormat.int4](metal/mtlvertexformat/int4.md)
- [MTLVertexFormat.uint](metal/mtlvertexformat/uint.md)
- [MTLVertexFormat.uint2](metal/mtlvertexformat/uint2.md)
- [MTLVertexFormat.uint3](metal/mtlvertexformat/uint3.md)
- [MTLVertexFormat.uint4](metal/mtlvertexformat/uint4.md)

### 32-bit normalized integer formats

- [MTLVertexFormat.int1010102Normalized](metal/mtlvertexformat/int1010102normalized.md)
- [MTLVertexFormat.uint1010102Normalized](metal/mtlvertexformat/uint1010102normalized.md)
- [MTLVertexFormat.uchar4Normalized_bgra](metal/mtlvertexformat/uchar4normalized_bgra.md)

### 16-bit floating-point formats

- [MTLVertexFormat.half](metal/mtlvertexformat/half.md)
- [MTLVertexFormat.half2](metal/mtlvertexformat/half2.md)
- [MTLVertexFormat.half3](metal/mtlvertexformat/half3.md)
- [MTLVertexFormat.half4](metal/mtlvertexformat/half4.md)

### 16-bit integer formats

- [MTLVertexFormat.short](metal/mtlvertexformat/short.md)
- [MTLVertexFormat.short2](metal/mtlvertexformat/short2.md)
- [MTLVertexFormat.short3](metal/mtlvertexformat/short3.md)
- [MTLVertexFormat.short4](metal/mtlvertexformat/short4.md)
- [MTLVertexFormat.ushort](metal/mtlvertexformat/ushort.md)
- [MTLVertexFormat.ushort2](metal/mtlvertexformat/ushort2.md)
- [MTLVertexFormat.ushort3](metal/mtlvertexformat/ushort3.md)
- [MTLVertexFormat.ushort4](metal/mtlvertexformat/ushort4.md)

### 16-bit normalized integer formats

- [MTLVertexFormat.shortNormalized](metal/mtlvertexformat/shortnormalized.md)
- [MTLVertexFormat.short2Normalized](metal/mtlvertexformat/short2normalized.md)
- [MTLVertexFormat.short3Normalized](metal/mtlvertexformat/short3normalized.md)
- [MTLVertexFormat.short4Normalized](metal/mtlvertexformat/short4normalized.md)
- [MTLVertexFormat.ushortNormalized](metal/mtlvertexformat/ushortnormalized.md)
- [MTLVertexFormat.ushort2Normalized](metal/mtlvertexformat/ushort2normalized.md)
- [MTLVertexFormat.ushort3Normalized](metal/mtlvertexformat/ushort3normalized.md)
- [MTLVertexFormat.ushort4Normalized](metal/mtlvertexformat/ushort4normalized.md)

### 8-bit integer formats

- [MTLVertexFormat.char](metal/mtlvertexformat/char.md)
- [MTLVertexFormat.char2](metal/mtlvertexformat/char2.md)
- [MTLVertexFormat.char3](metal/mtlvertexformat/char3.md)
- [MTLVertexFormat.char4](metal/mtlvertexformat/char4.md)
- [MTLVertexFormat.uchar](metal/mtlvertexformat/uchar.md)
- [MTLVertexFormat.uchar2](metal/mtlvertexformat/uchar2.md)
- [MTLVertexFormat.uchar3](metal/mtlvertexformat/uchar3.md)
- [MTLVertexFormat.uchar4](metal/mtlvertexformat/uchar4.md)

### 8-bit normalized integer formats

- [MTLVertexFormat.charNormalized](metal/mtlvertexformat/charnormalized.md)
- [MTLVertexFormat.char2Normalized](metal/mtlvertexformat/char2normalized.md)
- [MTLVertexFormat.char3Normalized](metal/mtlvertexformat/char3normalized.md)
- [MTLVertexFormat.char4Normalized](metal/mtlvertexformat/char4normalized.md)
- [MTLVertexFormat.ucharNormalized](metal/mtlvertexformat/ucharnormalized.md)
- [MTLVertexFormat.uchar2Normalized](metal/mtlvertexformat/uchar2normalized.md)
- [MTLVertexFormat.uchar3Normalized](metal/mtlvertexformat/uchar3normalized.md)
- [MTLVertexFormat.uchar4Normalized](metal/mtlvertexformat/uchar4normalized.md)

### Sentinel values

- [MTLVertexFormat.invalid](metal/mtlvertexformat/invalid.md)

### Swift support

- [init(rawValue:)](metal/mtlvertexformat/init(rawvalue:).md)

## Relationships

### Conforms To

- [BitwiseCopyable](swift/bitwisecopyable.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [RawRepresentable](swift/rawrepresentable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Organizing the vertex attribute

- [format](metal/mtlvertexattributedescriptor/format.md)
- [offset](metal/mtlvertexattributedescriptor/offset.md)
- [bufferIndex](metal/mtlvertexattributedescriptor/bufferindex.md)
