From 75bdd2f8c17169422d175ed2d9dfceb9acb0fe77 Mon Sep 17 00:00:00 2001 From: skal Date: Fri, 6 Feb 2026 02:14:30 +0100 Subject: refactor(gpu): Implement compile-time BVH toggle via shader composition Completed Task #18-B optimization and refactoring. - Replaced runtime branching in shader with compile-time snippet substitution in ShaderComposer. - Added 'scene_query_bvh.wgsl' and 'scene_query_linear.wgsl' as distinct snippets. - Refactored Renderer3D to manage two separate pipelines (with and without BVH). - Updated ShaderComposer to support snippet substitution during composition. - Verified both paths with test_3d_render (default and --no-bvh). - Removed temporary shader hacks and cleaned up renderer_3d.wgsl. --- assets/final/shaders/renderer_3d.wgsl | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'assets/final/shaders/renderer_3d.wgsl') diff --git a/assets/final/shaders/renderer_3d.wgsl b/assets/final/shaders/renderer_3d.wgsl index 723aeb0..f855052 100644 --- a/assets/final/shaders/renderer_3d.wgsl +++ b/assets/final/shaders/renderer_3d.wgsl @@ -3,13 +3,7 @@ @group(0) @binding(0) var globals: GlobalUniforms; @group(0) @binding(1) var object_data: ObjectsBuffer; -struct BVHNode { - min: vec3, - left_idx: i32, - max: vec3, - obj_idx_or_right: i32, -}; -@group(0) @binding(2) var bvh_nodes: array; +// Binding 2 is reserved for BVH buffer when enabled @group(0) @binding(3) var noise_tex: texture_2d; @group(0) @binding(4) var noise_sampler: sampler; @@ -65,7 +59,7 @@ fn vs_main(@builtin(vertex_index) vertex_index: u32, return out; } -#include "render/scene_query" +#include "render/scene_query_mode" #include "render/shadows" #include "render/lighting_utils" #include "ray_box" @@ -175,4 +169,4 @@ fn fs_main(in: VertexOutput) -> @location(0) vec4 { let shadow = calc_shadow(p, light_dir, 0.05, 20.0, in.instance_index); let lit_color = calculate_lighting(base_color, normal, p, shadow); return vec4(lit_color, 1.0); -} +} \ No newline at end of file -- cgit v1.2.3