7 releases (breaking)

0.7.0 Jul 10, 2024
0.6.0 Feb 23, 2024
0.5.0 Nov 6, 2023
0.4.0 Jul 13, 2023
0.1.0 Oct 25, 2022

#425 in Game dev

Download history 115/week @ 2024-07-20 160/week @ 2024-07-27 79/week @ 2024-08-03 86/week @ 2024-08-10 55/week @ 2024-08-17 65/week @ 2024-08-24 92/week @ 2024-08-31 90/week @ 2024-09-07 148/week @ 2024-09-14 201/week @ 2024-09-21 143/week @ 2024-09-28 58/week @ 2024-10-05 120/week @ 2024-10-12 79/week @ 2024-10-19 104/week @ 2024-10-26 108/week @ 2024-11-02

413 downloads per month
Used in 2 crates

MIT license

91KB
285 lines

noisy_bevy

crates.io MIT docs.rs

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

Main motivations are:

  • ergonomic usage with Bevy
  • same results on rust and wgsl (not bit-level perfect, though)

screenshot of an asteroid generated on the gpu and cpu

Implemented noise primitives:

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)

And import it and use it in your shaders, with the same API as on the CPU-side:

#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.14 0.7, main
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!

Dependencies

~36–73MB
~1.5M SLoC