Texturing and Materials
An artist submits an asset to the engine—and it looks like a plastic toy. Geometry is correct, normals are fine, but the material doesn't read as metal or worn leather. The reason is almost always one of two things: either PBR channels are improperly configured, or the artist painted "by eye" without understanding the physical model the engine's renderer uses.
Texturing for games today is working with physically-correct materials, procedural systems, and strict memory constraints.
PBR Pipeline: In Practice
PBR (Physically Based Rendering) is not an art style—it's a set of rules where material behaves predictably under any lighting. In Unity (URP/HDRP) and Unreal, it's standard by default.
Two primary workflows:
Metal/Roughness (used in Unity URP, Unreal):
- Base Color — Diffuse color without lighting information. Common mistake: adding fake shadows or highlights directly into base color.
- Metallic — Binary map: 0 (dielectric) or 1 (metal). Intermediate values only for transition zones (rust on metal, dust).
- Roughness — 0 is mirror-like, 1 is completely matte. This is the most "artistic" map in the set.
- Normal Map — Simulates surface relief without adding geometry.
- AO (Ambient Occlusion) — Darkening in crevices. In HDRP, baked separately and blended in the shader.
Specular/Glossiness (legacy workflow, Photoshop-era):
- Base Color + Specular + Glossiness. Less common—mainly old projects or when working with Spec/Gloss pipeline in Substance Painter for compatibility.
Boundary values for dielectrics: base color not darker than #383838 and not lighter than #E0E0E0—otherwise material starts "glowing" or "disappearing" into darkness under HDR lighting. For metals, base color = reflection color (gold is warm, chrome is neutral).
Substance Designer: Procedural Pipeline in Depth
If Substance Painter is manual painting over ready geometry, Substance Designer is material programming. A node graph that outputs a set of texture maps generated algorithmically.
This fundamentally changes the workflow for tiling materials (tileable textures of earth, brick, concrete, metal panels). Instead of painting a 2K texture by hand, the artist builds a graph that can be:
- Parametrized — One graph "stone masonry" with parameters: stone size, gap between stones, moss level, wetness. Producer asks for "wet stone at night"—artist moves sliders, no rework needed.
- Scaled without quality loss — Procedural material renders at any resolution. Built graph in 2K, need 4K for cinematic cutscene—recalculate the export.
- Maintained at runtime — Substance Engine (now part of Adobe) allows material parameters to change in-engine. Used for dynamic materials: mud coating, blood, wear.
Graph building blocks in Designer:
- Shape nodes — Geometric primitives (rectangle, circle, polygon). Foundation for tiling patterns.
- Noise nodes (Perlin, Gaussian, Cells, Voronoi) — Organic irregularities. Rule: no real material is strictly regular; noise is the base.
- Tile Generator / Splatter — Key nodes for pattern creation. Tile Generator lays a shape across a grid with control over offset, rotation, scale.
- Warp nodes (Directional Warp, Warp) — Deformation by normal map or gradient. Creates organic streaks, shifts, cracks.
- Blend — Layer blending with masking. Final compositing happens here: base color = blend(clean metal, rust, curvature mask).
- Normal Map nodes (Normal, Normal Combine) — Synthesize normals from height data or combine them.
Typical graph for "industrial metal" material:
[Shape: rectangular panel]
↓
[Tile Generator: panel grid with slight offset]
↓
[Warp: micro-dents from Gaussian noise]
↓
[Blend: add curvature mask → rust along edges]
↓
[Blend: streaks via Directional Warp]
↓
[Export: BaseColor / Metallic / Roughness / Normal / AO]
This graph is reused across projects, parametrized for a specific game's style, and doesn't require rework when texture resolution changes.
Substance Painter: Manual Texturing
Painter is the tool for painting a specific asset over its geometry. Main capabilities:
Baked mesh maps — Baked maps (AO, Curvature, Normal, Position, Thickness) automatically become generator masks. This is key: rust automatically appears on edges (via Curvature), dirt in crevices (via AO), wear on raised areas.
Smart Materials — Preset layer stacks with pre-configured generators. A well-built Smart Material for "aged leather" applies to any model with correct baked maps and immediately gives 70% of the result.
UDIM workflow in Painter — For characters with multiple UV tiles. Each tile is painted in a separate texture set, but Painter displays them on the model simultaneously. Export is a separate file per tile.
Hand-Painted Texturing
A style where lighting is "painted" directly into the texture, bypassing the physical model. Typical for mobile games without dynamic lighting (unlit shader), stylized projects (WoW Blizzard-style), mobile idle/merge.
Tools: Photoshop (classic), Procreate (tablet), Krita (open source). Some artists paint in Substance Painter with PBR preview disabled.
Limitation: such textures "break" when lighting conditions change. Baked shadows don't respond to moving light sources. Fine for static scenes or mobile—not for 3D action with dynamic lighting.
Quixel Mixer and Megascans
Quixel Mixer — Free tool (free through Megascans Bridge for Unreal Engine projects). Allows blending photoscanned materials from the Megascans library directly on geometry with masking by curvature and AO. For Unreal projects, a powerful alternative to Designer for environment.
Megascans — Library of photoscanned materials and meshes: stones, earth, bark, metal, concrete. Used as a base layer, with Painter or Designer adding unique details on top.
Memory Constraints
Texture memory is direct VRAM usage. Rules:
| Platform | Maximum texture for hero asset |
|---|---|
| Mobile (mid-range) | 1K–2K (ETC2 / ASTC compression) |
| PC / Console | 2K–4K (BC1–BC7) |
| VR | 1K–2K (compression mandatory) |
Compression formats matter: BC7 for RGBA gives good quality at 8 bpp. ASTC for mobile configures by quality/size ratio. Never export PNG to production without compression—direct VRAM cost of 4–8x.
What We Deliver
- PBR texturing in Substance Painter (Metal/Roughness workflow) for Unity URP/HDRP and Unreal Engine.
- Procedural tiling material development in Substance Designer with parametrization.
- Hand-painted texturing for stylized and mobile projects.
- UDIM pipeline for characters and hero assets.
- Texture set optimization for target platform (atlasing, compression, LOD textures).





