noisy_bevy

Crates.ionoisy_bevy
lib.rsnoisy_bevy
version0.13.0
created_at2022-10-25 18:36:18.775797+00
updated_at2026-01-22 09:34:36.742156+00
descriptionProcedural noise primitives for Bevy
homepage
repositoryhttps://github.com/johanhelsing/noisy_bevy
max_upload_size
id697126
size717,241
Johan Klokkhammer Helsing (johanhelsing)

documentation

README

noisy_bevy

crates.io MIT docs.rs

Simple stupid noise primitives for glam (Vec2, Vec3) and WGSL.

  • Integrates with Bevy seamlessly
  • Same results on the CPU and GPU (not bit-level perfect, though)

Features

  • [simplex_noise_2d]
  • [simplex_noise_2d_seeded]
  • [simplex_noise_3d]
  • [simplex_noise_3d_seeded]
  • [fbm_simplex_2d]
  • [fbm_simplex_2d_seeded]
  • [fbm_simplex_3d]
  • [fbm_simplex_3d_seeded]
  • [worley_2d]

screenshot of an asteroid generated on the gpu and cpu

Usage

From Rust

Zero initialization, just call the noise functions:

use bevy::prelude::*;
use noisy_bevy::simplex_noise_2d;

let p = Vec2::new(12.3, 45.6);
let value = simplex_noise_2d(p);

From WGSL shaders

First add the plugin to the Bevy app:

App::new()
    .add_plugins(NoisyShaderPlugin)

Then use it in your shaders:

#import noisy_bevy::simplex_noise_2d

// ...

let p = vec2(12.3, 45.6);
let value = simplex_noise_2d(p);

See the asteroids example, for an example that uses noise to procedurally generate a tilemap on the CPU and a matching background in a wgsl shader.

Bevy Version Support

The main branch targets the latest bevy release.

bevy noisy_bevy
0.18 0.13, main
0.17 0.11
0.16 0.9, 0.10
0.15 0.8
0.14 0.7
0.13 0.6
0.12 0.5
0.11 0.4
0.10 0.3
0.9 0.2
0.8 0.1

License

MIT

The original simplex noise source is MIT-only, however all changes made by me or PRs to this repo are also available under Apache-2.0.

Acknowledgments

The noise primitives are ports/copies of these

Contributions

PRs welcome!

Commit count: 128

cargo fmt