A folder becomes a production-ready material only when a specific shader can interpret it correctly within the project's visual and memory budgets. Six beautifully named PNG files are a promising start, not a shipping certificate.
Use this workflow for common metallic-roughness materials such as wood, stone, painted metal, fabric, soil, and architectural surfaces.
1. Define the target and physical scale
Write down the destination engine, render pipeline, shader, intended object, and physical size of one texture tile. A one-meter wall tile and a ten-centimeter prop tile can use the same resolution but should not show the same grain size.
Record the expected map contract. Does the shader use roughness or smoothness? Does it expect an OpenGL- or DirectX-oriented normal? Are AO, roughness, and metallic packed together? Which inputs are optional?
2. Gather reference by property
One attractive photograph is not enough. Gather references for color, relief, wear, reflectivity, edges, and scale. A wet stone photo can teach color variation while giving misleading roughness. A studio product photo can reveal form while hiding the surface in a softbox reflection.
Separate what the material is from what happened to it. Bare steel, paint, rust, dust, and water each have different map behavior even when they occupy one surface.
3. Build the base structure
Establish large forms before adding noise. For brick, set unit size and mortar. For wood, set plank and grain direction. For woven fabric, set weave density. For a unique prop, confirm UV layout and texel density.
Test a repeating material early. It is cheaper to fix a structural seam before scratches, dirt, and map derivation depend on it.
4. Author maps by meaning
- Base color: pigment and material color without baked scene lighting.
- Normal: shallow surface direction; check strength and Y orientation.
- Roughness: micro-surface reflection spread, based on material condition.
- Metallic: exposed metal versus dielectric layers.
- AO: restrained local occlusion where the shader needs it.
- Height: relative elevation for workflows that actually consume it.
- Emission or opacity: only when the asset requires those behaviors.
Generated maps are drafts. If a color seam appears identically in normal, roughness, height, and AO, the process may be copying source contrast rather than interpreting material properties.
5. Validate the set before export
Use a neutral scene with a plane, sphere, and beveled object. Rotate a hard light. Switch to a broad environment. Tile the material at 2-by-2 and 8-by-8. View each map directly.
Look for these failures:
- Normal detail points inward or sparkles at grazing angles.
- Roughness follows color brightness without physical reason.
- Metallic contains broad mid-gray noise on wood, stone, or paint.
- AO creates dark outlines that remain under every light.
- A memorable feature repeats in a visible grid.
6. Export for the actual shader
Use a versioned export preset. Include file suffixes, packed-channel layout, normal orientation, bit depth, and resolution. Sample base color with its expected color conversion. Treat normal, roughness, metallic, AO, height, and masks as numeric data.
Keep a lossless or high-quality source package. Runtime compression belongs in the destination pipeline, where target platform and quality settings are known.
| Delivery decision | Record in the preset | Failure when omitted |
| Color treatment | Color input versus numeric data | Roughness or normals are changed by color conversion. |
| Normal convention | OpenGL or DirectX Y orientation | Relief appears inverted under moving light. |
| Channel packing | Meaning of red, green, blue, and alpha | The shader reads the right values from the wrong channels. |
| Resolution/compression | Target platform and texture class | Memory is wasted or fine detail breaks after import. |
7. Import, compress, and inspect again
Assign the project's real texture types and shader inputs. Let the engine build mipmaps and runtime compression. Then inspect the material at gameplay distance, not just in the texture inspector.
Resolution should follow visible texel density and camera distance. A 4K source may correctly become a 1K runtime asset. Conversely, a large hero object may need more detail or tiled layers rather than one enormous unique texture.
8. Package the handoff
Deliver the approved maps with the source reference, physical scale, export preset version, target shader, and at least one engine screenshot. Record intentional exceptions such as stylized roughness or a nonstandard packed map.
Another artist should be able to answer why the material looks the way it does and how to revise it. That is the practical meaning of production-ready: correct enough to ship, clear enough to maintain, and tested where it will be used.