# Shading attributes
Intermediate
Artist
Programmer
The material **shading attributes** define the color characteristics of the material and how it reacts to light.

> [!Note]
>To display a material, you need to select at least one shading model (diffuse, specular or emissive model) in the model attributes.
## Diffuse
The **diffuse** is the basic color of the material. A pure diffuse material is completely non-reflective and "flat" in appearance.

The final diffuse contribution is calculated like this:
- the **diffuse** defines the color used by the diffuse model
- the **diffuse model** defines which shading model is used for rendering the diffuse component (see below)
Currently, the diffuse attribute supports only a **diffuse map**.

### Diffuse model
The **diffuse model** determines how the diffuse material reacts to light. You can use the **Lambert** or **cel-shading**.
#### Lambert model
Under the Lambert model, light is reflected equally in all directions with an intensity following a cosine angular distribution (angle between the normal and the light):

> [!Note]
> A pure Lambertian material doesn't exist in reality. A material always has a little specular reflection. This effect is more visible at grazing angles (a mostly diffuse surface becomes shiny at grazing angle).
| Property | Description
| ------------- | -----------
| Diffuse map | The diffuse map color provider
| Diffuse model | The shading model for diffuse lighting
## Specular
A **specular** is a point of light reflected in a material.

The specular color can be defined using a metalness map (which uses the diffuse color as a base color), or a specular map (the specular color is defined separately from the diffuse color).
### Metalness map
The **metalness map** simplifies parametrization between the diffuse and specular color.
By taking into into account the fact that almost all materials always have some "metalness"/reflectance in them, using the metalness map provides realistic materials with minimal parametrization.
The final specular color is calculated by mixing a fixed low-reflection color and the diffuse color.
- With the metalness color at `0.0`, the effective specular color is equal to `0.02`, while the diffuse color is unchanged. The material is not metal but exhibits some reflectance and is sensitive to the Fresnel effect.
- With the metalness color at `1.0`, the effective specular color is equal to the diffuse color, and the diffuse color is set to `0`. The material is considered a pure metal.

The screenshots below show the result of the metalness factor on a material with the following attributes:
- Gloss = `0.8`
- Diffuse = `#848484`, Lambert
- Specular GGX
| Pure diffuse (no metalness) | Metalness = `0.0` | Metalness = `1.0`
| ---------------------------- | ------------------ | ---------------
|  |  |  |
| - The diffuse color is dominant | - The diffuse color is dominant | - The diffuse color isn't visible
| - The specular color isn't visible | - The specular color is visible (`0.02`) | - The specular color is visible
### Specular map
The specular map provides more control over the actual specular color, but requires you to modify the diffuse color accordingly.
Unlike the metalness workflow, this lets you have a different specular color from the diffuse color even in low-reflection scenarios, allowing for materials with special behavior.
> [!Note]
> You can combine metalness and specular workflows in the same material by adding separate [layers](material-layers.md).
## Specular model
A pure specular surface produces a highlight of a light in a mirror direction. In practice, a broad range of specular materials, not entirely smooth, can reflect light in multiple directions. Stride simulates this using the **microfacet** model, also known as [Cook-Torrance (academic paper)](http://www.cs.columbia.edu/~belhumeur/courses/appearance/cook-torrance.pdf).

The microfacet is defined by the following formula, where Rs is the resulting specular reflectance:

| Property | Description
| ------------------- | -------
| Fresnel | Defines the amount of light that is reflected and transmitted. The models supported are:
**Schlick**: An approximation of the Fresnel effect (default)
**Thin glass**: A simulation of light passing through glass
**None**: The material as-is with no Fresnel effect
| Visibility | Defines the visibility between of the microfacets between (0, 1). Also known as the geometry attenuation - Shadowing and Masking - in the original Cook-Torrance. Stride simplifies the formula to use the visibility term instead:

and

**Schlick GGX** (default)
**Implicit**: The microsurface is always visible and generates no shadowing or masking
**Cook-Torrance**
**Kelemen**
**Neumann**
**Smith-Beckmann**
**Smith-GGX correlated**
**Schlick-Beckmann**
| Normal Distribution | Defines how the normal is distributed. The gloss attribute is used by this part of the function to modify the distribution of the normal.
**GGX** (default)
**Beckmann**
**Blinn-Phong**
## Emissive
An **emissive** material is a surface that emits light.

With HDR, a [Bloom](../post-effects/bloom.md) and a [Bright filter](../post-effects/bright-filter.md) post-processing effects, we can see the influence of an emissive material:

| Property | Description
| ------------ | --------------
| Emissive map | The emissive map color provider
| Intensity | The factor to multiply by the color of the color provider
| Use alpha | Use the alpha of the emissive map as the main alpha color of the material (instead of using the alpha of the diffuse map by default)
## See also
* [Geometry attributes](geometry-attributes.md)
* [Misc attributes](misc-attributes.md)
* [Material maps](material-maps.md)
* [Material layers](material-layers.md)
* [Materials for developers](materials-for-developers.md)
* [Custom shaders](../effects-and-shaders/custom-shaders.md)