bevy_compute_noise

Crates.iobevy_compute_noise
lib.rsbevy_compute_noise
version0.4.0
created_at2024-05-29 11:48:51.008305+00
updated_at2025-01-10 01:39:10.888375+00
descriptionA Bevy plugin for generating tilable 2D/3D noise textures using compute shaders
homepage
repositoryhttps://github.com/jadedbay/bevy_compute_noise
max_upload_size
id1255324
size161,879
(jadedbay)

documentation

https://docs.rs/bevy_compute_noise/latest/bevy_compute_noise/

README

bevy_compute_noise

crates.io Doc

A plugin for bevy 0.15 for generating tilable 2D/3D noise textures using compute shaders.

Check out a demo of the plugin here: https://jadedbay.com/demo/bevy_compute_noise (This demo currently uses v0.1.0)

bevy_compute_noise

Usage

Add the bevy_compute_noise dependency to Cargo.toml:

[dependencies]
bevy_compute_noise = "0.4.0"

Add Noise Plugin

use bevy_compute_noise::prelude::*;

App::default()
    .add_plugins(DefaultPlugins)
    .add_plugins(ComputeNoisePlugin) // Add compute noise plugin
    .run();

Write Noise to Image

fn setup(
    mut images: ResMut<Assets<Image>>,
    mut noise_queue: ResMut<ComputeNoiseQueue>
) {
    // Create image 
    let image = ComputeNoiseImage::create_image(ComputeNoiseSize::D2(512, 512));

    // Queue noise to be written to image
    noise_queue.write(
        image
        Perlin {
            seed: 0,
            frequency: 5.0,
            flags: (PerlinFlags::default() | PerlinFlags::TILEABLE).bits()
        }
    );
}

Noise Types

  • Perlin
  • Worley

FBM is available for all noise types, use Fbm<T: ComputeNoiseType>.

TODO

  • Add more noise types.
  • Allow combination of noise.
  • Allow writing into specific texture channels.

Version Compatibility

bevy_compute_noise Bevy
0.3, 0.4 0.15
0.2 0.14
0.1 0.13
Commit count: 102

cargo fmt