/procedural-tileable-shaders

Collection of tileable procedural textures such as: cellular noise, fbm, voronoi, perlin and other.

Primary LanguageGLSLMIT LicenseMIT

Tileable procedural textures

Collection of tileable procedural textures:

  • value noise (with derivatives and gradient rotation)
  • gradient noise (with derivatives)
  • perlin noise (with gradient rotation)
  • checkerboard (diagonal)
  • patterns: tile weaves, cross, waves, stairs
  • celullar noise (with derivatives and phase)
  • metaballs (variant of cellular noise)
  • voronoi (edges, cells)
  • fbms (value, perlin, voronoi and derivative)
  • domain warping (fbnm and gradient curl)
  • hexagonal grid and noise variant

Preview

shadertoy

Classic Noise

Random, Value Noise, Value Noise Derivatives and Grid Noise variant

value-noise

Functions: hash3D (from 1D to 4D), noise, noised and gridNoise.

Gradient Noise (Derivatives and configurable Disorder)

gradient-noise

Functions: gradientNoise, gradientNoised and gradientNoiseDisorder.

Perlin Noise (Derivatives and variant)

perlin-noise

Functions: perlinNoise, perlinNoised and organicNoise.

Worley Noise

Cellular Noise (F1 and F2), Metaballs and Cellular Noise Derivatives

cellular-noise

Functions: cellularNoise (F1), cellularNoise (F2), metaballs and cellularNoised.

Cellular Noise metrics (Manhattan, Chebyshev and Triangular)

cellular-noise-metrics

Functions: cellularNoise.

Voronoi (minimum edge distance, Cracks, random pattern and IDs)

preview_voronoi

Functions: voronoi, cracks, voronoiPattern and voronoi (tile position of the cell).

Hexagons Noise

preview_hexagon_noise

Functions: noiseHexagons and noiseHexagonsd.

Patterns

Checkerboard (plus 45 angle), Random Lines and Dots

preview_patterns_0

Functions: checkerboard, checkerboard45, randomLines and dotsNoise.

Metaballs, Line Waves, Stairs and Cross Pattern

preview_patterns_1

Functions: metaballs, wavePattern, stairsPattern and crossPattern.

Tile weaves with normal (Vesica and Capsule)

preview_tile_weaves

Functions: tileWeave.

Tile hexagons (UV, position and edge distance)

preview_hexagon

Functions: tileHexagons and tileHexagonsRadii (utility).

FBM

Value Noise, Perlin Noise, Grid Noise and Metaballs

fbms

Functions: fbm, fbmPerlin (mode == 4u), fbmGrid and fbmMetaballs.

multi-value-fbm

Functions: fbmMulti.

Sloped FBMs with derivatives (Value and Perlin)

fbm-sloped

Functions: fbmd and fbmdPerlin.

Perlin FBMs (Ridge Multiply, Ridge Add, Perlin Multiply and Perlin Add)

fbm-perlin

Functions: fbmPerlin (mode: 0u, 1u, 2u, 3u).

Image FBMs with derivatives (can be used with image inputs, both grayscale and color)

fbm-image

Functions: fbmGrayscaleImaged and fbmImage.

Domain warp

Warping of FBMs (Value noise, Negative Value Noise, Perlin Noise and QR warping)

warp-fbms

Functions: fbmWarp and fbmPerlinWarp.

Q and R factors

The Q and R values of the warp can be used to mix different patterns/colors:

    vec2 q, r;
    float f = fbmWarp(p, scale, factors, octaves, shifts, phase, gain, vec2(lacunarity), slopeness, 0.0, true, 0.0, q, r);
        
    col = mix(vec3(0.1,0.5,0.8), vec3(0.6,0.6,0.3), clamp((f * f) * 8.0, 0.0, 1.0));
    col = mix(col, vec3(0.0, 0.1, 0.05), length(q));
    col = mix(col, vec3(0.8, 0.8, 0.8), r.x);
    col = mix(col, col * vec3(0.8, 0.4, 0.2), 0.5 * pow(length(r), 4.0));

fbm-warp-factors

Warping variants of Perlin Noise (using dervatives and curl)

warp-perlin

Functions: perlinNoiseWarp and curlWarp.

Contributing

Based on:

Bug reports and pull requests are welcome on GitHub at https://github.com/tuxalin/procedural-tileable-shaders.

License

The code is available as open source under the terms of the MIT License.