From defc5f0712734f5decf5b7e174598d256cd6feb3 Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Fri, 21 Aug 2026 23:45:22 -0700 Subject: better explosions --- src/shader/particle.wgsl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/shader/particle.wgsl') diff --git a/src/shader/particle.wgsl b/src/shader/particle.wgsl index 704cfbe..3dd61a9 100644 --- a/src/shader/particle.wgsl +++ b/src/shader/particle.wgsl @@ -6,6 +6,7 @@ struct Camera { struct Particle { position: vec2f, data: u32, + life: f32, }; @group(0) @binding(0) var camera: Camera; @@ -16,6 +17,8 @@ struct VertexOutput { @builtin(position) clip_position: vec4, @location(0) world: vec2, @location(1) @interpolate(flat) instance: u32, + @location(2) @interpolate(flat) material: u32, + @location(3) @interpolate(flat) life: f32, }; @vertex @@ -33,6 +36,8 @@ fn vs_main( out.clip_position = vec4f((world - camera.centre) * camera.scale, 0.0, 1.0); out.world = world; out.instance = n; + out.material = particle.data & 0xFF; + out.life = particle.life; return out; } @@ -41,6 +46,6 @@ fn vs_main( fn fs_main(in: VertexOutput) -> @location(0) vec4 { let particle = particles[in.instance]; // TODO can pack more in here and shift - let c = palette[particle.data]; - return c; + let c = palette[in.material]; + return vec4(c.r, c.g, c.b, c.a * smoothstep(0.0, 1, in.life)); } -- cgit v1.3.1