summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-16 17:04:41 +0100
committerskal <pascal.massimino@gmail.com>2026-02-16 17:04:41 +0100
commitc79ebff06ae74135c5f67ecc01d5bb55aeb5eda9 (patch)
tree6521b1ed109668715a4a75a27e2f6a13218ae480 /src
parent5eba3e77c58941ee02257f077a80558dd152a52e (diff)
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 <noreply@anthropic.com>
Diffstat (limited to 'src')
-rw-r--r--src/app/test_demo.cc2
-rw-r--r--src/gpu/post_process_helper.h14
-rw-r--r--src/gpu/sdf_effect.h2
-rw-r--r--src/tests/assets/test_sequence.cc6
4 files changed, 7 insertions, 17 deletions
diff --git a/src/app/test_demo.cc b/src/app/test_demo.cc
index cf1a577..83e6f8b 100644
--- a/src/app/test_demo.cc
+++ b/src/app/test_demo.cc
@@ -95,7 +95,7 @@ class PeakMeterEffect : public PostProcessEffectV2 {
}
void render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) override {
+ const UniformsSequenceParams& uniforms) override {
uniforms_.update(ctx_.queue, uniforms);
PostProcessEffect::render(pass, uniforms);
}
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 {
diff --git a/src/tests/assets/test_sequence.cc b/src/tests/assets/test_sequence.cc
index edf5c2d..445e44b 100644
--- a/src/tests/assets/test_sequence.cc
+++ b/src/tests/assets/test_sequence.cc
@@ -42,13 +42,13 @@ class DummyEffect : public Effect {
++start_calls;
}
void render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) override {
+ const UniformsSequenceParams& uniforms) override {
++render_calls;
(void)pass;
(void)uniforms;
}
void compute(WGPUCommandEncoder encoder,
- const CommonPostProcessUniforms& uniforms) override {
+ const UniformsSequenceParams& uniforms) override {
(void)encoder;
(void)uniforms;
}
@@ -75,7 +75,7 @@ class DummyPostProcessEffect : public PostProcessEffect {
(void)demo;
}
void render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) override {
+ const UniformsSequenceParams& uniforms) override {
++render_calls;
(void)pass;
(void)uniforms;