summaryrefslogtreecommitdiff
path: root/src/effects/solarize_effect.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/solarize_effect.cc')
-rw-r--r--src/effects/solarize_effect.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/effects/solarize_effect.cc b/src/effects/solarize_effect.cc
new file mode 100644
index 0000000..cdb9354
--- /dev/null
+++ b/src/effects/solarize_effect.cc
@@ -0,0 +1,20 @@
+// This file is part of the 64k demo project.
+// It implements the SolarizeEffect.
+
+#include "gpu/demo_effects.h"
+#include "gpu/gpu.h"
+
+// --- SolarizeEffect ---
+SolarizeEffect::SolarizeEffect(const GpuContext& ctx) : PostProcessEffect(ctx) {
+ pipeline_ = create_post_process_pipeline(ctx_.device, ctx_.format,
+ solarize_shader_wgsl);
+}
+void SolarizeEffect::render(WGPURenderPassEncoder pass,
+ const CommonPostProcessUniforms& uniforms) {
+ uniforms_.update(ctx_.queue, uniforms);
+ PostProcessEffect::render(pass, uniforms);
+}
+void SolarizeEffect::update_bind_group(WGPUTextureView v) {
+ pp_update_bind_group(ctx_.device, pipeline_, &bind_group_, v, uniforms_.get(),
+ {});
+}