🪵Procedural Texture Generator - Seamless Noise & Normal Maps
Procedural textures aren’t photographed — they’re computed from mathematical noise, so the same settings and seed always give the same image, at any resolution, and they can be made perfectly seamless. This generator includes Perlin and Simplex gradient noise, layered as fBm (fractal Brownian motion), ridged (great for ridges and lava cracks) or turbulence (marble, fire), plus Worley cellular noise in F1 (cells) and F2−F1 (cracks and stone joints), and domain warping to bend everything like a fluid. On top of the noise you can apply marble veins, wood rings, a fabric weave or caustic lines. Presets cover clouds, marble, wood, stone, lava, water caustics, paper, fabric, brushed metal and rust, and every parameter stays editable afterwards. The colour ramp editor lets you add, move, recolour, remove and reverse stops. With seamless on, Perlin and Worley use a periodic lattice (integer frequencies, lattice coordinates wrapped by the period) and Simplex uses a 4D torus mapping, so opposite edges match exactly at the pixel level — check it with the 2×2 tiled preview. Export up to 4096×4096, generated in a Web Worker so the page stays responsive, optionally with a greyscale height map and a normal map derived from the height with a Sobel filter, in OpenGL or DirectX convention, ready for game engines and 3D software.
Free · No sign-up · Runs in your browserLast updated:
How to use Procedural Texture Generator
- 1Click a preset (clouds, marble, wood…) as a starting point
- 2Tune the noise type, fractal, scale, octaves, domain warp and pattern, edit the colour ramp, and turn on seamless — check it with the 2×2 tile preview
- 3Choose an export size up to 4096, tick height and normal maps if needed, and download the PNGs
FAQ
- How is the texture made seamless — is it just blurred at the edges?
- No blurring is involved. Perlin and Worley noise are computed on a periodic lattice: each octave uses a whole-number frequency and lattice coordinates wrap around the period, so column 0 and column N use the same random lattice points and the image is mathematically periodic. Simplex noise instead wraps both axes into circles and samples 4D space (a torus mapping), which also joins exactly. Domain warping and the patterns are designed to be periodic too.
- What’s the difference between fBm, ridged and turbulence?
- fBm adds several octaves of noise at increasing frequencies with decreasing weight, giving soft natural variation for clouds and terrain. Turbulence sums the absolute value of the noise, creating sharp creases suited to marble and fire. Ridged uses 1 − |noise| squared, weighted by the previous octave, producing long continuous bright ridges for mountains, lava and lightning.
- How is the normal map made, and what’s OpenGL vs DirectX?
- The texture’s height (greyscale) is differentiated with a Sobel filter to get the horizontal and vertical slope at every pixel, which is converted into a surface normal and encoded as RGB. Seamless textures are sampled with wrap-around, so the normal map tiles too. The two formats differ only in the green channel: OpenGL (Blender, Unity) has green pointing up, DirectX (Unreal, 3ds Max) has it pointing down.
- Why do I get the same result every time, and how do I get a new one?
- All randomness comes from the seed, so the same parameters, seed and size always reproduce the same image — handy for keeping track of a look. For a different variation, click Reroll or type another seed.