Materials 101
Learn the main PBR inputs, read a material graph, and use instances to vary a shared material. The final section looks at costs to check when the material is used in a scene.
3.1The Pbr Inputs That Matter
Unreal's default shading model is metallic/roughness PBR. For many surfaces, start with these five inputs: Base Color (no lighting baked in), Metallic (0 or 1, rarely between), Roughness (where all the surface character lives), Normal, and Ambient Occlusion. Emissive adds glow; Opacity/Opacity Mask appear only in translucent/masked blend modes - both cost extra.
3.2Reading The Material Graph

The graph compiles to HLSL - every node is shader code, and every pixel on screen pays for it. The core vocabulary: TextureSample, Multiply/Lerp/Add, TexCoord for tiling, Fresnel for rim effects, and Time + Panner for animation. Scalar and Vector Parameters (instead of constants) are what make instancing possible - name them properly from the start.
3.3Master Materials And Instances

A shared set of master materials can make variation easier to manage. Artists can use instances for common changes, while the team reviews changes to the underlying shader logic.
- A master material (e.g.
M_Environment_Master) defines the logic once: texture parameters, tiling controls, detail normal blending, wind, tint. - An instance (
MI_Rock_01) swaps parameters with zero recompilation - instant iteration for artists. - Static switches in the master let instances toggle features - but every switch combination compiles a separate shader permutation. A master with ten switches can quietly become thousands of shaders. Budget your switches.
A well-designed master material library - 3 to 8 masters covering environment, props, glass, foliage, decals - can give the team a consistent starting point. Choose the set based on the project’s content rather than treating the number as a target.
3.4What Costs What
| Feature | Cost reality |
|---|---|
| Opaque material, few samplers | The happy path - cheap |
| Masked | Moderate - disables early-Z optimisations where used |
| Translucent | Expensive - every overlapping layer shades the same pixel again (overdraw) |
| Two-sided | Doubles rasterisation work - reserve for foliage/cloth |
| World Position Offset | Vertex cost on everything using it, plus shadow/culling side-effects |
| Many texture samplers | 16+ samplers stalls; pack channels (ORM) instead |
Check your work with the Shader Complexity view mode and the stats panel in the material editor. There's more detail in Performance -> Materials & Shaders.
