From c79ebff06ae74135c5f67ecc01d5bb55aeb5eda9 Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 16 Feb 2026 17:04:41 +0100 Subject: fix: calculate beat_phase for FlashEffect and refactor uniforms - seq_compiler.py: Calculate beat_phase from beat_time (was hardcoded 0.0f) - Refactor: Replace CommonPostProcessUniforms with UniformsSequenceParams - Remove duplicate struct definition in post_process_helper.h - Update all CNN effects and tests to use unified uniform struct - Fixes FlashEffect showing solid white instead of flashing to beat Co-Authored-By: Claude Sonnet 4.5 --- src/gpu/post_process_helper.h | 14 ++------------ src/gpu/sdf_effect.h | 2 +- 2 files changed, 3 insertions(+), 13 deletions(-) (limited to 'src/gpu') diff --git a/src/gpu/post_process_helper.h b/src/gpu/post_process_helper.h index 33ef20b..963f671 100644 --- a/src/gpu/post_process_helper.h +++ b/src/gpu/post_process_helper.h @@ -4,20 +4,10 @@ #pragma once #include "gpu/gpu.h" +#include "gpu/sequence.h" #include "util/mini_math.h" -// Uniform data common to all post-processing effects -struct CommonPostProcessUniforms { - vec2 resolution; // Screen dimensions - float aspect_ratio; // Width/height ratio - float time; // Physical time in seconds (unaffected by tempo) - float beat_time; // Musical time in beats (absolute, tempo-scaled) - float beat_phase; // Fractional beat (0.0-1.0 within current beat) - float audio_intensity; // Audio peak for beat sync - float _pad; // Padding for 16-byte alignment -}; -static_assert(sizeof(CommonPostProcessUniforms) == 32, - "CommonPostProcessUniforms must be 32 bytes for WGSL alignment"); +// Use UniformsSequenceParams (defined in sequence.h) for post-process effects // Standard post-process bind group layout (group 0): #define PP_BINDING_SAMPLER 0 // Sampler for input texture diff --git a/src/gpu/sdf_effect.h b/src/gpu/sdf_effect.h index 4f23604..aacea69 100644 --- a/src/gpu/sdf_effect.h +++ b/src/gpu/sdf_effect.h @@ -12,7 +12,7 @@ // Provides CameraParams uniform buffer and helper methods // // Binding convention: -// @group(0) @binding(2): CommonPostProcessUniforms (from Effect base) +// @group(0) @binding(2): UniformsSequenceParams (from Effect base) // @group(0) @binding(3): CameraParams // @group(0) @binding(4+): Per-effect custom parameters class SDFEffect : public Effect { -- cgit v1.2.3