<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/CustomMaterial/Clearcoat-swift.struct/init(scale:texture:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:17RealityFoundation14CustomMaterialV9ClearcoatV5scale7textureAESf_AC0cD7TextureVSgtcfc"
  },
  "title" : "init(scale:texture:)"
}
-->

# init(scale:texture:)

Creates a clearcoat object using a single value or a texture.

```
init(scale: Float = 1.0, texture: CustomMaterial.Texture? = nil)
```

## Parameters

`scale`

The clearcoat value for the entire material.

`texture`

The clearcoat values as the texture of a UV-mapped image.

## Discussion

A clearcoat is a separate layer of transparent specular highlights
used to simulate a clear coating, like on a car or the surface of
lacquered objects. Use this initializer to create an object to
specify the amount of clearcoat for a material using a single value
for the entire material, a UV-mapped image to specify different
values for different parts of the entity, or both.

The copied values for
[`scale`](/documentation/RealityKit/CustomMaterial/Clearcoat-swift.struct/scale) and
[`texture`](/documentation/RealityKit/CustomMaterial/Clearcoat-swift.struct/texture) are available in
the material’s surface shader function, regardless of the material’s
lighting model; however RealityKit only renders a clearcoat when
[`lightingModel`](/documentation/RealityKit/CustomMaterial/lightingModel-swift.property) is
[`CustomMaterial.LightingModel.clearcoat`](/documentation/RealityKit/CustomMaterial/LightingModel-swift.enum/clearcoat) and the
material’s surface shader function calls
`params.surface().set_clearcoat()`.

The following Metal code demonstrates how to retrieve the clearcoat
`scale` and `texture` in a surface shader function and use them to
calculate the final clearcoat value for rendering:

```other
    // Retrieve the base color tint from the CustomMaterial.
    float clearcoatScale = params.material_constants().clearcoat_scale();

    // Retrieve the entity's primary texture coordinates.
    float2 uv = params.geometry().uv0();

    // Models loaded from a USDZ of .reality file use texture coordinates
    // with a flipped y-axis. This compensates for that.
    uv.y = 1.0 - uv.y;

    // Sample the clearcoat texture to get the value UV-mapped to this pixel.
    auto tex = params.textures();
    half clearcoat = tex.clearcoat().sample(textureSampler, uv).r;

    // Multiply the tint and the sampled value from the texture, and assign it
    // to the shader's base color property.
    clearcoat *= clearcoatScale;
    params.surface().set_clearcoat(clearcoat);
```

---

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)