<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ShaderGraph-Docs",
  "identifier" : "/documentation/ShaderGraph/realitykit/Hair-Surface-(RealityKit)",
  "metadataVersion" : "0.1.0",
  "role" : "ShaderGraph Node",
  "symbol" : {
    "kind" : "ShaderGraph Node",
    "modules" : [
      "ShaderGraph"
    ],
    "preciseIdentifier" : "Shader_ND_realitykit_hair_surfaceshader"
  },
  "title" : "Hair Surface (RealityKit)"
}
-->

# Hair Surface (RealityKit)

A surface shader that defines properties for a RealityKit Hair material.

## Parameter Types

|Input                     |Type         |
        |--------------------------|-------------|
        |`Base Color`              |Color3<Float>|
        |`Opacity`                 |Float        |
        |`Opacity Threshold`       |Float        |
        |`Ambient Occlusion`       |Float        |
        |`Normal`                  |Vector3f     |
        |`Tangent`                 |Vector3f     |
        |`Primary Specular Color`  |Color3<Float>|
        |`Primary Specular`        |Float        |
        |`Primary Roughness`       |Float        |
        |`Primary Shift`           |Float        |
        |`Secondary Specular Color`|Color3<Float>|
        |`Secondary Specular`      |Float        |
        |`Secondary Roughness`     |Float        |
        |`Secondary Shift`         |Float        |
        |`Backlit Color`           |Color3<Float>|
        |`Backlit Power`           |Float        |
        |`Backlit Scale`           |Float        |
        |`Shadow Density`          |Float        |
        |`Has Premultiplied Alpha` |Bool         |

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

## Discussion

The Hair Surface node produces a custom surface based on its input parameters. Connect the output of the Hair Surface node to the `Custom Surface` output of your material.

## Parameter descriptions

- `Base Color`: The base display color of the surface. The color of an object under pure white light.
- `Opacity`: The level of opaqueness of the surface. If the value of this parameter is `1.0`, the surface is fully opaque. If the value is less than `1.0`, the surface appears translucent. If the value is `0.0`, the surface is completely transparent. The default value is `1.0`.
- `Opacity Threshold`: The threshold for whether a portion of the surface renders based on its opacity level. A value of `0.0` means that no additional masking occurs. If the value is greater than `0.0`, the node renders only areas of the surface with an `Opacity` value greater than the value of this parameter. This parameter can be enabled or disabled. This parameter can be on or off; the default is off.
- `Ambient Occlusion`: The degree of ambient lighting that the surface receives. This value simulates soft shadows and subtle shading. The default value is `1.0`.
- `Normal`: The normal vector in tangent space. For hair, use a normal that points outward from the hair volume. The default value is `(0,0,1)`.
- `Tangent`: The tangent vector in tangent space. For hair, this represents the direction along the hair strand. The default value is `(0,1,0)`.
- `Primary Specular Color`: The color of the primary specular highlight of the material. The default value is `(1,1,1)`.
- `Primary Specular`: The brightness of the primary specular highlight of the material. The default value is `0.5`.
- `Primary Roughness`: The level of roughness of the primary specular highlight. This value ranges between `0.0` and `1.0`, with lower values producing a sharper highlight and `1.0` indicating maximum roughness. The default value is `0.3`.
- `Primary Shift`: The amount of primary specular highlight shift along the direction of the normal. Primary specular highlight typically shifts towards the hair tip. The default value is `0.0`.
- `Secondary Specular Color`: The color of the secondary specular highlight of the material. The default value is `(0,0,0)`.
- `Secondary Specular`: The brightness of the secondary specular highlight of the material. The default value is `0.0`.
- `Secondary Roughness`: The level of roughness of the secondary specular highlight. This value ranges between `0.0` and `1.0`, with lower values producing a sharper highlight and `1.0` indicating maximum roughness. The default value is `0.0`.
- `Secondary Shift`: The amount of secondary specular highlight shift along the direction of the normal. Secondary specular highlight typically shifts towards the hair root. The default value is `0.0`.
- `Backlit Color`: The color of the backlit scattering of the material. The default value is `(0,0,0)`.
- `Backlit Power`: The falloff exponent of the backlit scattering of the material. Use higher values for hair styles with less volume and lower values for hair styles with more volume, where light scatters through more strands. The default value is `10.0`.
- `Backlit Scale`: The intensity of the backlit scattering of the material. This value ranges between `0.0` and `1.0`. The default value is `0.0`.
- `Shadow Density`: The density of the shadow cast by the material. This value ranges between `0.0` and `1.0`, with `1.0` producing a fully dense shadow and `0.0` producing no shadow. Intermediate values require the surface to have varying opacity to take effect. The default value is `1.0`.
- `Has Premultiplied Alpha`: A Boolean value that informs the node if input parameters have a premultiplied alpha. The default value is `false`.

---

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)