@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
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
2
|
+
import { chunk_extract_byte } from "../../../binary/chunk_extract_byte.js";
|
|
3
|
+
import { BVH8_INODE_STRUCT } from "./BVH8_INODE_STRUCT.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Squared distance from a point to the box of each of a BVH8 node's eight slots, and what a walk that
|
|
7
|
+
* is not a ray's needs to know of a slot besides.
|
|
8
|
+
*
|
|
9
|
+
* A node stores one origin and one power-of-two step per axis, and each slot's box as bytes on that
|
|
10
|
+
* grid, four slots to a word. `bvh8_node_slot_distances_sqr` decodes a word at a time. The builder
|
|
11
|
+
* rounded each box's low corner down and its high corner up, so a distance here is never more than
|
|
12
|
+
* the distance to anything under the slot. An empty slot's distance means nothing: mask it with the
|
|
13
|
+
* node's internal mask, or with the slots' runs, both of which leave an empty slot out.
|
|
14
|
+
*
|
|
15
|
+
* `bvh8_node_slot_signed_distances` is the same for a walk that prunes by a signed field: the distance
|
|
16
|
+
* itself, not its square, and below zero inside a box, where it is how far the nearest face is. A
|
|
17
|
+
* slot's box holds everything under the slot, so nothing under it is nearer than that, by sign too.
|
|
18
|
+
*
|
|
19
|
+
* `bvh8_node_slots_meeting` is the question a box asks: a bit per slot whose box it meets, touching
|
|
20
|
+
* counted. An empty slot's bit means nothing there either.
|
|
21
|
+
*
|
|
22
|
+
* Every question a walk asks is answered for the eight slots at once, of either kind of distance:
|
|
23
|
+
*
|
|
24
|
+
* - `bvh8_slots_within` — a bit per slot whose box is nearer than a limit;
|
|
25
|
+
* - `bvh8_nearest_slot_among` — the nearest of the slots named by such bits;
|
|
26
|
+
* - `bvh8_node_slot_runs` and `bvh8_slot_runs_within` — the triangles held by the slots nearer than a
|
|
27
|
+
* limit, a bit per triangle of the node's run, so that a walk weighs triangles one after another
|
|
28
|
+
* with no slot in between;
|
|
29
|
+
* - `bvh8_slot_runs_of` — the same of the slots named by bits.
|
|
30
|
+
*
|
|
31
|
+
* A slot's meta byte is zero for an empty slot, has 24 and up in its low five bits for a child node,
|
|
32
|
+
* and otherwise names triangles: their offset in the node's run in the low five bits, their count in
|
|
33
|
+
* unary above. A node holds at most 24 triangles, so the bits of a run stay below 24 and those a child
|
|
34
|
+
* node's byte makes land above.
|
|
35
|
+
*
|
|
36
|
+
* @type {CodeChunk}
|
|
37
|
+
*/
|
|
38
|
+
export const chunk_bvh8_node_slot_distances = CodeChunk.from(
|
|
39
|
+
//language=WGSL
|
|
40
|
+
`
|
|
41
|
+
// a distance to slots 0..3 and to slots 4..7: squared, or signed, as the function that made it says
|
|
42
|
+
struct BVH8SlotDistances {
|
|
43
|
+
first: vec4<f32>,
|
|
44
|
+
second: vec4<f32>,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// each slot's triangles as bits of the node's run, slots 0..3 and slots 4..7;
|
|
48
|
+
// a child node's bits are at 24 and up, an empty slot has none
|
|
49
|
+
struct BVH8SlotRuns {
|
|
50
|
+
first: vec4<u32>,
|
|
51
|
+
second: vec4<u32>,
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
fn bvh8_word_bytes(word: u32) -> vec4<f32> {
|
|
55
|
+
return vec4<f32>((vec4<u32>(word) >> vec4<u32>(0u, 8u, 16u, 24u)) & vec4<u32>(0xffu));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// how far a coordinate lies beyond four slots' extents along one axis: above zero outside them, and
|
|
59
|
+
// within them below zero by the distance to the nearer end;
|
|
60
|
+
// 'along' is the coordinate measured from the node's origin, 'cell' the grid's step on the axis
|
|
61
|
+
fn bvh8_axis_beyond(low_word: u32, high_word: u32, cell: f32, along: f32) -> vec4<f32> {
|
|
62
|
+
return max(bvh8_word_bytes(low_word) * cell - along, along - bvh8_word_bytes(high_word) * cell);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// how far a coordinate lies outside four slots' extents along one axis, zero within them
|
|
66
|
+
fn bvh8_axis_outside(low_word: u32, high_word: u32, cell: f32, along: f32) -> vec4<f32> {
|
|
67
|
+
return max(bvh8_axis_beyond(low_word, high_word, cell, along), vec4<f32>(0.0));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// the signed distance to four boxes, from how far the point lies beyond each along the three axes
|
|
71
|
+
fn bvh8_signed_from_beyond(x: vec4<f32>, y: vec4<f32>, z: vec4<f32>) -> vec4<f32> {
|
|
72
|
+
let zero = vec4<f32>(0.0);
|
|
73
|
+
|
|
74
|
+
let outside_x = max(x, zero);
|
|
75
|
+
let outside_y = max(y, zero);
|
|
76
|
+
let outside_z = max(z, zero);
|
|
77
|
+
|
|
78
|
+
return sqrt(outside_x * outside_x + outside_y * outside_y + outside_z * outside_z) + min(max(x, max(y, z)), zero);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
fn bvh8_node_slot_distances_sqr(node: ${BVH8_INODE_STRUCT.wgsl_ref}, position: vec3<f32>) -> BVH8SlotDistances {
|
|
82
|
+
let exponents = node.data[0].w;
|
|
83
|
+
|
|
84
|
+
let cell = vec3<f32>(
|
|
85
|
+
bitcast<f32>(extract_byte(exponents, 0u) << 23u),
|
|
86
|
+
bitcast<f32>(extract_byte(exponents, 1u) << 23u),
|
|
87
|
+
bitcast<f32>(extract_byte(exponents, 2u) << 23u),
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
let along = position - bitcast<vec3<f32>>(node.data[0].xyz);
|
|
91
|
+
|
|
92
|
+
let x_first = bvh8_axis_outside(node.data[2].x, node.data[2].z, cell.x, along.x);
|
|
93
|
+
let y_first = bvh8_axis_outside(node.data[3].x, node.data[3].z, cell.y, along.y);
|
|
94
|
+
let z_first = bvh8_axis_outside(node.data[4].x, node.data[4].z, cell.z, along.z);
|
|
95
|
+
|
|
96
|
+
let x_second = bvh8_axis_outside(node.data[2].y, node.data[2].w, cell.x, along.x);
|
|
97
|
+
let y_second = bvh8_axis_outside(node.data[3].y, node.data[3].w, cell.y, along.y);
|
|
98
|
+
let z_second = bvh8_axis_outside(node.data[4].y, node.data[4].w, cell.z, along.z);
|
|
99
|
+
|
|
100
|
+
return BVH8SlotDistances(
|
|
101
|
+
x_first * x_first + y_first * y_first + z_first * z_first,
|
|
102
|
+
x_second * x_second + y_second * y_second + z_second * z_second,
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
fn bvh8_node_slot_signed_distances(node: ${BVH8_INODE_STRUCT.wgsl_ref}, position: vec3<f32>) -> BVH8SlotDistances {
|
|
107
|
+
let exponents = node.data[0].w;
|
|
108
|
+
|
|
109
|
+
let cell = vec3<f32>(
|
|
110
|
+
bitcast<f32>(extract_byte(exponents, 0u) << 23u),
|
|
111
|
+
bitcast<f32>(extract_byte(exponents, 1u) << 23u),
|
|
112
|
+
bitcast<f32>(extract_byte(exponents, 2u) << 23u),
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
let along = position - bitcast<vec3<f32>>(node.data[0].xyz);
|
|
116
|
+
|
|
117
|
+
return BVH8SlotDistances(
|
|
118
|
+
bvh8_signed_from_beyond(
|
|
119
|
+
bvh8_axis_beyond(node.data[2].x, node.data[2].z, cell.x, along.x),
|
|
120
|
+
bvh8_axis_beyond(node.data[3].x, node.data[3].z, cell.y, along.y),
|
|
121
|
+
bvh8_axis_beyond(node.data[4].x, node.data[4].z, cell.z, along.z),
|
|
122
|
+
),
|
|
123
|
+
bvh8_signed_from_beyond(
|
|
124
|
+
bvh8_axis_beyond(node.data[2].y, node.data[2].w, cell.x, along.x),
|
|
125
|
+
bvh8_axis_beyond(node.data[3].y, node.data[3].w, cell.y, along.y),
|
|
126
|
+
bvh8_axis_beyond(node.data[4].y, node.data[4].w, cell.z, along.z),
|
|
127
|
+
),
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// a bit per slot whose box meets the box from 'low' to 'high', touching counted
|
|
132
|
+
fn bvh8_node_slots_meeting(node: ${BVH8_INODE_STRUCT.wgsl_ref}, low: vec3<f32>, high: vec3<f32>) -> u32 {
|
|
133
|
+
let exponents = node.data[0].w;
|
|
134
|
+
|
|
135
|
+
let cell = vec3<f32>(
|
|
136
|
+
bitcast<f32>(extract_byte(exponents, 0u) << 23u),
|
|
137
|
+
bitcast<f32>(extract_byte(exponents, 1u) << 23u),
|
|
138
|
+
bitcast<f32>(extract_byte(exponents, 2u) << 23u),
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
let origin = bitcast<vec3<f32>>(node.data[0].xyz);
|
|
142
|
+
|
|
143
|
+
// the box, measured from the node's origin as its slots' are
|
|
144
|
+
let box_low = low - origin;
|
|
145
|
+
let box_high = high - origin;
|
|
146
|
+
|
|
147
|
+
let first = (bvh8_word_bytes(node.data[2].x) * cell.x <= vec4<f32>(box_high.x)) & (bvh8_word_bytes(node.data[2].z) * cell.x >= vec4<f32>(box_low.x))
|
|
148
|
+
& (bvh8_word_bytes(node.data[3].x) * cell.y <= vec4<f32>(box_high.y)) & (bvh8_word_bytes(node.data[3].z) * cell.y >= vec4<f32>(box_low.y))
|
|
149
|
+
& (bvh8_word_bytes(node.data[4].x) * cell.z <= vec4<f32>(box_high.z)) & (bvh8_word_bytes(node.data[4].z) * cell.z >= vec4<f32>(box_low.z));
|
|
150
|
+
|
|
151
|
+
let second = (bvh8_word_bytes(node.data[2].y) * cell.x <= vec4<f32>(box_high.x)) & (bvh8_word_bytes(node.data[2].w) * cell.x >= vec4<f32>(box_low.x))
|
|
152
|
+
& (bvh8_word_bytes(node.data[3].y) * cell.y <= vec4<f32>(box_high.y)) & (bvh8_word_bytes(node.data[3].w) * cell.y >= vec4<f32>(box_low.y))
|
|
153
|
+
& (bvh8_word_bytes(node.data[4].y) * cell.z <= vec4<f32>(box_high.z)) & (bvh8_word_bytes(node.data[4].w) * cell.z >= vec4<f32>(box_low.z));
|
|
154
|
+
|
|
155
|
+
let bits = select(vec4<u32>(0u), vec4<u32>(1u, 2u, 4u, 8u), first)
|
|
156
|
+
| select(vec4<u32>(0u), vec4<u32>(16u, 32u, 64u, 128u), second);
|
|
157
|
+
|
|
158
|
+
return bits.x | bits.y | bits.z | bits.w;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// a bit per slot whose box is nearer than the limit
|
|
162
|
+
fn bvh8_slots_within(distances: BVH8SlotDistances, limit_sqr: f32) -> u32 {
|
|
163
|
+
let first = select(vec4<u32>(0u), vec4<u32>(1u, 2u, 4u, 8u), distances.first < vec4<f32>(limit_sqr));
|
|
164
|
+
let second = select(vec4<u32>(0u), vec4<u32>(16u, 32u, 64u, 128u), distances.second < vec4<f32>(limit_sqr));
|
|
165
|
+
|
|
166
|
+
let bits = first | second;
|
|
167
|
+
|
|
168
|
+
return bits.x | bits.y | bits.z | bits.w;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// the nearest of the slots named, the lowest of them when several are as near;
|
|
172
|
+
// 'slots' must name one, and none whose distance is infinite
|
|
173
|
+
fn bvh8_nearest_slot_among(distances: BVH8SlotDistances, slots: u32) -> u32 {
|
|
174
|
+
// a slot not named stands as far as a number goes, and is told from a named one that far by its bit
|
|
175
|
+
let far = vec4<f32>(3.4028234e38);
|
|
176
|
+
|
|
177
|
+
let first = select(far, distances.first, (vec4<u32>(slots) & vec4<u32>(1u, 2u, 4u, 8u)) != vec4<u32>(0u));
|
|
178
|
+
let second = select(far, distances.second, (vec4<u32>(slots) & vec4<u32>(16u, 32u, 64u, 128u)) != vec4<u32>(0u));
|
|
179
|
+
|
|
180
|
+
let least_of_pair = min(first, second);
|
|
181
|
+
let least = min(min(least_of_pair.x, least_of_pair.y), min(least_of_pair.z, least_of_pair.w));
|
|
182
|
+
|
|
183
|
+
let first_bits = select(vec4<u32>(0u), vec4<u32>(1u, 2u, 4u, 8u), first == vec4<f32>(least));
|
|
184
|
+
let second_bits = select(vec4<u32>(0u), vec4<u32>(16u, 32u, 64u, 128u), second == vec4<f32>(least));
|
|
185
|
+
|
|
186
|
+
let bits = first_bits | second_bits;
|
|
187
|
+
|
|
188
|
+
return countTrailingZeros((bits.x | bits.y | bits.z | bits.w) & slots);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
fn bvh8_node_slot_runs(node: ${BVH8_INODE_STRUCT.wgsl_ref}) -> BVH8SlotRuns {
|
|
192
|
+
let shifts = vec4<u32>(0u, 8u, 16u, 24u);
|
|
193
|
+
|
|
194
|
+
let meta_first = (vec4<u32>(node.data[1].z) >> shifts) & vec4<u32>(0xffu);
|
|
195
|
+
let meta_second = (vec4<u32>(node.data[1].w) >> shifts) & vec4<u32>(0xffu);
|
|
196
|
+
|
|
197
|
+
return BVH8SlotRuns(
|
|
198
|
+
(meta_first >> vec4<u32>(5u)) << (meta_first & vec4<u32>(31u)),
|
|
199
|
+
(meta_second >> vec4<u32>(5u)) << (meta_second & vec4<u32>(31u)),
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// the triangles of the slots named, a bit per triangle of the node's run
|
|
204
|
+
fn bvh8_slot_runs_of(runs: BVH8SlotRuns, slots: u32) -> u32 {
|
|
205
|
+
let bits = select(vec4<u32>(0u), runs.first, (vec4<u32>(slots) & vec4<u32>(1u, 2u, 4u, 8u)) != vec4<u32>(0u))
|
|
206
|
+
| select(vec4<u32>(0u), runs.second, (vec4<u32>(slots) & vec4<u32>(16u, 32u, 64u, 128u)) != vec4<u32>(0u));
|
|
207
|
+
|
|
208
|
+
return (bits.x | bits.y | bits.z | bits.w) & 0xffffffu;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// the triangles of the slots whose boxes are nearer than the limit, a bit per triangle of the node's run
|
|
212
|
+
fn bvh8_slot_runs_within(runs: BVH8SlotRuns, distances: BVH8SlotDistances, limit_sqr: f32) -> u32 {
|
|
213
|
+
let bits = select(vec4<u32>(0u), runs.first, distances.first < vec4<f32>(limit_sqr))
|
|
214
|
+
| select(vec4<u32>(0u), runs.second, distances.second < vec4<f32>(limit_sqr));
|
|
215
|
+
|
|
216
|
+
return (bits.x | bits.y | bits.z | bits.w) & 0xffffffu;
|
|
217
|
+
}
|
|
218
|
+
`, [
|
|
219
|
+
BVH8_INODE_STRUCT.declaration_chunk,
|
|
220
|
+
chunk_extract_byte,
|
|
221
|
+
]
|
|
222
|
+
);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reciprocal of a ray's direction for {@link chunk_bvh8_node_intersect}, finite on every axis.
|
|
3
|
+
*
|
|
4
|
+
* The node test places a child's planes as `q * (e / d) + (p - o) / d`. With a component of `d` at
|
|
5
|
+
* zero both terms are infinite, their sum is a NaN, and what `min` and `max` make of a NaN is up to the
|
|
6
|
+
* device: one drops it and reaches every node whose other two slabs the ray crosses, another keeps it
|
|
7
|
+
* and misses the node the ray is inside of. So a component is never let closer to zero than 2^-80, and
|
|
8
|
+
* keeps its sign — `-0.0` counts as positive, which is how {@link chunk_ray_get_octant_inv4} and the
|
|
9
|
+
* node test's own near/far selection read it.
|
|
10
|
+
*
|
|
11
|
+
* 2^-80 is from the reference implementation. Its reciprocal times a distance stays finite for
|
|
12
|
+
* distances up to 2^47, and a ray would have to travel 2^56 units for a component that small to move it
|
|
13
|
+
* by one part in 2^24 of a unit.
|
|
14
|
+
*
|
|
15
|
+
* @see https://github.com/jan-van-bergen/GPU-Raytracer/blob/6559ae2241c8fdea0ddaec959fe1a47ec9b3ab0d/Src/CUDA/Raytracing/BVH8.h#L29
|
|
16
|
+
* @type {CodeChunk}
|
|
17
|
+
*/
|
|
18
|
+
export const chunk_bvh8_ray_direction_rcp: CodeChunk;
|
|
19
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
20
|
+
//# sourceMappingURL=chunk_bvh8_ray_direction_rcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_bvh8_ray_direction_rcp.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,2CAFU,SAAS,CAYjB;0BA7BwB,mCAAmC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Reciprocal of a ray's direction for {@link chunk_bvh8_node_intersect}, finite on every axis.
|
|
5
|
+
*
|
|
6
|
+
* The node test places a child's planes as `q * (e / d) + (p - o) / d`. With a component of `d` at
|
|
7
|
+
* zero both terms are infinite, their sum is a NaN, and what `min` and `max` make of a NaN is up to the
|
|
8
|
+
* device: one drops it and reaches every node whose other two slabs the ray crosses, another keeps it
|
|
9
|
+
* and misses the node the ray is inside of. So a component is never let closer to zero than 2^-80, and
|
|
10
|
+
* keeps its sign — `-0.0` counts as positive, which is how {@link chunk_ray_get_octant_inv4} and the
|
|
11
|
+
* node test's own near/far selection read it.
|
|
12
|
+
*
|
|
13
|
+
* 2^-80 is from the reference implementation. Its reciprocal times a distance stays finite for
|
|
14
|
+
* distances up to 2^47, and a ray would have to travel 2^56 units for a component that small to move it
|
|
15
|
+
* by one part in 2^24 of a unit.
|
|
16
|
+
*
|
|
17
|
+
* @see https://github.com/jan-van-bergen/GPU-Raytracer/blob/6559ae2241c8fdea0ddaec959fe1a47ec9b3ab0d/Src/CUDA/Raytracing/BVH8.h#L29
|
|
18
|
+
* @type {CodeChunk}
|
|
19
|
+
*/
|
|
20
|
+
export const chunk_bvh8_ray_direction_rcp = CodeChunk.from(
|
|
21
|
+
//language=WGSL
|
|
22
|
+
`
|
|
23
|
+
fn bvh8_ray_direction_rcp(direction: vec3<f32>) -> vec3<f32> {
|
|
24
|
+
// 2^-80
|
|
25
|
+
let least = vec3<f32>(8.271806e-25);
|
|
26
|
+
|
|
27
|
+
return 1.0 / select(max(direction, least), min(direction, -least), direction < vec3<f32>(0.0));
|
|
28
|
+
}
|
|
29
|
+
`
|
|
30
|
+
);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a BVH8 that owns its buffer is bound as: the layout of {@link BVH8_TREE_BUFFER_LAYOUT}, every
|
|
3
|
+
* part of which is a whole number of `vec4<u32>`.
|
|
4
|
+
*
|
|
5
|
+
* @type {WebGPUArray}
|
|
6
|
+
*/
|
|
7
|
+
export const BVH8_TREE_TYPE: WebGPUArray;
|
|
8
|
+
/**
|
|
9
|
+
* Reads of a BVH8 that owns its buffer ({@link BVH8_TREE_BUFFER_LAYOUT}), bound as
|
|
10
|
+
* {@link BVH8_TREE_TYPE}:
|
|
11
|
+
*
|
|
12
|
+
* ```wgsl
|
|
13
|
+
* fn bvh8_tree_read_node(tree, index: u32) -> BVH8Node
|
|
14
|
+
* fn bvh8_tree_read_payload(tree, node: BVH8Node, offset: u32) -> u32
|
|
15
|
+
* fn bvh8_tree_leaf_count(tree) -> u32
|
|
16
|
+
* fn bvh8_tree_bounds_low(tree) -> vec3<f32>
|
|
17
|
+
* fn bvh8_tree_bounds_high(tree) -> vec3<f32>
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* A node's leaf slots each hold one leaf, and a walk has them as bits of the node's run, as it has a
|
|
21
|
+
* mesh's triangles: `bvh8_tree_read_payload` gives the payload of the leaf at an offset in that run.
|
|
22
|
+
*
|
|
23
|
+
* The root is node 0, and a tree of no leaves has one: a walk starts there without asking.
|
|
24
|
+
*
|
|
25
|
+
* @type {CodeChunk}
|
|
26
|
+
*/
|
|
27
|
+
export const chunk_bvh8_tree_read: CodeChunk;
|
|
28
|
+
import { WebGPUArray } from "../../../../type/WebGPUArray.js";
|
|
29
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
30
|
+
//# sourceMappingURL=chunk_bvh8_tree_read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_bvh8_tree_read.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.js"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,6BAFU,WAAW,CAEiC;AAgBtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,mCAFU,SAAS,CAqCjB;4BA/E0B,iCAAiC;0BAFnC,mCAAmC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { assert } from "../../../../../../../core/assert.js";
|
|
2
|
+
import {
|
|
3
|
+
BVH8_TREE_BOUNDS_HIGH_WORD,
|
|
4
|
+
BVH8_TREE_BOUNDS_LOW_WORD,
|
|
5
|
+
BVH8_TREE_HEADER_WORDS,
|
|
6
|
+
BVH8_TREE_LEAF_COUNT_WORD,
|
|
7
|
+
BVH8_TREE_NODE_STRIDE_WORDS,
|
|
8
|
+
BVH8_TREE_ORDER_OFFSET_WORD
|
|
9
|
+
} from "../../../../../gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.js";
|
|
10
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
11
|
+
import { vec4u } from "../../../../type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
12
|
+
import { WebGPUArray } from "../../../../type/WebGPUArray.js";
|
|
13
|
+
import { BVH8_INODE_STRUCT } from "./BVH8_INODE_STRUCT.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* What a BVH8 that owns its buffer is bound as: the layout of {@link BVH8_TREE_BUFFER_LAYOUT}, every
|
|
17
|
+
* part of which is a whole number of `vec4<u32>`.
|
|
18
|
+
*
|
|
19
|
+
* @type {WebGPUArray}
|
|
20
|
+
*/
|
|
21
|
+
export const BVH8_TREE_TYPE = WebGPUArray.from(vec4u);
|
|
22
|
+
|
|
23
|
+
// the header's fields are read as components of its two vectors, and a node as five whole vectors
|
|
24
|
+
const HEADER_VECTORS = BVH8_TREE_HEADER_WORDS / 4;
|
|
25
|
+
const NODE_VECTORS = BVH8_TREE_NODE_STRIDE_WORDS / 4;
|
|
26
|
+
|
|
27
|
+
const COMPONENTS = 'xyzw';
|
|
28
|
+
|
|
29
|
+
assert.equal(BVH8_TREE_BOUNDS_LOW_WORD, 0, 'the reads below take the low corner from the first vector');
|
|
30
|
+
assert.equal(BVH8_TREE_BOUNDS_HIGH_WORD, 4, 'the reads below take the high corner from the second vector');
|
|
31
|
+
assert.isInteger(HEADER_VECTORS, 'HEADER_VECTORS');
|
|
32
|
+
assert.equal(NODE_VECTORS, 5, 'the reads below take a node as five vectors');
|
|
33
|
+
|
|
34
|
+
const LEAF_COUNT = `tree[${BVH8_TREE_LEAF_COUNT_WORD >> 2}].${COMPONENTS[BVH8_TREE_LEAF_COUNT_WORD & 3]}`;
|
|
35
|
+
const ORDER_OFFSET = `tree[${BVH8_TREE_ORDER_OFFSET_WORD >> 2}].${COMPONENTS[BVH8_TREE_ORDER_OFFSET_WORD & 3]}`;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Reads of a BVH8 that owns its buffer ({@link BVH8_TREE_BUFFER_LAYOUT}), bound as
|
|
39
|
+
* {@link BVH8_TREE_TYPE}:
|
|
40
|
+
*
|
|
41
|
+
* ```wgsl
|
|
42
|
+
* fn bvh8_tree_read_node(tree, index: u32) -> BVH8Node
|
|
43
|
+
* fn bvh8_tree_read_payload(tree, node: BVH8Node, offset: u32) -> u32
|
|
44
|
+
* fn bvh8_tree_leaf_count(tree) -> u32
|
|
45
|
+
* fn bvh8_tree_bounds_low(tree) -> vec3<f32>
|
|
46
|
+
* fn bvh8_tree_bounds_high(tree) -> vec3<f32>
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* A node's leaf slots each hold one leaf, and a walk has them as bits of the node's run, as it has a
|
|
50
|
+
* mesh's triangles: `bvh8_tree_read_payload` gives the payload of the leaf at an offset in that run.
|
|
51
|
+
*
|
|
52
|
+
* The root is node 0, and a tree of no leaves has one: a walk starts there without asking.
|
|
53
|
+
*
|
|
54
|
+
* @type {CodeChunk}
|
|
55
|
+
*/
|
|
56
|
+
export const chunk_bvh8_tree_read = CodeChunk.from(
|
|
57
|
+
//language=WGSL
|
|
58
|
+
`
|
|
59
|
+
fn bvh8_tree_read_node(tree: ptr<storage, array<vec4<u32>>, read>, index: u32) -> ${BVH8_INODE_STRUCT.wgsl_ref} {
|
|
60
|
+
let at = ${HEADER_VECTORS}u + index * ${NODE_VECTORS}u;
|
|
61
|
+
|
|
62
|
+
return ${BVH8_INODE_STRUCT.wgsl_ref}(array<vec4<u32>, 5>(tree[at], tree[at + 1u], tree[at + 2u], tree[at + 3u], tree[at + 4u]));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fn bvh8_tree_read_payload(tree: ptr<storage, array<vec4<u32>>, read>, node: ${BVH8_INODE_STRUCT.wgsl_ref}, offset: u32) -> u32 {
|
|
66
|
+
// the node's run starts at its triangle base, in the payloads behind the nodes
|
|
67
|
+
let word = ${ORDER_OFFSET} + node.data[1].y + offset;
|
|
68
|
+
|
|
69
|
+
let four = tree[word >> 2u];
|
|
70
|
+
|
|
71
|
+
// one of the four by two selects: a vector indexed by a variable is put in memory first
|
|
72
|
+
let pair = select(four.xy, four.zw, (word & 2u) != 0u);
|
|
73
|
+
|
|
74
|
+
return select(pair.x, pair.y, (word & 1u) != 0u);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
fn bvh8_tree_leaf_count(tree: ptr<storage, array<vec4<u32>>, read>) -> u32 {
|
|
78
|
+
return ${LEAF_COUNT};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
fn bvh8_tree_bounds_low(tree: ptr<storage, array<vec4<u32>>, read>) -> vec3<f32> {
|
|
82
|
+
return bitcast<vec3<f32>>(tree[0].xyz);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
fn bvh8_tree_bounds_high(tree: ptr<storage, array<vec4<u32>>, read>) -> vec3<f32> {
|
|
86
|
+
return bitcast<vec3<f32>>(tree[1].xyz);
|
|
87
|
+
}
|
|
88
|
+
`, [
|
|
89
|
+
BVH8_INODE_STRUCT.declaration_chunk,
|
|
90
|
+
]
|
|
91
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bytes {@link chunk_bvh8_waiting_slots} holds: four to a word, four words.
|
|
3
|
+
* @type {number}
|
|
4
|
+
*/
|
|
5
|
+
export const BVH8_WAITING_SLOTS_CAPACITY: number;
|
|
6
|
+
/**
|
|
7
|
+
* Sixteen bytes kept last in, first out, in four words: for each node a walk has left waiting on its
|
|
8
|
+
* traversal stack, which of the node's eight slots are still to visit.
|
|
9
|
+
*
|
|
10
|
+
* A walk that keeps these beside the stack rather than in it writes one word of a stack entry instead
|
|
11
|
+
* of two. A function's array costs by the words that are ever indexed, on hardware that keeps it in
|
|
12
|
+
* registers, and these four words are never indexed: a push or a pop moves all of them by a byte.
|
|
13
|
+
*
|
|
14
|
+
* - `bvh8_waiting_slots_push` puts a byte in front; `slots` must fit a byte. A seventeenth pushes the
|
|
15
|
+
* oldest out.
|
|
16
|
+
* - `bvh8_waiting_slots_latest` is the byte last pushed, zero when there is none.
|
|
17
|
+
* - `bvh8_waiting_slots_pop` drops it.
|
|
18
|
+
*
|
|
19
|
+
* @type {CodeChunk}
|
|
20
|
+
*/
|
|
21
|
+
export const chunk_bvh8_waiting_slots: CodeChunk;
|
|
22
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
23
|
+
//# sourceMappingURL=chunk_bvh8_waiting_slots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_bvh8_waiting_slots.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,0CAFU,MAAM,CAE8B;AAE9C;;;;;;;;;;;;;;GAcG;AACH,uCAFU,SAAS,CAkBjB;0BAvCwB,mCAAmC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../../compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Bytes {@link chunk_bvh8_waiting_slots} holds: four to a word, four words.
|
|
5
|
+
* @type {number}
|
|
6
|
+
*/
|
|
7
|
+
export const BVH8_WAITING_SLOTS_CAPACITY = 16;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Sixteen bytes kept last in, first out, in four words: for each node a walk has left waiting on its
|
|
11
|
+
* traversal stack, which of the node's eight slots are still to visit.
|
|
12
|
+
*
|
|
13
|
+
* A walk that keeps these beside the stack rather than in it writes one word of a stack entry instead
|
|
14
|
+
* of two. A function's array costs by the words that are ever indexed, on hardware that keeps it in
|
|
15
|
+
* registers, and these four words are never indexed: a push or a pop moves all of them by a byte.
|
|
16
|
+
*
|
|
17
|
+
* - `bvh8_waiting_slots_push` puts a byte in front; `slots` must fit a byte. A seventeenth pushes the
|
|
18
|
+
* oldest out.
|
|
19
|
+
* - `bvh8_waiting_slots_latest` is the byte last pushed, zero when there is none.
|
|
20
|
+
* - `bvh8_waiting_slots_pop` drops it.
|
|
21
|
+
*
|
|
22
|
+
* @type {CodeChunk}
|
|
23
|
+
*/
|
|
24
|
+
export const chunk_bvh8_waiting_slots = CodeChunk.from(
|
|
25
|
+
//language=WGSL
|
|
26
|
+
`
|
|
27
|
+
// the latest byte is the low byte of x, the oldest the high byte of w
|
|
28
|
+
fn bvh8_waiting_slots_push(waiting: vec4<u32>, slots: u32) -> vec4<u32> {
|
|
29
|
+
return (waiting << vec4<u32>(8u)) | vec4<u32>(slots, waiting.xyz >> vec3<u32>(24u));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
fn bvh8_waiting_slots_latest(waiting: vec4<u32>) -> u32 {
|
|
33
|
+
return waiting.x & 0xffu;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
fn bvh8_waiting_slots_pop(waiting: vec4<u32>) -> vec4<u32> {
|
|
37
|
+
return (waiting >> vec4<u32>(8u)) | (vec4<u32>(waiting.yzw, 0u) << vec4<u32>(24u));
|
|
38
|
+
}
|
|
39
|
+
`
|
|
40
|
+
);
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nearest hit against one geometry's tree.
|
|
3
|
+
*
|
|
4
|
+
* Two-sided. `t` is -1 on a miss, and on a hit `triangle` is the
|
|
5
|
+
* `(meshlet << 8) | triangle` id and `barycentrics` the hit's coordinates on it. `geometry` and
|
|
6
|
+
* `instance` are left for the caller.
|
|
7
|
+
*
|
|
8
|
+
* A node's triangles are `base_index_triangle` plus an offset, and the sum is the id as it stands — so
|
|
9
|
+
* the tree must address triangles as {@link bvh8_build_for_meshlets} makes it.
|
|
10
|
+
*
|
|
11
|
+
* Children are visited in the order the ray's octant ranks their slots, nearer first, and the ray is
|
|
12
|
+
* shortened at every hit: a node tested after a hit is tested against the shorter ray. Groups already
|
|
13
|
+
* on the stack keep the hits they were given, so a node behind a later hit is still fetched once, and
|
|
14
|
+
* rejected there.
|
|
15
|
+
*
|
|
16
|
+
* `stack` is the caller's, used from `stack_top` up and handed back as it was found. A group of
|
|
17
|
+
* sibling nodes waits on it only while the walk is below one of its members, so the walk needs one
|
|
18
|
+
* entry per level of the tree.
|
|
19
|
+
*
|
|
20
|
+
* @see https://github.com/jan-van-bergen/GPU-Raytracer/blob/6559ae2241c8fdea0ddaec959fe1a47ec9b3ab0d/Src/CUDA/Raytracing/BVH8.h#L277
|
|
21
|
+
* @type {CodeChunk}
|
|
22
|
+
*/
|
|
1
23
|
export const chunk_ray_query_blas_nearest: CodeChunk;
|
|
2
24
|
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
3
25
|
//# sourceMappingURL=chunk_ray_query_blas_nearest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_ray_query_blas_nearest.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_ray_query_blas_nearest.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,2CAFU,SAAS,CAiHjB;0BAtJwB,gCAAgC"}
|