bevy_wisp 0.2.1

Interactive WGSL shaders for Bevy - reflected inputs, multi-pass rendering, hot reload.
Documentation
//! Slide `level` to sweep a pulsing bar across the window.

struct Globals {
    resolution: vec2<f32>,
    time: f32,
}
@group(0) @binding(0) var<uniform> globals: Globals;

struct Params {
    /// Horizontal position of the sweep edge.
    /// @min(0.0) @max(1.0) @default(0.5)
    level: f32,
}
@group(1) @binding(0) var<uniform> params: Params;

@fragment
fn fragment(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
    let pulse = 0.6 + 0.4 * sin(globals.time * 2.0);
    let lit = select(0.0, pulse, uv.x < params.level);
    let aspect = globals.resolution.x / max(globals.resolution.y, 1.0);
    let rings = 0.5 + 0.5 * sin(distance(uv * vec2<f32>(aspect, 1.0), vec2<f32>(aspect * 0.5, 0.5)) * 40.0 - globals.time * 4.0);
    return vec4<f32>(lit, lit * rings, rings * 0.4, 1.0);
}