Materials

How a surface reacts to light: its colour, its shine, and whether it reads as metal, plastic, ink or smoke.

Bind a material to geometry and the built-in renderer shades it. The same material works everywhere it is used, so a shape authored in 2D and lifted into 3D keeps its look.

A flat 2D fill with no material bound is the one thing that starts outside this. It renders unlit: it takes no light, receives no shadow, and skips the lighting work altogether, which is what a graphic shape sitting on a canvas usually wants. Bind a material to it and it shades and receives shadows like anything else.

Shading modes

Every material picks one mode.

Start in PBR and treat roughness as the main expressive dial. Sweeping it from 0 to 1 takes a surface from mirror-sharp to soft and matte without touching anything else.

Beyond the three core dials

Five more lobes stack on top of the base for specific materials: clearcoat for a lacquered second layer, anisotropy for brushed metal, sheen_color for cloth and velvet, iridescence for the thin-film shift on oil and beetle shells, and subsurface_color with subsurface_weight for the translucent lift on skin and wax. Each is off at 0 or black.

Any of these channels can be a flat value, a procedural look driven by a Fields, or an The Expression language.

Photon-mapped caustics come with the material rather than from a toggle. As soon as the scene holds something refractive, the caustics pass runs and light focuses through it onto whatever is behind.

Volumes

A Volume is participating media rather than a surface: smoke, fog, fire, clouds. Density comes from the volume data. What the material sets is how light behaves inside it: scattering, absorption, phase_g, ambient and fog_distance. Volumes are shaded and rendered along their own path. See Volumes and Volume Render.

Per-element materials

Materials live on a Collections alongside positions and colours, so every element can carry its own look without splitting the graph.

The simplest version is the @Cd colour attribute. Write a per-row colour with the Points node, an The Expression language or a Fields, and each element renders in its own colour. An authored @Cd replaces the material's base colour and nothing else, so you can bind one material and then tint individual elements on top. Only a colour you deliberately write counts as authored: the default white that elements start with does not override a bound material.

For richer variation, bind a whole material per row on the @material column: some rows glass and others metal, in one collection and one render. A per-row material outranks the collection's own.

Per-row materials resolve per row on the mesh and deferred paths. A batch of sprites resolves some of its look from row 0 alone, so mixing materials across a sprite batch does not read the way mixing them across meshes does.

See also