summaryrefslogtreecommitdiff
path: root/src/gpu
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-09 15:22:38 +0100
committerskal <pascal.massimino@gmail.com>2026-02-09 15:22:38 +0100
commit3fa548aecd85a3a8eb0a93e649575973eee50e8f (patch)
tree85124106224594bb56a74f65ebf10bdbf04376a7 /src/gpu
parentaf55c4a7a54a90d4c252aa4fe354e7bf8624072e (diff)
fix: Add ShaderComposer to CircleMaskEffect pipelines
CircleMaskEffect was creating shader modules directly without using ShaderComposer, causing #include directives to fail at runtime. Changes: - Add ShaderComposer.Compose() for compute and render shaders - Include shader_composer.h header Fixes demo64k crash on CircleMaskEffect initialization. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/gpu')
-rw-r--r--src/gpu/effects/circle_mask_effect.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/gpu/effects/circle_mask_effect.cc b/src/gpu/effects/circle_mask_effect.cc
index 720b6ea..ca80cf9 100644
--- a/src/gpu/effects/circle_mask_effect.cc
+++ b/src/gpu/effects/circle_mask_effect.cc
@@ -3,6 +3,7 @@
// Generates circular mask and renders green background outside circle.
#include "gpu/effects/circle_mask_effect.h"
+#include "gpu/effects/shader_composer.h"
#include "generated/assets.h"
CircleMaskEffect::CircleMaskEffect(const GpuContext& ctx, float radius)
@@ -47,9 +48,12 @@ void CircleMaskEffect::init(MainSequence* demo) {
const char* render_shader = (const char*)GetAsset(
AssetId::ASSET_CIRCLE_MASK_RENDER_SHADER, &render_size);
+ // Compose shaders to resolve #include directives
+ std::string composed_compute = ShaderComposer::Get().Compose({}, compute_shader);
+
WGPUShaderSourceWGSL compute_wgsl = {};
compute_wgsl.chain.sType = WGPUSType_ShaderSourceWGSL;
- compute_wgsl.code = str_view(compute_shader);
+ compute_wgsl.code = str_view(composed_compute.c_str());
WGPUShaderModuleDescriptor compute_desc = {};
compute_desc.nextInChain = &compute_wgsl.chain;
@@ -94,9 +98,11 @@ void CircleMaskEffect::init(MainSequence* demo) {
compute_bind_group_ =
wgpuDeviceCreateBindGroup(ctx_.device, &compute_bg_desc);
+ std::string composed_render = ShaderComposer::Get().Compose({}, render_shader);
+
WGPUShaderSourceWGSL render_wgsl = {};
render_wgsl.chain.sType = WGPUSType_ShaderSourceWGSL;
- render_wgsl.code = str_view(render_shader);
+ render_wgsl.code = str_view(composed_render.c_str());
WGPUShaderModuleDescriptor render_desc = {};
render_desc.nextInChain = &render_wgsl.chain;