Description
Changelog
Reviews (1)

Noise4D

A GDExtension that adds a 4-dimensional noise generator (x, y, z, w) to Godot 4, in the spirit of Blender's noise textures. Godot's built-in FastNoiseLite only goes up to 3D; the fourth axis is what lets you do seamlessly looping animated noise, smoothly evolving 2D/3D fields, and perfectly tileable textures.

Three noise types — Perlin (fractal), Value, and Voronoi/Cellular — with per-axis scale & offset, fractal controls, and an optional color ramp.

Two classes are registered:

  • Noise4D (Resource) — the generator. Sample it directly or bake images.
  • Noise4DTexture2D (Texture2D) — drop it into any Sprite2D / TextureRect / material slot and assign a Noise4D, exactly like FastNoiseLite inside a NoiseTexture2D. Live preview in the inspector; regenerates as you edit.

Why 4D?

  • Perfect tiling. get_seamless_image() wraps the X and Y axes onto two circles embedded in 4D (a torus), so opposite edges are literally the same samples — no blend/skirt seams, ever.
  • Seamless loops & evolving fields. Animate offset.w for endlessly morphing clouds/fire/water, or sample a circle in (z, w) for an animation that loops with no visible seam.

Using it

In the editor

  1. Add a Sprite2D (or TextureRect, Button icon, MeshInstance material…).
  2. On its Texture, create a New Noise4DTexture2D.
  3. Expand it, set Noise to a New Noise4D, and tweak frequency, octaves, roughness, … — the preview updates live.
  4. Toggle Seamless for a perfectly tileable texture, drop a Gradient into Color Ramp to colorize, or animate the noise's offset.w from a script to evolve the texture over time.

From code

var noise := Noise4D.new()
noise.noise_type = Noise4D.TYPE_VORONOI   # or TYPE_PERLIN / TYPE_VALUE
noise.frequency = 0.03

var tex := Noise4DTexture2D.new()
tex.width = 256
tex.height = 256
tex.seamless = true
tex.noise = noise
$Sprite2D.texture = tex

func _process(delta):
    var o := noise.offset
    o.w += delta
    noise.offset = o   # texture auto-regenerates

Or bake an Image yourself (for MeshInstance3D materials, heightmaps, …):

var img := noise.get_image(512, 512)
var seam := noise.get_seamless_image(512, 512)

Parameters

seed, noise_type (Perlin/Value/Voronoi), frequency, scale (Vector4), offset (Vector4), octaves, roughness, lacunarity, distortion, plus Voronoi-specific voronoi_feature (F1/F2/F2-F1 edges/Cell), voronoi_distance (Euclidean/Manhattan/Chebyshev), and voronoi_randomness.

How it works

  • Perlin: classic Ken Perlin "improved noise" in 4D — 16 lattice corners, a 32-entry 4D gradient table, quintic fade, quadrilinear interpolation.
  • Value: quadrilinear interpolation of per-cell random values (softer/cheaper).
  • Voronoi/Cellular: one jittered feature point per cell; nearest two points searched across neighbouring cells for F1/F2.
  • Fractal (fBm): octaves summed with roughness/lacunarity, normalized to [-1,1]; fractional octaves cross-fades the partial layer for smooth animation (matches Blender).

Installation

Copy addons/noise4d/ into your project, restart the editor, and the Noise4D / Noise4DTexture2D classes are available everywhere — no autoload needed. Prebuilt libraries included for Windows, Linux (x86_64/arm64), macOS (universal).

License

MIT.

Changelog for version v0.1.2

No changelog provided for this version.

Reviews

Recommended by shanayyy - 17 August 2026

It would be nice if there were an Inspector preview, like the built-in noise texture.

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.