diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-01 18:56:47 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-01 18:56:47 +0100 |
| commit | e3ef115804b46e8bfc594987b04b1059aed5e002 (patch) | |
| tree | 3670f718ee23cf34e94984568900eac23022d1f0 /src/3d/renderer.cc | |
| parent | 7fab8880cca269621cd32610b22f2820567771f2 (diff) | |
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.
Diffstat (limited to 'src/3d/renderer.cc')
| -rw-r--r-- | src/3d/renderer.cc | 52 |
1 files changed, 13 insertions, 39 deletions
diff --git a/src/3d/renderer.cc b/src/3d/renderer.cc index 0a2ae9a..db9d73d 100644 --- a/src/3d/renderer.cc +++ b/src/3d/renderer.cc @@ -3,8 +3,8 @@ #include "3d/renderer.h" #include <algorithm> -#include <cstring> #include <cassert> +#include <cstring> #include <iostream> static const char* kShaderCode = R"( @@ -429,17 +429,14 @@ void Renderer3D::update_uniforms(const Scene& scene, const Camera& camera, } } -void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene, const Camera& camera, float time) { - +void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene, + const Camera& camera, float time) { update_uniforms(scene, camera, time); - - // Lazy Bind Group creation - if (bind_group_) wgpuBindGroupRelease(bind_group_); - - + if (bind_group_) + wgpuBindGroupRelease(bind_group_); WGPUBindGroupEntry bg_entries[4] = {}; @@ -463,8 +460,6 @@ void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene, const Came bg_entries[3].sampler = default_sampler_; - - WGPUBindGroupDescriptor bg_desc = {}; bg_desc.layout = wgpuRenderPipelineGetBindGroupLayout(pipeline_, 0); @@ -477,35 +472,26 @@ void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene, const Came wgpuBindGroupLayoutRelease(bg_desc.layout); - - wgpuRenderPassEncoderSetPipeline(pass, pipeline_); wgpuRenderPassEncoderSetBindGroup(pass, 0, bind_group_, 0, nullptr); - - - uint32_t instance_count = (uint32_t)std::min((size_t)kMaxObjects, scene.objects.size()); + uint32_t instance_count = + (uint32_t)std::min((size_t)kMaxObjects, scene.objects.size()); if (instance_count > 0) { - wgpuRenderPassEncoderDraw(pass, 36, instance_count, 0, 0); - } - } - - void Renderer3D::render(const Scene& scene, const Camera& camera, float time, - WGPUTextureView target_view, WGPUTextureView depth_view_opt) { - + WGPUTextureView target_view, + WGPUTextureView depth_view_opt) { WGPUTextureView depth_view = depth_view_opt ? depth_view_opt : depth_view_; - if (!depth_view) return; - - + if (!depth_view) + return; WGPURenderPassColorAttachment color_attachment = {}; @@ -513,8 +499,6 @@ void Renderer3D::render(const Scene& scene, const Camera& camera, float time, color_attachment.clearValue = {0.05, 0.05, 0.1, 1.0}; - - WGPURenderPassDepthStencilAttachment depth_attachment = {}; depth_attachment.view = depth_view; @@ -525,8 +509,6 @@ void Renderer3D::render(const Scene& scene, const Camera& camera, float time, depth_attachment.depthClearValue = 1.0f; - - WGPURenderPassDescriptor pass_desc = {}; pass_desc.colorAttachmentCount = 1; @@ -535,30 +517,22 @@ void Renderer3D::render(const Scene& scene, const Camera& camera, float time, pass_desc.depthStencilAttachment = &depth_attachment; - - WGPUCommandEncoder encoder = wgpuDeviceCreateCommandEncoder(device_, nullptr); - WGPURenderPassEncoder pass = wgpuCommandEncoderBeginRenderPass(encoder, &pass_desc); - - + WGPURenderPassEncoder pass = + wgpuCommandEncoderBeginRenderPass(encoder, &pass_desc); draw(pass, scene, camera, time); - - wgpuRenderPassEncoderEnd(pass); WGPUCommandBuffer commands = wgpuCommandEncoderFinish(encoder, nullptr); wgpuQueueSubmit(queue_, 1, &commands); - - wgpuRenderPassEncoderRelease(pass); wgpuCommandBufferRelease(commands); wgpuCommandEncoderRelease(encoder); - }
\ No newline at end of file |
