Passer au contenu
Média 1 pour l'article 200 Grunge, Damage & Decal Alpha Maps — Rust, Cracks, Scratches

Description

200 single-channel masks for aging a surface: dirt, dust, scratches, brushed metal, cracks, rust, pitting, leaks, drips, stains, splatter, spray, edge wear, vignette frames, bullet holes and impact craters.

These are alpha maps, not textures. Each file is an 8-bit greyscale PNG where the image is the mask: white means affect this pixel fully, black means leave it alone. That is the form a decal projector, a layer mask, a blend mask, a Substance alpha or a shader lerp actually wants. You bring the colour; these decide where it lands.

Tiling is measured, not claimed. 156 of the 200 maps are meant to repeat across a surface, and every one of them is drawn on a torus: noise lattices indexed modulo their cell count, and every line, disc and streak stamped nine times at each offset in {-S, 0, +S}², so a scratch leaving the right edge comes back on the left, aligned to the pixel.

Then it is checked, on the shipped PNG. Once a map is laid next to itself its last column and first column become neighbours, so the step across that seam must be no bigger than the steps immediately beside it. Both axes, every map, and the numbers ship in decals.json. The build refuses to ship a map that says it tiles and does not — and the check itself is fed two deliberately spliced images every run and has to reject them, so it is not a test that quietly always passes.

The other 44 are decals — edge wear, frames, torn borders, impact craters. Their borders are their subject, so repeating them is not the point. What they measured is still reported; it is just never dressed up as a design claim.

Eight families

  • Grunge & dirt — 34

  • Scratches & abrasion — 28

  • Cracks & fractures — 24

  • Rust & corrosion — 22

  • Stains, leaks & drips — 24

  • Splatter & spray — 24

  • Edge wear & frames — 22

  • Impact & damage — 22

What is in the download

  • 200 PNG masks, 512 × 512, 8-bit greyscale, sorted into family folders and named for what they are

  • decals.json — every map with its family, intent, measured seamlessness, mean coverage and seam numbers, so you can script your own picker

  • 16 contact sheets — every family on one sheet, on a dark surface and on a light one, because a mask has to read on both

  • index.html — an offline browser: search, filter, invert, flip the surface, and tile any map 3 × 3 to check the seam yourself. No internet, no build step, no dependencies.

  • Engine notes for Unity URP and HDRP, Unreal, Godot 4, Blender, Substance 3D Painter and Designer, and hand-rolled shaders

The Unity package imports all 200 maps with the settings already correct, including the two that are easy to get silently wrong: sRGB is off, because a mask is data and gamma-correcting it moves every threshold you pick; and wrap is set per map — Repeat on the 156 tiling maps, Clamp on the 44 decals, so a projector does not smear a border across your surface. Alpha Source is From Gray Scale with Alpha Is Transparency on, so a map works straight away as a Decal Projector's opacity input. Mip maps on for tiling, off for decals.

The whole integration, in every engine

worn = lerp(clean, damaged, mask.r)

One thing worth doing beyond that: drive roughness from the same mask. Rust and dirt should knock smoothness down as well as change colour — changing albedo alone is the usual reason wear reads as painted on rather than real.

Stacking is the whole point. One mask reads as a texture. Three read as a surface with a history. A broad grunge map to vary the panel, a scratch or crack map for the mechanical damage, then an edge-wear decal to age the borders. Multiply for "both", screen for "either". Two tiling maps at different, non-integer scales break each other's repeat period for the cost of one extra sample.

How it was made

Every file is procedurally generated with custom code: tileable value noise, ridged multifractal noise, cellular (Worley) noise, and analytic distance fields for lines, discs, cracks and streaks — all written for this pack. Nothing photographed, nothing scanned, nothing traced, nothing produced by an image generator. Same seed in, same bytes out; the build verifies that by regenerating a sample and comparing the PNGs byte for byte.

Licence. Unlimited commercial and personal projects, including client work. No attribution required. You may not resell or redistribute the mask files themselves as an asset pack. Full terms in LICENSE.txt.

Formats inclus

Fichiers supplémentaires