Common Properties
These properties are available across multiple material models.Base Color
Type:float4 | Range: [0..1] | Default: (1, 1, 1, 1)
Defines the perceived color of the object (albedo). The effect depends on the metallic property:
- Non-metals (dielectrics): Diffuse color of the surface
- Metals (conductors): Specular color of the surface
Base color should be specified in linear RGB space and use pre-multiplied alpha.
Metallic
Type:float | Range: [0..1] | Default: 0.0
Defines whether the surface is metallic (1.0) or non-metallic (0.0). Should typically be used as a binary value.
- 0.0: Dielectric surface (plastic, wood, etc.)
- 1.0: Metallic surface (iron, gold, etc.)
Roughness
Type:float | Range: [0..1] | Default: 1.0
Controls the perceived smoothness of the surface:
- 0.0: Perfectly smooth and glossy
- 1.0: Very rough and diffuse
Reflectance
Type:float | Range: [0..1] | Default: 0.5
Available in: Lit, Subsurface
Not available in: Cloth, Specular Glossiness
Controls the specular intensity for non-metallic surfaces. Remaps to common reflectance percentages:
| Value | Reflectance | IOR | Material Examples |
|---|---|---|---|
| 0.35 | 2% | 1.33 | Water |
| 0.5 | 4% | 1.5 | Plastic, glass (default) |
| 0.56 | 5% | 1.58 | High-quality plastic |
Emissive
Type:float4 | Range: rgb=[0..n], a=[0..1] | Default: (0, 0, 0, 1)
Simulates light emitted by the surface:
- RGB: Intensity in nits (candelas per square meter)
- Alpha: Exposure weight (0 = ignore camera exposure, 1 = affected by exposure)
Ambient Occlusion
Type:float | Range: [0..1] | Default: 0.0
Per-pixel shadowing factor for diffuse indirect lighting:
- 0.0: Fully shadowed
- 1.0: Fully lit
Ambient occlusion only affects diffuse indirect lighting (IBL), not direct lights or specular.
Normal
Type:float3 | Range: [0..1] | Default: (0, 0, 1)
Available in: All models except Unlit
Surface normal in tangent space. Must be set before calling prepareMaterial().
Lit Model Properties
Clear Coat
Type:float | Range: [0..1] | Default: 0.0
Strength of the clear coat layer. Simulates multi-layer materials like car paint.
- 0.0: No clear coat
- 1.0: Full clear coat layer
Clear Coat Roughness
Type:float | Range: [0..1] | Default: 0.0
Roughness of the clear coat layer, independent of base layer roughness.
Clear Coat Normal
Type:float3 | Range: [0..1] | Default: (0, 0, 1)
Normal map for the clear coat layer, allowing different surface details for the clear coat.
Anisotropy
Type:float | Range: [-1..1] | Default: 0.0
Amount of anisotropic reflectance:
- Positive values: Anisotropy in tangent direction
- Negative values: Anisotropy in bitangent direction
- 0.0: Isotropic (default)
Anisotropic materials are more expensive to render. Only set this property if you need anisotropy.
Anisotropy Direction
Type:float3 | Range: [0..1] | Default: (1, 0, 0)
Direction vector in tangent space controlling the orientation of anisotropic highlights.
Sheen Color
Type:float3 | Range: [0..1] | Default: (0, 0, 0)
Color and strength of an optional sheen layer, useful for cloth-like appearance.
For dedicated cloth materials, use the Cloth model instead for better performance.
Sheen Roughness
Type:float | Range: [0..1] | Default: 0.0
Roughness of the sheen layer.
Bent Normal
Type:float3 | Range: [0..1] | Default: (0, 0, 1)
Average unoccluded direction for improved indirect lighting accuracy.
Post-Lighting Color
Type:float4 | Range: [0..1] | Default: (0, 0, 0, 0)
Color to blend with lighting result. Blending mode controlled by postLightingBlending material option.
Refraction Properties
Available whenrefractionMode is set to cubemap or screenspace.
Index of Refraction (IOR)
Type:float | Range: [1..n] | Default: 1.5
Refractive index of the material:
| Material | IOR |
|---|---|
| Air | 1.0 |
| Water | 1.33 |
| Glass | 1.5-1.58 |
| Diamond | 2.33 |
Transmission
Type:float | Range: [0..1] | Default: 1.0
Ratio of diffuse light transmitted through the material:
- 0.0: No transmission, diffuse fully visible
- 1.0: Full transmission, only specular visible
Absorption
Type:float3 | Range: [0..n] | Default: (0, 0, 0)
Light absorption coefficients for transmitted light.
Transmittance follows: color * exp(-absorption * distance)
Thickness
Type:float | Range: [0..n] | Default: 0.5
Used with: Solid refraction type
Thickness of solid refractive objects in the normal direction. Should vary per fragment for accurate results.
Micro-Thickness
Type:float | Range: [0..n] | Default: 0.0
Used with: Thin refraction type
Thickness of thin refractive shells. Can typically be a constant value.
Dispersion
Type:float | Range: [0..n] | Default: 0.0
Used with: Solid refraction type
Chromatic dispersion strength, specified as 20/Abbe number:
| Material | Abbe Number | Dispersion |
|---|---|---|
| Rutile | 9.8 | 2.04 |
| Polycarbonate | 32 | 0.625 |
| Diamond | 55 | 0.36 |
| Glass | 59 | 0.33 |
Subsurface Model Properties
Thickness
Type:float | Range: [0..n] | Default: 0.5
Thickness for subsurface scattering calculations.
Subsurface Power
Type:float | Default: 12.234
Controls the scattering falloff. Higher values create tighter scattering.
Subsurface Color
Type:float3 | Range: [0..1] | Default: (1, 1, 1)
Tint of the scattered light.
Cloth Model Properties
Sheen Color
Type:float3 | Range: [0..1] | Default: sqrt(baseColor)
Specular tint for two-tone fabrics.
For velvet:
Subsurface Color
Type:float3 | Range: [0..1] | Default: (0, 0, 0)
Tint for scattering through the material. Use sparingly as high values can interfere with shadows.
Unlit Model Properties
The unlit model only supports:baseColoremissivepostLightingColor
Specular Glossiness Properties
Specular Color
Type:float3 | Range: [0..1] | Default: (0, 0, 0)
Specular tint for legacy materials.
Glossiness
Type:float | Range: [0..1] | Default: 0.0
Inverse of roughness: glossiness = 1.0 - roughness
Property Compatibility Matrix
| Property | Lit | Subsurface | Cloth | Unlit | Spec/Gloss |
|---|---|---|---|---|---|
| baseColor | ✓ | ✓ | ✓ | ✓ | ✓ |
| metallic | ✓ | ✓ | ✗ | ✗ | ✗ |
| roughness | ✓ | ✓ | ✓ | ✗ | ✗ |
| reflectance | ✓ | ✓ | ✗ | ✗ | ✗ |
| clearCoat | ✓ | ✗ | ✗ | ✗ | ✓ |
| anisotropy | ✓ | ✗ | ✗ | ✗ | ✓ |
| sheenColor | ✓ | ✗ | ✓ | ✗ | ✗ |
| subsurfaceColor | ✗ | ✓ | ✓ | ✗ | ✗ |
| thickness | ✓* | ✓ | ✗ | ✗ | ✗ |
| emissive | ✓ | ✓ | ✗ | ✓ | ✓ |
| normal | ✓ | ✓ | ✓ | ✗ | ✓ |
| specularColor | ✗ | ✗ | ✗ | ✗ | ✓ |
| glossiness | ✗ | ✗ | ✗ | ✗ | ✓ |
Best Practices
Set Properties Conditionally
Don’t set properties you don’t use - they have performance costs:Use Proper Color Spaces
Always work in linear RGB:Pre-multiply Alpha
For transparent materials, use pre-multiplied alpha:Next Steps
- Learn about PBR shading models
- See creating materials for examples
- Compile materials with matc