time_travel/assets/shaders/flow.wgsl
Mitchell M db5946a7de add a shader for a newline track
Co-authored-by: Copilot <copilot@github.com>
2026-05-02 22:38:12 -05:00

30 lines
648 B
WebGPU Shading Language

struct Material {
color_a: vec4<f32>,
color_b: vec4<f32>,
border_color: vec4<f32>,
time: f32,
speed: f32,
border_size: f32,
};
@group(2) @binding(0)
var<uniform> mat: Material;
@fragment
fn fragment(in: VertexOutput) -> @location(0) vec4<f32> {
let uv = in.uv;
// animate
let x = uv.x + params.time * params.speed;
let g = fract(x);
let fill = mix(params.color_a, params.color_b, g);
// borders
let top = step(uv.y, params.border_size);
let bottom = step(1.0 - params.border_size, uv.y);
let border_mask = max(top, bottom);
return mix(fill, params.border_color, border_mask);
}