Plugin Documentation

NoiseKit
Modular noise graphs for Blueprints and C++

Build coherent noise from small, combinable modules — value, gradient, simplex, cellular and white noise with fractal layering — then select, blend, add, warp, mask and shape the result, and sample any module in 2D or 3D.

v1.0
UE 4.27 & 5.8
Win64 (verified)
Category Procedural
Alpha XP

Overview

NoiseKit generates procedural noise for terrain, foliage scattering, textures, level layouts and any other gameplay that needs smooth pseudo-random values. You create a core noise generator, combine generators with modules, and sample the final module with Get Noise 2D or Get Noise 3D. Every factory is a Blueprint node, and the same classes are available from C++.

  • Core generator with eight noise types: Value, Gradient and Simplex (each with a fractal variant), Cellular and White noise.
  • Fractal layering (FBM, Billow, Rigid Multi) with octaves, lacunarity and gain; Linear, Hermite or Quintic interpolation.
  • Cellular (Voronoi) noise with Euclidean, Manhattan or Natural distance and eight return types.
  • Select, 3-way select, blend (with an optional float curve) and masked add modules to mix generators.
  • Scale/bias, constant, one- or two-pass domain warp, radial and shore-filter modules to shape results.
  • Spline distance generator that turns spline components into a distance field (roads, rivers, paths).
  • One sampling interface for 2D and 3D on every module; pure C++ runtime module with no prebuilt binaries.

Requirements

RequirementDetails
Unreal Engine4.27 and 5.8 (verified clean on both)
ModulesNoiseKitFastNoise (Runtime, under Source/ThirdParty: the core generator, its enums and the module base class) and NoiseKit (Runtime: modules, factory nodes)
DependenciesNone (uses only the engine modules Core, CoreUObject, Engine and InputCore)
LanguageBlueprints and C++
PlatformsNo platform restriction in the plugin descriptor. Win64 is verified by Alpha XP; other platforms are supported by the code, not verified by Alpha XP.

Installation

  1. Close the editor and copy the NoiseKit folder into your project's Plugins/ folder (create it if needed), or install the plugin from Fab into your engine.
  2. Open the project. For a C++ project, let the editor rebuild the plugin module when prompted, or build the project from your IDE.
  3. Enable NoiseKit in Edit > Plugins (search for “NoiseKit”) and restart the editor.
  4. C++ only: add "NoiseKit" to PublicDependencyModuleNames in your module's .Build.cs. NoiseKit depends publicly on NoiseKitFastNoise, so its headers (NoiseKitCoreNoise.h, NoiseKitNoiseGenerator.h, NoiseKitFastNoiseTypes.h) are available automatically.
Verifying the install In any Blueprint graph, search for Create Noise Generator; it appears under the NoiseKit category.

Quick start

Blueprint

  1. In an actor's Begin Play, add Create Fractal Noise Generator (category NoiseKit), choose Simplex, a seed and a frequency.
  2. Promote the return value to a variable. The result is a UObject; an unreferenced object is garbage collected.
  3. Call Get Noise 2D on the variable with world X and Y to get a value (typically between -1 and 1).
  4. Create a second generator and a control generator, combine them with Create Select Module, and sample the select module instead.

C++

#include "NoiseKitBlueprintFunctionLibrary.h"

// In your actor's header: keep the graph referenced so it is not garbage collected.
// UPROPERTY() UNoiseKitNoiseGenerator* Terrain = nullptr;

void AMyTerrainActor::BuildNoise()
{
    UNoiseKitNoiseGenerator* Hills = UNoiseKitBlueprintFunctionLibrary::CreateFractalNoiseGenerator(
        this, ENoiseKitFractalNoiseType::FractalSimplex, /*seed*/ 42, /*frequency*/ 0.002f);

    UNoiseKitNoiseGenerator* Mountains = UNoiseKitBlueprintFunctionLibrary::CreateFractalNoiseGenerator(
        this, ENoiseKitFractalNoiseType::FractalGradient, 7, 0.001f, 0.5f,
        ENoiseKitInterp::InterpQuintic, ENoiseKitFractalType::RigidMulti, /*octaves*/ 5);

    UNoiseKitNoiseGenerator* Mask = UNoiseKitBlueprintFunctionLibrary::CreateCellularNoiseGenerator(this, 3, 0.0005f);

    Terrain = UNoiseKitBlueprintFunctionLibrary::CreateSelectModule(
        this, Mountains, Hills, Mask, ENoiseKitSelectInterpType::SineInOut, /*falloff*/ 0.2f, /*threshold*/ 0.0f);

    const float Height = Terrain->GetNoise2D(1200.f, -350.f);
    UE_LOG(LogTemp, Log, TEXT("Height: %f"), Height);
}

Factory nodes

Static, pure nodes in the NoiseKit category. Each returns a UNoiseKitNoiseGenerator; the hidden Outer pin defaults to the calling object. Combination nodes return None when a required input module is missing.

NodeTypeDescription
Create Noise GeneratorPureFull core generator: noise type, cellular distance function and return type, fractal type, interpolation, seed (1337), octaves (4), frequency (0.001), lacunarity (2.0) and fractal gain (0.5).
Create Simple Noise GeneratorPureValue, Gradient, Simplex or White noise without fractal layers. Seed (12345), frequency (0.1), interpolation (Linear).
Create Fractal Noise GeneratorPureValue, Gradient or Simplex noise with FBM, Billow or Rigid Multi fractal layering; gain, octaves and lacunarity.
Create Cellular Noise GeneratorPureCellular (Voronoi) noise with a distance function (Euclidean, Manhattan, Natural) and a return type.
Create Select ModulePureReturns Input Module 1 or 2 depending on whether the Select Module value is above the threshold; optional interpolated falloff (circular, exponential, sine, step, linear).
Create 3Select ModulePureReturns Input Module 1, 2 or 3 depending on the Select Module value against the upper and lower thresholds.
Create Blend ModulePureLerps between two inputs using the Select Module value (mapped from -1..1 to 0..1), optionally reshaped by a float curve.
Create Add ModulePureAdds two inputs; with an optional Mask Module the sum is scaled by the mask where the mask is at or above the threshold, otherwise Input Module 1 is returned.
Create Scale Bias ModulePureMultiplies the input by Scale and adds Bias.
Create Warp ModulePureDomain-warps the input module using a warp module, with one or two warp iterations and a multiplier.
Create Constant ModulePureReturns a constant value everywhere.
Create Radial ModulePureSwitches between two inputs by distance from an origin and radius, with optional interpolated falloff.
Create Shore Filter ModulePureFlattens 2D values that fall within a threshold around a shore height (2D only).
Create Spline GeneratorPureDistance field from an array of spline components between a minimum and maximum distance, optionally reshaped by a float curve.

Sampling

Functions on every NoiseKit object.

NodeTypeDescription
Get Noise 2DCallableSamples the module at X, Y. Call it on the last module of your graph.
Get Noise 3DCallableSamples the module at X, Y, Z. The shore filter module is 2D-only and returns -1 here.
Add SplineCallableSpline generator only: adds a spline component to the distance field.

Classes

ClassTypeDescription
UNoiseKitNoiseGeneratorClassBase class of every module; returned by all factory nodes. Implements Get Noise 2D / Get Noise 3D. Module NoiseKitFastNoise.
UNoiseKitCoreNoiseClassCore generator created by the Create * Noise Generator nodes. Module NoiseKitFastNoise.
UNoiseKitSelectModule / UNoiseKit3SelectModule / UNoiseKitBlendModule / UNoiseKitAddModuleClassCombination modules.
UNoiseKitScaleBiasModule / UNoiseKitWarpModule / UNoiseKitConstantModuleClassShaping modules.
UNoiseKitRadialModule / UNoiseKitShoreFilterModule / UNoiseKitSplineGeneratorClassSpatial modules.
UNoiseKitBlueprintFunctionLibraryClassStatic factory functions behind the Create nodes.

Enums

EnumTypeValues
ENoiseKitNoiseTypeEnumValue, Value Fractal, Gradient, Gradient Fractal, Simplex, Simplex Fractal, Cellular, White Noise.
ENoiseKitSimpleNoiseTypeEnumValue, Gradient, Simplex, White Noise.
ENoiseKitFractalNoiseTypeEnumValue, Gradient, Simplex.
ENoiseKitFractalTypeEnumFBM, Billow, Rigid Multi.
ENoiseKitInterpEnumLinear, Hermite, Quintic.
ENoiseKitCellularDistanceFunctionEnumEuclidean, Manhattan, Natural.
ENoiseKitCellularReturnTypeEnumCell Value, Noise Lookup, Distance, Distance 2, Distance 2 Add, Distance 2 Sub, Distance 2 Mul, Distance 2 Div.
ENoiseKitPositionWarpTypeEnumNone, Regular, Fractal.
ENoiseKitSelectInterpTypeEnumNone, Circular In/Out/In Out, Exponential In/Out/In Out, Sine In/Out/In Out, Step, Linear.
ENoiseKitWarpIterationsEnumOne, Two.

C++ core generator API

Additional functions on UNoiseKitCoreNoise (C++ only). Cast a generator returned by the core factories to UNoiseKitCoreNoise to tune it after creation.

FunctionTypeDescription
SetSeed / GetSeedC++Seed used by every noise type (default 1337).
SetFrequencyC++Frequency for all noise types (default 0.01 on a directly constructed object; the factory nodes pass their own).
SetNoiseTypeC++Selects the ENoiseKitNoiseType returned by Get Noise 2D / 3D.
SetInterpC++Linear, Hermite or Quintic smoothing for value and gradient noise and position warping.
SetFractalOctaves / SetFractalLacunarity / SetFractalGain / SetFractalTypeC++Fractal layering parameters.
SetCellularDistanceFunction / SetCellularReturnTypeC++Cellular noise distance metric and output.
SetCellularNoiseLookupC++Generator sampled per cell when the cellular return type is Noise Lookup (C++ only).
SetPositionWarpAmp / SetPositionWarpTypeC++Built-in position warping (None, Regular, Fractal) applied by Get Noise 2D / 3D.
GetNoise2DDerivC++Returns the 2D value plus its analytic X/Y derivative as an FVector.
GetValue / GetGradient / GetSimplex / GetCellular / GetWhiteNoiseC++Direct access to individual noise functions (2D and 3D overloads; 4D for simplex and white noise).

Troubleshooting

SymptomCause and fix
A combination node returns NoneSelect, 3 Select, Blend, Add, Scale Bias, Warp, Radial and Shore Filter need their input modules (and an outer object). Connect every required input before calling the node.
The noise stops working after a whileGenerators are UObjects. Store the result in a variable (Blueprint) or a UPROPERTY() member (C++) so the garbage collector keeps it.
The output looks flat or like staticFrequency is too low or too high for your coordinate scale (Unreal units are centimetres). Create Noise Generator defaults to 0.001, the simple, fractal and cellular nodes to 0.1.
Assertion or crash when the cellular return type is Noise LookupNoise Lookup needs a lookup generator assigned in C++ with SetCellularNoiseLookup. In Blueprint use one of the other return types.
Shore filter returns -1The shore filter only works in 2D. Sample it with Get Noise 2D.
Spline generator returns 1 everywhereNo spline is registered or all points are beyond the maximum distance. Pass splines to Create Spline Generator or call Add Spline.
Same seed gives slightly different noise on another platformThe seed permutation uses the platform's C++ standard library random distribution. Results are stable on one platform and compiler.

Credits

© 2026 Alpha XP — alphaxp.net · Support: support@alphaxp.net. Built and verified for Unreal Engine 4.27 and 5.8.