Noizy is a Unity plugin that adds a visual node-based noise editor powered by FastNoise2.The demo scene is built in URP. Noizy itself, however, works with any render pipeline.💬 Discord 📄 Docs 🌐 Site 📺 VideosStop tuning noise blind through code. Wire nodes together in a dedicated graph editor, watch the result update live, then bake it into an asset you can sample from anywhere at runtime.🧩 Visual Node Editor - Build noise entirely by connecting nodes in a dedicated graph window (Create > Noizy > Noise Graph). No hand-written math, no guessing what a formula does before you hit play.🧩 45+ FastNoise2 Node Types - Every generator, fractal, domain warp, and blend type FastNoise2 offers is available as a node, searchable straight from the graph editor's add-node window.🧩 Live Preview - Every node shows its own live preview, and the output node previews the full combined graph as you build it, so you always see what you're changing. Recolor every preview with your own gradient, saved per graph.🧩 Reusable Subgraphs - Save any chunk of a graph as a Noise Subgraph asset and drop it into as many graphs as you like, the same way Shader Graph handles Sub Graphs. Pick one from the node search or drag it straight from the Project window, and edit it once to update everywhere it's used.🧩 Export To Texture - Bake any graph straight to a Texture2D or Texture3D asset, or out to a PNG/EXR file, coloured through your own gradient. Includes seamless tiling for 2D, so exported textures repeat without visible seams.🧩 Unity Terrain Integration - Drop a NoizyAsset onto a NoizyTerrain component and fill one or many Terrain heightmap tiles automatically, updating live in the editor as you tweak your graph, seed, or height settings.🧩 Bake Once, Sample Anywhere - Design your graph in the editor, bake it into a NoizyAsset, then sample it at runtime with a few simple API calls. Fits terrain generation, procedural textures, particle effects, or any system that needs noise.🧩 Grid, Point, or Batch Sampling - Pull a full 2D/3D grid, a single point for placement checks and biome lookups, or a scattered batch of arbitrary positions, whichever fits the job, without paying for the others.🧩 Multi-Core Grid Generation - A single Evaluate call splits the grid across the job system's worker threads automatically, with no setup. Sizes the work per core so small grids don't pay for scheduling they won't get back.🧩 Thread-Safe By Default - Sample the same asset from multiple threads at once, including background jobs and streaming systems. Each thread gets its own cached compiled tree automatically, no locking code required.🧩 Burst & Job System Native Path - For hot loops that can't leave Burst-compiled code, sample directly inside an IJob/IJobParallelFor through a lightweight native tree handle.🧩 Allocation-Friendly API - Reuse your own buffer across calls instead of allocating every frame, and get the generated min/max back for free, computed during generation, so normalizing never costs you a second pass.🧩 Built-In Benchmark - Measure any graph on your actual hardware, single-threaded against parallel, and see which SIMD instruction set FastNoise2 picked for your CPU.🧩 Editor Built To Last - Undo/redo, copy/paste/duplicate, reroute nodes for cleaner layouts, and autosave with crash/recompile recovery.🧩 Demo Scene & Example Graphs - A runnable scene showing live noise driving a scrolling texture and a displaced terrain mesh, plus ready-made example graphs (Island, Marble, Wood) to pull apart and learn from.🧩 Cross-Platform - Works in-editor and at runtime on Windows, macOS, and Linux, with native FastNoise2 binaries bundled for all three. macOS ships as a universal binary for both Intel and Apple Silicon.Architecture- Graphs are authored in the editor and flattened into a NoizySnapshotBake, which is a serializable list of NoizyNodeEntry objects (id, FastNoise node type name, and parameters) plus an output node id- NoizyGraphAsset is the shared base holding the bake, node layout, reroutes, and preview gradient; NoizyAsset and NoizySubgraph both derive from it- NoizyCompiler rebuilds a live FastNoise node tree from the bake at runtime, resolving node references, expanding subgraphs inline, sharing nodes that feed multiple parents, and detecting cycles in graphs- NoizyAsset is a ScriptableObject that stores the bake and node layout, exposes the public API, and caches one compiled tree per calling thread until the bake changes or the asset is disabled- NoizyEvaluator wraps FastNoise2's GenUniformGrid2D and GenUniformGrid3D calls, splits large grids into slabs across job-system workers, and optionally reuses a caller-supplied buffer to avoid allocations- NoizyTree is the compiled tree itselfRuntime API- float[] Evaluate2D(int2 size, float2 offset, float2 step, int seed, out FastNoise.OutputMinMax range, float[] dest = null, NoizyEvalMode mode = NoizyEvalMode.auto);- float[] Evaluate3D(int3 size, float3 offset, float3 step, int seed, out FastNoise.OutputMinMax range, float[] dest = null, NoizyEvalMode mode = NoizyEvalMode.auto);- float SampleSingle2D(float2 pos, int seed);- float SampleSingle3D(float3 pos, int seed);- float[] EvaluatePositions2D(float[] xPositions, float[] yPositions, float2 offset, int seed, float[] dest = null);- float[] EvaluatePositions3D(float[] xPositions, float[] yPositions, float[] zPositions, float3 offset, int seed, float[] dest = null);- NoizyTree CreateTree(); (for more complex systems, and for sampling from inside Burst-compiled jobs; you own it, so dispose it)- Safe to call from multiple threads at once, including many threads hitting the same asset concurrently- Throws errors if called before the asset has a valid bake- dest lets you reuse an existing array when the size matches to avoid GC pressure- range returns the generated min/max, computed natively during generation, so normalizing costs no extra pass- mode controls threading: auto splits across cores once the grid is worth it, forceParallel and forceSingle override thatDependencies- Unity 6.4 or newer (Has Not been tested back to 6.4 but should work)- FastNoise2 native library (bundled): FastNoise.dll (Windows), libFastNoise.dylib (macOS, universal Intel + Apple Silicon), libFastNoise.so (Linux)- Unity GraphView (UnityEditor.Experimental.GraphView, built into the editor) for the node editor- Unity.Mathematics for int2/int3/float2/float3- Unity.Collections is used by NoizyTree and the parallel slab jobs- Unity.Burst is used by the parallel slab jobs in NoizyJobsAssembly Definitions- Noizy.Core: runtime only, no editor dependencies- Noizy.Editor: editor only, references Noizy.Core- Noizy.Demo: desktop-only sample scriptsPlatform Support- Editor: Windows, macOS, Linux- Runtime evaluation: Windows, macOS, Linux (via native binaries) (Other platforms would need a FastNoise2 build for that target)Data Format- All graph data is stored as serialized files on the NoizyAsset, so no external files are needed. This makes assets portable and diff-able- Subgraph links are stored as both an object reference and an asset GUID, so a graph still resolves its subgraphs if the reference is lost





