Crate noiz

Crate noiz 

Source
Expand description

§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 versionnoiz version
0.160.1, 0.2
0.170.3
0.180.4

§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.

Modules§

cell_noise
Contains logic for creating noise based on DomainCells.
cells
This contains logic for partitioning a domain into cells.
curves
Contains a variety of curves built to work well with noise.
layering
Contains logic for layering different NoiseFunctions on top of each other.
lengths
Contains definitions for length/distance functions.
math_noise
Contains common math-based NoiseFunctions. These are some of the smallest but most powerful noise functions. Note that some of them have specific requirements for the domain of their inputs. To see some examples of this, see the “show_noise” example.
misc_noise
A grab bag of miscellaneous noise functions that have no better place to be.
prelude
Contains common imports
rng
Defines RNG for noise especially. This does not use the rand crate to enable more control and performance optimizations.

Structs§

Noise
This is the standard Sampleable of a NoiseFunction N. It wraps N with a self contained random number generator and frequency. This currently only supports sampling from VectorSpace types.
RawNoise
This is an alternative to Noise for when scaling an sample location is not desired or is impossible. In general, Noise is easier to use, but this offers more control if desired.

Traits§

DynamicConfigurableSampleable
This is a convenience trait that merges DynamicSampleable, ScalableNoise and SeedableNoise.
DynamicSampleable
A version of Sampleable<I, Result=T> that is dyn-compatible. Generally, noize uses exact types whenever possible to enable more inlining and optimizations, but this trait focuses instead on usability at the expense of speed.
NoiseFunction
Represents a simple noise function with an input I and an output.
Sampleable
Indicates that this noise is samplable by type I.
SampleableFor
Indicates that this noise is samplable by type I for type T. See also Sampleable.
ScalableNoise
Specifies that this noise is scalable.
SeedableNoise
Specifies that this noise is seedable.