summaryrefslogtreecommitdiff
path: root/src/effects/heptagon_effect.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/heptagon_effect.cc')
-rw-r--r--src/effects/heptagon_effect.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/effects/heptagon_effect.cc b/src/effects/heptagon_effect.cc
new file mode 100644
index 0000000..724eabb
--- /dev/null
+++ b/src/effects/heptagon_effect.cc
@@ -0,0 +1,22 @@
+// This file is part of the 64k demo project.
+// It implements the HeptagonEffect.
+
+#include "gpu/demo_effects.h"
+#include "gpu/gpu.h"
+#include "util/mini_math.h"
+
+// --- HeptagonEffect ---
+HeptagonEffect::HeptagonEffect(const GpuContext& ctx) : Effect(ctx) {
+ // uniforms_ is initialized by Effect base class
+ ResourceBinding bindings[] = {{uniforms_.get(), WGPUBufferBindingType_Uniform}};
+ pass_ = gpu_create_render_pass(ctx_.device, ctx_.format, main_shader_wgsl,
+ bindings, 1);
+ pass_.vertex_count = 21;
+}
+void HeptagonEffect::render(WGPURenderPassEncoder pass,
+ const CommonPostProcessUniforms& uniforms) {
+ uniforms_.update(ctx_.queue, uniforms);
+ wgpuRenderPassEncoderSetPipeline(pass, pass_.pipeline);
+ wgpuRenderPassEncoderSetBindGroup(pass, 0, pass_.bind_group, 0, nullptr);
+ wgpuRenderPassEncoderDraw(pass, pass_.vertex_count, 1, 0, 0);
+}