diff options
Diffstat (limited to 'src/effects/gaussian_blur_effect.h')
| -rw-r--r-- | src/effects/gaussian_blur_effect.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/effects/gaussian_blur_effect.h b/src/effects/gaussian_blur_effect.h new file mode 100644 index 0000000..8bf34dc --- /dev/null +++ b/src/effects/gaussian_blur_effect.h @@ -0,0 +1,34 @@ +// Gaussian blur effect v2 - single-pass blur + +#pragma once + +#include "gpu/effect.h" +#include "gpu/uniform_helper.h" + +struct GaussianBlurParams { + float strength = 1.0f; + float strength_audio = 0.5f; + float stretch = 1.0f; + float _pad = 0.0f; +}; +static_assert(sizeof(GaussianBlurParams) == 16, + "GaussianBlurParams must be 16 bytes"); + +class GaussianBlurEffect : public Effect { + public: + GaussianBlurEffect(const GpuContext& ctx, + const std::vector<std::string>& inputs, + const std::vector<std::string>& outputs); + + void render(WGPUCommandEncoder encoder, const UniformsSequenceParams& params, + NodeRegistry& nodes) override; + + private: + WGPURenderPipeline pipeline_; + WGPUBindGroup bind_group_; + WGPUSampler sampler_; + GaussianBlurParams blur_params_; + UniformBuffer<GaussianBlurParams> params_buffer_; + UniformBuffer<UniformsSequenceParams> uniforms_buffer_; +}; + |
