@woosh/meep-engine 3.68.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 +74 -0
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +2 -17
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.js +3 -18
- 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/graphics/ecs/trail3d/Trail3D.d.ts +33 -65
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +37 -245
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts +0 -4
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.js +4 -10
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts +13 -10
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.js +28 -37
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts +10 -0
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.js +27 -0
- package/src/engine/graphics/trail/TrailKnots.d.ts +62 -0
- package/src/engine/graphics/trail/TrailKnots.d.ts.map +1 -0
- package/src/engine/graphics/trail/TrailKnots.js +137 -0
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts +1 -1
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.js +1 -1
- package/src/engine/graphics3/EntityRowHold.d.ts +48 -0
- package/src/engine/graphics3/EntityRowHold.d.ts.map +1 -0
- package/src/engine/graphics3/EntityRowHold.js +128 -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/graphics3/GPUParticleEmitterSystem.d.ts +6 -2
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +11 -44
- package/src/engine/graphics3/Trail3DSystem.d.ts +69 -35
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem.js +380 -81
- 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/ecs/FluidObstacle.d.ts +17 -0
- package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacle.js +22 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +6 -5
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +14 -3
- 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/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts +9 -1
- package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js +11 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts +5 -0
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js +2 -0
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts +4 -3
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js +11 -3
- 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/trails/index.html +50 -0
- package/src/shade/playground/trails/main.d.ts +2 -0
- package/src/shade/playground/trails/main.d.ts.map +1 -0
- package/src/shade/playground/trails/main.js +258 -0
- package/src/shade/playground/water_surface/main.js +6 -3
- package/src/shade/renderer/animation/GPUAnimationManager.js +2 -2
- package/src/shade/renderer/animation/animation_curve_write_keys.d.ts +18 -0
- package/src/shade/renderer/animation/animation_curve_write_keys.d.ts.map +1 -0
- package/src/shade/renderer/animation/animation_curve_write_keys.js +34 -0
- 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/deferred/tonemap/ColorGrade.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ColorGrade.js +13 -36
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +2 -2
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts +2 -13
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.js +6 -21
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts +17 -6
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.js +38 -178
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts +7 -9
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +17 -106
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts +7 -17
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.js +18 -118
- 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/forcing/FLUID_FORCING.d.ts +14 -0
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING.js +18 -0
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts +3 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.js +4 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +9 -0
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.js +20 -4
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts +11 -2
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.js +59 -2
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts +4 -1
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.js +367 -341
- 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 +6 -2
- 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 +340 -282
- 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/press/shader_grass_press_mark.d.ts +3 -2
- package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts.map +1 -1
- package/src/shade/renderer/grass/press/shader_grass_press_mark.js +5 -3
- 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/rasterize/native/avboit/avboit_unlit_draw.d.ts +49 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.js +144 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts +71 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.js +152 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts +21 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.js +30 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts +101 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.js +306 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +11 -4
- 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/trails/GPUTrailAVBOITChannel.d.ts +69 -0
- package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts.map +1 -0
- package/src/shade/renderer/trails/GPUTrailAVBOITChannel.js +129 -0
- package/src/shade/renderer/trails/GPUTrailSystem.d.ts +164 -0
- package/src/shade/renderer/trails/GPUTrailSystem.d.ts.map +1 -0
- package/src/shade/renderer/trails/GPUTrailSystem.js +725 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts +14 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.js +38 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts +66 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.js +154 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts +19 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.js +68 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts +18 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.js +43 -0
- package/src/shade/renderer/trails/graph_trails.d.ts +58 -0
- package/src/shade/renderer/trails/graph_trails.d.ts.map +1 -0
- package/src/shade/renderer/trails/graph_trails.js +155 -0
- package/src/shade/renderer/trails/graph_trails_avboit.d.ts +126 -0
- package/src/shade/renderer/trails/graph_trails_avboit.d.ts.map +1 -0
- package/src/shade/renderer/trails/graph_trails_avboit.js +300 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts +56 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.js +220 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts +49 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.js +162 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.d.ts +52 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.js +126 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts +23 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.js +57 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts +14 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.js +40 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts +18 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.js +64 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts +14 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.js +51 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts +48 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.js +197 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts +34 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.js +111 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts +24 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.js +78 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts +23 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.js +130 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts +29 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.js +78 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts +18 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.js +79 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts +20 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.js +101 -0
- 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/engine/graphics/ecs/trail3d/advance_trail.d.ts +0 -18
- package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/advance_trail.js +0 -42
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts +0 -14
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.js +0 -75
- package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts +0 -17
- package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/trail_head_position.js +0 -19
- package/src/engine/graphics/trail/tube/TubeX.d.ts +0 -186
- package/src/engine/graphics/trail/tube/TubeX.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/TubeX.js +0 -575
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +0 -16
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +0 -34
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +0 -27
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/tube_attributes_spec.js +0 -70
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +0 -38
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts.map +0 -1
- package/src/engine/graphics3/trail/trail_tube_write_geometry.js +0 -119
- 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
|
@@ -3,12 +3,10 @@ import { BufferResourceDescriptor } from "../../device/graph/BufferResourceDescr
|
|
|
3
3
|
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
4
4
|
import { GPUDatabase } from "../buffer/table/GPUDatabase.js";
|
|
5
5
|
import { graph_inspect_gpu_buffer } from "../buffer/graph_inspect_gpu_buffer.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
TRAVERSAL_STACK_SIZE
|
|
11
|
-
} from "../gpu_primitive/bvh/check_bvh_structure.js";
|
|
6
|
+
import { format_depth_histogram } from "../gpu_primitive/bvh/check_bvh_structure.js";
|
|
7
|
+
import { bvh8_tree_buffer_size } from "../gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.js";
|
|
8
|
+
import { check_bvh8_tree } from "../gpu_primitive/bvh8/check_bvh8_tree.js";
|
|
9
|
+
import { BVH8_TLAS_MAX_DEPTH } from "../shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.js";
|
|
12
10
|
import { u32 } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
13
11
|
import { WebGPUArray } from "../shader/type/WebGPUArray.js";
|
|
14
12
|
import { GPUInstancesAccelerationStructure } from "./GPUInstancesAccelerationStructure.js";
|
|
@@ -17,9 +15,9 @@ import { SCENE_DATABASE_SPEC } from "./SCENE_DATABASE_SPEC.js";
|
|
|
17
15
|
/**
|
|
18
16
|
* The whole TLAS path, on a device, against a real scene database.
|
|
19
17
|
*
|
|
20
|
-
* `verify_gpu_bvh_build`
|
|
21
|
-
* on the host, which is the right way to test the builder
|
|
22
|
-
* things with no on-device coverage anywhere: `shader_bvh_extract_instance_leaves`, which is where
|
|
18
|
+
* `verify_gpu_bvh_build` and `verify_gpu_bvh8_encode` hand the binary builder leaf boxes and a
|
|
19
|
+
* scene-bounds cell computed on the host, which is the right way to test the builder and the encode
|
|
20
|
+
* in isolation — and leaves exactly two things with no on-device coverage anywhere: `shader_bvh_extract_instance_leaves`, which is where
|
|
23
21
|
* world AABBs are actually read from the `meshes` table and where the scene bounds are reduced,
|
|
24
22
|
* and the +/-inf seeding of that cell, which a pool-cleared (zeroed) buffer would silently break by
|
|
25
23
|
* anchoring every Morton code to the origin. This covers both, by driving
|
|
@@ -101,50 +99,22 @@ function make_boxes(count, seed, spread) {
|
|
|
101
99
|
* @param {GPUInstancesAccelerationStructure} tlas
|
|
102
100
|
* @param {string} label
|
|
103
101
|
* @param {number[]} expected_rows the `meshes` rows that should be the tree's leaves
|
|
104
|
-
* @param {number[][]} boxes_by_row world AABB per row,
|
|
102
|
+
* @param {number[][]} boxes_by_row world AABB per row, as it was written to the table
|
|
105
103
|
* @returns {Promise<boolean>} whether the tree checked out
|
|
106
104
|
*/
|
|
107
105
|
function inspect_tree(graphics, tlas, label, expected_rows, boxes_by_row) {
|
|
108
106
|
const leaf_count = expected_rows.length;
|
|
109
107
|
|
|
110
|
-
|
|
111
|
-
// nothing to traverse: the format's empty tree is the root word alone
|
|
112
|
-
return read_words(graphics, tlas.buffer, 1).then(words => {
|
|
113
|
-
const empty = words[0] === 0xffffffff;
|
|
114
|
-
|
|
115
|
-
report(label, empty ? [] : [`empty TLAS root word is ${words[0]}, expected BVH_NULL_NODE`], [], '', 0);
|
|
116
|
-
|
|
117
|
-
return empty;
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const word_count = bvh_buffer_size(leaf_count) / Uint32Array.BYTES_PER_ELEMENT;
|
|
108
|
+
const word_count = bvh8_tree_buffer_size(leaf_count) / Uint32Array.BYTES_PER_ELEMENT;
|
|
122
109
|
|
|
123
110
|
return read_words(graphics, tlas.buffer, word_count).then(tree => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
for (const row of expected_rows) {
|
|
132
|
-
const box = boxes_by_row[row];
|
|
133
|
-
|
|
134
|
-
for (let axis = 0; axis < 3; axis++) {
|
|
135
|
-
if (box[axis] < root_bounds[axis] - 1e-3 || box[3 + axis] > root_bounds[3 + axis] + 1e-3) {
|
|
136
|
-
result.problems.push(
|
|
137
|
-
`root does not contain row ${row} on axis ${axis}: `
|
|
138
|
-
+ `[${root_bounds[axis]}, ${root_bounds[3 + axis]}] vs [${box[axis]}, ${box[3 + axis]}]`
|
|
139
|
-
);
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (result.problems.length > 0) {
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
111
|
+
// Every slot has to hold the world boxes of the rows under it, and the header the box of them
|
|
112
|
+
// all — which is the end-to-end statement that the extraction pass read the right rows out of
|
|
113
|
+
// the `meshes` table. The table holds single-precision boxes.
|
|
114
|
+
const result = check_bvh8_tree(tree, leaf_count, expected_rows, row => boxes_by_row[row].map(Math.fround));
|
|
115
|
+
|
|
116
|
+
if (result.max_depth > BVH8_TLAS_MAX_DEPTH) {
|
|
117
|
+
result.warnings.push(`the tree is ${result.max_depth} levels deep, more than a walk's stack holds`);
|
|
148
118
|
}
|
|
149
119
|
|
|
150
120
|
report(
|
|
@@ -167,7 +137,7 @@ function inspect_tree(graphics, tlas, label, expected_rows, boxes_by_row) {
|
|
|
167
137
|
* @param {number} max_depth
|
|
168
138
|
*/
|
|
169
139
|
function report(label, problems, warnings, depth_summary, max_depth) {
|
|
170
|
-
const headline = `${label} —
|
|
140
|
+
const headline = `${label} — depth ${max_depth}/${BVH8_TLAS_MAX_DEPTH}`;
|
|
171
141
|
|
|
172
142
|
if (problems.length === 0) {
|
|
173
143
|
console.log(`%c[TLAS] PASS ${headline}`, 'color: #0c0');
|
|
@@ -222,14 +192,14 @@ function read_words(graphics, buffer, word_count) {
|
|
|
222
192
|
* End-to-end verification of the GPU TLAS build against a real scene database.
|
|
223
193
|
*
|
|
224
194
|
* Builds a synthetic `meshes` table, drives the TLAS through the same calls `GPUSceneContext`
|
|
225
|
-
* makes, reads the tree back and checks it:
|
|
226
|
-
* present exactly once as a leaf payload, every
|
|
227
|
-
*
|
|
228
|
-
* table correctly and the scene-bounds cell was seeded,
|
|
195
|
+
* makes, reads the tree back and checks it ({@link check_bvh8_tree}): the header, every node
|
|
196
|
+
* reachable once, every mesh row present exactly once as a leaf's payload, every slot holding the
|
|
197
|
+
* world AABBs of the instances under it, and the header's box the box of them all — which is the
|
|
198
|
+
* statement that the extraction pass read the table correctly and the scene-bounds cell was seeded,
|
|
199
|
+
* not zeroed.
|
|
229
200
|
*
|
|
230
201
|
* Then it exercises the three things only the integration has: a pure movement (rebuild, no rows
|
|
231
|
-
* upload), a removal (a leaf really goes away), and an emptied TLAS (the host-written empty
|
|
232
|
-
* word).
|
|
202
|
+
* upload), a removal (a leaf really goes away), and an emptied TLAS (the host-written empty tree).
|
|
233
203
|
*
|
|
234
204
|
* @param {GraphicsContext} graphics
|
|
235
205
|
* @returns {Promise<void>}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Intermediate node
|
|
3
|
-
* Node is stored as 5
|
|
3
|
+
* Node is stored as 5 uint4's so we can load the entire 80 bytes in 5 global memory accesses.
|
|
4
|
+
* Integers rather than floats: all but the first three words are packed bytes, and a packed word whose
|
|
5
|
+
* bits happen to spell a NaN is not a value WGSL promises to carry through a float unchanged.
|
|
4
6
|
* @see https://github.com/jan-van-bergen/GPU-Raytracer/blob/6559ae2241c8fdea0ddaec959fe1a47ec9b3ab0d/Src/CUDA/Raytracing/BVH8.h#L19
|
|
5
7
|
* @type {WebGPUStruct}
|
|
6
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BVH8_INODE_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.js"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"BVH8_INODE_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,gCAFU,YAAY,CAInB;6BAZ0B,kCAAkC"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { vec4u } from "../../../../type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
2
|
import { WebGPUArray } from "../../../../type/WebGPUArray.js";
|
|
3
3
|
import { WebGPUStruct } from "../../../../type/WebGPUStruct.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Intermediate node
|
|
7
|
-
* Node is stored as 5
|
|
7
|
+
* Node is stored as 5 uint4's so we can load the entire 80 bytes in 5 global memory accesses.
|
|
8
|
+
* Integers rather than floats: all but the first three words are packed bytes, and a packed word whose
|
|
9
|
+
* bits happen to spell a NaN is not a value WGSL promises to carry through a float unchanged.
|
|
8
10
|
* @see https://github.com/jan-van-bergen/GPU-Raytracer/blob/6559ae2241c8fdea0ddaec959fe1a47ec9b3ab0d/Src/CUDA/Raytracing/BVH8.h#L19
|
|
9
11
|
* @type {WebGPUStruct}
|
|
10
12
|
*/
|
|
11
13
|
export const BVH8_INODE_STRUCT = WebGPUStruct.from({
|
|
12
|
-
data: WebGPUArray.from(
|
|
14
|
+
data: WebGPUArray.from(vec4u, 5),
|
|
13
15
|
});
|
|
14
16
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Levels of nodes a BVH8 over a geometry may have, root included.
|
|
3
|
+
*
|
|
4
|
+
* A traversal keeps one stack entry per level it is below, so this is what the stack is sized by; a
|
|
5
|
+
* tree deeper than this is refused where it is built ({@link bvh8_build_for_meshlets}) rather than
|
|
6
|
+
* walked short. Trees over ordinary meshes gain about a level per eightfold in triangles and are 11
|
|
7
|
+
* deep at a million; a pile of identical triangles, which no split can separate, was 14 deep at
|
|
8
|
+
* twenty thousand.
|
|
9
|
+
*
|
|
10
|
+
* @type {number}
|
|
11
|
+
*/
|
|
12
|
+
export const BVH8_BLAS_MAX_DEPTH: number;
|
|
13
|
+
/**
|
|
14
|
+
* Levels of nodes the BVH8 over a scene's instances may have.
|
|
15
|
+
*
|
|
16
|
+
* It is encoded three binary levels to a node from a Karras tree, whose depth is at most the 30 bits
|
|
17
|
+
* of a Morton code plus the bits that tell identical codes apart: 16 holds 2^18 instances at one
|
|
18
|
+
* centroid.
|
|
19
|
+
*
|
|
20
|
+
* @type {number}
|
|
21
|
+
*/
|
|
22
|
+
export const BVH8_TLAS_MAX_DEPTH: number;
|
|
23
|
+
/**
|
|
24
|
+
* Entries in the stack one query walks both trees with.
|
|
25
|
+
* @type {number}
|
|
26
|
+
*/
|
|
27
|
+
export const BVH8_TRAVERSAL_STACK_SIZE: number;
|
|
28
|
+
//# sourceMappingURL=BVH8_MAX_DEPTH.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BVH8_MAX_DEPTH.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,kCAFU,MAAM,CAEsB;AAEtC;;;;;;;;GAQG;AACH,kCAFU,MAAM,CAEsB;AAEtC;;;GAGG;AACH,wCAFU,MAAM,CAEmE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Levels of nodes a BVH8 over a geometry may have, root included.
|
|
3
|
+
*
|
|
4
|
+
* A traversal keeps one stack entry per level it is below, so this is what the stack is sized by; a
|
|
5
|
+
* tree deeper than this is refused where it is built ({@link bvh8_build_for_meshlets}) rather than
|
|
6
|
+
* walked short. Trees over ordinary meshes gain about a level per eightfold in triangles and are 11
|
|
7
|
+
* deep at a million; a pile of identical triangles, which no split can separate, was 14 deep at
|
|
8
|
+
* twenty thousand.
|
|
9
|
+
*
|
|
10
|
+
* @type {number}
|
|
11
|
+
*/
|
|
12
|
+
export const BVH8_BLAS_MAX_DEPTH = 16;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Levels of nodes the BVH8 over a scene's instances may have.
|
|
16
|
+
*
|
|
17
|
+
* It is encoded three binary levels to a node from a Karras tree, whose depth is at most the 30 bits
|
|
18
|
+
* of a Morton code plus the bits that tell identical codes apart: 16 holds 2^18 instances at one
|
|
19
|
+
* centroid.
|
|
20
|
+
*
|
|
21
|
+
* @type {number}
|
|
22
|
+
*/
|
|
23
|
+
export const BVH8_TLAS_MAX_DEPTH = 16;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Entries in the stack one query walks both trees with.
|
|
27
|
+
* @type {number}
|
|
28
|
+
*/
|
|
29
|
+
export const BVH8_TRAVERSAL_STACK_SIZE = BVH8_TLAS_MAX_DEPTH + BVH8_BLAS_MAX_DEPTH;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The grid a BVH8 node holds its slots' boxes on, and a box's corners in bytes on it:
|
|
3
|
+
*
|
|
4
|
+
* ```wgsl
|
|
5
|
+
* struct BVH8NodeGrid { origin: vec3<f32>, exponent: vec3<u32>, per_cell: vec3<f32> }
|
|
6
|
+
*
|
|
7
|
+
* fn bvh8_node_grid(low: vec3<f32>, high: vec3<f32>) -> BVH8NodeGrid
|
|
8
|
+
* fn bvh8_node_grid_low(grid: BVH8NodeGrid, low: vec3<f32>) -> vec3<u32>
|
|
9
|
+
* fn bvh8_node_grid_high(grid: BVH8NodeGrid, high: vec3<f32>) -> vec3<u32>
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* The grid of a node is its own box's: the origin at the low corner, and on each axis the smallest
|
|
13
|
+
* power-of-two step that spans the box in 255. `exponent` is that step's exponent byte, the one a
|
|
14
|
+
* node stores; zero is a step of nothing, for an axis with no extent, and takes every byte to zero.
|
|
15
|
+
* A low corner is rounded down to the grid and a high one up, so a slot's box comes out holding the
|
|
16
|
+
* box it was given whenever that box lies inside the node's.
|
|
17
|
+
*
|
|
18
|
+
* Every step is a single-precision one, in a fixed order: the arithmetic of `bvh8_node_fit_slots`,
|
|
19
|
+
* which gives the same words from the same boxes.
|
|
20
|
+
*
|
|
21
|
+
* @type {CodeChunk}
|
|
22
|
+
*/
|
|
23
|
+
export const chunk_bvh8_node_grid: CodeChunk;
|
|
24
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
25
|
+
//# sourceMappingURL=chunk_bvh8_node_grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_bvh8_node_grid.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,mCAFU,SAAS,CA0EhB;0BAhGuB,mCAAmC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The grid a BVH8 node holds its slots' boxes on, and a box's corners in bytes on it:
|
|
5
|
+
*
|
|
6
|
+
* ```wgsl
|
|
7
|
+
* struct BVH8NodeGrid { origin: vec3<f32>, exponent: vec3<u32>, per_cell: vec3<f32> }
|
|
8
|
+
*
|
|
9
|
+
* fn bvh8_node_grid(low: vec3<f32>, high: vec3<f32>) -> BVH8NodeGrid
|
|
10
|
+
* fn bvh8_node_grid_low(grid: BVH8NodeGrid, low: vec3<f32>) -> vec3<u32>
|
|
11
|
+
* fn bvh8_node_grid_high(grid: BVH8NodeGrid, high: vec3<f32>) -> vec3<u32>
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* The grid of a node is its own box's: the origin at the low corner, and on each axis the smallest
|
|
15
|
+
* power-of-two step that spans the box in 255. `exponent` is that step's exponent byte, the one a
|
|
16
|
+
* node stores; zero is a step of nothing, for an axis with no extent, and takes every byte to zero.
|
|
17
|
+
* A low corner is rounded down to the grid and a high one up, so a slot's box comes out holding the
|
|
18
|
+
* box it was given whenever that box lies inside the node's.
|
|
19
|
+
*
|
|
20
|
+
* Every step is a single-precision one, in a fixed order: the arithmetic of `bvh8_node_fit_slots`,
|
|
21
|
+
* which gives the same words from the same boxes.
|
|
22
|
+
*
|
|
23
|
+
* @type {CodeChunk}
|
|
24
|
+
*/
|
|
25
|
+
export const chunk_bvh8_node_grid = CodeChunk.from(
|
|
26
|
+
//language=WGSL
|
|
27
|
+
`
|
|
28
|
+
struct BVH8NodeGrid {
|
|
29
|
+
// the node's low corner
|
|
30
|
+
origin: vec3<f32>,
|
|
31
|
+
// the exponent byte of each axis's step
|
|
32
|
+
exponent: vec3<u32>,
|
|
33
|
+
// steps to a unit of length; zero where the step is nothing
|
|
34
|
+
per_cell: vec3<f32>,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// The next float up from a difference that cannot be negative, and the next down: a difference of two
|
|
38
|
+
// floats is rounded, and a box must not shrink by the rounding. Nothing is added to an exact zero.
|
|
39
|
+
fn bvh8_grid_round_up(x: f32) -> f32 {
|
|
40
|
+
return select(x, bitcast<f32>(bitcast<u32>(x) + 1u), x > 0.0);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
fn bvh8_grid_round_down(x: f32) -> f32 {
|
|
44
|
+
return select(x, bitcast<f32>(bitcast<u32>(x) - 1u), x > 0.0);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// The exponent byte of the smallest power of two that spans an extent in 255 steps; zero, a step of
|
|
48
|
+
// nothing, for no extent at all.
|
|
49
|
+
fn bvh8_grid_step_exponent(extent: f32) -> u32 {
|
|
50
|
+
if (!(extent > 0.0)) {
|
|
51
|
+
return 0u;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
let bits = bitcast<u32>(extent * (1.0 / 255.0));
|
|
55
|
+
|
|
56
|
+
// the power of two at or below a 255th of the extent, and the next one up unless that one spans it
|
|
57
|
+
var exponent = (bits >> 23u) & 0xffu;
|
|
58
|
+
|
|
59
|
+
if (extent > 255.0 * bitcast<f32>(exponent << 23u)) {
|
|
60
|
+
exponent += 1u;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return exponent;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
fn bvh8_node_grid(low: vec3<f32>, high: vec3<f32>) -> BVH8NodeGrid {
|
|
67
|
+
let exponent = vec3<u32>(
|
|
68
|
+
bvh8_grid_step_exponent(bvh8_grid_round_up(high.x - low.x)),
|
|
69
|
+
bvh8_grid_step_exponent(bvh8_grid_round_up(high.y - low.y)),
|
|
70
|
+
bvh8_grid_step_exponent(bvh8_grid_round_up(high.z - low.z)),
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
let cell = bitcast<vec3<f32>>(exponent << vec3<u32>(23u));
|
|
74
|
+
|
|
75
|
+
return BVH8NodeGrid(low, exponent, select(vec3<f32>(0.0), 1.0 / cell, cell > vec3<f32>(0.0)));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
fn bvh8_node_grid_low(grid: BVH8NodeGrid, low: vec3<f32>) -> vec3<u32> {
|
|
79
|
+
let offset = low - grid.origin;
|
|
80
|
+
|
|
81
|
+
return vec3<u32>(floor(vec3<f32>(
|
|
82
|
+
bvh8_grid_round_down(offset.x),
|
|
83
|
+
bvh8_grid_round_down(offset.y),
|
|
84
|
+
bvh8_grid_round_down(offset.z),
|
|
85
|
+
) * grid.per_cell));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
fn bvh8_node_grid_high(grid: BVH8NodeGrid, high: vec3<f32>) -> vec3<u32> {
|
|
89
|
+
let offset = high - grid.origin;
|
|
90
|
+
|
|
91
|
+
return min(vec3<u32>(ceil(vec3<f32>(
|
|
92
|
+
bvh8_grid_round_up(offset.x),
|
|
93
|
+
bvh8_grid_round_up(offset.y),
|
|
94
|
+
bvh8_grid_round_up(offset.z),
|
|
95
|
+
) * grid.per_cell)), vec3<u32>(255u));
|
|
96
|
+
}
|
|
97
|
+
`);
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Which of a node's eight slots a ray reaches, as the bits the traversal loop walks: an internal slot
|
|
3
|
+
* sets one bit among the top eight, placed by the ray's octant so that nearer slots rank higher, and a
|
|
4
|
+
* leaf slot sets one bit per triangle among the low twenty-four, at the triangle's offset in the node's
|
|
5
|
+
* run.
|
|
6
|
+
*
|
|
7
|
+
* `direction_rcp` is {@link chunk_bvh8_ray_direction_rcp} of the ray's direction, computed once per
|
|
8
|
+
* query: it must be finite, or a ray parallel to an axis meets no plane at a number.
|
|
9
|
+
*
|
|
2
10
|
* @see https://github.com/jan-van-bergen/GPU-Raytracer/blob/6559ae2241c8fdea0ddaec959fe1a47ec9b3ab0d/Src/CUDA/Raytracing/BVH8.h#L29
|
|
3
11
|
* @type {CodeChunk}
|
|
4
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_bvh8_node_intersect.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.js"],"names":[],"mappings":"AAQA
|
|
1
|
+
{"version":3,"file":"chunk_bvh8_node_intersect.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;GAWG;AACH,wCAFU,SAAS,CA+FjB;0BAjHwB,mCAAmC"}
|
|
@@ -7,6 +7,14 @@ import { BVH8_INODE_STRUCT } from "./BVH8_INODE_STRUCT.js";
|
|
|
7
7
|
import { chunk_sign_extend_s8x4 } from "./chunk_sign_extend_s8x4.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
+
* Which of a node's eight slots a ray reaches, as the bits the traversal loop walks: an internal slot
|
|
11
|
+
* sets one bit among the top eight, placed by the ray's octant so that nearer slots rank higher, and a
|
|
12
|
+
* leaf slot sets one bit per triangle among the low twenty-four, at the triangle's offset in the node's
|
|
13
|
+
* run.
|
|
14
|
+
*
|
|
15
|
+
* `direction_rcp` is {@link chunk_bvh8_ray_direction_rcp} of the ray's direction, computed once per
|
|
16
|
+
* query: it must be finite, or a ray parallel to an axis meets no plane at a number.
|
|
17
|
+
*
|
|
10
18
|
* @see https://github.com/jan-van-bergen/GPU-Raytracer/blob/6559ae2241c8fdea0ddaec959fe1a47ec9b3ab0d/Src/CUDA/Raytracing/BVH8.h#L29
|
|
11
19
|
* @type {CodeChunk}
|
|
12
20
|
*/
|
|
@@ -15,31 +23,32 @@ export const chunk_bvh8_node_intersect = CodeChunk.from(
|
|
|
15
23
|
`
|
|
16
24
|
fn bvh8_node_intersect(
|
|
17
25
|
ray: ${RAY_STRUCT.wgsl_ref},
|
|
26
|
+
direction_rcp: vec3<f32>,
|
|
18
27
|
oct_inv4: u32,
|
|
19
28
|
node: ${BVH8_INODE_STRUCT.wgsl_ref},
|
|
20
29
|
) -> u32{
|
|
21
|
-
let p = node.data[0].xyz;
|
|
30
|
+
let p = bitcast<vec3<f32>>(node.data[0].xyz);
|
|
22
31
|
|
|
23
|
-
let e_imask =
|
|
32
|
+
let e_imask = node.data[0].w;
|
|
24
33
|
let e_x = extract_byte(e_imask, 0);
|
|
25
34
|
let e_y = extract_byte(e_imask, 1);
|
|
26
35
|
let e_z = extract_byte(e_imask, 2);
|
|
27
36
|
|
|
28
|
-
//
|
|
37
|
+
// a child's plane at byte q is met at q * adjusted_ray_direction_inv + adjusted_ray_origin
|
|
29
38
|
let adjusted_ray_direction_inv = vec3<f32>(
|
|
30
39
|
bitcast<f32>(e_x << 23),
|
|
31
40
|
bitcast<f32>(e_y << 23),
|
|
32
|
-
bitcast<f32>(e_z << 23)
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
let adjusted_ray_origin = (p - ray.origin)
|
|
41
|
+
bitcast<f32>(e_z << 23)
|
|
42
|
+
) * direction_rcp;
|
|
43
|
+
|
|
44
|
+
let adjusted_ray_origin = (p - ray.origin) * direction_rcp;
|
|
36
45
|
|
|
37
46
|
var hit_mask = 0u;
|
|
38
47
|
|
|
39
48
|
// traverse children, first by word (0..3), (4..7)
|
|
40
49
|
// and then individually inside inner loop
|
|
41
50
|
for (var i = 0; i < 2; i++) {
|
|
42
|
-
let meta4 =
|
|
51
|
+
let meta4 = select( node.data[1].w, node.data[1].z, i == 0 );
|
|
43
52
|
|
|
44
53
|
let is_inner4 = (meta4 & (meta4 << 1u)) & 0x10101010u;
|
|
45
54
|
let inner_mask4 = sign_extend_s8x4(is_inner4 << 3u);
|
|
@@ -47,14 +56,14 @@ fn bvh8_node_intersect(
|
|
|
47
56
|
let child_bits4 = (meta4 >> 5u) & 0x07070707u;
|
|
48
57
|
|
|
49
58
|
// Select near and far planes based on ray octant
|
|
50
|
-
let q_lo_x =
|
|
51
|
-
let q_hi_x =
|
|
59
|
+
let q_lo_x = select( node.data[2].y, node.data[2].x, i == 0 );
|
|
60
|
+
let q_hi_x = select( node.data[2].w, node.data[2].z, i == 0 );
|
|
52
61
|
|
|
53
|
-
let q_lo_y =
|
|
54
|
-
let q_hi_y =
|
|
62
|
+
let q_lo_y = select( node.data[3].y, node.data[3].x, i == 0 );
|
|
63
|
+
let q_hi_y = select( node.data[3].w, node.data[3].z, i == 0 );
|
|
55
64
|
|
|
56
|
-
let q_lo_z =
|
|
57
|
-
let q_hi_z =
|
|
65
|
+
let q_lo_z = select( node.data[4].y, node.data[4].x, i == 0 );
|
|
66
|
+
let q_hi_z = select( node.data[4].w, node.data[4].z, i == 0 );
|
|
58
67
|
|
|
59
68
|
let x_min = select(q_lo_x, q_hi_x, ray.direction.x < 0.0);
|
|
60
69
|
let x_max = select(q_hi_x, q_lo_x, ray.direction.x < 0.0);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Squared distance from a point to the box of each of a BVH8 node's eight slots, and what a walk that
|
|
3
|
+
* is not a ray's needs to know of a slot besides.
|
|
4
|
+
*
|
|
5
|
+
* A node stores one origin and one power-of-two step per axis, and each slot's box as bytes on that
|
|
6
|
+
* grid, four slots to a word. `bvh8_node_slot_distances_sqr` decodes a word at a time. The builder
|
|
7
|
+
* rounded each box's low corner down and its high corner up, so a distance here is never more than
|
|
8
|
+
* the distance to anything under the slot. An empty slot's distance means nothing: mask it with the
|
|
9
|
+
* node's internal mask, or with the slots' runs, both of which leave an empty slot out.
|
|
10
|
+
*
|
|
11
|
+
* `bvh8_node_slot_signed_distances` is the same for a walk that prunes by a signed field: the distance
|
|
12
|
+
* itself, not its square, and below zero inside a box, where it is how far the nearest face is. A
|
|
13
|
+
* slot's box holds everything under the slot, so nothing under it is nearer than that, by sign too.
|
|
14
|
+
*
|
|
15
|
+
* `bvh8_node_slots_meeting` is the question a box asks: a bit per slot whose box it meets, touching
|
|
16
|
+
* counted. An empty slot's bit means nothing there either.
|
|
17
|
+
*
|
|
18
|
+
* Every question a walk asks is answered for the eight slots at once, of either kind of distance:
|
|
19
|
+
*
|
|
20
|
+
* - `bvh8_slots_within` — a bit per slot whose box is nearer than a limit;
|
|
21
|
+
* - `bvh8_nearest_slot_among` — the nearest of the slots named by such bits;
|
|
22
|
+
* - `bvh8_node_slot_runs` and `bvh8_slot_runs_within` — the triangles held by the slots nearer than a
|
|
23
|
+
* limit, a bit per triangle of the node's run, so that a walk weighs triangles one after another
|
|
24
|
+
* with no slot in between;
|
|
25
|
+
* - `bvh8_slot_runs_of` — the same of the slots named by bits.
|
|
26
|
+
*
|
|
27
|
+
* A slot's meta byte is zero for an empty slot, has 24 and up in its low five bits for a child node,
|
|
28
|
+
* and otherwise names triangles: their offset in the node's run in the low five bits, their count in
|
|
29
|
+
* unary above. A node holds at most 24 triangles, so the bits of a run stay below 24 and those a child
|
|
30
|
+
* node's byte makes land above.
|
|
31
|
+
*
|
|
32
|
+
* @type {CodeChunk}
|
|
33
|
+
*/
|
|
34
|
+
export const chunk_bvh8_node_slot_distances: CodeChunk;
|
|
35
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
36
|
+
//# sourceMappingURL=chunk_bvh8_node_slot_distances.d.ts.map
|
package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_bvh8_node_slot_distances.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,6CAFU,SAAS,CA0LjB;0BA7NwB,mCAAmC"}
|