Skip to content

Noise Generation Algorithms #1

@aschaeffer

Description

@aschaeffer

Goal

Provide noise functions

Use cases

  • Textures
  • Terrain Generation
  • Procedural Animation
  • Patterns
  • Organic Behaviors (for example particles)
  • Bot movement

Noise Algorithms

Perlin Noise

A widely used gradient noise algorithm known for producing smooth, organic-looking patterns.

Simplex Noise

A more efficient version of Perlin noise, often used for similar applications.

Voronoi (Worley) Noise

Creates patterns that resemble animal cells or ice crystals.

Fractional Brownian motion (FBM)

A technique that layers multiple octaves of noise together to create more complex and detailed output.

Potential Crate

Noise-rs - Procedural Noise Generation library for Rust

Noise Algorithm Description
Perlin Noise function that outputs 1/2/3/4-dimensional Perlin noise.
Simplex Noise function that outputs N-dimensional Simplex noise.
Fbm Noise function that outputs fBm (fractal Brownian motion) noise.

fBm is a monofractal method. In essence, fBm has a constant fractal dimension. It is as close to statistically homogeneous and isotropic as possible. Homogeneous means “the same everywhere” and isotropic means “the same in all directions” (note that the two do not mean the same thing).

The main difference between fractal Brownian motion and regular Brownian motion is that while the increments in Brownian motion are independent, the increments in fractal Brownian motion depend on the previous increment.

fBm is the result of several noise functions of ever-increasing frequency and ever-decreasing amplitude.

fBm is commonly referred to as Perlin noise.
Worley Noise function that outputs Worley noise.
Billow Noise function that outputs “billowy” noise.

This noise function produces “billowy” noise suitable for clouds and rocks.

This noise function is nearly identical to fBm noise, except this noise function modifies each octave with an absolute-value function. See the documentation for fBm for more information.
... and more

Type System

  • reactive_graph::math::noise::PerlinNoise
  • reactive_graph::math::noise::SimplexNoise
  • reactive_graph::math::noise::VoronoiNoise
  • reactive_graph::math::noise::FractalBrownianMotion

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions