diff options
Diffstat (limited to 'src/gpu/effect.h')
| -rw-r--r-- | src/gpu/effect.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/gpu/effect.h b/src/gpu/effect.h index 0d7e35e..d47a8b7 100644 --- a/src/gpu/effect.h +++ b/src/gpu/effect.h @@ -6,6 +6,8 @@ #include "gpu/gpu.h" #include "gpu/sequence.h" +#include "gpu/uniform_helper.h" +#include "gpu/wgpu_resource.h" #include <string> #include <vector> @@ -23,17 +25,15 @@ class Effect { (void)registry; } - // Dispatch render with automatic passthrough outside [start, end] + // Automatic passthrough outside [start, end] void dispatch_render(WGPUCommandEncoder encoder, const UniformsSequenceParams& params, NodeRegistry& nodes); - // Render effect (multi-input/multi-output) - override in derived classes virtual void render(WGPUCommandEncoder encoder, const UniformsSequenceParams& params, NodeRegistry& nodes) = 0; - // Resize notification virtual void resize(int width, int height) { width_ = width; height_ = height; @@ -53,6 +53,24 @@ class Effect { int width_ = 1280; int height_ = 720; + // Common resources for most effects + UniformBuffer<UniformsSequenceParams> uniforms_buffer_; + Sampler sampler_; + Texture dummy_texture_; + TextureView dummy_texture_view_; + + // Helper: Initialize uniforms buffer (call in subclass constructor) + void init_uniforms_buffer(); + + // Helper: Create linear sampler (call in subclass constructor) + void create_linear_sampler(); + + // Helper: Create nearest sampler (call in subclass constructor) + void create_nearest_sampler(); + + // Helper: Create dummy texture for scene effects (call in subclass constructor) + void create_dummy_scene_texture(); + private: float start_time_; float end_time_; |
