summaryrefslogtreecommitdiff
path: root/src/effects
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects')
-rw-r--r--src/effects/hybrid3_d_effect.cc2
-rw-r--r--src/effects/hybrid3_d_effect.h1
-rw-r--r--src/effects/particle_compute.wgsl8
-rw-r--r--src/effects/particle_defs.h13
-rw-r--r--src/effects/particle_render.wgsl8
-rw-r--r--src/effects/particle_spray_compute.wgsl8
-rw-r--r--src/effects/peak_meter_effect.cc17
-rw-r--r--src/effects/placeholder_effect.cc15
-rw-r--r--src/effects/scene1_effect.cc15
-rw-r--r--src/effects/scene2_effect.cc15
-rw-r--r--src/effects/shaders.cc2
11 files changed, 10 insertions, 94 deletions
diff --git a/src/effects/hybrid3_d_effect.cc b/src/effects/hybrid3_d_effect.cc
index 33a2d73..bef82b4 100644
--- a/src/effects/hybrid3_d_effect.cc
+++ b/src/effects/hybrid3_d_effect.cc
@@ -42,8 +42,6 @@ Hybrid3D::Hybrid3D(const GpuContext& ctx,
renderer_.set_noise_texture(dummy_texture_view_);
renderer_.set_sky_texture(dummy_texture_view_);
- initialized_ = true;
-
// Setup simple scene (1 center cube + 8 surrounding objects)
scene_.clear();
Object3D center(ObjectType::BOX);
diff --git a/src/effects/hybrid3_d_effect.h b/src/effects/hybrid3_d_effect.h
index 13fd7df..88047dd 100644
--- a/src/effects/hybrid3_d_effect.h
+++ b/src/effects/hybrid3_d_effect.h
@@ -24,7 +24,6 @@ class Hybrid3D : public Effect {
Renderer3D renderer_;
Scene scene_;
Camera camera_;
- bool initialized_ = false;
std::string depth_node_;
WGPUTexture dummy_texture_;
WGPUTextureView dummy_texture_view_;
diff --git a/src/effects/particle_compute.wgsl b/src/effects/particle_compute.wgsl
index f3e8051..148a2c3 100644
--- a/src/effects/particle_compute.wgsl
+++ b/src/effects/particle_compute.wgsl
@@ -1,11 +1,5 @@
// Particle simulation (compute shader) - V2
-struct Particle {
- pos: vec4f,
- vel: vec4f,
- rot: vec4f,
- color: vec4f,
-};
-
+#include "particle_common"
#include "sequence_uniforms"
@group(0) @binding(0) var<storage, read_write> particles: array<Particle>;
diff --git a/src/effects/particle_defs.h b/src/effects/particle_defs.h
deleted file mode 100644
index dcbb830..0000000
--- a/src/effects/particle_defs.h
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is part of the 64k demo project.
-// It defines common structures for particle-based effects.
-
-#pragma once
-
-static const int NUM_PARTICLES = 10000;
-
-struct Particle {
- float pos[4];
- float vel[4];
- float rot[4];
- float color[4];
-};
diff --git a/src/effects/particle_render.wgsl b/src/effects/particle_render.wgsl
index ef0db42..66b0b9c 100644
--- a/src/effects/particle_render.wgsl
+++ b/src/effects/particle_render.wgsl
@@ -1,11 +1,5 @@
// Particle rendering (vertex + fragment) - V2
-struct Particle {
- pos: vec4f,
- vel: vec4f,
- rot: vec4f,
- color: vec4f,
-};
-
+#include "particle_common"
#include "sequence_uniforms"
@group(0) @binding(0) var<storage, read> particles: array<Particle>;
diff --git a/src/effects/particle_spray_compute.wgsl b/src/effects/particle_spray_compute.wgsl
index 7bdae88..84a51f4 100644
--- a/src/effects/particle_spray_compute.wgsl
+++ b/src/effects/particle_spray_compute.wgsl
@@ -1,10 +1,4 @@
-struct Particle {
- pos: vec4f,
- vel: vec4f,
- rot: vec4f,
- color: vec4f,
-};
-
+#include "particle_common"
#include "common_uniforms"
@group(0) @binding(0) var<storage, read_write> particles: array<Particle>;
diff --git a/src/effects/peak_meter_effect.cc b/src/effects/peak_meter_effect.cc
index d462fa0..c2ef42e 100644
--- a/src/effects/peak_meter_effect.cc
+++ b/src/effects/peak_meter_effect.cc
@@ -78,19 +78,6 @@ void PeakMeter::render(WGPUCommandEncoder encoder,
pp_update_bind_group(ctx_.device, pipeline_, &bind_group_, input_view,
uniforms_buffer_.get(), {nullptr, 0});
- WGPURenderPassColorAttachment color_attachment = {};
- gpu_init_color_attachment(color_attachment, output_view);
- color_attachment.loadOp = WGPULoadOp_Load;
-
- WGPURenderPassDescriptor pass_desc = {};
- pass_desc.colorAttachmentCount = 1;
- pass_desc.colorAttachments = &color_attachment;
-
- WGPURenderPassEncoder pass =
- wgpuCommandEncoderBeginRenderPass(encoder, &pass_desc);
- wgpuRenderPassEncoderSetPipeline(pass, pipeline_);
- wgpuRenderPassEncoderSetBindGroup(pass, 0, bind_group_, 0, nullptr);
- wgpuRenderPassEncoderDraw(pass, 3, 1, 0, 0);
- wgpuRenderPassEncoderEnd(pass);
- wgpuRenderPassEncoderRelease(pass);
+ run_fullscreen_pass(encoder, pipeline_, bind_group_, output_view,
+ WGPULoadOp_Load);
}
diff --git a/src/effects/placeholder_effect.cc b/src/effects/placeholder_effect.cc
index beb5f33..4221a74 100644
--- a/src/effects/placeholder_effect.cc
+++ b/src/effects/placeholder_effect.cc
@@ -32,18 +32,5 @@ void Placeholder::render(WGPUCommandEncoder encoder,
pp_update_bind_group(ctx_.device, pipeline_, &bind_group_, input_view,
uniforms_buffer_.get(), {nullptr, 0});
- WGPURenderPassColorAttachment color_attachment = {};
- gpu_init_color_attachment(color_attachment, output_view);
-
- WGPURenderPassDescriptor pass_desc = {};
- pass_desc.colorAttachmentCount = 1;
- pass_desc.colorAttachments = &color_attachment;
-
- WGPURenderPassEncoder pass =
- wgpuCommandEncoderBeginRenderPass(encoder, &pass_desc);
- wgpuRenderPassEncoderSetPipeline(pass, pipeline_);
- wgpuRenderPassEncoderSetBindGroup(pass, 0, bind_group_, 0, nullptr);
- wgpuRenderPassEncoderDraw(pass, 3, 1, 0, 0);
- wgpuRenderPassEncoderEnd(pass);
- wgpuRenderPassEncoderRelease(pass);
+ run_fullscreen_pass(encoder, pipeline_, bind_group_, output_view);
}
diff --git a/src/effects/scene1_effect.cc b/src/effects/scene1_effect.cc
index 0aae94a..bf99fc7 100644
--- a/src/effects/scene1_effect.cc
+++ b/src/effects/scene1_effect.cc
@@ -49,18 +49,5 @@ void Scene1::render(WGPUCommandEncoder encoder,
dummy_texture_view_.get(), uniforms_buffer_.get(),
camera_params_.get());
- WGPURenderPassColorAttachment color_attachment = {};
- gpu_init_color_attachment(color_attachment, output_view);
-
- WGPURenderPassDescriptor pass_desc = {};
- pass_desc.colorAttachmentCount = 1;
- pass_desc.colorAttachments = &color_attachment;
-
- WGPURenderPassEncoder pass =
- wgpuCommandEncoderBeginRenderPass(encoder, &pass_desc);
- wgpuRenderPassEncoderSetPipeline(pass, pipeline_.get());
- wgpuRenderPassEncoderSetBindGroup(pass, 0, bind_group_.get(), 0, nullptr);
- wgpuRenderPassEncoderDraw(pass, 3, 1, 0, 0); // Fullscreen triangle
- wgpuRenderPassEncoderEnd(pass);
- wgpuRenderPassEncoderRelease(pass);
+ run_fullscreen_pass(encoder, pipeline_.get(), bind_group_.get(), output_view);
}
diff --git a/src/effects/scene2_effect.cc b/src/effects/scene2_effect.cc
index 8c05574..92e5ecd 100644
--- a/src/effects/scene2_effect.cc
+++ b/src/effects/scene2_effect.cc
@@ -30,18 +30,5 @@ void Scene2Effect::render(WGPUCommandEncoder encoder,
dummy_texture_view_.get(), uniforms_buffer_.get(),
{nullptr, 0});
- WGPURenderPassColorAttachment color_attachment = {};
- gpu_init_color_attachment(color_attachment, output_view);
-
- WGPURenderPassDescriptor pass_desc = {};
- pass_desc.colorAttachmentCount = 1;
- pass_desc.colorAttachments = &color_attachment;
-
- WGPURenderPassEncoder pass =
- wgpuCommandEncoderBeginRenderPass(encoder, &pass_desc);
- wgpuRenderPassEncoderSetPipeline(pass, pipeline_.get());
- wgpuRenderPassEncoderSetBindGroup(pass, 0, bind_group_.get(), 0, nullptr);
- wgpuRenderPassEncoderDraw(pass, 3, 1, 0, 0);
- wgpuRenderPassEncoderEnd(pass);
- wgpuRenderPassEncoderRelease(pass);
+ run_fullscreen_pass(encoder, pipeline_.get(), bind_group_.get(), output_view);
}
diff --git a/src/effects/shaders.cc b/src/effects/shaders.cc
index 8b625ee..7ca66fa 100644
--- a/src/effects/shaders.cc
+++ b/src/effects/shaders.cc
@@ -61,6 +61,8 @@ void InitShaderComposer() {
AssetId::ASSET_SHADER_RENDER_NTSC_COMMON);
register_if_exists("render/fullscreen_vs",
AssetId::ASSET_SHADER_RENDER_FULLSCREEN_VS);
+ register_if_exists("particle_common",
+ AssetId::ASSET_SHADER_COMPUTE_PARTICLE_COMMON);
register_if_exists("render/fullscreen_uv_vs",
AssetId::ASSET_SHADER_RENDER_FULLSCREEN_UV_VS);
register_if_exists("math/color", AssetId::ASSET_SHADER_MATH_COLOR);