summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cnn_v1/src/cnn_v1_effect.cc2
-rw-r--r--cnn_v1/src/cnn_v1_effect.h2
-rw-r--r--cnn_v2/src/cnn_v2_effect.cc4
-rw-r--r--cnn_v2/src/cnn_v2_effect.h4
-rw-r--r--common/shaders/sequence_uniforms.wgsl2
-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
-rw-r--r--tools/cnn_test.cc6
-rwxr-xr-xtools/seq_compiler.py6
-rw-r--r--tools/shadertoy/template.cc4
12 files changed, 23 insertions, 31 deletions
diff --git a/cnn_v1/src/cnn_v1_effect.cc b/cnn_v1/src/cnn_v1_effect.cc
index 1f44619..9118831 100644
--- a/cnn_v1/src/cnn_v1_effect.cc
+++ b/cnn_v1/src/cnn_v1_effect.cc
@@ -79,7 +79,7 @@ void CNNv1Effect::resize(int width, int height) {
}
void CNNv1Effect::render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) {
+ const UniformsSequenceParams& uniforms) {
if (!bind_group_) {
fprintf(stderr, "CNN render: no bind_group\n");
return;
diff --git a/cnn_v1/src/cnn_v1_effect.h b/cnn_v1/src/cnn_v1_effect.h
index e820275..6753db8 100644
--- a/cnn_v1/src/cnn_v1_effect.h
+++ b/cnn_v1/src/cnn_v1_effect.h
@@ -26,7 +26,7 @@ class CNNv1Effect : public PostProcessEffect {
void init(MainSequence* demo) override;
void resize(int width, int height) override;
void render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) override;
+ const UniformsSequenceParams& uniforms) override;
void update_bind_group(WGPUTextureView input_view) override;
// Layer 0 needs framebuffer capture for original input
diff --git a/cnn_v2/src/cnn_v2_effect.cc b/cnn_v2/src/cnn_v2_effect.cc
index 133087a..42aa2bb 100644
--- a/cnn_v2/src/cnn_v2_effect.cc
+++ b/cnn_v2/src/cnn_v2_effect.cc
@@ -377,7 +377,7 @@ void CNNv2Effect::update_bind_group(WGPUTextureView input_view) {
}
void CNNv2Effect::compute(WGPUCommandEncoder encoder,
- const CommonPostProcessUniforms& uniforms) {
+ const UniformsSequenceParams& uniforms) {
if (!initialized_ || !static_pipeline_ || !static_bind_group_)
return;
@@ -446,7 +446,7 @@ void CNNv2Effect::compute(WGPUCommandEncoder encoder,
}
void CNNv2Effect::render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) {
+ const UniformsSequenceParams& uniforms) {
(void)pass;
(void)uniforms;
// Compute-only effect, rendering is done by default composite pass
diff --git a/cnn_v2/src/cnn_v2_effect.h b/cnn_v2/src/cnn_v2_effect.h
index 7960b4f..b675736 100644
--- a/cnn_v2/src/cnn_v2_effect.h
+++ b/cnn_v2/src/cnn_v2_effect.h
@@ -19,9 +19,9 @@ class CNNv2Effect : public PostProcessEffect {
void init(MainSequence* demo) override;
void resize(int width, int height) override;
void compute(WGPUCommandEncoder encoder,
- const CommonPostProcessUniforms& uniforms) override;
+ const UniformsSequenceParams& uniforms) override;
void render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) override;
+ const UniformsSequenceParams& uniforms) override;
void update_bind_group(WGPUTextureView input_view) override;
void set_beat_modulation(bool enabled, float scale = 1.0f) {
diff --git a/common/shaders/sequence_uniforms.wgsl b/common/shaders/sequence_uniforms.wgsl
index b302329..be47ad9 100644
--- a/common/shaders/sequence_uniforms.wgsl
+++ b/common/shaders/sequence_uniforms.wgsl
@@ -1,5 +1,5 @@
// Sequence v2 uniform structure for WGSL shaders
-// Matches UniformsSequenceParams in sequence_v2.h
+// Matches UniformsSequenceParams in sequence.h
struct UniformsSequenceParams {
resolution: vec2<f32>,
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;
diff --git a/tools/cnn_test.cc b/tools/cnn_test.cc
index d88956d..a209cdf 100644
--- a/tools/cnn_test.cc
+++ b/tools/cnn_test.cc
@@ -1332,7 +1332,7 @@ int main(int argc, char** argv) {
// Create uniform buffers
const WGPUBufferDescriptor common_uniform_desc = {
.usage = WGPUBufferUsage_Uniform | WGPUBufferUsage_CopyDst,
- .size = sizeof(CommonPostProcessUniforms),
+ .size = sizeof(UniformsSequenceParams),
};
WGPUBuffer common_uniform_buffer =
wgpuDeviceCreateBuffer(device, &common_uniform_desc);
@@ -1384,7 +1384,7 @@ int main(int argc, char** argv) {
printf("Processing layer %d/%d...\n", layer + 1, NUM_LAYERS);
// Update uniforms
- CommonPostProcessUniforms common_u = {
+ UniformsSequenceParams common_u = {
.resolution = {static_cast<float>(width), static_cast<float>(height)},
.aspect_ratio = static_cast<float>(width) / static_cast<float>(height),
.time = 0.0f,
@@ -1410,7 +1410,7 @@ int main(int argc, char** argv) {
BindGroupBuilder()
.sampler(0, sampler)
.texture(1, current_input)
- .buffer(2, common_uniform_buffer, sizeof(CommonPostProcessUniforms))
+ .buffer(2, common_uniform_buffer, sizeof(UniformsSequenceParams))
.buffer(3, layer_params_buffer, sizeof(CNNv1LayerParams))
.texture(4, original_view)
.build(device, bgl);
diff --git a/tools/seq_compiler.py b/tools/seq_compiler.py
index 6b72ebd..3b8d126 100755
--- a/tools/seq_compiler.py
+++ b/tools/seq_compiler.py
@@ -516,7 +516,8 @@ void RenderTimeline(WGPUCommandEncoder encoder, float time, int width, int heigh
float beat_time, float audio_intensity) {
Sequence* seq = GetActiveSequence(time);
if (seq) {
- seq->preprocess(time, beat_time, 0.0f, audio_intensity);
+ float beat_phase = fmodf(beat_time, 1.0f);
+ seq->preprocess(time, beat_time, beat_phase, audio_intensity);
seq->render_effects(encoder);
}
}
@@ -584,7 +585,8 @@ void RenderTimeline(WGPUSurface surface, float time, int width, int height,
seq->set_sink_view(g_sink_view);
// Update uniforms via preprocess
- seq->preprocess(time, beat_time, 0.0f, audio_intensity);
+ float beat_phase = fmodf(beat_time, 1.0f);
+ seq->preprocess(time, beat_time, beat_phase, audio_intensity);
WGPUCommandEncoder encoder = wgpuDeviceCreateCommandEncoder(ctx->device, nullptr);
diff --git a/tools/shadertoy/template.cc b/tools/shadertoy/template.cc
index 7636c0a..56b4ab5 100644
--- a/tools/shadertoy/template.cc
+++ b/tools/shadertoy/template.cc
@@ -83,7 +83,7 @@ void ShaderToyEffect::init(MainSequence* demo) {
{.binding = 1, .textureView = prev_view},
{.binding = 2,
.buffer = uniforms_.get().buffer,
- .size = sizeof(CommonPostProcessUniforms)},
+ .size = sizeof(UniformsSequenceParams)},
{.binding = 3,
.buffer = params_.get().buffer,
.size = sizeof(ShaderToyParams)},
@@ -98,7 +98,7 @@ void ShaderToyEffect::init(MainSequence* demo) {
void ShaderToyEffect::render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) {
- const CommonPostProcessUniforms uniforms = {
+ const UniformsSequenceParams uniforms = {
.resolution = {static_cast<float>(width_), static_cast<float>(height_)},
.aspect_ratio = aspect_ratio,
.time = time,