@woosh/meep-engine 3.69.0 → 3.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/bvh8/build/BVH8Converter.d.ts +16 -0
- package/src/core/bvh8/build/BVH8Converter.d.ts.map +1 -1
- package/src/core/bvh8/build/BVH8Converter.js +64 -37
- package/src/core/bvh8/build/bvh8_assign_slots_greedy.d.ts +25 -0
- package/src/core/bvh8/build/bvh8_assign_slots_greedy.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_assign_slots_greedy.js +68 -0
- package/src/core/bvh8/build/bvh8_from_proxy.d.ts.map +1 -1
- package/src/core/bvh8/build/bvh8_from_proxy.js +2 -33
- package/src/core/bvh8/build/bvh8_node_fit_slots.d.ts +22 -0
- package/src/core/bvh8/build/bvh8_node_fit_slots.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_node_fit_slots.js +115 -0
- package/src/core/bvh8/bvh8_depth.d.ts +8 -0
- package/src/core/bvh8/bvh8_depth.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_depth.js +39 -0
- package/src/core/math/complex/complex_fft_radix2.d.ts +19 -0
- package/src/core/math/complex/complex_fft_radix2.d.ts.map +1 -0
- package/src/core/math/complex/complex_fft_radix2.js +71 -0
- package/src/engine/graphics3/GPUFluidSystem.d.ts +17 -4
- package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUFluidSystem.js +113 -16
- package/src/engine/physics/cloth/playground/wind_main.js +7 -6
- package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts +2 -2
- package/src/engine/physics/cloth/wind/AbstractClothWind.js +2 -2
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +3 -3
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -1
- package/src/engine/physics/cloth/wind/ClothFluidWind.js +7 -9
- package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts +10 -10
- package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts.map +1 -1
- package/src/engine/physics/cloth/wind/ClothGPUFluidWind.js +14 -22
- package/src/engine/physics/fluid/FluidAtmosphere.d.ts +16 -2
- package/src/engine/physics/fluid/FluidAtmosphere.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidAtmosphere.js +17 -3
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts +1 -2
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.js +1 -2
- package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts +8 -5
- package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.js +60 -17
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +1 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +33 -47
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +38 -176
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts +8 -11
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.js +13 -24
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.d.ts +16 -0
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.js +35 -0
- package/src/engine/physics/fluid/fluid_apply_atmosphere.d.ts +1 -1
- package/src/engine/physics/fluid/fluid_apply_atmosphere.js +1 -1
- package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.d.ts +28 -0
- package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.js +29 -0
- package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.d.ts +16 -0
- package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.js +49 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.d.ts +11 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.js +18 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.d.ts +25 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.js +65 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.d.ts +56 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.js +313 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.d.ts +16 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.js +69 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts +1 -1
- package/src/generation/foliage/mesh/branch_ring_triangulate.js +1 -1
- package/src/shade/playground/bvh_repro/README.md +8 -6
- package/src/shade/playground/bvh_repro/index.html +125 -124
- package/src/shade/playground/bvh_repro/main.js +259 -254
- package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -1
- package/src/shade/playground/foliage_wind/foliage_world.js +7 -4
- package/src/shade/playground/grass_surfaces/main.js +3 -2
- package/src/shade/playground/particle_ecs/bonfire_wind.d.ts +23 -13
- package/src/shade/playground/particle_ecs/bonfire_wind.d.ts.map +1 -1
- package/src/shade/playground/particle_ecs/bonfire_wind.js +30 -33
- package/src/shade/playground/skinned_blas_refit/README.md +26 -14
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +14 -9
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +126 -127
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +95 -95
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +9 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +146 -135
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +6 -6
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +148 -134
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +11 -8
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +342 -202
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +12 -13
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +136 -116
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +4 -4
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +255 -249
- package/src/shade/playground/water_surface/main.js +6 -3
- package/src/shade/renderer/animation/GPUAnimationManager.js +2 -2
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +7 -8
- package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.d.ts +111 -0
- package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.js +162 -0
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +37 -8
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.js +149 -47
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +10 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +69 -10
- package/src/shade/renderer/fluid/chunk_fluid_far_field.d.ts +19 -0
- package/src/shade/renderer/fluid/chunk_fluid_far_field.d.ts.map +1 -0
- package/src/shade/renderer/fluid/chunk_fluid_far_field.js +43 -0
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts +10 -9
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.js +14 -12
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts +3 -2
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.js +7 -5
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts +17 -9
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.js +58 -18
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts +23 -11
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +371 -335
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.js +2 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.js +109 -108
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts +5 -3
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.js +24 -12
- package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts +6 -2
- package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.js +10 -5
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +20 -21
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/FluidMacPasses.js +453 -427
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +2 -1
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +13 -5
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -1
- package/src/shade/renderer/fluid/publish/FluidWindPublish.js +20 -10
- package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.d.ts +2 -2
- package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.js +2 -2
- package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts +5 -3
- package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts.map +1 -1
- package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.js +147 -142
- package/src/shade/renderer/fluid/query/GPUFluidQueries.js +2 -2
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +5 -7
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts +4 -1
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometry.js +4 -1
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts +20 -0
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.js +35 -3
- package/src/shade/renderer/geometry/blas_from_meshlets.d.ts +9 -3
- package/src/shade/renderer/geometry/blas_from_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/blas_from_meshlets.js +16 -30
- package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.d.ts +14 -0
- package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.js +33 -0
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts +18 -21
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +78 -158
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +18 -39
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +39 -398
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +6 -7
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +5 -7
- package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.d.ts +36 -0
- package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.js +179 -0
- package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.d.ts +30 -0
- package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.js +207 -0
- package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.d.ts +52 -0
- package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.js +464 -0
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +12 -0
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +37 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +4 -4
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +2 -2
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.js +2 -2
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +4 -4
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +2 -2
- package/src/shade/renderer/geometry/sr_create_group_RTX.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sr_create_group_RTX.js +4 -4
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +1 -0
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +372 -376
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +9 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +10 -11
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts +12 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.js +109 -60
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_sdf.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.js +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -70
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +6 -7
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +6 -7
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +3 -3
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +3 -3
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +3 -3
- package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.d.ts +69 -0
- package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.js +89 -0
- package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.d.ts +41 -0
- package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.js +348 -0
- package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.d.ts +34 -0
- package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.js +291 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.d.ts +31 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.js +175 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.d.ts +27 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.js +48 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.d.ts +26 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.js +118 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.d.ts +22 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.js +143 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.d.ts +36 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.js +97 -0
- package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.d.ts +49 -0
- package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.js +265 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.d.ts +37 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.js +109 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.d.ts +15 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.js +85 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.d.ts +26 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.js +200 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.d.ts +19 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.js +81 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.d.ts +14 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.js +101 -0
- package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.d.ts +19 -0
- package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.js +361 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake.d.ts.map +1 -1
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake.js +5 -6
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +1 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +8 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +60 -33
- package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +6 -6
- package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -1
- package/src/shade/renderer/scene/verify_gpu_tlas_build.js +23 -53
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.d.ts +3 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.js +5 -3
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.d.ts +28 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.js +29 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.js +97 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.d.ts +8 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.js +23 -14
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.d.ts +36 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.js +222 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.js +30 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.d.ts +30 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.js +91 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.js +40 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js +121 -70
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.d.ts +13 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.js +117 -61
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.js +111 -72
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts +1 -2
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.js +83 -54
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.js +92 -60
- package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.js +153 -106
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.js +115 -74
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.d.ts +5 -2
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.js +89 -63
- package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.js +108 -63
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.d.ts +14 -0
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.js +94 -60
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +4 -4
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -2
- package/src/shade/renderer/water/query/shader_water_surface_query.d.ts.map +1 -1
- package/src/shade/renderer/water/query/shader_water_surface_query.js +227 -227
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +7 -4
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +2 -2
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +36 -4
- package/src/shade/renderer/wind/GPUSceneWind.d.ts.map +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.js +150 -4
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +9 -3
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +13 -3
- package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.d.ts +6 -6
- package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.js +6 -6
- package/src/shade/renderer/wind/chunk_fluid_turbulence.d.ts +39 -0
- package/src/shade/renderer/wind/chunk_fluid_turbulence.d.ts.map +1 -0
- package/src/shade/renderer/wind/chunk_fluid_turbulence.js +63 -0
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +10 -7
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +34 -11
- package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.d.ts +2 -2
- package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.js +2 -2
- package/src/shade/renderer/wind/wind_field_add_resources.d.ts +6 -4
- package/src/shade/renderer/wind/wind_field_add_resources.d.ts.map +1 -1
- package/src/shade/renderer/wind/wind_field_add_resources.js +9 -6
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts +0 -18
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.js +0 -50
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +0 -23
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +0 -87
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts +0 -42
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.js +0 -141
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts +0 -21
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.js +0 -75
- package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts +0 -17
- package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts.map +0 -1
- package/src/shade/renderer/geometry/meshlet_batch_to_bvh.js +0 -247
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.js +0 -226
- package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.d.ts +0 -8
- package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.js +0 -45
- package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.js +0 -105
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.d.ts +0 -6
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.d.ts.map +0 -1
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.js +0 -86
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.d.ts +0 -2
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.d.ts.map +0 -1
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.js +0 -136
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import {
|
|
3
|
-
BVH_REFIT_DEFERRED_HEADER_BYTES,
|
|
4
|
-
bvh_refit_deferred_byte_size
|
|
5
|
-
} from "../../gpu_primitive/bvh/BVH_REFIT_DEFERRED_LAYOUT.js";
|
|
6
|
-
import { shader_bvh_refit_repair } from "../../gpu_primitive/bvh/shader_bvh_refit_repair.js";
|
|
7
2
|
import { write_gpu_typed_buffer } from "../../shader/type/serde/write_gpu_typed_buffer.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
3
|
+
import { BLAS8_REFIT_TARGET_STRUCT } from "./BLAS8_REFIT_TARGET_STRUCT.js";
|
|
4
|
+
import {
|
|
5
|
+
BLAS8_REFIT_BATCH_WORKGROUP_SIZE,
|
|
6
|
+
BLAS8_REFIT_SPINE_STRIDE_WORDS,
|
|
7
|
+
shader_blas8_refit_batch
|
|
8
|
+
} from "./shader_blas8_refit_batch.js";
|
|
11
9
|
|
|
12
10
|
/**
|
|
13
11
|
* Initial capacity of the target table, in rows. Doubles as needed.
|
|
@@ -15,7 +13,7 @@ import { shader_blas_refit_batch_seed } from "./shader_blas_refit_batch_seed.js"
|
|
|
15
13
|
const TARGETS_INITIAL_CAPACITY = 16;
|
|
16
14
|
|
|
17
15
|
/**
|
|
18
|
-
* Initial capacity of
|
|
16
|
+
* Initial capacity of the workgroup lookup, in `(target_index, node_base)` pairs. Doubles as needed.
|
|
19
17
|
*/
|
|
20
18
|
const LOOKUP_INITIAL_CAPACITY = 256;
|
|
21
19
|
|
|
@@ -28,35 +26,32 @@ const LOOKUP_PAIR_WORDS = 2;
|
|
|
28
26
|
* Refit a set of BLAS trees every frame, as one batch: a fixed number of commands whatever the
|
|
29
27
|
* number of trees, and no per-tree host work while the set and its residency hold still.
|
|
30
28
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
29
|
+
* An entry is an `owner` — the identity a tree was registered under, per
|
|
30
|
+
* {@link GPUGeometryBVHManager#obtain} — and a `geometry_index`, the row whose vertices the boxes
|
|
31
|
+
* come from. Nothing here knows what a clone is, or that skinning is why the vertices moved; anything
|
|
32
|
+
* that deforms vertices in place can list its trees here.
|
|
35
33
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* tree is not resident yet are simply absent from the tables; the version moving is what brings
|
|
34
|
+
* Two tables live on the GPU between frames. The target rows ({@link BLAS8_REFIT_TARGET_STRUCT}) say
|
|
35
|
+
* where each tree sits in the manager's arena and where its part of the batch's spine starts; the
|
|
36
|
+
* lookup says, for every workgroup of the dispatch, which tree it serves and which run of that tree's
|
|
37
|
+
* nodes. Both are rebuilt from {@link GPUGeometryBVHManager#get_refit_target} when the entries change
|
|
38
|
+
* or the manager's {@link GPUGeometryBVHManager#residency_version} moves, and not otherwise. Entries
|
|
39
|
+
* whose tree is not resident yet are simply absent from the tables; the version moving is what brings
|
|
43
40
|
* them in.
|
|
44
41
|
*
|
|
45
|
-
* Every frame is then
|
|
46
|
-
*
|
|
47
|
-
* per
|
|
48
|
-
* characters of the playground's size; and one indirect {@link shader_bvh_refit_repair}, which runs
|
|
49
|
-
* nothing unless a climb read a box before it arrived (R1 in GPU_BVH_BUILD_PLAN.md).
|
|
42
|
+
* Every frame is then one transient buffer, the spine, with its clear, and
|
|
43
|
+
* {@link shader_blas8_refit_batch}: one dispatch per page of workgroups under the device's
|
|
44
|
+
* per-dimension cap.
|
|
50
45
|
*
|
|
51
46
|
* `record` belongs inside {@link GPUMeshSkinningContext#update}, or somewhere with the same
|
|
52
|
-
* guarantee: it binds the manager's arena
|
|
53
|
-
* replaced — the old
|
|
47
|
+
* guarantee: it binds the manager's arena buffer as it is at that moment, and that buffer is
|
|
48
|
+
* replaced — the old one destroyed — when the arena grows in {@link GPUGeometryBVHManager#update}.
|
|
54
49
|
* That runs before the frame's command context exists, so a refit recorded inside the frame is safe
|
|
55
50
|
* by call order. A refit recorded across one of those updates would submit a destroyed buffer, and
|
|
56
51
|
* the software device cannot catch it, since it executes nothing at submit.
|
|
57
52
|
*/
|
|
58
|
-
export class GPUBLASRefitBatch {
|
|
59
|
-
|
|
53
|
+
export class GPUBLASRefitBatch {
|
|
54
|
+
|
|
60
55
|
/** @type {GPUDevice} */
|
|
61
56
|
#device;
|
|
62
57
|
|
|
@@ -92,22 +87,20 @@ export class GPUBLASRefitBatch {
|
|
|
92
87
|
#targets_capacity = 0;
|
|
93
88
|
|
|
94
89
|
/**
|
|
95
|
-
*
|
|
90
|
+
* A `(target_index, node_base)` pair per workgroup.
|
|
96
91
|
*
|
|
97
|
-
* @type {
|
|
92
|
+
* @type {GPUBuffer|null}
|
|
98
93
|
*/
|
|
99
|
-
#
|
|
94
|
+
#lookup_buffer = null;
|
|
100
95
|
|
|
101
96
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* @type {{buffer: GPUBuffer|null, capacity: number, label: string}}
|
|
97
|
+
* Capacity of {@link #lookup_buffer}, in pairs.
|
|
98
|
+
* @type {number}
|
|
106
99
|
*/
|
|
107
|
-
#
|
|
100
|
+
#lookup_capacity = 0;
|
|
108
101
|
|
|
109
102
|
/**
|
|
110
|
-
* Workgroups the batch dispatches, across every page: one per aligned run of
|
|
103
|
+
* Workgroups the batch dispatches, across every page: one per aligned run of nodes of every
|
|
111
104
|
* resident tree. Zero means there is nothing to record.
|
|
112
105
|
*
|
|
113
106
|
* @type {number}
|
|
@@ -115,26 +108,11 @@ export class GPUBLASRefitBatch {
|
|
|
115
108
|
#workgroup_count = 0;
|
|
116
109
|
|
|
117
110
|
/**
|
|
118
|
-
*
|
|
119
|
-
* every resident tree.
|
|
120
|
-
*
|
|
121
|
-
* @type {number}
|
|
122
|
-
*/
|
|
123
|
-
#slot_workgroup_count = 0;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Words of arrival counters the batch needs: the sum of every resident tree's node slots.
|
|
127
|
-
*
|
|
128
|
-
* @type {number}
|
|
129
|
-
*/
|
|
130
|
-
#counter_words = 0;
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Internal nodes across every resident tree: the most the climbs can defer.
|
|
111
|
+
* Nodes across every resident tree: what the spine has to hold a box for.
|
|
134
112
|
*
|
|
135
113
|
* @type {number}
|
|
136
114
|
*/
|
|
137
|
-
#
|
|
115
|
+
#node_count = 0;
|
|
138
116
|
|
|
139
117
|
/**
|
|
140
118
|
* @param {GPUDevice} device
|
|
@@ -149,7 +127,7 @@ export class GPUBLASRefitBatch {
|
|
|
149
127
|
* The set of trees to refit from now on. Replaces the previous set; the tables are rebuilt on the
|
|
150
128
|
* next {@link record}.
|
|
151
129
|
*
|
|
152
|
-
* An owner may appear once: two rows for one tree would be two
|
|
130
|
+
* An owner may appear once: two rows for one tree would be two sets of lanes writing its nodes.
|
|
153
131
|
*
|
|
154
132
|
* @param {{owner: object, geometry_index: number}[]} entries
|
|
155
133
|
*/
|
|
@@ -176,8 +154,8 @@ export class GPUBLASRefitBatch {
|
|
|
176
154
|
*
|
|
177
155
|
* @param {ShadeGPUCommandContext} cmd
|
|
178
156
|
* @param {Object} options
|
|
179
|
-
* @param {GPUGeometryBVHManager} options.blas tree residency —
|
|
180
|
-
* @param {GPUGeometryManager} options.geometries geometry metadata table the
|
|
157
|
+
* @param {GPUGeometryBVHManager} options.blas tree residency — the node arena
|
|
158
|
+
* @param {GPUGeometryManager} options.geometries geometry metadata table the boxes read vertices through
|
|
181
159
|
* @returns {boolean} whether anything was recorded
|
|
182
160
|
*/
|
|
183
161
|
record(cmd, { blas, geometries }) {
|
|
@@ -195,61 +173,32 @@ export class GPUBLASRefitBatch {
|
|
|
195
173
|
return false;
|
|
196
174
|
}
|
|
197
175
|
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
const counters = cmd.allocateTransientBuffer(GPUBufferUsage.STORAGE, counters_size);
|
|
176
|
+
// A box per node of every tree, and every word of it has to start at zero, which reads "not
|
|
177
|
+
// here yet": a leftover word would be taken for a box nothing has found this frame. The
|
|
178
|
+
// transient allocator pools its buffers, so whatever comes back is carrying an earlier
|
|
179
|
+
// frame's boxes and gets cleared — once, for the whole batch.
|
|
180
|
+
const spine_size = this.#node_count * BLAS8_REFIT_SPINE_STRIDE_WORDS * Uint32Array.BYTES_PER_ELEMENT;
|
|
205
181
|
|
|
206
|
-
cmd.
|
|
182
|
+
const spine = cmd.allocateTransientBuffer(GPUBufferUsage.STORAGE, spine_size);
|
|
207
183
|
|
|
208
|
-
|
|
209
|
-
// header has to start at zero, for the reason the counters do.
|
|
210
|
-
const deferred = cmd.allocateTransientBuffer(
|
|
211
|
-
GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT,
|
|
212
|
-
bvh_refit_deferred_byte_size(this.#internal_node_count)
|
|
213
|
-
);
|
|
214
|
-
|
|
215
|
-
cmd.clearBuffer(deferred, 0, BVH_REFIT_DEFERRED_HEADER_BYTES);
|
|
184
|
+
cmd.clearBuffer(spine, 0, spine_size);
|
|
216
185
|
|
|
217
186
|
const meshlets = geometries.meshlets;
|
|
218
187
|
|
|
219
|
-
// The arena
|
|
220
|
-
//
|
|
188
|
+
// The arena buffer is read off the manager here and now, every frame: it is replaced when
|
|
189
|
+
// the arena grows, and only its contents' offsets are stable.
|
|
221
190
|
const page = this.#device.limits.maxComputeWorkgroupsPerDimension;
|
|
222
191
|
|
|
223
|
-
// Every bound word the climbs will read, seeded a dispatch ahead of them, so a box that has
|
|
224
|
-
// not reached its reader is one the reader can see is missing.
|
|
225
|
-
const slot_workgroup_count = this.#slot_workgroup_count;
|
|
226
|
-
|
|
227
|
-
for (let offset = 0; offset < slot_workgroup_count; offset += page) {
|
|
228
|
-
shader_blas_refit_batch_seed.dispatch({
|
|
229
|
-
encoder: cmd,
|
|
230
|
-
group_count_x: Math.min(page, slot_workgroup_count - offset),
|
|
231
|
-
bindings: {
|
|
232
|
-
dispatch_offset: offset,
|
|
233
|
-
targets: this.#targets_buffer,
|
|
234
|
-
lookup: this.#slot_runs.buffer,
|
|
235
|
-
nodes: blas.buffer_data,
|
|
236
|
-
},
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
192
|
for (let offset = 0; offset < workgroup_count; offset += page) {
|
|
241
|
-
|
|
193
|
+
shader_blas8_refit_batch.dispatch({
|
|
242
194
|
encoder: cmd,
|
|
243
195
|
group_count_x: Math.min(page, workgroup_count - offset),
|
|
244
196
|
bindings: {
|
|
245
197
|
dispatch_offset: offset,
|
|
246
198
|
targets: this.#targets_buffer,
|
|
247
|
-
lookup: this.#
|
|
248
|
-
leaf_nodes: blas.buffer_leaf_nodes,
|
|
249
|
-
parents: blas.buffer_parents,
|
|
250
|
-
counters,
|
|
199
|
+
lookup: this.#lookup_buffer,
|
|
251
200
|
nodes: blas.buffer_data,
|
|
252
|
-
|
|
201
|
+
spine,
|
|
253
202
|
geometries: geometries.buffer_metadata,
|
|
254
203
|
meshlet_metadata: meshlets.buffer_metadata,
|
|
255
204
|
meshlet_data: meshlets.buffer_data,
|
|
@@ -257,16 +206,6 @@ export class GPUBLASRefitBatch {
|
|
|
257
206
|
});
|
|
258
207
|
}
|
|
259
208
|
|
|
260
|
-
shader_bvh_refit_repair.dispatchIndirect({
|
|
261
|
-
encoder: cmd,
|
|
262
|
-
command: deferred,
|
|
263
|
-
bindings: {
|
|
264
|
-
parents: blas.buffer_parents,
|
|
265
|
-
refit_deferred: deferred,
|
|
266
|
-
nodes: blas.buffer_data,
|
|
267
|
-
},
|
|
268
|
-
});
|
|
269
|
-
|
|
270
209
|
return true;
|
|
271
210
|
}
|
|
272
211
|
|
|
@@ -278,45 +217,35 @@ export class GPUBLASRefitBatch {
|
|
|
278
217
|
#resolve(blas) {
|
|
279
218
|
const rows = [];
|
|
280
219
|
|
|
281
|
-
let
|
|
220
|
+
let node_count = 0;
|
|
282
221
|
let workgroup_count = 0;
|
|
283
|
-
let slot_workgroup_count = 0;
|
|
284
|
-
let internal_node_count = 0;
|
|
285
222
|
|
|
286
223
|
for (const entry of this.#entries) {
|
|
287
224
|
const target = blas.get_refit_target(entry.owner);
|
|
288
225
|
|
|
289
|
-
if (target === undefined || target.
|
|
226
|
+
if (target === undefined || target.node_count === 0) {
|
|
290
227
|
// not resident yet, or nothing to fit; the version moving is what brings it in
|
|
291
228
|
continue;
|
|
292
229
|
}
|
|
293
230
|
|
|
294
231
|
rows.push({
|
|
295
|
-
|
|
296
|
-
parents_offset: target.parents_offset,
|
|
297
|
-
leaf_nodes_offset: target.leaf_nodes_offset,
|
|
298
|
-
leaf_count: target.leaf_count,
|
|
232
|
+
node_offset: target.node_offset,
|
|
299
233
|
node_count: target.node_count,
|
|
300
|
-
|
|
234
|
+
spine_offset: node_count,
|
|
301
235
|
geometry_index: entry.geometry_index,
|
|
302
236
|
});
|
|
303
237
|
|
|
304
|
-
|
|
305
|
-
workgroup_count += Math.ceil(target.
|
|
306
|
-
slot_workgroup_count += Math.ceil(target.node_count / BLAS_REFIT_BATCH_WORKGROUP_SIZE);
|
|
307
|
-
internal_node_count += target.leaf_count - 1;
|
|
238
|
+
node_count += target.node_count;
|
|
239
|
+
workgroup_count += Math.ceil(target.node_count / BLAS8_REFIT_BATCH_WORKGROUP_SIZE);
|
|
308
240
|
}
|
|
309
241
|
|
|
310
242
|
if (rows.length > 0) {
|
|
311
243
|
this.#upload_targets(rows);
|
|
312
|
-
this.#
|
|
313
|
-
this.#upload_runs(this.#slot_runs, rows, row => row.node_count, slot_workgroup_count);
|
|
244
|
+
this.#upload_lookup(rows, workgroup_count);
|
|
314
245
|
}
|
|
315
246
|
|
|
316
247
|
this.#workgroup_count = workgroup_count;
|
|
317
|
-
this.#
|
|
318
|
-
this.#counter_words = counter_words;
|
|
319
|
-
this.#internal_node_count = internal_node_count;
|
|
248
|
+
this.#node_count = node_count;
|
|
320
249
|
|
|
321
250
|
this.#entries_dirty = false;
|
|
322
251
|
this.#resolved_version = blas.residency_version;
|
|
@@ -326,45 +255,42 @@ export class GPUBLASRefitBatch {
|
|
|
326
255
|
* @param {object[]} rows
|
|
327
256
|
*/
|
|
328
257
|
#upload_targets(rows) {
|
|
329
|
-
const stride =
|
|
258
|
+
const stride = BLAS8_REFIT_TARGET_STRUCT.aligned_size;
|
|
330
259
|
|
|
331
260
|
this.#ensure_targets_capacity(rows.length);
|
|
332
261
|
|
|
333
262
|
const data = new ArrayBuffer(rows.length * stride);
|
|
334
263
|
|
|
335
264
|
for (let i = 0; i < rows.length; i++) {
|
|
336
|
-
write_gpu_typed_buffer(rows[i],
|
|
265
|
+
write_gpu_typed_buffer(rows[i], BLAS8_REFIT_TARGET_STRUCT, data, i * stride);
|
|
337
266
|
}
|
|
338
267
|
|
|
339
268
|
this.#device.queue.writeBuffer(this.#targets_buffer, 0, data);
|
|
340
269
|
}
|
|
341
270
|
|
|
342
271
|
/**
|
|
343
|
-
* One `(target_index,
|
|
344
|
-
* `count_of` counts in it — its leaves for the refit, its node slots for the seeding pass.
|
|
272
|
+
* One `(target_index, node_base)` pair per workgroup: tree by tree, run by run of its nodes.
|
|
345
273
|
*
|
|
346
|
-
* @param {{buffer: GPUBuffer|null, capacity: number, label: string}} runs
|
|
347
274
|
* @param {object[]} rows
|
|
348
|
-
* @param {function(object): number} count_of
|
|
349
275
|
* @param {number} workgroup_count
|
|
350
276
|
*/
|
|
351
|
-
#
|
|
352
|
-
this.#
|
|
277
|
+
#upload_lookup(rows, workgroup_count) {
|
|
278
|
+
this.#ensure_lookup_capacity(workgroup_count);
|
|
353
279
|
|
|
354
280
|
const pairs = new Uint32Array(workgroup_count * LOOKUP_PAIR_WORDS);
|
|
355
281
|
|
|
356
282
|
let cursor = 0;
|
|
357
283
|
|
|
358
284
|
for (let target_index = 0; target_index < rows.length; target_index++) {
|
|
359
|
-
const count =
|
|
285
|
+
const count = rows[target_index].node_count;
|
|
360
286
|
|
|
361
|
-
for (let base = 0; base < count; base +=
|
|
287
|
+
for (let base = 0; base < count; base += BLAS8_REFIT_BATCH_WORKGROUP_SIZE) {
|
|
362
288
|
pairs[cursor++] = target_index;
|
|
363
289
|
pairs[cursor++] = base;
|
|
364
290
|
}
|
|
365
291
|
}
|
|
366
292
|
|
|
367
|
-
this.#device.queue.writeBuffer(
|
|
293
|
+
this.#device.queue.writeBuffer(this.#lookup_buffer, 0, pairs);
|
|
368
294
|
}
|
|
369
295
|
|
|
370
296
|
/**
|
|
@@ -387,7 +313,7 @@ export class GPUBLASRefitBatch {
|
|
|
387
313
|
|
|
388
314
|
this.#targets_buffer = this.#device.createBuffer({
|
|
389
315
|
label: 'GPUBLASRefitBatch/Targets',
|
|
390
|
-
size: capacity *
|
|
316
|
+
size: capacity * BLAS8_REFIT_TARGET_STRUCT.aligned_size,
|
|
391
317
|
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
392
318
|
});
|
|
393
319
|
|
|
@@ -395,31 +321,30 @@ export class GPUBLASRefitBatch {
|
|
|
395
321
|
}
|
|
396
322
|
|
|
397
323
|
/**
|
|
398
|
-
* @param {{buffer: GPUBuffer|null, capacity: number, label: string}} runs
|
|
399
324
|
* @param {number} pairs
|
|
400
325
|
*/
|
|
401
|
-
#
|
|
402
|
-
if (
|
|
326
|
+
#ensure_lookup_capacity(pairs) {
|
|
327
|
+
if (this.#lookup_buffer !== null && pairs <= this.#lookup_capacity) {
|
|
403
328
|
return;
|
|
404
329
|
}
|
|
405
330
|
|
|
406
|
-
let capacity = Math.max(
|
|
331
|
+
let capacity = Math.max(this.#lookup_capacity, LOOKUP_INITIAL_CAPACITY);
|
|
407
332
|
|
|
408
333
|
while (capacity < pairs) {
|
|
409
334
|
capacity *= 2;
|
|
410
335
|
}
|
|
411
336
|
|
|
412
|
-
if (
|
|
413
|
-
|
|
337
|
+
if (this.#lookup_buffer !== null) {
|
|
338
|
+
this.#lookup_buffer.destroy();
|
|
414
339
|
}
|
|
415
340
|
|
|
416
|
-
|
|
417
|
-
label:
|
|
341
|
+
this.#lookup_buffer = this.#device.createBuffer({
|
|
342
|
+
label: 'GPUBLASRefitBatch/Lookup',
|
|
418
343
|
size: capacity * LOOKUP_PAIR_WORDS * Uint32Array.BYTES_PER_ELEMENT,
|
|
419
344
|
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
420
345
|
});
|
|
421
346
|
|
|
422
|
-
|
|
347
|
+
this.#lookup_capacity = capacity;
|
|
423
348
|
}
|
|
424
349
|
|
|
425
350
|
destroy() {
|
|
@@ -428,20 +353,15 @@ export class GPUBLASRefitBatch {
|
|
|
428
353
|
this.#targets_buffer = null;
|
|
429
354
|
}
|
|
430
355
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
runs.buffer = null;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
runs.capacity = 0;
|
|
356
|
+
if (this.#lookup_buffer !== null) {
|
|
357
|
+
this.#lookup_buffer.destroy();
|
|
358
|
+
this.#lookup_buffer = null;
|
|
438
359
|
}
|
|
439
360
|
|
|
440
361
|
this.#targets_capacity = 0;
|
|
362
|
+
this.#lookup_capacity = 0;
|
|
441
363
|
this.#workgroup_count = 0;
|
|
442
|
-
this.#
|
|
443
|
-
this.#counter_words = 0;
|
|
444
|
-
this.#internal_node_count = 0;
|
|
364
|
+
this.#node_count = 0;
|
|
445
365
|
this.#entries_dirty = true;
|
|
446
366
|
}
|
|
447
367
|
}
|
|
@@ -12,12 +12,11 @@ export const BLAS_METADATA_STRUCT: WebGPUStruct;
|
|
|
12
12
|
/**
|
|
13
13
|
* Arena node index of the empty tree: what the lookup names for a geometry that has no tree yet.
|
|
14
14
|
*
|
|
15
|
-
* One
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* the arena's end, which is what a record resident over zero bytes used to point at.
|
|
15
|
+
* One node with every slot empty, which is a node of zeroes: no slot holds a triangle or a child, so
|
|
16
|
+
* a query finds nothing in it and has nowhere to go from it. Every traversal reads
|
|
17
|
+
* `blas_lookup[geometry_index]` and starts walking without a null check, so "no tree" has to be a
|
|
18
|
+
* tree — and it must not be whatever tree happens to sit at the arena's end, which is what a record
|
|
19
|
+
* resident over zero bytes used to point at.
|
|
21
20
|
*
|
|
22
21
|
* @type {number}
|
|
23
22
|
*/
|
|
@@ -53,14 +52,6 @@ export class GPUGeometryBVHManager {
|
|
|
53
52
|
* @returns {GPUBuffer}
|
|
54
53
|
*/
|
|
55
54
|
get buffer_data(): GPUBuffer;
|
|
56
|
-
/**
|
|
57
|
-
* @returns {GPUBuffer}
|
|
58
|
-
*/
|
|
59
|
-
get buffer_parents(): GPUBuffer;
|
|
60
|
-
/**
|
|
61
|
-
* @returns {GPUBuffer}
|
|
62
|
-
*/
|
|
63
|
-
get buffer_leaf_nodes(): GPUBuffer;
|
|
64
55
|
/**
|
|
65
56
|
* @returns {number}
|
|
66
57
|
*/
|
|
@@ -76,48 +67,40 @@ export class GPUGeometryBVHManager {
|
|
|
76
67
|
* Bytes of the node arena that trees actually occupy: its capacity, less every region
|
|
77
68
|
* {@link #allocator} still holds free.
|
|
78
69
|
*
|
|
79
|
-
* Beside {@link gpu_memory_usage}, which is what the
|
|
80
|
-
* in them. The gap between the two is what a released tree gives back and what the next tree
|
|
70
|
+
* Beside {@link gpu_memory_usage}, which is what the arena and the lookup cost whether or not
|
|
71
|
+
* anything is in them. The gap between the two is what a released tree gives back and what the next tree
|
|
81
72
|
* of that size takes, so it is the one worth watching.
|
|
82
73
|
*
|
|
83
74
|
* @returns {number} in bytes
|
|
84
75
|
*/
|
|
85
76
|
get gpu_memory_usage_occupied(): number;
|
|
86
77
|
/**
|
|
87
|
-
* The tree belonging to `owner`, registered
|
|
78
|
+
* The tree belonging to `owner`, registered as a copy of `source`'s if it does not exist yet.
|
|
88
79
|
*
|
|
89
80
|
* Two arguments rather than one because those are two different questions. `owner` is the
|
|
90
81
|
* identity the tree is looked up by; `source` is the geometry whose nodes it starts as. They
|
|
91
82
|
* coincide for anything that owns its geometry outright, and they do not for a per-instance
|
|
92
|
-
* copy — a skinned clone deforms its own vertices, so its
|
|
93
|
-
* written into the tree everyone else is tracing
|
|
94
|
-
* source's. Keeping the two separate is what lets one derivation serve every copy.
|
|
83
|
+
* copy — a skinned clone deforms its own vertices, so its boxes are its own and cannot be
|
|
84
|
+
* written into the tree everyone else is tracing.
|
|
95
85
|
*
|
|
96
86
|
* @param {object} owner identity to look this tree up by — a geometry, a clone's metadata row
|
|
97
|
-
* @param {MeshletGeometry} source geometry whose nodes this tree
|
|
98
|
-
* bounds from
|
|
87
|
+
* @param {MeshletGeometry} source geometry whose nodes this tree starts as
|
|
99
88
|
* @returns {GPUGeometryMeshletsBVH}
|
|
100
89
|
*/
|
|
101
90
|
obtain(owner: object, source: MeshletGeometry): GPUGeometryMeshletsBVH;
|
|
102
91
|
/**
|
|
103
92
|
* Everything a refit needs to find a resident tree, or `undefined` while it is not resident.
|
|
104
93
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* registered before its tree exists is uploaded as nothing — resident over zero bytes, at the
|
|
108
|
-
* arena's end. Its shape is derived later, from the bytes as they are then. Answering with that
|
|
109
|
-
* shape's counts at that record's address would hand a refit whichever tree was appended next,
|
|
110
|
-
* so the answer is withheld until the nodes actually uploaded are the tree the shape describes.
|
|
94
|
+
* The count is of the nodes that were uploaded, not of the geometry's tree as it is now: a
|
|
95
|
+
* refit writes exactly the region the record holds.
|
|
111
96
|
*
|
|
112
97
|
* @param {object} owner the identity passed to {@link obtain}
|
|
113
|
-
* @returns {{
|
|
98
|
+
* @returns {{node_offset: number, node_count: number}|undefined} the arena node the tree's root
|
|
99
|
+
* sits at, and the nodes in the tree
|
|
114
100
|
*/
|
|
115
101
|
get_refit_target(owner: object): {
|
|
116
|
-
|
|
102
|
+
node_offset: number;
|
|
117
103
|
node_count: number;
|
|
118
|
-
leaf_count: number;
|
|
119
|
-
parents_offset: number;
|
|
120
|
-
leaf_nodes_offset: number;
|
|
121
104
|
} | undefined;
|
|
122
105
|
/**
|
|
123
106
|
* Where a registered tree's root sits in the arena, or `undefined` while nothing is resident
|
|
@@ -152,16 +135,12 @@ export class GPUGeometryBVHManager {
|
|
|
152
135
|
*/
|
|
153
136
|
remove(owner: object): boolean;
|
|
154
137
|
/**
|
|
155
|
-
* Bring the
|
|
138
|
+
* Bring the arena up to date with everything registered since the last call, and move the
|
|
156
139
|
* residency version if anything a refit reads has changed.
|
|
157
|
-
*
|
|
158
|
-
* Shapes first, and as their own question: they are not behind the node queue, so a frame in
|
|
159
|
-
* which a shape arrives for an already-uploaded record still uploads it — and still moves the
|
|
160
|
-
* version, because that record's refit answer has changed all the same.
|
|
161
140
|
*/
|
|
162
141
|
update(): void;
|
|
163
142
|
/**
|
|
164
|
-
* Release the arena and
|
|
143
|
+
* Release the arena and the lookup. For the geometry manager's own teardown: nothing is
|
|
165
144
|
* obtained, uploaded or traced afterwards. Safe to call twice.
|
|
166
145
|
*/
|
|
167
146
|
destroy(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUGeometryBVHManager.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUGeometryBVHManager.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js"],"names":[],"mappings":"AAYA;;;GAGG;AAEH;;;;;GAKG;AACH,gDAGG;AAEH;;;;;;;;;;GAUG;AACH,sCAFU,MAAM,CAEyB;AAmCzC;;;;;;;;;;;;;;GAcG;AACH;IAgGI;;;OAGG;IACH,+BAgCC;IA5HD;;;OAGG;IACH,iCAEC;IAOD;;;OAGG;IACH,6BAEC;IA6CD;;OAEG;IACH,gCAEC;IAyDD;;;;OAIG;IACH,iCAEC;IAED,+BAYC;IAED;;;;;;;;;OASG;IACH,wCAIC;IAED;;;;;;;;;;;;OAYG;IACH,cAJW,MAAM,UACN,eAAe,GACb,sBAAsB,CAalC;IA6BD;;;;;;;;;OASG;IACH,wBAJW,MAAM,GACJ;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,GAAC,SAAS,CAc/D;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,MAAM,GAAC,SAAS,CAU5B;IAED;;;;;;;;;OASG;IACH,0BAFW,WAAW,QAQrB;IAED;;;;;;;;;;;OAWG;IACH,cAHW,MAAM,GACJ,OAAO,CA4BnB;IAwFD;;;OAGG;IACH,eAIC;IAmJD;;;OAGG;IACH,gBAGC;;CACJ;8BAzoBY,OAAO,uBAAuB,EAAE,eAAe;yBAC/C,OAAO,sDAAsD,EAAE,UAAU;6BAPzD,mCAAmC;uCAGzB,6BAA6B"}
|