Clearcoat — PBR Concept & Bevy Rendering
Clearcoat is a Physically Based Rendering (PBR) material property that simulates a thin transparent coating layer over a base material — like the clear lacquer on car paint or the glaze on ceramic. It adds an additional specular highlight layer on top of the base material’s existing lighting.
How it works in PBR
In the glTF 2.0 PBR model (based on the Khronos extension KHR_materials_clearcoat), clearcoat is defined by:
- Clearcoat factor (0–1): the intensity of the coating layer. 0 = no coating, 1 = full coating.
- Clearcoat texture (optional): a grayscale texture map controlling where the coating appears. White pixels = full coating, black pixels = no coating. This enables “partial coating” effects (e.g., a car body with glossy clearcoat on painted panels but not on rubber trim).
- Clearcoat roughness (0–1): how rough or smooth the coating layer is, independent of the base material’s roughness.
In Bevy
Bevy’s StandardMaterial supports clearcoat through the glTF loader. glTF ClearCoat materials are converted to StandardMaterial fields during asset loading.
Recent fix (2026-06-03): PR #24514 (issam3105) fixed a bug where the glTF loader was ignoring the clearcoat texture during conversion. Without the fix, all clearcoat areas rendered as uniformly coated regardless of the texture map — the “partial coating” effect was broken. The fix propagates clearcoat_texture from glTF ClearCoat materials to StandardMaterial::clearcoat_texture.
Practical implications
- If you’re loading glTF models with clearcoat and need partial coating (e.g., Khronos ClearCoatTest), this must be on the 0.19+ release line.
- Clearcoat is independent of other StandardMaterial properties like metallic/roughness — it’s an additional layer.
- No Rust API changes — the fix is in the asset loader only.
StandardMaterialalready had theclearcoat_texturefield.
Related pages
- transmission — related PBR material property for light passing through materials
- standard-material — Bevy’s StandardMaterial component
- bevy-pbr — the
bevy_pbrcrate that implements PBR rendering - bevy-rendering — Bevy rendering system overview