<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -",
    "macCatalyst: 17.0.0 -",
    "macOS: 14.0.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ShaderGraph-Docs",
  "identifier" : "/documentation/ShaderGraph/realitykit/Geometry-Modifier-(RealityKit)",
  "metadataVersion" : "0.1.0",
  "role" : "ShaderGraph Node",
  "symbol" : {
    "kind" : "ShaderGraph Node",
    "modules" : [
      "ShaderGraph"
    ],
    "preciseIdentifier" : "Shader_ND_realitykit_geometrymodifier_2_0_vertexshader"
  },
  "title" : "Geometry Modifier (RealityKit)"
}
-->

# Geometry Modifier (RealityKit)

A function that manipulates the location of a model’s vertices, run once per vertex.

## Parameter Types

|Input                  |Type         |
        |-----------------------|-------------|
        |`Model Position Offset`|Vector3f     |
        |`Color`                |Color4<Float>|
        |`Normal`               |Vector3f     |
        |`Bitangent`            |Vector3f     |
        |`Uv0`                  |Vector2f     |
        |`Uv1`                  |Vector2f     |
        |`Uv2`                  |Vector4f     |
        |`Uv3`                  |Vector4f     |
        |`Uv4`                  |Vector4f     |
        |`Uv5`                  |Vector4f     |
        |`Uv6`                  |Vector4f     |
        |`Uv7`                  |Vector4f     |

|Output|Type |
        |------|-----|
        |`Out` |Token|

## Parameter descriptions

- `Model Position Offset`: The offset to each vertices model position.
- `Color`: The color of each vertex.
- `Normal`: The normal vector for each vertex.
- `Bitangent`: The bitangent vector for each vertex.
- `Uv0`: A set of texture coordinates for each vertex.
- `Uv1`: A set of texture coordinates for each vertex.
- `User Attribute`: A user-defined attribute to apply to each vertex of the object.
- `User Attribute Half4 0`: A user-defined attribute the node attaches to each vertex of the object.
- `User Attribute Half4 1`: A user-defined attribute the node attaches to each vertex of the object.
- `User Attribute Half4 2`: A user-defined attribute the node attaches to each vertex of the object.
- `User Attribute Half4 3`: A user-defined attribute the node attaches to each vertex of the object.
- `User Attribute Half2 0`: A user-defined attribute the node attaches to each vertex of the object.
- `User Attribute Half2 1`: A user-defined attribute the node attaches to each vertex of the object.

# Discussion

The Geometry Modifier node can be used to cause a material to affect the geometry of any object to which it’s applied, in addition to the objects texture. Connect the output of the Geometry modifier node to the `Custom Geometry Modifier` output of your material.
Below is an example of a simple node graph that uses the Geometry Modifier node to alter the *Y* model positions of vertices.

![](images/ShaderGraph-Docs/GeometryModifierGraph.png)

Use the Noise 2D node to procedurally generate an amount to offset the *Y* position of each vertex. You can also use the noise to add shadows to the texture in order to show the change in model position more clearly.
Below, the resulting material applies to a plane.



![](images/ShaderGraph-Docs/GeometryModifierMaterial1.png)



![](images/ShaderGraph-Docs/GeometryModifierMaterial2~dark.png)

---

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)