diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-06 01:38:51 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-06 01:38:51 +0100 |
| commit | ae4b03ef6f5ef07dcc80affd6877d17fceee7d29 (patch) | |
| tree | ab57453a320c90c76eeda3ca291e382ec6413a86 /src/3d/renderer.h | |
| parent | 3581fa88300f0208c83f0f687b18479979dad035 (diff) | |
feat(perf): Add toggle for GPU BVH and fix fallback
Completed Task #18-B.
- Implemented GPU-side BVH traversal for scene queries, improving performance.
- Added a --no-bvh command-line flag to disable the feature for debugging and performance comparison.
- Fixed a shader compilation issue where the non-BVH fallback path failed to render objects.
Diffstat (limited to 'src/3d/renderer.h')
| -rw-r--r-- | src/3d/renderer.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/3d/renderer.h b/src/3d/renderer.h index 8068bdc..b468423 100644 --- a/src/3d/renderer.h +++ b/src/3d/renderer.h @@ -6,6 +6,7 @@ #include "3d/camera.h" #include "3d/scene.h" +#include "3d/bvh.h" #include "gpu/gpu.h" #include <vector> @@ -18,7 +19,7 @@ struct GlobalUniforms { mat4 view_proj; mat4 inv_view_proj; // Added for skybox/raymarching vec4 camera_pos_time; // xyz = camera_pos, w = time - vec4 params; // x = num_objects, yzw = padding + vec4 params; // x = num_objects, y = use_bvh, zw = padding vec2 resolution; vec2 padding; }; @@ -40,6 +41,9 @@ class Renderer3D { static void SetDebugEnabled(bool enabled) { s_debug_enabled_ = enabled; } + static void SetBvhEnabled(bool enabled) { + s_bvh_enabled_ = enabled; + } #endif // Renders the scene to the given texture view (Convenience: creates a pass) @@ -83,6 +87,9 @@ class Renderer3D { WGPUBindGroup skybox_bind_group_ = nullptr; WGPUBuffer global_uniform_buffer_ = nullptr; WGPUBuffer object_storage_buffer_ = nullptr; + WGPUBuffer bvh_storage_buffer_ = nullptr; + + BVH cpu_bvh_; // Keep a CPU-side copy for building/uploading WGPUTextureView noise_texture_view_ = nullptr; WGPUTextureView sky_texture_view_ = nullptr; @@ -100,5 +107,6 @@ class Renderer3D { #if !defined(STRIP_ALL) VisualDebug visual_debug_; static bool s_debug_enabled_; + static bool s_bvh_enabled_; #endif }; |
