diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-16 08:26:45 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-16 08:26:45 +0100 |
| commit | 9d1d4df877f96f1970dce2ab30cfae49d3d796e1 (patch) | |
| tree | 681298bc46a58890f2b5581c16a05a4272ef4ed3 /src/gpu/effect_v2.h | |
| parent | 7947a1230e526eb17ca0252f81d19c18811bd355 (diff) | |
feat(sequence): Phase 1 - Sequence v2 foundation
- Add Node system with typed buffers (u8x4_norm, f32x4, f16x8, depth24)
- Add NodeRegistry with aliasing support for ping-pong optimization
- Add SequenceV2 base class with DAG execution
- Add EffectV2 base class with multi-input/multi-output
- Add comprehensive tests (5 test cases, all passing)
- Corrected FATAL_CHECK usage (checks ERROR conditions, not success)
Phase 1 complete: Core v2 architecture functional.
Next: Phase 2 compiler (seq_compiler_v2.py)
handoff(Claude): Phase 1 foundation complete, all tests passing (35/35)
Diffstat (limited to 'src/gpu/effect_v2.h')
| -rw-r--r-- | src/gpu/effect_v2.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/gpu/effect_v2.h b/src/gpu/effect_v2.h new file mode 100644 index 0000000..0d4e18d --- /dev/null +++ b/src/gpu/effect_v2.h @@ -0,0 +1,47 @@ +// EffectV2: Base class for v2 effects with multi-input/multi-output support + +#pragma once + +#include "gpu/gpu.h" +#include "gpu/sequence_v2.h" +#include <string> +#include <vector> + +class NodeRegistry; + +class EffectV2 { + public: + EffectV2(const GpuContext& ctx, const std::vector<std::string>& inputs, + const std::vector<std::string>& outputs); + virtual ~EffectV2() = default; + + // Optional: Declare temporary nodes (e.g., multi-pass intermediate buffers) + virtual void declare_nodes(NodeRegistry& registry) { + (void)registry; + } + + // Render effect (multi-input/multi-output) + virtual void render(WGPUCommandEncoder encoder, + const UniformsSequenceParams& params, + NodeRegistry& nodes) = 0; + + // Resize notification + virtual void resize(int width, int height) { + width_ = width; + height_ = height; + } + + const std::vector<std::string>& input_nodes() const { + return input_nodes_; + } + const std::vector<std::string>& output_nodes() const { + return output_nodes_; + } + + protected: + const GpuContext& ctx_; + std::vector<std::string> input_nodes_; + std::vector<std::string> output_nodes_; + int width_ = 1280; + int height_ = 720; +}; |
