// Flash shader for visual sync testing // Pulses white on beat #include "sequence_uniforms" @group(0) @binding(2) var uniforms: UniformsSequenceParams; struct VertexOutput { @builtin(position) position: vec4, @location(0) uv: vec2, }; @vertex fn vs_main(@builtin(vertex_index) vid: u32) -> VertexOutput { var out: VertexOutput; let x = f32((vid & 1u) << 1u); let y = f32((vid & 2u)); out.position = vec4(x * 2.0 - 1.0, 1.0 - y * 2.0, 0.0, 1.0); out.uv = vec2(x, y); return out; } @fragment fn fs_main(in: VertexOutput) -> @location(0) vec4 { // Strong flash on beat, fades quickly let intensity = pow(1.0 - uniforms.beat_phase, 4.0); // Add audio intensity for extra punch let final_intensity = intensity * (1.0 + uniforms.audio_intensity * 0.5); return vec4(final_intensity, final_intensity, final_intensity, 1.0); }