From a779011b9048cdda04887c77e20ee8936f332a7a Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Tue, 25 Aug 2026 00:32:16 -0700 Subject: vfx pipeline --- src/shader/particle.wgsl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/shader/particle.wgsl') diff --git a/src/shader/particle.wgsl b/src/shader/particle.wgsl index 3dd61a9..227468b 100644 --- a/src/shader/particle.wgsl +++ b/src/shader/particle.wgsl @@ -14,8 +14,8 @@ struct Particle { @group(0) @binding(2) var particles: array; struct VertexOutput { - @builtin(position) clip_position: vec4, - @location(0) world: vec2, + @builtin(position) clip_position: vec4f, + @location(0) world: vec2f, @location(1) @interpolate(flat) instance: u32, @location(2) @interpolate(flat) material: u32, @location(3) @interpolate(flat) life: f32, @@ -29,7 +29,7 @@ fn vs_main( let particle = particles[n]; // (0,0),(1,0),(0,1),(1,1) - let corner = vec2(f32(i & 1u), f32((i >> 1u) & 1u)); + let corner = vec2f(f32(i & 1u), f32((i >> 1u) & 1u)); let world = particle.position + corner; var out: VertexOutput; @@ -43,9 +43,10 @@ fn vs_main( } @fragment -fn fs_main(in: VertexOutput) -> @location(0) vec4 { +fn fs_main(in: VertexOutput) -> @location(0) vec4f { let particle = particles[in.instance]; // TODO can pack more in here and shift let c = palette[in.material]; - return vec4(c.r, c.g, c.b, c.a * smoothstep(0.0, 1, in.life)); + // if life is less than 1, smoothly reduce alpha to 0 + return vec4f(c.r, c.g, c.b, c.a * smoothstep(0.0, 1, in.life)); } -- cgit v1.3.1