diff options
Diffstat (limited to 'src/gpu/effects/particle_spray_effect.cc')
| -rw-r--r-- | src/gpu/effects/particle_spray_effect.cc | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/src/gpu/effects/particle_spray_effect.cc b/src/gpu/effects/particle_spray_effect.cc deleted file mode 100644 index 9b615d0..0000000 --- a/src/gpu/effects/particle_spray_effect.cc +++ /dev/null @@ -1,48 +0,0 @@ -// This file is part of the 64k demo project. -// It implements the ParticleSprayEffect. - -#include "gpu/demo_effects.h" -#include "gpu/effects/post_process_helper.h" -#include "gpu/gpu.h" -#include <vector> - -// --- ParticleSprayEffect --- -ParticleSprayEffect::ParticleSprayEffect(const GpuContext& ctx) : Effect(ctx) { - std::vector<Particle> init_p(NUM_PARTICLES); - for (Particle& p : init_p) - p.pos[3] = 0.0f; - particles_buffer_ = gpu_create_buffer( - ctx_.device, sizeof(Particle) * NUM_PARTICLES, - WGPUBufferUsage_Storage | WGPUBufferUsage_Vertex, init_p.data()); - ResourceBinding cb[] = {{particles_buffer_, WGPUBufferBindingType_Storage}, - {uniforms_.get(), WGPUBufferBindingType_Uniform}}; - compute_pass_ = - gpu_create_compute_pass(ctx_.device, particle_spray_compute_wgsl, cb, 2); - compute_pass_.workgroup_size_x = (NUM_PARTICLES + 63) / 64; - ResourceBinding rb[] = { - {particles_buffer_, WGPUBufferBindingType_ReadOnlyStorage}, - {uniforms_.get(), WGPUBufferBindingType_Uniform}}; - render_pass_ = gpu_create_render_pass(ctx_.device, ctx_.format, - particle_render_wgsl, rb, 2); - render_pass_.vertex_count = 6; - render_pass_.instance_count = NUM_PARTICLES; -} -void ParticleSprayEffect::compute(WGPUCommandEncoder e, - const CommonPostProcessUniforms& uniforms) { - uniforms_.update(ctx_.queue, uniforms); - WGPUComputePassEncoder pass = wgpuCommandEncoderBeginComputePass(e, nullptr); - wgpuComputePassEncoderSetPipeline(pass, compute_pass_.pipeline); - wgpuComputePassEncoderSetBindGroup(pass, 0, compute_pass_.bind_group, 0, - nullptr); - wgpuComputePassEncoderDispatchWorkgroups(pass, compute_pass_.workgroup_size_x, - 1, 1); - wgpuComputePassEncoderEnd(pass); -} -void ParticleSprayEffect::render(WGPURenderPassEncoder pass, - const CommonPostProcessUniforms& uniforms) { - (void)uniforms; - wgpuRenderPassEncoderSetPipeline(pass, render_pass_.pipeline); - wgpuRenderPassEncoderSetBindGroup(pass, 0, render_pass_.bind_group, 0, - nullptr); - wgpuRenderPassEncoderDraw(pass, 6, NUM_PARTICLES, 0, 0); -} |
