summaryrefslogtreecommitdiff
path: root/src/effects/vignette_effect.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/vignette_effect.cc')
-rw-r--r--src/effects/vignette_effect.cc30
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());
+}