Apps Part of Renderloom

Seamless Noise Texture Generator

Generate tileable Perlin, value, simplex or Voronoi noise as an 8- and 16-bit PNG.

More options

Try an example: · ·

More about this tool

How it works

Pick Perlin, value, simplex or Voronoi (Worley) noise, set the cells per tile, octaves, persistence and an optional domain warp, and download a seamless grayscale PNG, a 16-bit height PNG and a 2 × 2 repeat that proves the tiling. The result opens as a graph in Renderloom Material Nodes.

  • Noise is generated directly on the periodic tile, so it repeats without blending or mirroring. Perlin and value noise wrap their lattice indices modulo the cell count; simplex noise is sampled on a torus in 4-D (x and y each become a circle); Voronoi feature points repeat with the cell grid and the search covers 5 × 5 cells.
  • Octaves double the frequency and multiply the amplitude by the persistence. Fractal sum maps −1…1 to 0…1; turbulence sums absolute values; ridged sums (1 − |n|)². Contrast scales the result around its midpoint (around 0 for turbulence). Values are clamped to 0–1.
  • Seed 0 with Perlin noise uses Ken Perlin’s reference permutation: the generator reproduces his reference value noise(3.14, 42, 7) = 0.13691995878400012. Other seeds shuffle the permutation deterministically; Voronoi points use a 32-bit integer hash.
  • Voronoi distances are in cell widths (F1 is at most about 0.71 for jitter 0) and clamped to 0–1. The optional domain warp displaces the noise by a second Perlin field with wrap-around sampling.
  • The continuity check compares the steps across the wrap edges with the steps inside the tile. The 16-bit PNG stores the same values with 65536 levels for height maps.

Sources

Part of Renderloom

How to use the Seamless Noise Texture Generator

Make tileable Perlin, value, simplex or Voronoi noise with octaves and domain warp, check the tiling and download 8- and 16-bit PNGs.

What it is for

Height maps, masks, cracks, clouds and grunge layers all start with noise, and the noise has to repeat without a visible edge when a texture covers a large surface. Blurring or mirroring a random image hides the seam but leaves smudges or obvious symmetry. This generator computes the noise on a periodic tile instead, so the right edge continues into the left edge and the bottom into the top by construction.

You choose Perlin gradient noise, value noise, simplex noise or one of four Voronoi (Worley) outputs, set how many cells fit across the tile, add fractal octaves and an optional domain warp, and download a grayscale PNG, a 16-bit PNG for displacement and a 2 × 2 repeat that shows the tiling. It does not paint color or combine several layers: that is what Renderloom Material Nodes is for, and the result opens there as an editable graph.

Worked example

Cracked earth or stone joints need cell edges. We chose Voronoi: cell edges (F2 − F1), 10 horizontal and 5 vertical cells per tile, jitter 0.8, a domain warp of 0.04, seed 21 and 256 px.

The tool reported A seamless 256 × 256 px noise tile with values from 0.001 to 1. The mean was 0.28: most pixels are close to a cell border in edge mode, because F2 − F1 is 0 exactly on a border and only grows towards the cell centres. The largest step across the tile edges was 21 of 255, the largest step inside the tile 26 of 255, so the callout confirmed that the tile repeats without a seam. Because there are twice as many cells horizontally, the cells are stretched vertically on a square texture — useful for long stones or bark.

How to read the result

  • Minimum, mean, maximum: the value range from 0 to 1. Perlin noise rarely reaches the extremes; raise Contrast or use Levels later if you need the full range.
  • Largest step across the tile edges versus inside the tile: a seam would show up as an edge step larger than anything inside. A pattern edge that falls exactly on the border is not a seam, which is why the check compares maxima, not averages.
  • 2 × 2 repeat: four copies side by side. Look for repeated shapes rather than edges — tiling hides seams, not repetition.
  • 16-bit height PNG: the same values with 65536 levels, which avoids terracing when used as displacement.

Tips and common mistakes

  • Cells per tile must be whole numbers; that is what makes the tile periodic. Use different horizontal and vertical counts for stretched features such as wood grain or brushed metal.
  • Octaves double the frequency each time. With 8 octaves at a high scale the finest detail is smaller than a pixel and just adds grain.
  • Turbulence gives billowy clouds and marble veins; Ridged gives sharp crests for mountains and scratches.
  • Seed 0 with Perlin noise uses Ken Perlin's reference permutation, so the values are reproducible with his published code.
  • A small domain warp (0.02–0.06) makes Voronoi cells look hand-made; large values smear the pattern.

FAQ

Is the noise really seamless or just blended at the edges?

Really seamless. The lattice of every octave wraps at the tile border (simplex noise is sampled on a torus in four dimensions), so no blending is applied anywhere.

Why does Perlin noise look gray and flat?

Gradient noise mostly stays between about 0.3 and 0.7 after mapping to 0–1. Increase Contrast or stretch the range with a Levels node in Material Nodes.

What is the difference between F1, F2 and edges?

F1 is the distance to the nearest feature point (round cells), F2 the distance to the second nearest, and F2 − F1 is zero on the border between two cells, which draws the cell outlines.

Can I change the noise after downloading?

Yes. Download the material graph or follow the link to Renderloom Material Nodes, where the noise appears as a node you can keep editing and combine with color, normals and roughness.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://renderloomnoisetexture.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://renderloomnoisetexture.usefulweb.app/mcp · tool name renderloom_noise_texture
Example request
curl -s -X POST https://renderloomnoisetexture.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{}'
Feedback · ideas & bug reports welcome