@woosh/meep-engine 3.2.0 → 3.4.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/editor/process/SymbolicDisplayProcess.js +106 -106
- package/editor/process/symbolic/{SoundEmitterSymbolicDisplay.js → AudioEmitterSymbolicDisplay.js} +67 -57
- package/package.json +94 -94
- package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +110 -102
- package/src/avif/encoder_worker.js +5 -18
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts +54 -0
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +10 -3
- package/src/core/color/PQ/PQ_constants.d.ts +43 -0
- package/src/core/color/PQ/PQ_constants.d.ts.map +1 -0
- package/src/core/color/PQ/PQ_constants.js +50 -0
- package/src/core/color/PQ/PQ_to_linear.d.ts +24 -0
- package/src/core/color/PQ/PQ_to_linear.d.ts.map +1 -0
- package/src/core/color/PQ/PQ_to_linear.js +35 -0
- package/src/core/color/PQ/linear_to_PQ.d.ts +27 -0
- package/src/core/color/PQ/linear_to_PQ.d.ts.map +1 -0
- package/src/core/color/PQ/linear_to_PQ.js +32 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_other_face.d.ts +32 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_other_face.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_other_face.js +59 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_third_vertex.d.ts +26 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_third_vertex.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_third_vertex.js +55 -0
- package/src/engine/EntityCreator.d.ts +19 -11
- package/src/engine/EntityCreator.d.ts.map +1 -1
- package/src/engine/EntityCreator.js +116 -94
- package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
- package/src/engine/achievements/AchievementManager.js +437 -433
- package/src/engine/animation/AnimatedActions.d.ts +6 -1
- package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
- package/src/engine/animation/AnimatedActions.js +111 -81
- package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
- package/src/engine/animation/AnimationUtils.js +234 -252
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +275 -269
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +290 -265
- package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
- package/src/engine/ecs/util/hideEntityGracefully.js +196 -208
- package/src/engine/graphics3/VolumetricLightMap.d.ts +90 -0
- package/src/engine/graphics3/VolumetricLightMap.d.ts.map +1 -0
- package/src/engine/graphics3/VolumetricLightMap.js +160 -0
- package/src/engine/graphics3/VolumetricLightMapSerializationAdapter.d.ts +32 -0
- package/src/engine/graphics3/VolumetricLightMapSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics3/VolumetricLightMapSerializationAdapter.js +67 -0
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts +98 -0
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts.map +1 -0
- package/src/engine/graphics3/VolumetricLightMapSystem3.js +261 -0
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +4 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +536 -0
- package/src/engine/sound/SoundEngine.d.ts +2 -2
- package/src/engine/sound/SoundEngine.js +124 -124
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +20 -0
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.js +25 -2
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +338 -314
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +143 -0
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -0
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +191 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts +33 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +81 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +65 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +184 -0
- package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +999 -993
- package/src/engine/sound/sopra/README.md +644 -643
- package/src/engine/sound/sopra/SopraEngine.d.ts +2 -2
- package/src/engine/sound/sopra/SopraEngine.js +432 -432
- package/src/engine/sound/sopra/legacy/SoundAttenuationFunction.d.ts.map +1 -0
- package/src/engine/sound/{ecs → sopra/legacy}/SoundController.d.ts +3 -3
- package/src/engine/sound/sopra/legacy/SoundController.d.ts.map +1 -0
- package/src/engine/sound/{ecs → sopra/legacy}/SoundController.js +176 -176
- package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.d.ts +11 -27
- package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -0
- package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.js +352 -382
- package/src/engine/sound/sopra/legacy/SoundEmitterFlags.d.ts.map +1 -0
- package/src/engine/sound/sopra/legacy/SoundEmitterSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
- package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundPanningModelType.d.ts.map +1 -0
- package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.d.ts +11 -55
- package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -0
- package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.js +278 -357
- package/src/engine/sound/sopra/legacy/SoundTrackFlags.d.ts.map +1 -0
- package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts +34 -0
- package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts.map +1 -0
- package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.js +279 -0
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +3 -3
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -122
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +7 -1
- package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
- package/src/shade/device/timing/GPUTimerArray.js +10 -0
- package/src/shade/playground/add_random_meshes.d.ts +19 -3
- package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
- package/src/shade/playground/add_random_meshes.js +132 -84
- package/src/shade/playground/bvh_repro/README.md +57 -0
- package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts +33 -0
- package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -0
- package/src/shade/playground/bvh_repro/bvh_repro_device.js +90 -0
- package/src/shade/playground/bvh_repro/index.html +124 -0
- package/src/shade/playground/bvh_repro/main.d.ts.map +1 -0
- package/src/shade/playground/bvh_repro/main.js +254 -0
- package/src/shade/playground/load_default_environment.d.ts +10 -1
- package/src/shade/playground/load_default_environment.d.ts.map +1 -1
- package/src/shade/playground/load_default_environment.js +44 -20
- package/src/shade/playground/make_playground_asset_manager.d.ts +16 -0
- package/src/shade/playground/make_playground_asset_manager.d.ts.map +1 -0
- package/src/shade/playground/make_playground_asset_manager.js +33 -0
- package/src/shade/playground/skinned_blas_refit/README.md +103 -0
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +47 -0
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/add_floor.js +71 -0
- package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts +28 -0
- package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +745 -0
- package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts +30 -0
- package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/flat_environment.js +67 -0
- package/src/shade/playground/skinned_blas_refit/index.html +168 -0
- package/src/shade/playground/skinned_blas_refit/main.d.ts +8 -0
- package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/main.js +502 -0
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts +81 -0
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/place_character.js +116 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +21 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +104 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts +23 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +94 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +26 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +134 -0
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +40 -0
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +135 -0
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts +31 -0
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +240 -0
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +20 -0
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -0
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +50 -0
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +366 -0
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +17 -0
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -0
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -0
- package/src/shade/playground/sponza_path_trace/README.md +57 -0
- package/src/shade/playground/sponza_path_trace/index.html +164 -0
- package/src/shade/playground/sponza_path_trace/main.d.ts +8 -0
- package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -0
- package/src/shade/playground/sponza_path_trace/main.js +363 -0
- package/src/shade/renderer/Renderer.d.ts +16 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +23 -4
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +28 -3
- package/src/shade/renderer/animation/Skin.d.ts +9 -7
- package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
- package/src/shade/renderer/animation/Skin.js +9 -7
- package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +35 -0
- package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +1 -0
- package/src/shade/renderer/animation/compute_skin_world_bounds.js +146 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +41 -0
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +65 -15
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +78 -7
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +302 -77
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +18 -6
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +19 -6
- package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts +51 -0
- package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.js +260 -0
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +23 -0
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +82 -0
- package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts +25 -0
- package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -0
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts +30 -0
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +122 -0
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_empty_gpu_structure.d.ts +23 -0
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_empty_gpu_structure.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_empty_gpu_structure.js +34 -0
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +55 -0
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -0
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +37 -0
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +45 -0
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -0
- package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +201 -0
- package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts +88 -0
- package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.js +233 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +18 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +38 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +16 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +79 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +16 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +49 -0
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +43 -0
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +24 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +143 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +17 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +83 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +24 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +141 -0
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +31 -0
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +422 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.js +1 -2
- package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts +9 -0
- package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.js +23 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts +18 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.js +32 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts +27 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.js +41 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts +25 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.js +74 -0
- package/src/shade/renderer/gpu_primitive/sort/defs.d.ts +71 -0
- package/src/shade/renderer/gpu_primitive/sort/defs.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/defs.js +79 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +37 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +197 -0
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts +16 -0
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +85 -0
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts +15 -0
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +192 -0
- package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts +12 -0
- package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.js +188 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +16 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +235 -24
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +15 -3
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +57 -11
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/SkinnedMesh.js +111 -11
- package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.js +12 -3
- package/src/shade/renderer/scene/optimization/geometry/internal/match_validate_topology.js +3 -3
- package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_window.js +3 -3
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/deserialize_scene.js +0 -2
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts +22 -0
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -0
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +145 -0
- package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +18 -0
- package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -0
- package/src/shade/renderer/scene/verify_gpu_tlas_build.js +364 -0
- package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts +9 -1
- package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.js +29 -21
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.js +31 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.js +87 -39
- package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.js +40 -0
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +52 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.js +9 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.js +52 -34
- package/src/shade/renderer/texture/virtual/README.md +255 -276
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -2
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +83 -0
- package/src/view/interaction/InterfaceCommand.d.ts +8 -8
- package/src/view/interaction/InterfaceCommand.d.ts.map +1 -1
- package/src/view/interaction/InterfaceCommand.js +146 -146
- package/src/view/interaction/createInterfaceCommandButton.d.ts.map +1 -1
- package/src/view/interaction/createInterfaceCommandButton.js +115 -124
- package/src/engine/ecs/components/Timer.d.ts +0 -50
- package/src/engine/ecs/components/Timer.d.ts.map +0 -1
- package/src/engine/ecs/components/Timer.js +0 -80
- package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts +0 -22
- package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/PointFitnessBinary.js +0 -33
- package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts +0 -12
- package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/PointFitnessConstant.js +0 -27
- package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts +0 -17
- package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/PointFitnessFunction.js +0 -20
- package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts +0 -12
- package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.js +0 -27
- package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts +0 -12
- package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.js +0 -28
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +0 -50
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +0 -176
- package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts +0 -7
- package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.js +0 -68
- package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts +0 -7
- package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.js +0 -89
- package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts +0 -17
- package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts.map +0 -1
- package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.js +0 -60
- package/src/engine/ecs/systems/TimerSystem.d.ts +0 -10
- package/src/engine/ecs/systems/TimerSystem.d.ts.map +0 -1
- package/src/engine/ecs/systems/TimerSystem.js +0 -86
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +0 -13
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +0 -1
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +0 -14
- package/src/engine/graphics/StandardFrameBuffers.d.ts +0 -7
- package/src/engine/graphics/StandardFrameBuffers.d.ts.map +0 -1
- package/src/engine/graphics/StandardFrameBuffers.js +0 -9
- package/src/engine/graphics/copy_transform_to_threejs_object.d.ts +0 -7
- package/src/engine/graphics/copy_transform_to_threejs_object.d.ts.map +0 -1
- package/src/engine/graphics/copy_transform_to_threejs_object.js +0 -12
- package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts +0 -42
- package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/binding/LightBinding.js +0 -133
- package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts +0 -25
- package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +0 -90
- package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts +0 -7
- package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/binding/three/applyRotation.js +0 -24
- package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts +0 -7
- package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.js +0 -12
- package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts +0 -8
- package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.js +0 -41
- package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts +0 -4
- package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/shadow/LightShadow.js +0 -4
- package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts +0 -27
- package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/shadow/ShadowManager.js +0 -53
- package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts +0 -8
- package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/shadow/ShadowMap.js +0 -7
- package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts +0 -14
- package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.js +0 -62
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts +0 -30
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +0 -77
- package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts +0 -13
- package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.js +0 -43
- package/src/engine/graphics/ecs/light/three/light2type.d.ts +0 -8
- package/src/engine/graphics/ecs/light/three/light2type.d.ts.map +0 -1
- package/src/engine/graphics/ecs/light/three/light2type.js +0 -20
- package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts +0 -7
- package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts.map +0 -1
- package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +0 -13
- package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts +0 -20
- package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +0 -47
- package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts +0 -12
- package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.js +0 -19
- package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts +0 -18
- package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.js +0 -249
- package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.js +0 -8
- package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.js +0 -8
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +0 -14
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +0 -20
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts +0 -3
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.js +0 -58
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts +0 -3
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.js +0 -44
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts +0 -3
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.js +0 -28
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts +0 -3
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.js +0 -28
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts +0 -3
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.js +0 -39
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts +0 -3
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.js +0 -124
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts +0 -3
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.js +0 -30
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts +0 -64
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.js +0 -131
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts +0 -32
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.js +0 -62
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts +0 -46
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.js +0 -272
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts +0 -28
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.js +0 -57
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts +0 -32
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.js +0 -55
- package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts +0 -34
- package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +0 -178
- package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/FloatConstant.js +0 -31
- package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts +0 -13
- package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.js +0 -13
- package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.js +0 -26
- package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts +0 -4
- package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/ReadPosition.js +0 -5
- package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts +0 -6
- package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.js +0 -14
- package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts +0 -37
- package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/ShaderNode.js +0 -73
- package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.js +0 -30
- package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.js +0 -30
- package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/Vector3Split.js +0 -32
- package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts +0 -6
- package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.js +0 -15
- package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.js +0 -27
- package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.js +0 -25
- package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.js +0 -26
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.js +0 -25
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.js +0 -25
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.js +0 -25
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.js +0 -25
- package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.js +0 -39
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +0 -39
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +0 -45
- package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts +0 -9
- package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.js +0 -10
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts +0 -13
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.js +0 -14
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +0 -50
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +0 -47
- package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts +0 -51
- package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.js +0 -93
- package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts +0 -6
- package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.js +0 -23
- package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts +0 -7
- package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/populateNodeRegistry.js +0 -48
- package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts +0 -21
- package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.js +0 -35
- package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts +0 -20
- package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.js +0 -35
- package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts +0 -14
- package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.js +0 -17
- package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts +0 -5
- package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.js +0 -150
- package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts +0 -55
- package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.js +0 -105
- package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts +0 -49
- package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.js +0 -103
- package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts +0 -4
- package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.js +0 -6
- package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts +0 -83
- package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.js +0 -188
- package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts +0 -123
- package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts.map +0 -1
- package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.js +0 -415
- package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts +0 -71
- package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +0 -1
- package/src/engine/graphics/render/buffer/FrameBufferManager.js +0 -229
- package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts +0 -22
- package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts.map +0 -1
- package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.js +0 -84
- package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts +0 -33
- package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/LightRenderMetadata.js +0 -61
- package/src/engine/graphics/render/forward_plus/SPECIFICATION.md +0 -155
- package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts +0 -29
- package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/assign_cluster.js +0 -124
- package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts +0 -7
- package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.js +0 -17
- package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts +0 -7
- package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +0 -17
- package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +0 -9
- package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +0 -29
- package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts +0 -12
- package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.js +0 -43
- package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts +0 -8
- package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +0 -68
- package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts +0 -4
- package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.js +0 -46
- package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts +0 -14
- package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.js +0 -327
- package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +0 -1
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +0 -40
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.js +0 -74
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +0 -55
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.js +0 -11
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +0 -34
- package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts +0 -7
- package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +0 -60
- package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts +0 -7
- package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +0 -38
- package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts +0 -7
- package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +0 -30
- package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -51
- package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/model/Decal.js +0 -133
- package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts +0 -16
- package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.js +0 -18
- package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts +0 -7
- package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.js +0 -8
- package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts +0 -10
- package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.js +0 -65
- package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts +0 -7
- package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +0 -8
- package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts +0 -11
- package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/query/cube_mapping.js +0 -38
- package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +0 -21
- package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +0 -96
- package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +0 -22
- package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +0 -44
- package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +0 -11
- package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +0 -169
- package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts +0 -9
- package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +0 -33
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +0 -2
- package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts +0 -9
- package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/sort_decal_data.js +0 -102
- package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts +0 -10
- package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts.map +0 -1
- package/src/engine/graphics/render/forward_plus/testClusterEquality.js +0 -22
- package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts +0 -19
- package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts.map +0 -1
- package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.js +0 -62
- package/src/engine/graphics/shaders/AlphaBlendShader.d.ts +0 -18
- package/src/engine/graphics/shaders/AlphaBlendShader.d.ts.map +0 -1
- package/src/engine/graphics/shaders/AlphaBlendShader.js +0 -42
- package/src/engine/graphics/shaders/ClearShader.d.ts +0 -8
- package/src/engine/graphics/shaders/ClearShader.d.ts.map +0 -1
- package/src/engine/graphics/shaders/ClearShader.js +0 -28
- package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts +0 -13
- package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts.map +0 -1
- package/src/engine/graphics/shaders/ScreenSpaceQuadShader.js +0 -38
- package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts +0 -7
- package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts.map +0 -1
- package/src/engine/graphics/shaders/ScreenSpaceShader.js +0 -102
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +0 -102
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +0 -1
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +0 -277
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +0 -40
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +0 -1
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +0 -57
- package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts +0 -8
- package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts.map +0 -1
- package/src/engine/graphics/shaders/glsl_gen_swizzled_read.js +0 -39
- package/src/engine/graphics/shadows/README.md +0 -6
- package/src/engine/graphics/shadows/vsm.glsl.d.ts +0 -3
- package/src/engine/graphics/shadows/vsm.glsl.d.ts.map +0 -1
- package/src/engine/graphics/shadows/vsm.glsl.js +0 -43
- package/src/engine/graphics/util/composeMatrix4.d.ts +0 -9
- package/src/engine/graphics/util/composeMatrix4.d.ts.map +0 -1
- package/src/engine/graphics/util/composeMatrix4.js +0 -13
- package/src/engine/graphics/util/threeUpdateMatrix.d.ts +0 -6
- package/src/engine/graphics/util/threeUpdateMatrix.d.ts.map +0 -1
- package/src/engine/graphics/util/threeUpdateMatrix.js +0 -14
- package/src/engine/graphics/util/threeUpdateTransform.d.ts +0 -6
- package/src/engine/graphics/util/threeUpdateTransform.d.ts.map +0 -1
- package/src/engine/graphics/util/threeUpdateTransform.js +0 -16
- package/src/engine/sound/ecs/SoundController.d.ts.map +0 -1
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts +0 -23
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +0 -1
- package/src/engine/sound/ecs/SoundControllerSystem.js +0 -103
- package/src/engine/sound/ecs/emitter/SoundAttenuationFunction.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +0 -55
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +0 -265
- package/src/engine/sound/ecs/emitter/SoundEmitterFlags.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +0 -88
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +0 -159
- package/src/engine/sound/ecs/emitter/SoundPanningModelType.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundTrackFlags.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts +0 -8
- package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.js +0 -41
- package/src/shade/playground/FramePerformanceMonitor.d.ts +0 -114
- package/src/shade/playground/FramePerformanceMonitor.d.ts.map +0 -1
- package/src/shade/playground/FramePerformanceMonitor.js +0 -468
- package/src/shade/playground/add_random_lights.d.ts +0 -8
- package/src/shade/playground/add_random_lights.d.ts.map +0 -1
- package/src/shade/playground/add_random_lights.js +0 -50
- package/src/shade/playground/animation_prototype.d.ts +0 -24
- package/src/shade/playground/animation_prototype.d.ts.map +0 -1
- package/src/shade/playground/animation_prototype.js +0 -508
- package/src/shade/playground/animation_prototype_skinning.d.ts +0 -31
- package/src/shade/playground/animation_prototype_skinning.d.ts.map +0 -1
- package/src/shade/playground/animation_prototype_skinning.js +0 -647
- package/src/shade/playground/animation_prototype_stress.d.ts +0 -35
- package/src/shade/playground/animation_prototype_stress.d.ts.map +0 -1
- package/src/shade/playground/animation_prototype_stress.js +0 -765
- package/src/shade/playground/enable_picker.d.ts +0 -8
- package/src/shade/playground/enable_picker.d.ts.map +0 -1
- package/src/shade/playground/enable_picker.js +0 -60
- package/src/shade/playground/gltf_skinned_prototype.d.ts +0 -27
- package/src/shade/playground/gltf_skinned_prototype.d.ts.map +0 -1
- package/src/shade/playground/gltf_skinned_prototype.js +0 -560
- package/src/shade/playground/gltf_skinned_stress_prototype.d.ts +0 -24
- package/src/shade/playground/gltf_skinned_stress_prototype.d.ts.map +0 -1
- package/src/shade/playground/gltf_skinned_stress_prototype.js +0 -387
- package/src/shade/playground/gltf_viewer.d.ts +0 -2
- package/src/shade/playground/gltf_viewer.d.ts.map +0 -1
- package/src/shade/playground/gltf_viewer.js +0 -283
- package/src/shade/playground/main.d.ts.map +0 -1
- package/src/shade/playground/main.js +0 -2727
- package/src/shade/playground/make_animated_instances.d.ts +0 -9
- package/src/shade/playground/make_animated_instances.d.ts.map +0 -1
- package/src/shade/playground/make_animated_instances.js +0 -118
- package/src/shade/playground/prototype_virtual_texture.d.ts +0 -2
- package/src/shade/playground/prototype_virtual_texture.d.ts.map +0 -1
- package/src/shade/playground/prototype_virtual_texture.js +0 -274
- package/src/shade/playground/prototype_volumetrics_01.d.ts +0 -2
- package/src/shade/playground/prototype_volumetrics_01.d.ts.map +0 -1
- package/src/shade/playground/prototype_volumetrics_01.js +0 -206
- package/src/shade/playground/sample.d.ts +0 -2
- package/src/shade/playground/sample.d.ts.map +0 -1
- package/src/shade/playground/sample.js +0 -234
- package/src/shade/playground/sample_load_gltf.d.ts +0 -9
- package/src/shade/playground/sample_load_gltf.d.ts.map +0 -1
- package/src/shade/playground/sample_load_gltf.js +0 -103
- package/src/shade/playground/spread_node3d_grid.d.ts +0 -7
- package/src/shade/playground/spread_node3d_grid.d.ts.map +0 -1
- package/src/shade/playground/spread_node3d_grid.js +0 -20
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts +0 -24
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.js +0 -88
- package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.js +0 -49
- package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.js +0 -93
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts +0 -24
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.js +0 -119
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts +0 -7
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.js +0 -235
- package/src/shade/renderer/gpu_primitive/sort/NOTES.md +0 -5
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts +0 -7
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.js +0 -136
- package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts +0 -18
- package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.js +0 -108
- package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts +0 -35
- package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/defs.js +0 -42
- package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts +0 -13
- package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.js +0 -116
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.js +0 -120
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.js +0 -76
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.js +0 -125
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.js +0 -140
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.js +0 -338
- package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts +0 -7
- package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.js +0 -261
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.js +0 -14
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts +0 -25
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.js +0 -25
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts +0 -15
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.js +0 -192
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts +0 -5
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.js +0 -990
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts +0 -5
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.js +0 -82
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.js +0 -44
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts +0 -5
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.js +0 -156
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts +0 -6
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.js +0 -55
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts +0 -14
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.js +0 -110
- package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts +0 -12
- package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.js +0 -74
- package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts +0 -3
- package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts.map +0 -1
- package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.js +0 -125
- package/src/shade/renderer/scene/optimization/geometry/internal/bt_face_loop_helpers.d.ts +0 -32
- package/src/shade/renderer/scene/optimization/geometry/internal/bt_face_loop_helpers.d.ts.map +0 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/bt_face_loop_helpers.js +0 -77
- package/src/shade/renderer/scene/optimization/geometry/internal/bt_find_edge_between.d.ts +0 -12
- package/src/shade/renderer/scene/optimization/geometry/internal/bt_find_edge_between.d.ts.map +0 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/bt_find_edge_between.js +0 -35
- package/src/shade/renderer/scene/serialization/linear_to_pq.d.ts +0 -2
- package/src/shade/renderer/scene/serialization/linear_to_pq.d.ts.map +0 -1
- package/src/shade/renderer/scene/serialization/linear_to_pq.js +0 -14
- package/src/shade/renderer/scene/serialization/pq_to_linear.d.ts +0 -9
- package/src/shade/renderer/scene/serialization/pq_to_linear.d.ts.map +0 -1
- package/src/shade/renderer/scene/serialization/pq_to_linear.js +0 -30
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.js +0 -36
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.js +0 -54
- package/src/shade/renderer/shader/chunk/bvh/packed/NOTES.md +0 -19
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.js +0 -9
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts +0 -6
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.js +0 -5
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts +0 -8
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.js +0 -17
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.js +0 -14
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.js +0 -27
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.js +0 -31
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.js +0 -25
- package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.js +0 -42
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.js +0 -0
- /package/src/shade/playground/{main.d.ts → bvh_repro/main.d.ts} +0 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
import { GEOMETRY_METADATA_STRUCT } from "../../renderer/geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
2
|
+
import {
|
|
3
|
+
BVH_NODE_BOUNDS_WORD,
|
|
4
|
+
BVH_NODE_CHILD_1_WORD,
|
|
5
|
+
BVH_NODE_CHILD_2_WORD,
|
|
6
|
+
BVH_NODE_STRIDE_WORDS
|
|
7
|
+
} from "../../renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js";
|
|
8
|
+
import { bvh2_check_containment } from "../../renderer/geometry/bvh/bvh2_check_bounds.js";
|
|
9
|
+
import { record_blas_refit } from "../../renderer/geometry/bvh/record_blas_refit.js";
|
|
10
|
+
import { BVH2_NODE_STRUCT } from "../../renderer/shader/chunk/bvh/BVH2_NODE_STRUCT.js";
|
|
11
|
+
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
const BVH_NULL_NODE = 0xffffffff;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Device-level check for the per-frame BLAS refit, for when looking at the picture is not enough or
|
|
20
|
+
* not possible.
|
|
21
|
+
*
|
|
22
|
+
* The page next door answers "does the traced silhouette match the rasterized one" with your eyes.
|
|
23
|
+
* This answers a sharper version of the same question with numbers, by comparing two *independent*
|
|
24
|
+
* GPU computations of one quantity:
|
|
25
|
+
*
|
|
26
|
+
* - `shader_meshlet_bounds_reduce` atomically merges every deformed vertex into the clone's
|
|
27
|
+
* geometry-metadata bounding box. It exists for the rasterizer's culling and knows nothing
|
|
28
|
+
* about trees.
|
|
29
|
+
* - {@link record_blas_refit} takes each leaf triangle's box and climbs the tree. The root node
|
|
30
|
+
* ends up bounding every triangle.
|
|
31
|
+
*
|
|
32
|
+
* Same vertices, same frame, two paths that share no code. They have to agree, and a stale BLAS
|
|
33
|
+
* cannot make them: the metadata box tracks the pose while the root node holds the bind pose.
|
|
34
|
+
*
|
|
35
|
+
* Both are read straight out of the buffers the shaders wrote, so this needs a real device — call
|
|
36
|
+
* it from the playground page's console, not from a spec.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Read a range of a GPU buffer back to the CPU.
|
|
41
|
+
*
|
|
42
|
+
* @param {GPUDevice} device
|
|
43
|
+
* @param {GPUBuffer} buffer must carry `COPY_SRC`
|
|
44
|
+
* @param {number} offset in bytes, a multiple of 4
|
|
45
|
+
* @param {number} size in bytes
|
|
46
|
+
* @returns {Promise<ArrayBuffer>}
|
|
47
|
+
*/
|
|
48
|
+
async function read_back(device, buffer, offset, size) {
|
|
49
|
+
// mapped ranges come in multiples of 4, and copies of 4 — round out rather than refusing an
|
|
50
|
+
// offset the caller had no reason to align
|
|
51
|
+
const aligned_offset = Math.floor(offset / 4) * 4;
|
|
52
|
+
const slack = offset - aligned_offset;
|
|
53
|
+
const aligned_size = Math.ceil((size + slack) / 4) * 4;
|
|
54
|
+
|
|
55
|
+
const staging = device.createBuffer({
|
|
56
|
+
label: 'verify/readback',
|
|
57
|
+
size: aligned_size,
|
|
58
|
+
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const encoder = device.createCommandEncoder({ label: 'verify/readback' });
|
|
62
|
+
|
|
63
|
+
encoder.copyBufferToBuffer(buffer, aligned_offset, staging, 0, aligned_size);
|
|
64
|
+
|
|
65
|
+
device.queue.submit([encoder.finish()]);
|
|
66
|
+
|
|
67
|
+
await staging.mapAsync(GPUMapMode.READ);
|
|
68
|
+
|
|
69
|
+
const copy = staging.getMappedRange().slice(slack, slack + size);
|
|
70
|
+
|
|
71
|
+
staging.unmap();
|
|
72
|
+
staging.destroy();
|
|
73
|
+
|
|
74
|
+
return copy;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* `[min.xyz, max.xyz]` of the tree's root node, as the refit left it.
|
|
79
|
+
*
|
|
80
|
+
* @param {GPUDevice} device
|
|
81
|
+
* @param {GPUGeometryBVHManager} blas
|
|
82
|
+
* @param {number} address arena node index of the tree's root
|
|
83
|
+
* @returns {Promise<number[]>}
|
|
84
|
+
*/
|
|
85
|
+
async function read_root_bounds(device, blas, address) {
|
|
86
|
+
const bytes = await read_back(device, blas.buffer_data, address * BVH2_NODE_STRUCT.size, 24);
|
|
87
|
+
|
|
88
|
+
return [...new Float32Array(bytes)];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* `[min.xyz, max.xyz]` from a geometry's metadata row, as the bounds-refresh chain left it.
|
|
93
|
+
*
|
|
94
|
+
* @param {GPUDevice} device
|
|
95
|
+
* @param {GPUGeometryManager} geometries
|
|
96
|
+
* @param {number} geometry_index
|
|
97
|
+
* @returns {Promise<number[]>}
|
|
98
|
+
*/
|
|
99
|
+
async function read_metadata_bounds(device, geometries, geometry_index) {
|
|
100
|
+
const stride = GEOMETRY_METADATA_STRUCT.aligned_size;
|
|
101
|
+
|
|
102
|
+
// ask the struct where its box is rather than counting bytes by hand — `.pack()` reorders
|
|
103
|
+
const field_offset = GEOMETRY_METADATA_STRUCT.fields.find(f => f.name === 'bounding_box').offset;
|
|
104
|
+
|
|
105
|
+
const bytes = await read_back(
|
|
106
|
+
device,
|
|
107
|
+
geometries.buffer_metadata,
|
|
108
|
+
geometry_index * stride + field_offset,
|
|
109
|
+
24
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
return [...new Float32Array(bytes)];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* How far apart two boxes are, relative to their own size.
|
|
117
|
+
*
|
|
118
|
+
* Relative because the assets do not agree on what a unit is, and absolute epsilons then say
|
|
119
|
+
* nothing. The two paths reduce in different orders over the same floats, so exact equality is not
|
|
120
|
+
* the bar — being the same box to within rounding is.
|
|
121
|
+
*
|
|
122
|
+
* @param {number[]} a
|
|
123
|
+
* @param {number[]} b
|
|
124
|
+
* @returns {number}
|
|
125
|
+
*/
|
|
126
|
+
function box_disagreement(a, b) {
|
|
127
|
+
const span = Math.max(
|
|
128
|
+
1e-6,
|
|
129
|
+
...[0, 1, 2].map(axis => Math.abs(a[axis + 3] - a[axis]))
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
return Math.max(...a.map((value, i) => Math.abs(value - b[i]))) / span;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Advance the scene by hand.
|
|
137
|
+
*
|
|
138
|
+
* `create_frame_loop` runs on `requestAnimationFrame`, which a browser throttles to a stop when the
|
|
139
|
+
* page is not being composited — a hidden tab, a devtools-only session. Driving `render` directly
|
|
140
|
+
* makes the check independent of whether anyone is looking at it.
|
|
141
|
+
*
|
|
142
|
+
* @param {Renderer} renderer
|
|
143
|
+
* @param {PerspectiveCamera} camera
|
|
144
|
+
* @param {Scene} scene
|
|
145
|
+
* @param {number} frames
|
|
146
|
+
* @param {number} [dt] seconds per frame
|
|
147
|
+
*/
|
|
148
|
+
async function advance(renderer, camera, scene, frames, dt = 1 / 60) {
|
|
149
|
+
for (let i = 0; i < frames; i++) {
|
|
150
|
+
renderer.render(camera, scene, dt);
|
|
151
|
+
|
|
152
|
+
await renderer.graphics.device.queue.onSubmittedWorkDone();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Run the check.
|
|
158
|
+
*
|
|
159
|
+
* Two samples, taken far enough apart in the dance that the pose is meaningfully different. Each
|
|
160
|
+
* sample holds the two boxes against each other; the pair holds the tree against *itself* over
|
|
161
|
+
* time, which is what catches a refit that runs but reads the source's rest-pose vertices — the
|
|
162
|
+
* boxes would agree at every sample and never move.
|
|
163
|
+
*
|
|
164
|
+
* @param {object} options
|
|
165
|
+
* @param {Renderer} options.renderer
|
|
166
|
+
* @param {PerspectiveCamera} options.camera
|
|
167
|
+
* @param {Scene} options.scene
|
|
168
|
+
* @param {SkinnedMesh} options.mesh a mesh whose clone is being deformed
|
|
169
|
+
* @param {number} [options.tolerance] relative box disagreement to accept
|
|
170
|
+
* @returns {Promise<object>} the samples and the verdict
|
|
171
|
+
*/
|
|
172
|
+
export async function verify_skinned_blas_refit({
|
|
173
|
+
renderer,
|
|
174
|
+
camera,
|
|
175
|
+
scene,
|
|
176
|
+
mesh,
|
|
177
|
+
tolerance = 1e-3,
|
|
178
|
+
}) {
|
|
179
|
+
const graphics = renderer.graphics;
|
|
180
|
+
const device = graphics.device;
|
|
181
|
+
|
|
182
|
+
const scene_context = renderer.scenes.obtain(scene);
|
|
183
|
+
|
|
184
|
+
const geometries = graphics.geometries;
|
|
185
|
+
|
|
186
|
+
// settle: the first frames register the clone, upload its tree and run the first refit
|
|
187
|
+
await advance(renderer, camera, scene, 8);
|
|
188
|
+
|
|
189
|
+
const geometry_index = scene_context.skinning.obtain_geometry_index(mesh);
|
|
190
|
+
|
|
191
|
+
if (geometry_index === undefined) {
|
|
192
|
+
throw new Error('the mesh has no clone — is it a SkinnedMesh, bound to a skin, and in the scene?');
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const address = new Uint32Array(
|
|
196
|
+
await read_back(device, geometries.blas.buffer_metadata, geometry_index * 4, 4)
|
|
197
|
+
)[0];
|
|
198
|
+
|
|
199
|
+
const samples = [];
|
|
200
|
+
|
|
201
|
+
for (let i = 0; i < 2; i++) {
|
|
202
|
+
// a third of a second between samples — far enough into the dance that a limb has moved,
|
|
203
|
+
// close enough that the whole check is quick
|
|
204
|
+
if (i > 0) {
|
|
205
|
+
await advance(renderer, camera, scene, 20);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const root = await read_root_bounds(device, geometries.blas, address);
|
|
209
|
+
const metadata = await read_metadata_bounds(device, geometries, geometry_index);
|
|
210
|
+
|
|
211
|
+
samples.push({ root, metadata, disagreement: box_disagreement(metadata, root) });
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// and the interior, which the root box alone says nothing about
|
|
215
|
+
const region = await read_back(
|
|
216
|
+
device,
|
|
217
|
+
geometries.blas.buffer_data,
|
|
218
|
+
address * BVH2_NODE_STRUCT.size,
|
|
219
|
+
(mesh.geometry.bvh.byteLength / BVH2_NODE_STRUCT.size | 0) * BVH2_NODE_STRUCT.size
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
// the same checker the spec asserts with, so the browser tier and CI ask one question
|
|
223
|
+
const union_check = bvh2_check_containment(region);
|
|
224
|
+
|
|
225
|
+
const agrees = samples.every(sample => sample.disagreement <= tolerance)
|
|
226
|
+
&& union_check.problems.length === 0;
|
|
227
|
+
|
|
228
|
+
// the pose has to have moved for the agreement above to mean anything
|
|
229
|
+
const moved = box_disagreement(samples[0].root, samples[1].root);
|
|
230
|
+
|
|
231
|
+
const result = {
|
|
232
|
+
geometry_index,
|
|
233
|
+
address,
|
|
234
|
+
samples,
|
|
235
|
+
union_check,
|
|
236
|
+
agrees,
|
|
237
|
+
moved,
|
|
238
|
+
// a box that never moves is a box that is not being recomputed, however well it agrees
|
|
239
|
+
verdict: agrees && moved > tolerance
|
|
240
|
+
? `pass — the tree bounds the deformed mesh and follows it; `
|
|
241
|
+
+ `${union_check.internal} internal nodes are exactly their children's union`
|
|
242
|
+
: agrees
|
|
243
|
+
? `inconclusive — the boxes agree but neither moved (${moved.toExponential(2)}); is the animation playing?`
|
|
244
|
+
: union_check.problems.length > 0
|
|
245
|
+
? `FAIL — the interior does not hold together: ${union_check.problems[0]}`
|
|
246
|
+
: `FAIL — the tree does not bound the deformed mesh (${samples.map(s => s.disagreement.toExponential(2)).join(', ')})`,
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
console.log(result.verdict, result);
|
|
250
|
+
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Does each leaf's box belong to the triangle that leaf names?
|
|
256
|
+
*
|
|
257
|
+
* The check above cannot see this, and it is worth being explicit about why. Its two properties —
|
|
258
|
+
* root box equals the metadata box, every internal node equals its children's union — are both
|
|
259
|
+
* invariant under *any* permutation of triangles among leaves. Deal the same set of triangle boxes
|
|
260
|
+
* out to the wrong leaves and the union of all of them is unchanged, so the root still matches, and
|
|
261
|
+
* the climb still computes each node from whatever its children hold. A tree that fits every
|
|
262
|
+
* triangle to the wrong leaf passes both and traces garbage: a ray descends into a box, tests the
|
|
263
|
+
* triangle the leaf names, and that triangle is somewhere else entirely.
|
|
264
|
+
*
|
|
265
|
+
* The way to see it is to refit a geometry that is **not** deforming, and hold the result against
|
|
266
|
+
* the tree it was copied from. The CPU builder put each leaf's box there with the correspondence
|
|
267
|
+
* that is correct by construction; the refit recomputes those boxes from the vertex buffer. Nothing
|
|
268
|
+
* moved in between, so the two have to be the same bytes — and a permutation is exactly what stops
|
|
269
|
+
* them being.
|
|
270
|
+
*
|
|
271
|
+
* @param {object} options
|
|
272
|
+
* @param {Renderer} options.renderer
|
|
273
|
+
* @param {MeshletGeometry} options.geometry a geometry nothing deforms
|
|
274
|
+
* @returns {Promise<object>}
|
|
275
|
+
*/
|
|
276
|
+
export async function verify_leaf_correspondence({ renderer, geometry }) {
|
|
277
|
+
const graphics = renderer.graphics;
|
|
278
|
+
const device = graphics.device;
|
|
279
|
+
|
|
280
|
+
const geometries = graphics.geometries;
|
|
281
|
+
|
|
282
|
+
const metadata = geometries.get_metadata(geometry);
|
|
283
|
+
|
|
284
|
+
if (metadata === undefined) {
|
|
285
|
+
throw new Error('that geometry is not registered');
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const target = geometries.blas.get_refit_target(metadata);
|
|
289
|
+
|
|
290
|
+
if (target === undefined) {
|
|
291
|
+
throw new Error('that geometry has no resident tree');
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const expected = new Float32Array(geometry.bvh);
|
|
295
|
+
const expected_words = new Uint32Array(geometry.bvh);
|
|
296
|
+
|
|
297
|
+
const cmd = ShadeGPUCommandContext.create(graphics, 'verify/leaf correspondence');
|
|
298
|
+
|
|
299
|
+
record_blas_refit(cmd, {
|
|
300
|
+
blas: geometries.blas,
|
|
301
|
+
geometries,
|
|
302
|
+
owner: metadata,
|
|
303
|
+
geometry_index: metadata.index,
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
cmd.finish();
|
|
307
|
+
|
|
308
|
+
await device.queue.onSubmittedWorkDone();
|
|
309
|
+
|
|
310
|
+
const region = new Float32Array(await read_back(
|
|
311
|
+
device,
|
|
312
|
+
geometries.blas.buffer_data,
|
|
313
|
+
target.node_word_offset * Uint32Array.BYTES_PER_ELEMENT,
|
|
314
|
+
geometry.bvh.byteLength
|
|
315
|
+
));
|
|
316
|
+
|
|
317
|
+
const node_count = Math.floor(expected.length / BVH_NODE_STRIDE_WORDS);
|
|
318
|
+
|
|
319
|
+
const problems = [];
|
|
320
|
+
|
|
321
|
+
let leaves = 0;
|
|
322
|
+
let worst = 0;
|
|
323
|
+
|
|
324
|
+
for (let node = 0; node < node_count && problems.length < 8; node++) {
|
|
325
|
+
const base = node * BVH_NODE_STRIDE_WORDS;
|
|
326
|
+
|
|
327
|
+
// only the leaves: an internal node's box comes from the climb, which the union check
|
|
328
|
+
// already covers, and slots the tree never reaches hold whatever the free list left
|
|
329
|
+
if (expected_words[base + BVH_NODE_CHILD_1_WORD] !== BVH_NULL_NODE) {
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
leaves += 1;
|
|
334
|
+
|
|
335
|
+
for (let i = 0; i < 6; i++) {
|
|
336
|
+
const want = expected[base + BVH_NODE_BOUNDS_WORD + i];
|
|
337
|
+
const got = region[base + BVH_NODE_BOUNDS_WORD + i];
|
|
338
|
+
|
|
339
|
+
const error = Math.abs(want - got);
|
|
340
|
+
|
|
341
|
+
if (error > worst) {
|
|
342
|
+
worst = error;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
if (want !== got) {
|
|
346
|
+
problems.push(
|
|
347
|
+
`leaf node ${node} bound ${i}: builder says ${want}, refit says ${got}`
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
const result = {
|
|
354
|
+
leaves,
|
|
355
|
+
worst,
|
|
356
|
+
problems,
|
|
357
|
+
verdict: problems.length === 0
|
|
358
|
+
? `pass — all ${leaves} leaf boxes are the ones the builder put there, so each leaf's `
|
|
359
|
+
+ `box is its own triangle's`
|
|
360
|
+
: `FAIL — ${problems.length}+ leaf boxes differ from the builder's: ${problems[0]}`,
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
console.log(result.verdict, result);
|
|
364
|
+
|
|
365
|
+
return result;
|
|
366
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} options
|
|
3
|
+
* @param {Renderer} options.renderer
|
|
4
|
+
* @param {PerspectiveCamera} options.camera whose position the rays start from
|
|
5
|
+
* @param {Mesh} options.mesh the instance whose transform puts the camera into geometry space
|
|
6
|
+
* @param {object} options.target refit target of the tree to audit
|
|
7
|
+
* @param {number} options.geometry_index
|
|
8
|
+
* @returns {Promise<object>}
|
|
9
|
+
*/
|
|
10
|
+
export function verify_traversal_reachability({ renderer, camera, mesh, target, geometry_index, }: {
|
|
11
|
+
renderer: Renderer;
|
|
12
|
+
camera: PerspectiveCamera;
|
|
13
|
+
mesh: Mesh;
|
|
14
|
+
target: object;
|
|
15
|
+
geometry_index: number;
|
|
16
|
+
}): Promise<object>;
|
|
17
|
+
//# sourceMappingURL=verify_traversal_reachability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_traversal_reachability.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js"],"names":[],"mappings":"AAoHA;;;;;;;;GAQG;AACH;IAP6B,QAAQ;IACC,MAAM;IACnB,IAAI;IACF,MAAM,EAAtB,MAAM;IACU,cAAc,EAA9B,MAAM;IACJ,QAAQ,MAAM,CAAC,CA6H3B"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
2
|
+
import {
|
|
3
|
+
BLAS_VISIBILITY_SETTINGS_STRUCT,
|
|
4
|
+
shader_blas_audit_visibility
|
|
5
|
+
} from "./shader_blas_audit_visibility.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Can the traversal reach every triangle in the tree?
|
|
9
|
+
*
|
|
10
|
+
* The last unexercised link. Everything about the tree itself checks out — leaf boxes contain the
|
|
11
|
+
* triangles the intersector fetches, internal nodes are their children's union, the root matches an
|
|
12
|
+
* independently computed box, the instance's world AABB contains the geometry, and the stack does
|
|
13
|
+
* not overflow. None of that runs `ray_query_blas_nearest`, and that function is what the picture
|
|
14
|
+
* is made of.
|
|
15
|
+
*
|
|
16
|
+
* So: one ray per triangle, from the camera to that triangle's own centroid. The centroid is inside
|
|
17
|
+
* the triangle, so the ray intersects it, so a hit is guaranteed — this triangle, or whatever
|
|
18
|
+
* occludes it. A miss cannot happen geometrically. Every miss is the traversal declining to enter a
|
|
19
|
+
* box the ray is inside.
|
|
20
|
+
*
|
|
21
|
+
* Run it from a view that the picture disagrees at and from one it agrees at; the difference
|
|
22
|
+
* between the two counts is the fault, expressed as triangles rather than pixels.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @param {GPUDevice} device
|
|
27
|
+
* @param {GPUBuffer} buffer
|
|
28
|
+
* @param {number} size
|
|
29
|
+
* @returns {Promise<ArrayBuffer>}
|
|
30
|
+
*/
|
|
31
|
+
async function read_back(device, buffer, size) {
|
|
32
|
+
const staging = device.createBuffer({
|
|
33
|
+
label: 'reachability/readback',
|
|
34
|
+
size,
|
|
35
|
+
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const encoder = device.createCommandEncoder({ label: 'reachability/readback' });
|
|
39
|
+
|
|
40
|
+
encoder.copyBufferToBuffer(buffer, 0, staging, 0, size);
|
|
41
|
+
|
|
42
|
+
device.queue.submit([encoder.finish()]);
|
|
43
|
+
|
|
44
|
+
await staging.mapAsync(GPUMapMode.READ);
|
|
45
|
+
|
|
46
|
+
const copy = staging.getMappedRange().slice(0);
|
|
47
|
+
|
|
48
|
+
staging.unmap();
|
|
49
|
+
staging.destroy();
|
|
50
|
+
|
|
51
|
+
return copy;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Apply the inverse of a mesh's transform to a world point — the same trip `chunk_ray_query_nearest`
|
|
56
|
+
* makes to put a ray into geometry space.
|
|
57
|
+
*
|
|
58
|
+
* Done on the host with a full inverse rather than by transposing a rotation, because the transform
|
|
59
|
+
* carries the asset's centimetre scale and a shortcut that assumes orthonormality would silently be
|
|
60
|
+
* a hundred times wrong here.
|
|
61
|
+
*
|
|
62
|
+
* @param {ArrayLike<number>} m column-major 4x4
|
|
63
|
+
* @param {number[]} point
|
|
64
|
+
* @returns {number[]}
|
|
65
|
+
*/
|
|
66
|
+
function inverse_transform_point(m, point) {
|
|
67
|
+
const a = [
|
|
68
|
+
[m[0], m[4], m[8], m[12]],
|
|
69
|
+
[m[1], m[5], m[9], m[13]],
|
|
70
|
+
[m[2], m[6], m[10], m[14]],
|
|
71
|
+
[m[3], m[7], m[11], m[15]],
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
const b = [point[0], point[1], point[2], 1];
|
|
75
|
+
|
|
76
|
+
// Gaussian elimination on the 4x4 — small, and clearer than an inlined cofactor expansion
|
|
77
|
+
for (let column = 0; column < 4; column++) {
|
|
78
|
+
let pivot = column;
|
|
79
|
+
|
|
80
|
+
for (let row = column + 1; row < 4; row++) {
|
|
81
|
+
if (Math.abs(a[row][column]) > Math.abs(a[pivot][column])) {
|
|
82
|
+
pivot = row;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
[a[column], a[pivot]] = [a[pivot], a[column]];
|
|
87
|
+
[b[column], b[pivot]] = [b[pivot], b[column]];
|
|
88
|
+
|
|
89
|
+
const divisor = a[column][column];
|
|
90
|
+
|
|
91
|
+
for (let k = column; k < 4; k++) {
|
|
92
|
+
a[column][k] /= divisor;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
b[column] /= divisor;
|
|
96
|
+
|
|
97
|
+
for (let row = 0; row < 4; row++) {
|
|
98
|
+
if (row === column) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const factor = a[row][column];
|
|
103
|
+
|
|
104
|
+
for (let k = column; k < 4; k++) {
|
|
105
|
+
a[row][k] -= factor * a[column][k];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
b[row] -= factor * b[column];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const w = b[3] === 0 ? 1 : b[3];
|
|
113
|
+
|
|
114
|
+
return [b[0] / w, b[1] / w, b[2] / w];
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @param {object} options
|
|
119
|
+
* @param {Renderer} options.renderer
|
|
120
|
+
* @param {PerspectiveCamera} options.camera whose position the rays start from
|
|
121
|
+
* @param {Mesh} options.mesh the instance whose transform puts the camera into geometry space
|
|
122
|
+
* @param {object} options.target refit target of the tree to audit
|
|
123
|
+
* @param {number} options.geometry_index
|
|
124
|
+
* @returns {Promise<object>}
|
|
125
|
+
*/
|
|
126
|
+
export async function verify_traversal_reachability({
|
|
127
|
+
renderer,
|
|
128
|
+
camera,
|
|
129
|
+
mesh,
|
|
130
|
+
target,
|
|
131
|
+
geometry_index,
|
|
132
|
+
}) {
|
|
133
|
+
const graphics = renderer.graphics;
|
|
134
|
+
const device = graphics.device;
|
|
135
|
+
|
|
136
|
+
const geometries = graphics.geometries;
|
|
137
|
+
const blas = geometries.blas;
|
|
138
|
+
const meshlets = geometries.meshlets;
|
|
139
|
+
|
|
140
|
+
const { leaf_count, node_word_offset, leaf_nodes_offset } = target;
|
|
141
|
+
|
|
142
|
+
const origin = inverse_transform_point(
|
|
143
|
+
mesh.transform_global.matrix,
|
|
144
|
+
[...camera.transform.position]
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
const t_bytes = leaf_count * Float32Array.BYTES_PER_ELEMENT;
|
|
148
|
+
|
|
149
|
+
const out_t = device.createBuffer({
|
|
150
|
+
label: 'reachability/t',
|
|
151
|
+
size: t_bytes,
|
|
152
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
const out_triangle = device.createBuffer({
|
|
156
|
+
label: 'reachability/triangle',
|
|
157
|
+
size: t_bytes,
|
|
158
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
const out_expected_t = device.createBuffer({
|
|
162
|
+
label: 'reachability/expected t',
|
|
163
|
+
size: t_bytes,
|
|
164
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const cmd = ShadeGPUCommandContext.create(graphics, 'audit/reachability');
|
|
168
|
+
|
|
169
|
+
shader_blas_audit_visibility.dispatchLinear({
|
|
170
|
+
encoder: cmd,
|
|
171
|
+
element_count: leaf_count,
|
|
172
|
+
bindings: {
|
|
173
|
+
settings: cmd.allocateTransientValueBuffer(BLAS_VISIBILITY_SETTINGS_STRUCT, {
|
|
174
|
+
origin,
|
|
175
|
+
leaf_count,
|
|
176
|
+
node_word_offset,
|
|
177
|
+
leaf_nodes_offset,
|
|
178
|
+
geometry_index,
|
|
179
|
+
tmax: 1e12,
|
|
180
|
+
}),
|
|
181
|
+
leaf_nodes: blas.buffer_leaf_nodes,
|
|
182
|
+
blas_lookup: blas.buffer_metadata,
|
|
183
|
+
blas_data: blas.buffer_data,
|
|
184
|
+
geometries: geometries.buffer_metadata,
|
|
185
|
+
meshlet_metadata: meshlets.buffer_metadata,
|
|
186
|
+
meshlet_data: meshlets.buffer_data,
|
|
187
|
+
nodes: blas.buffer_data,
|
|
188
|
+
out_t,
|
|
189
|
+
out_triangle,
|
|
190
|
+
out_expected_t,
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
cmd.finish();
|
|
195
|
+
|
|
196
|
+
await device.queue.onSubmittedWorkDone();
|
|
197
|
+
|
|
198
|
+
const t = new Float32Array(await read_back(device, out_t, t_bytes));
|
|
199
|
+
const expected = new Float32Array(await read_back(device, out_expected_t, t_bytes));
|
|
200
|
+
|
|
201
|
+
out_t.destroy();
|
|
202
|
+
out_triangle.destroy();
|
|
203
|
+
out_expected_t.destroy();
|
|
204
|
+
|
|
205
|
+
let missed = 0;
|
|
206
|
+
let overshot = 0;
|
|
207
|
+
let worst_overshoot = 0;
|
|
208
|
+
|
|
209
|
+
for (let i = 0; i < leaf_count; i++) {
|
|
210
|
+
if (!(t[i] >= 0)) {
|
|
211
|
+
missed += 1;
|
|
212
|
+
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// 1e-3 of the aimed distance, which is far above float error on these magnitudes and far
|
|
217
|
+
// below the gap between one surface and the next
|
|
218
|
+
const overshoot = (t[i] - expected[i]) / Math.max(1e-9, expected[i]);
|
|
219
|
+
|
|
220
|
+
if (overshoot > 1e-3) {
|
|
221
|
+
overshot += 1;
|
|
222
|
+
|
|
223
|
+
worst_overshoot = Math.max(worst_overshoot, overshoot);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const lost = missed + overshot;
|
|
228
|
+
|
|
229
|
+
const result = {
|
|
230
|
+
leaf_count,
|
|
231
|
+
missed,
|
|
232
|
+
overshot,
|
|
233
|
+
worst_overshoot: +worst_overshoot.toFixed(4),
|
|
234
|
+
lost,
|
|
235
|
+
lost_pct: +(lost / leaf_count * 100).toFixed(3),
|
|
236
|
+
origin: origin.map(v => +v.toFixed(3)),
|
|
237
|
+
verdict: lost === 0
|
|
238
|
+
? `pass — the traversal returns a surface at or before every one of ${leaf_count} `
|
|
239
|
+
+ `triangles it was aimed at`
|
|
240
|
+
: `FAIL — ${lost} of ${leaf_count} (${(lost / leaf_count * 100).toFixed(2)}%) rays aimed `
|
|
241
|
+
+ `at a triangle came back with nothing (${missed}) or with something behind it `
|
|
242
|
+
+ `(${overshot}). Neither is geometrically possible, so the traversal is walking past `
|
|
243
|
+
+ `surfaces it was pointed at — which is the hole in the traced image.`,
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
console.log(result.verdict, result);
|
|
247
|
+
|
|
248
|
+
return result;
|
|
249
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Sponza — path tracer
|
|
2
|
+
|
|
3
|
+
A prototype page that loads Sponza and renders it with the path tracer, the traversal-heaviest
|
|
4
|
+
consumer of the TLAS.
|
|
5
|
+
|
|
6
|
+
It was written to A/B the GPU TLAS build against the legacy CPU one. That comparison has been run
|
|
7
|
+
(`GPU_BVH_BUILD_PLAN.md` §4.6 has the numbers), the GPU build won on every axis at instance scale,
|
|
8
|
+
and the legacy path has been deleted — so the toggle is gone with it. What the page is for now:
|
|
9
|
+
noticing a regression in the tree, since a wrong child index or a parent box that does not contain
|
|
10
|
+
its children survives every per-node byte assertion and shows up here as geometry that disappears
|
|
11
|
+
at a grazing angle or light through a wall; and building a workload where the TLAS is what
|
|
12
|
+
traversal costs, which is what the box-scatter control does.
|
|
13
|
+
|
|
14
|
+
## Running it
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install
|
|
18
|
+
npm run dev
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
then open <http://localhost:5173/src/shade/playground/sponza_path_trace/index.html>.
|
|
22
|
+
|
|
23
|
+
The scene comes from `test_assets/Sponza/glTF/Sponza.gltf`, which is gitignored and unpublished —
|
|
24
|
+
`test_assets/README.md` has the two lines that put it and an environment map there. To load
|
|
25
|
+
something else, type its URL in the box and press Load, or pass it up front:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
?scene=/some/other/scene.shade
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The loader picks itself by extension: `.gltf` / `.glb` through `load_gltf`, anything else through
|
|
32
|
+
`deserialize_scene`. Changing the URL reloads the page — a `Scene` has no teardown, so swapping one
|
|
33
|
+
in place is not something this prototype tries to do.
|
|
34
|
+
|
|
35
|
+
Note that the `.shade` scenes sitting beside Sponza in the sibling repo do **not** load:
|
|
36
|
+
`deserialize_scene` takes format version 2 only and those are version 1. See `test_assets/README.md`.
|
|
37
|
+
|
|
38
|
+
## The controls
|
|
39
|
+
|
|
40
|
+
| control | what it does |
|
|
41
|
+
|---|---|
|
|
42
|
+
| **Path tracer** | `renderer.feature_path_tracing_enabled`. Accumulates one tile per frame and resets when the camera moves, so let it settle before judging an image. |
|
|
43
|
+
| **TAA** | Turned off automatically when the tracer goes on — the tracer has its own temporal accumulation and two of them fight. |
|
|
44
|
+
| **Reset accumulation** | Discards traced history without touching the camera. |
|
|
45
|
+
| **Add boxes** | Scatters N boxes at sizes spanning two orders of magnitude, through `add_random_meshes`. At Sponza's own ~100 instances a traced frame is entirely BLAS and shading and the TLAS's shape is invisible in it; quantity is what moves traversal cost into the TLAS, and size variety is the case a Morton order handles worst. Sizes are a fraction of the loaded scene's own bounds, so the control means the same thing whatever `?scene=` names, and clicking twice adds different boxes rather than the same ones again. |
|
|
46
|
+
|
|
47
|
+
Frame time is a 60-frame rolling mean next to the instance count. It is a *whole-frame* number and
|
|
48
|
+
the tracer dominates it — for build cost specifically, `bvh_repro`'s BVH check times the build
|
|
49
|
+
passes individually.
|
|
50
|
+
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
- `renderer`, `scene` and `camera` are on `globalThis`, so the console can reach them.
|
|
54
|
+
- Drag to orbit, wheel to zoom. The controller is attached to `document.body`, so dragging across
|
|
55
|
+
the panel moves the camera too.
|
|
56
|
+
- The path tracer is prototype-grade and off by default in `Renderer`; `feature_path_tracing_enabled`
|
|
57
|
+
exists to make this comparison possible, not as a shipping render mode.
|