Filament provides several material models (also called shading models or lighting models) that define how surfaces interact with light. Each model is optimized for specific types of materials and rendering scenarios.
Available Material Models
Filament supports the following material models:
- Lit (Standard) - Physically-based model for most surfaces
- Subsurface - For materials with subsurface scattering
- Cloth - Specialized model for fabrics and textiles
- Unlit - No lighting calculations, for pre-lit content
- Specular Glossiness - Legacy model for compatibility
Lit Model
The lit model is Filament’s standard physically-based shading model. It was designed for good interoperability with other common tools and engines such as Unity 5, Unreal Engine 4, Substance Designer, and Marmoset Toolbag.
This model can describe both:
- Dielectrics - Non-metallic surfaces like plastic, wood, concrete
- Conductors - Metallic surfaces like iron, gold, copper
Core Properties
| Property | Type | Range | Description |
|---|
baseColor | float4 | [0..1] | Diffuse albedo for non-metals, specular color for metals |
metallic | float | [0..1] | Whether surface is dielectric (0) or conductor (1) |
roughness | float | [0..1] | Surface smoothness (0) to roughness (1) |
reflectance | float | [0..1] | Fresnel reflectance at normal incidence for dielectrics |
ambientOcclusion | float | [0..1] | Per-pixel shadowing factor |
Advanced Properties
| Property | Type | Range | Description |
|---|
clearCoat | float | [0..1] | Strength of clear coat layer |
clearCoatRoughness | float | [0..1] | Roughness of clear coat layer |
clearCoatNormal | float3 | [0..1] | Normal map for clear coat layer |
anisotropy | float | [-1..1] | Anisotropic reflectance amount |
anisotropyDirection | float3 | [0..1] | Direction of anisotropy in tangent space |
sheenColor | float3 | [0..1] | Strength and color of sheen layer |
sheenRoughness | float | [0..1] | Roughness of sheen layer |
emissive | float4 | rgb=[0..n], a=[0..1] | Emissive color in nits |
normal | float3 | [0..1] | Normal map in tangent space |
Refraction Properties
| Property | Type | Range | Description |
|---|
ior | float | [1..n] | Index of refraction |
transmission | float | [0..1] | Amount of transmitted diffuse light |
absorption | float3 | [0..n] | Light absorption coefficients |
thickness | float | [0..n] | Thickness for solid refractive objects |
microThickness | float | [0..n] | Thickness for thin refractive objects |
dispersion | float | [0..n] | Chromatic dispersion (20/Abbe number) |
Base Color Guidelines
Non-metals (Dielectrics):
- Coal: sRGB(0.19, 0.19, 0.19)
- Wood: sRGB(0.53, 0.36, 0.24)
- Concrete: sRGB(0.75, 0.75, 0.73)
Metals (Conductors):
- Silver: sRGB(0.97, 0.96, 0.91)
- Gold: sRGB(1.00, 0.85, 0.57)
- Copper: sRGB(0.97, 0.74, 0.62)
Reflectance Values
| Material | Reflectance | IOR | Linear Value |
|---|
| Water | 2% | 1.33 | 0.35 |
| Plastic/Glass | 4-5% | 1.5-1.58 | 0.5-0.56 |
| Skin | 2.8% | 1.4 | 0.42 |
| Default | 4% | 1.5 | 0.5 |
Subsurface Model
The subsurface model extends the lit model to simulate light scattering beneath the surface. This is ideal for materials like skin, wax, marble, and jade.
Properties
Includes all lit model properties except sheen and clear coat, plus:
| Property | Type | Range | Description |
|---|
thickness | float | [0..n] | Thickness of the material |
subsurfacePower | float | - | Controls scattering falloff (default: 12.234) |
subsurfaceColor | float3 | [0..1] | Tint of scattered light |
Cloth Model
The cloth model is optimized for fabrics and textiles, which exhibit softer specular lobes and forward/backward scattering. It’s more efficient than using the lit model with sheen for cloth-like materials.
When to Use
Use the cloth model for:
- Cotton, denim, wool fabrics
- Velvet and soft materials
- Any loosely-woven textiles
Use the lit model instead for:
- Leather
- Silk and satin
- Hard surface materials
Properties
| Property | Type | Range | Description |
|---|
baseColor | float4 | [0..1] | Diffuse color of the fabric |
roughness | float | [0..1] | Surface roughness |
sheenColor | float3 | [0..1] | Specular tint (defaults to √baseColor) |
subsurfaceColor | float3 | [0..1] | Scattering color |
The cloth model does not include metallic or reflectance properties as fabrics are always dielectric.
Tips
- For velvet: Use dark
baseColor with bright/saturated sheenColor
- For common fabrics: Set
sheenColor to the luminance of baseColor
- Use
subsurfaceColor sparingly as high values can interfere with shadows
Unlit Model
The unlit model disables all lighting computations. Use it for:
- Pre-lit content (cubemaps, videos)
- User interfaces
- Camera streams
- Debugging visualizations
Properties
| Property | Type | Range | Description |
|---|
baseColor | float4 | [0..1] | Surface diffuse color |
emissive | float4 | rgb=[0..n], a=[0..1] | Additional emissive color |
postLightingColor | float4 | [0..1] | Color to blend with result |
Specular Glossiness Model
This legacy model exists for compatibility with older assets. It’s not physically-based and should only be used when loading legacy content.
Properties
| Property | Type | Range | Description |
|---|
baseColor | float4 | [0..1] | Surface diffuse color |
specularColor | float3 | [0..1] | Specular tint |
glossiness | float | [0..1] | Inverse of roughness |
We do not recommend using the specular glossiness model except when loading legacy assets. Use the lit model for new materials.
Selecting a Material Model
Choose your material model based on the surface type:
material {
shadingModel : lit, // or subsurface, cloth, unlit, specularGlossiness
// ...
}
| Surface Type | Recommended Model |
|---|
| Hard surfaces (metal, plastic, wood) | Lit |
| Skin, wax, jade | Subsurface |
| Fabrics, velvet | Cloth |
| UI, pre-lit content | Unlit |
| Legacy assets | Specular Glossiness |
Next Steps