diff options
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 }; |
