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 aNoise4D, exactly likeFastNoiseLiteinside aNoiseTexture2D. 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.wfor 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
- Add a
Sprite2D(orTextureRect,Buttonicon,MeshInstancematerial…). - On its Texture, create a New Noise4DTexture2D.
- Expand it, set Noise to a New Noise4D, and tweak
frequency,octaves,roughness, … — the preview updates live. - Toggle Seamless for a perfectly tileable texture, drop a Gradient into Color Ramp to colorize, or animate the noise's
offset.wfrom 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]; fractionaloctavescross-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.