summaryrefslogtreecommitdiff
path: root/tools
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 /tools
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 'tools')
-rw-r--r--tools/cnn_test.cc6
-rwxr-xr-xtools/seq_compiler.py6
-rw-r--r--tools/shadertoy/template.cc4
3 files changed, 9 insertions, 7 deletions
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,