From e3ef115804b46e8bfc594987b04b1059aed5e002 Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 1 Feb 2026 18:56:47 +0100 Subject: feat(gpu/assets): Fix tests, integrate bumpy 3D renderer and procedural assets - Fixed test_sequence by restoring MainSequence::init_test for mocking. - Corrected CMakeLists.txt dependencies and source groupings to prevent duplicate symbols. - standardizing Effect constructor signature for seq_compiler compatibility. - Implemented Hybrid3DEffect using bumpy Renderer3D and procedural NOISE_TEX. - Updated MainSequence to support depth buffer for 3D elements. - Formatted all source files with clang-format. --- src/gpu/effect.cc | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/gpu/effect.cc') diff --git a/src/gpu/effect.cc b/src/gpu/effect.cc index fdc604c..b2e0c4e 100644 --- a/src/gpu/effect.cc +++ b/src/gpu/effect.cc @@ -131,6 +131,14 @@ void MainSequence::create_framebuffers(int width, int height) { depth_view_ = wgpuTextureCreateView(depth_texture_, &depth_view_desc); } +void MainSequence::init_test(WGPUDevice d, WGPUQueue q, WGPUTextureFormat f) { + device = d; + queue = q; + format = f; + // No framebuffers or passthrough effect created in test mode. + // Test effects should not rely on these being real. +} + void MainSequence::init(WGPUDevice d, WGPUQueue q, WGPUTextureFormat f, int width, int height) { device = d; @@ -197,7 +205,7 @@ void MainSequence::render_frame(float global_time, float beat, float peak, #if !defined(DEMO_CROSS_COMPILE_WIN32) scene_attachment.depthSlice = WGPU_DEPTH_SLICE_UNDEFINED; #endif /* !defined(DEMO_CROSS_COMPILE_WIN32) */ - + WGPURenderPassDepthStencilAttachment depth_attachment = {}; depth_attachment.view = depth_view_; depth_attachment.depthLoadOp = WGPULoadOp_Clear; @@ -206,7 +214,8 @@ void MainSequence::render_frame(float global_time, float beat, float peak, WGPURenderPassDescriptor scene_desc = {.colorAttachmentCount = 1, .colorAttachments = &scene_attachment, - .depthStencilAttachment = &depth_attachment}; + .depthStencilAttachment = + &depth_attachment}; WGPURenderPassEncoder scene_pass = wgpuCommandEncoderBeginRenderPass(encoder, &scene_desc); for (const SequenceItem* item : scene_effects) { @@ -224,7 +233,8 @@ void MainSequence::render_frame(float global_time, float beat, float peak, final_view = wgpuTextureCreateView(st.texture, nullptr); // Safely cast to PostProcessEffect to call update_bind_group - PostProcessEffect* pp_effect = (PostProcessEffect*)passthrough_effect_.get(); + PostProcessEffect* pp_effect = + (PostProcessEffect*)passthrough_effect_.get(); pp_effect->update_bind_group(framebuffer_view_a_); WGPURenderPassColorAttachment final_attachment = {}; -- cgit v1.2.3