diff options
Diffstat (limited to 'src/effects/vignette_effect.cc')
| -rw-r--r-- | src/effects/vignette_effect.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/effects/vignette_effect.cc b/src/effects/vignette_effect.cc new file mode 100644 index 0000000..0e5f68f --- /dev/null +++ b/src/effects/vignette_effect.cc @@ -0,0 +1,30 @@ +// This file is part of the 64k demo project. +// It implements the VignetteEffect. + +#include "gpu/demo_effects.h" +#include "gpu/post_process_helper.h" +#include "gpu/gpu.h" + +VignetteEffect::VignetteEffect(const GpuContext& ctx) + : VignetteEffect(ctx, VignetteParams()) { +} + +VignetteEffect::VignetteEffect(const GpuContext& ctx, + const VignetteParams& params) + : PostProcessEffect(ctx), params_(params) { + params_buffer_.init(ctx_.device); + pipeline_ = create_post_process_pipeline(ctx_.device, ctx_.format, + vignette_shader_wgsl); +} + +void VignetteEffect::render(WGPURenderPassEncoder pass, + const CommonPostProcessUniforms& uniforms) { + uniforms_.update(ctx_.queue, uniforms); + params_buffer_.update(ctx_.queue, params_); + PostProcessEffect::render(pass, uniforms); +} + +void VignetteEffect::update_bind_group(WGPUTextureView v) { + pp_update_bind_group(ctx_.device, pipeline_, &bind_group_, v, uniforms_.get(), + params_buffer_.get()); +} |
