summaryrefslogtreecommitdiff
path: root/src/gpu/effects/cnn_v2_effect.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/effects/cnn_v2_effect.h')
-rw-r--r--src/gpu/effects/cnn_v2_effect.h88
1 files changed, 0 insertions, 88 deletions
diff --git a/src/gpu/effects/cnn_v2_effect.h b/src/gpu/effects/cnn_v2_effect.h
deleted file mode 100644
index d530d3b..0000000
--- a/src/gpu/effects/cnn_v2_effect.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// CNN v2 Effect - Parametric Static Features
-// Multi-pass post-processing with 7D feature input
-// Supports per-layer kernel sizes (e.g., 1×1, 3×3, 5×5)
-
-#pragma once
-#include "gpu/effect.h"
-#include <vector>
-
-struct CNNv2EffectParams {
- float blend_amount = 1.0f;
-};
-
-class CNNv2Effect : public PostProcessEffect {
-public:
- explicit CNNv2Effect(const GpuContext& ctx);
- explicit CNNv2Effect(const GpuContext& ctx, const CNNv2EffectParams& params);
- ~CNNv2Effect();
-
- void init(MainSequence* demo) override;
- void resize(int width, int height) override;
- void compute(WGPUCommandEncoder encoder,
- const CommonPostProcessUniforms& uniforms) override;
- void render(WGPURenderPassEncoder pass,
- const CommonPostProcessUniforms& uniforms) override;
- void update_bind_group(WGPUTextureView input_view) override;
-
- void set_beat_modulation(bool enabled, float scale = 1.0f) {
- beat_modulated_ = enabled;
- beat_scale_ = scale;
- }
-
-private:
- struct LayerInfo {
- uint32_t kernel_size;
- uint32_t in_channels;
- uint32_t out_channels;
- uint32_t weight_offset;
- uint32_t weight_count;
- };
-
- struct LayerParams {
- uint32_t kernel_size;
- uint32_t in_channels;
- uint32_t out_channels;
- uint32_t weight_offset;
- uint32_t is_output_layer;
- float blend_amount;
- uint32_t is_layer_0;
- };
-
- struct StaticFeatureParams {
- uint32_t mip_level;
- uint32_t padding[3];
- };
-
- void create_textures();
- void create_pipelines();
- void load_weights();
- void cleanup();
-
- // Static features compute
- WGPUComputePipeline static_pipeline_;
- WGPUBindGroup static_bind_group_;
- WGPUBuffer static_params_buffer_;
- WGPUTexture static_features_tex_;
- WGPUTextureView static_features_view_;
- WGPUSampler linear_sampler_;
-
- // CNN layers (storage buffer architecture)
- WGPUComputePipeline layer_pipeline_; // Single pipeline for all layers
- WGPUBuffer weights_buffer_; // Storage buffer for weights
- std::vector<WGPUBuffer> layer_params_buffers_; // Uniform buffers (one per layer)
- std::vector<LayerInfo> layer_info_; // Layer metadata
- std::vector<WGPUBindGroup> layer_bind_groups_; // Per-layer bind groups
- std::vector<WGPUTexture> layer_textures_; // Ping-pong buffers
- std::vector<WGPUTextureView> layer_views_;
-
- // Input mips
- WGPUTexture input_mip_tex_;
- WGPUTextureView input_mip_view_[3];
- WGPUTextureView current_input_view_;
-
- float blend_amount_ = 1.0f;
- bool beat_modulated_ = false;
- float beat_scale_ = 1.0f;
- uint32_t mip_level_ = 0;
- bool initialized_;
-};