summaryrefslogtreecommitdiff
path: root/src/gpu/demo_effects.h
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-07 17:04:56 +0100
committerskal <pascal.massimino@gmail.com>2026-02-07 17:04:56 +0100
commitbd939acdf750181ef0e1a612b445da4c15077c85 (patch)
tree028401c762b0436d9a5de1aa656ab35ba6445674 /src/gpu/demo_effects.h
parentf2963ac821a3af1c54002ba13944552166956d04 (diff)
refactor: Bundle GPU context into GpuContext struct
- Created GpuContext struct {device, queue, format} - Updated Effect/PostProcessEffect to take const GpuContext& - Updated all 19 effect implementations - Updated MainSequence.init() and LoadTimeline() signatures - Updated generated timeline files - Updated all test files - Added gpu_get_context() accessor and fixture.ctx() helper Fixes test_mesh.cc compilation error from g_device/g_queue/g_format conflicts. All targets build successfully.
Diffstat (limited to 'src/gpu/demo_effects.h')
-rw-r--r--src/gpu/demo_effects.h37
1 files changed, 15 insertions, 22 deletions
diff --git a/src/gpu/demo_effects.h b/src/gpu/demo_effects.h
index 4b96ba7..cddd04b 100644
--- a/src/gpu/demo_effects.h
+++ b/src/gpu/demo_effects.h
@@ -23,7 +23,7 @@ struct Particle {
class HeptagonEffect : public Effect {
public:
- HeptagonEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ HeptagonEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
@@ -33,7 +33,7 @@ class HeptagonEffect : public Effect {
class ParticlesEffect : public Effect {
public:
- ParticlesEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ ParticlesEffect(const GpuContext& ctx);
void compute(WGPUCommandEncoder encoder, float time, float beat,
float intensity, float aspect_ratio) override;
void render(WGPURenderPassEncoder pass, float time, float beat,
@@ -47,15 +47,13 @@ class ParticlesEffect : public Effect {
class PassthroughEffect : public PostProcessEffect {
public:
- PassthroughEffect(WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format);
+ PassthroughEffect(const GpuContext& ctx);
void update_bind_group(WGPUTextureView input_view) override;
};
class MovingEllipseEffect : public Effect {
public:
- MovingEllipseEffect(WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format);
+ MovingEllipseEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
@@ -65,8 +63,7 @@ class MovingEllipseEffect : public Effect {
class ParticleSprayEffect : public Effect {
public:
- ParticleSprayEffect(WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format);
+ ParticleSprayEffect(const GpuContext& ctx);
void compute(WGPUCommandEncoder encoder, float time, float beat,
float intensity, float aspect_ratio) override;
void render(WGPURenderPassEncoder pass, float time, float beat,
@@ -80,8 +77,7 @@ class ParticleSprayEffect : public Effect {
class GaussianBlurEffect : public PostProcessEffect {
public:
- GaussianBlurEffect(WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format);
+ GaussianBlurEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
void update_bind_group(WGPUTextureView input_view) override;
@@ -89,7 +85,7 @@ class GaussianBlurEffect : public PostProcessEffect {
class SolarizeEffect : public PostProcessEffect {
public:
- SolarizeEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ SolarizeEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
void update_bind_group(WGPUTextureView input_view) override;
@@ -97,7 +93,7 @@ class SolarizeEffect : public PostProcessEffect {
class DistortEffect : public PostProcessEffect {
public:
- DistortEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ DistortEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
void update_bind_group(WGPUTextureView input_view) override;
@@ -105,8 +101,7 @@ class DistortEffect : public PostProcessEffect {
class ChromaAberrationEffect : public PostProcessEffect {
public:
- ChromaAberrationEffect(WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format);
+ ChromaAberrationEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
void update_bind_group(WGPUTextureView input_view) override;
@@ -114,7 +109,7 @@ class ChromaAberrationEffect : public PostProcessEffect {
class Hybrid3DEffect : public Effect {
public:
- Hybrid3DEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ Hybrid3DEffect(const GpuContext& ctx);
void init(MainSequence* demo) override;
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
@@ -130,7 +125,7 @@ class Hybrid3DEffect : public Effect {
class FlashCubeEffect : public Effect {
public:
- FlashCubeEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ FlashCubeEffect(const GpuContext& ctx);
void init(MainSequence* demo) override;
void resize(int width, int height) override;
void render(WGPURenderPassEncoder pass, float time, float beat,
@@ -149,8 +144,7 @@ class FlashCubeEffect : public Effect {
class ThemeModulationEffect : public PostProcessEffect {
public:
- ThemeModulationEffect(WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format);
+ ThemeModulationEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
void update_bind_group(WGPUTextureView input_view) override;
@@ -158,7 +152,7 @@ class ThemeModulationEffect : public PostProcessEffect {
class FadeEffect : public PostProcessEffect {
public:
- FadeEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ FadeEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
void update_bind_group(WGPUTextureView input_view) override;
@@ -166,7 +160,7 @@ class FadeEffect : public PostProcessEffect {
class FlashEffect : public PostProcessEffect {
public:
- FlashEffect(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format);
+ FlashEffect(const GpuContext& ctx);
void render(WGPURenderPassEncoder pass, float time, float beat,
float intensity, float aspect_ratio) override;
void update_bind_group(WGPUTextureView input_view) override;
@@ -176,7 +170,6 @@ class FlashEffect : public PostProcessEffect {
};
// Auto-generated functions
-void LoadTimeline(MainSequence& main_seq, WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format);
+void LoadTimeline(MainSequence& main_seq, const GpuContext& ctx);
float GetDemoDuration(); // Returns demo end time in seconds, or -1 if not
// specified \ No newline at end of file