MCPcopy Index your code
hub / github.com/ElliottjPierce/noiz

github.com/ElliottjPierce/noiz @v0.5.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.5.0 ↗ · + Follow
270 symbols 450 edges 19 files 46 documented · 17%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Noiz

License Crates.io Docs.io

A simple, configurable, blazingly fast noise library built for and with Bevy. See the book for a taste.

Noiz is: - Simple - Extendable - Blazingly fast (meant for realtime use) - Easy to use in Bevy - Built in pure rust - Consistent between platforms (with a feature flag) - Serializable - Reflectable - Readable - Under development (as I have time and features are requested) - Free and open source forever (feel free to open issues and prs!) - No Std compatible

Noiz is not: - Spelled correctly (noise was already taken) - Mathematically precise (only supports f32 types for now) - Fully optimized yet (algebraic float math is not stable in rust yet) - Meant to replace art tools for asset generation - Meant to be standalone (you'll want to also depend on either bevy_math or bevy.)

Bevy version noiz version
0.16 0.1, 0.2
0.17 0.3
0.18 0.4
0.19 0.5

What Makes Noiz Unique?

  • Noiz is powered by a custom random number generator built on a hash function instead of the traditional permutation table. This gives competitive performance while using less memory and reducing tiling artifacts.
  • Noiz seamlessly integrates with Bevy!
  • Noiz changes seed automatically between octaves (which prevents some artifacting common in other libraries).
  • Noiz is endlessly cusomizable. Really, the combinations and settings are limitless!
  • Noiz is no_std.
  • Noiz supports all your favorite noise types. If you see one that's missing, please open an issue!
  • Noiz supports noise derivatives and gradiesnts, allowing fast erosion approximations, analytical normals, etc.
  • Noiz supports many noise types that other libraries do not, for example, distance-to-edge worly noise and smooth worly noise.
  • Noiz has good documentation and a book.
  • Noiz is faster than many other libraries (see the book for benchmarks).

For a Quick Start, Check Out the Book!

In addition to rust docs, Noiz has a book available here. This explains how to use Noiz in practice with much more detail than the API reference. Also see the interactive examples for inspiration.

Extension points exported contracts — how you extend this code

DomainCell (Interface)
Represents a portion or cell of some larger domain and a position within that cell. For example, on a cartesian grid, t [16 …
src/cells.rs
NoiseFunction (Interface)
Represents a simple noise function with an input `I` and an output. This is the powerhouse of this library. This just r [56 …
src/lib.rs
NoiseRngInput (Interface)
Represents something that can be used as an input to [`NoiseRng`]'s randomizers. [7 implementers]
src/rng.rs
WorleyMode (Interface)
Represents a way to compute worley noise, noise based on the distances of [`CellPoint`](crate::cells::CellPoint)s to the [8 …
src/cell_noise.rs
ElementalVectorSpace (Interface)
Represents a [`VectorSpace`] with a known dimension. [4 implementers]
src/lengths.rs
LayerOperation (Interface)
An operation that contributes to some noise result. `R` represents how the result is collected, and `W` represents how e [4 …
src/layering.rs
SmoothMin (Interface)
Represents a way to smoothly take the minimum between two numbers. This is useful for a variety of math, but is intended [1 …
src/curves.rs
Partitioner (Interface)
Represents a type that can partition some domain `T` into [`DomainCell`]s. [9 implementers]
src/cells.rs

Core symbols most depended-on inside this repo

point_at_offset
called by 56
src/cells.rs
rand_u32
called by 20
src/rng.rs
corners_map
called by 16
src/cells.rs
re_seed
called by 15
src/rng.rs
partition
called by 14
src/cells.rs
sample
called by 14
src/lib.rs
any_value
called by 13
src/rng.rs
sample_unchecked
called by 11
src/curves.rs

Shape

Class 101
Method 88
Function 44
Interface 36
Enum 1

Languages

Rust100%

Modules by API surface

src/cell_noise.rs52 symbols
src/layering.rs40 symbols
src/cells.rs37 symbols
src/rng.rs28 symbols
src/lib.rs23 symbols
src/math_noise.rs20 symbols
src/misc_noise.rs16 symbols
src/lengths.rs11 symbols
src/curves.rs11 symbols
examples/show_gradients.rs10 symbols
examples/show_noise.rs8 symbols
examples/heightmap.rs5 symbols

For agents

$ claude mcp add noiz \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page