bevy_feronia 0.8.2

Foliage/grass scattering tools and wind simulation shaders/materials that prioritize visual fidelity/artistic freedom, a declarative api and modularity.
Documentation
use crate::prelude::*;

use crate::core::events::SpawnScatterAssets;
use bevy_app::{App, Plugin};
use bevy_asset::embedded_asset;
use bevy_eidolon::prelude::*;
use bevy_shader::load_shader_library;

pub struct InstancedWindAffectedPlugin;

impl Plugin for InstancedWindAffectedPlugin {
    fn build(&self, app: &mut App) {
        load_shader_library!(app, "material.wgsl");
        load_shader_library!(app, "bindings.wgsl");
        embedded_asset!(app, "instanced.wgsl");
        embedded_asset!(app, "prepass.wgsl");

        app.add_plugins((
            InstancedMaterialCorePlugin,
            InstancedMaterialPlugin::<InstancedWindAffectedMaterial>::default(),
        ))
        .add_message::<SpawnScatterAssets<InstancedWindAffectedMaterial>>()
        .add_plugins(ScatterMaterialPlugin::<InstancedWindAffectedMaterial>::default());
    }
}

pub struct InstancedWindAffectedScatterPlugin;

impl Plugin for InstancedWindAffectedScatterPlugin {
    fn build(&self, app: &mut App) {
        app.add_plugins((
            InstancedWindAffectedPlugin,
            ScatterAssetRequestPlugin::<InstancedWindAffectedMaterial>::new(),
            ScatterAssetPlugin::<InstancedWindAffectedMaterial>::new(),
        ));
    }
}