<!--
{
  "documentType" : "article",
  "framework" : "ModelIO",
  "identifier" : "/documentation/ModelIO/vertex-attributes",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Vertex Attributes"
}
-->

# Vertex Attributes

Names that identify semantic uses for vertex attribute data, used by the [`name`](/documentation/ModelIO/MDLVertexAttribute/name) property.

## Discussion

Model I/O  automatically uses these names to identify vertex attribute data loaded from an asset when the asset does not already use its own custom names for vertex attributes.

Some mesh operations require that an attribute with a specific name be present in the mesh. For example, the [`addNormals(withAttributeNamed:creaseThreshold:)`](/documentation/ModelIO/MDLMesh/addNormals(withAttributeNamed:creaseThreshold:)) method requires an attribute with the name [`MDLVertexAttributePosition`](/documentation/ModelIO/MDLVertexAttributePosition).

## Topics

### Constants

[`let MDLVertexAttributeAnisotropy: String`](/documentation/ModelIO/MDLVertexAttributeAnisotropy)

The attribute data describes the degree to which a surface’s appearance changes in appearance when rotated about its normal vector.

[`let MDLVertexAttributeBinormal: String`](/documentation/ModelIO/MDLVertexAttributeBinormal)

The attribute data describes surface binormal vectors.

[`let MDLVertexAttributeBitangent: String`](/documentation/ModelIO/MDLVertexAttributeBitangent)

The attribute data describes surface bitangent vectors.

[`let MDLVertexAttributeColor: String`](/documentation/ModelIO/MDLVertexAttributeColor)

The attribute data describes vertex colors.

[`let MDLVertexAttributeEdgeCrease: String`](/documentation/ModelIO/MDLVertexAttributeEdgeCrease)

The attribute data describes edges that should be left unmodified by surface subdivision operations.

[`let MDLVertexAttributeJointIndices: String`](/documentation/ModelIO/MDLVertexAttributeJointIndices)

The attribute data describes the indices of bones or joints in a skeletal animation rig.

[`let MDLVertexAttributeJointWeights: String`](/documentation/ModelIO/MDLVertexAttributeJointWeights)

The attribute data describes the influence factors of bones or joints on a vertex’s position for use in skeletal animation.

[`let MDLVertexAttributeNormal: String`](/documentation/ModelIO/MDLVertexAttributeNormal)

The attribute data describes surface normal vectors.

[`let MDLVertexAttributeOcclusionValue: String`](/documentation/ModelIO/MDLVertexAttributeOcclusionValue)

The attribute data describes per-vertex ambient occlusion values.

[`let MDLVertexAttributePosition: String`](/documentation/ModelIO/MDLVertexAttributePosition)

The attribute data describes vertex positions.

[`let MDLVertexAttributeShadingBasisU: String`](/documentation/ModelIO/MDLVertexAttributeShadingBasisU)

The attribute data describes the U component of a vector basis for use in shading.

[`let MDLVertexAttributeShadingBasisV: String`](/documentation/ModelIO/MDLVertexAttributeShadingBasisV)

The attribute data describes the V component of a vector basis for use in shading.

[`let MDLVertexAttributeSubdivisionStencil: String`](/documentation/ModelIO/MDLVertexAttributeSubdivisionStencil)

The attribute data describes which neighboring vertices influence the effect of surface subdivision on the area around a vertex.

[`let MDLVertexAttributeTangent: String`](/documentation/ModelIO/MDLVertexAttributeTangent)

The attribute data describes surface tangent vectors.

[`let MDLVertexAttributeTextureCoordinate: String`](/documentation/ModelIO/MDLVertexAttributeTextureCoordinate)

The attribute data describes texture coordinates.



---

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)