@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,135 @@
|
|
|
1
|
+
import Vector3 from "../../../core/geom/Vector3.js";
|
|
2
|
+
import { diff_traced_against_rasterized } from "./diff_traced_against_rasterized.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Run the traced-against-rasterized comparison from many directions and report the worst.
|
|
6
|
+
*
|
|
7
|
+
* One view proves nothing. Every check that has come back clean so far has come back clean from
|
|
8
|
+
* *a* camera, and the disagreement people actually see is reported from cameras they orbited to —
|
|
9
|
+
* so "which views fail" is the question, and answering it by looking is what has cost the most time
|
|
10
|
+
* on this.
|
|
11
|
+
*
|
|
12
|
+
* Views are placed on a sphere around the instance being examined, at several elevations including
|
|
13
|
+
* from below, because a mesh of long thin slivers presents completely differently edge-on than
|
|
14
|
+
* face-on and a horizon-only ring would miss half of it.
|
|
15
|
+
*
|
|
16
|
+
* The camera is driven directly rather than through the orbital controller, so a sweep does not
|
|
17
|
+
* depend on the controller's state and leaves it where it found it.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {object} options
|
|
22
|
+
* @param {Renderer} options.renderer
|
|
23
|
+
* @param {PerspectiveCamera} options.camera
|
|
24
|
+
* @param {Scene} options.scene
|
|
25
|
+
* @param {Mesh} options.mesh the instance to orbit and to frame on
|
|
26
|
+
* @param {function(boolean): void} [options.suspend]
|
|
27
|
+
* @param {number} [options.azimuths]
|
|
28
|
+
* @param {number[]} [options.elevations] radians; negative looks up from below
|
|
29
|
+
* @param {number} [options.distance] multiples of the instance's bounding radius
|
|
30
|
+
* @param {number} [options.samples] samples per pixel at each view
|
|
31
|
+
* @returns {Promise<object>}
|
|
32
|
+
*/
|
|
33
|
+
export async function sweep_views({
|
|
34
|
+
renderer,
|
|
35
|
+
camera,
|
|
36
|
+
scene,
|
|
37
|
+
mesh,
|
|
38
|
+
suspend = () => undefined,
|
|
39
|
+
azimuths = 8,
|
|
40
|
+
elevations = [-0.9, -0.3, 0.3, 0.9],
|
|
41
|
+
distance = 2.2,
|
|
42
|
+
samples = 6,
|
|
43
|
+
}) {
|
|
44
|
+
const scene_context = renderer.scenes.obtain(scene);
|
|
45
|
+
|
|
46
|
+
const record = await scene_context.scene_database.debug_table_read_element(
|
|
47
|
+
'meshes',
|
|
48
|
+
scene_context.mesh_row_of(mesh)
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const box = record.bounding_box;
|
|
52
|
+
|
|
53
|
+
const centre = new Vector3(
|
|
54
|
+
(box[0] + box[3]) / 2,
|
|
55
|
+
(box[1] + box[4]) / 2,
|
|
56
|
+
(box[2] + box[5]) / 2
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const radius = Math.hypot(box[3] - box[0], box[4] - box[1], box[5] - box[2]) * 0.5;
|
|
60
|
+
|
|
61
|
+
const kept = {
|
|
62
|
+
position: [...camera.transform.position],
|
|
63
|
+
near: camera.near,
|
|
64
|
+
far: camera.far,
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
camera.near = radius * 0.01;
|
|
68
|
+
camera.far = radius * 400;
|
|
69
|
+
|
|
70
|
+
const views = [];
|
|
71
|
+
|
|
72
|
+
for (const elevation of elevations) {
|
|
73
|
+
for (let step = 0; step < azimuths; step++) {
|
|
74
|
+
const azimuth = step / azimuths * Math.PI * 2;
|
|
75
|
+
|
|
76
|
+
const range = radius * distance;
|
|
77
|
+
|
|
78
|
+
camera.transform.position.set(
|
|
79
|
+
centre.x + range * Math.cos(elevation) * Math.cos(azimuth),
|
|
80
|
+
centre.y + range * Math.sin(elevation),
|
|
81
|
+
centre.z + range * Math.cos(elevation) * Math.sin(azimuth)
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
camera.transform.lookAt(centre);
|
|
85
|
+
|
|
86
|
+
const result = await diff_traced_against_rasterized({
|
|
87
|
+
renderer,
|
|
88
|
+
camera,
|
|
89
|
+
scene,
|
|
90
|
+
suspend,
|
|
91
|
+
samples,
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
views.push({
|
|
95
|
+
elevation: +elevation.toFixed(2),
|
|
96
|
+
azimuth: +(azimuth * 180 / Math.PI).toFixed(0),
|
|
97
|
+
covered: result.covered,
|
|
98
|
+
raster_only: result.raster_only,
|
|
99
|
+
traced_only: result.traced_only,
|
|
100
|
+
raster_only_pct: result.raster_only_pct,
|
|
101
|
+
largest: result.largest_components[0] ?? 0,
|
|
102
|
+
median: result.median_component,
|
|
103
|
+
converging: result.still_converging,
|
|
104
|
+
position: [...camera.transform.position].map(v => +v.toFixed(3)),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
camera.transform.position.set(...kept.position);
|
|
110
|
+
camera.transform.lookAt(centre);
|
|
111
|
+
camera.near = kept.near;
|
|
112
|
+
camera.far = kept.far;
|
|
113
|
+
|
|
114
|
+
const worst = views.slice().sort((a, b) => b.largest - a.largest);
|
|
115
|
+
|
|
116
|
+
// A view whose largest one-directional component is a real blob is a view where something is
|
|
117
|
+
// actually absent, not a view with more silhouette than the others.
|
|
118
|
+
const suspicious = views.filter(view =>
|
|
119
|
+
!view.converging && view.largest >= 400 && view.raster_only > view.traced_only * 2);
|
|
120
|
+
|
|
121
|
+
const result = {
|
|
122
|
+
views,
|
|
123
|
+
worst: worst.slice(0, 5),
|
|
124
|
+
suspicious,
|
|
125
|
+
verdict: suspicious.length === 0
|
|
126
|
+
? `pass — ${views.length} views, worst blob ${worst[0]?.largest ?? 0} px, `
|
|
127
|
+
+ `median component ${worst[0]?.median ?? 0} px; nothing is missing from any of them`
|
|
128
|
+
: `FAIL — ${suspicious.length} of ${views.length} views lose geometry under the tracer, `
|
|
129
|
+
+ `worst blob ${Math.max(...suspicious.map(v => v.largest))} px`,
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
console.log(result.verdict, result);
|
|
133
|
+
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The AABB of a box's eight corners under a transform.
|
|
3
|
+
*
|
|
4
|
+
* Eight corners rather than two: any rotation in the matrix makes a componentwise transform of the
|
|
5
|
+
* min and max meaningless, which is the trap that makes this worth writing down. Michelle's root
|
|
6
|
+
* carries the file's axis conversion, so her boxes are rotated and a two-corner comparison reports
|
|
7
|
+
* violations that are not there and misses ones that are.
|
|
8
|
+
*
|
|
9
|
+
* @param {ArrayLike<number>} box `[min.xyz, max.xyz]`
|
|
10
|
+
* @param {ArrayLike<number>} matrix column-major 4x4
|
|
11
|
+
* @returns {number[]} `[min.xyz, max.xyz]`
|
|
12
|
+
*/
|
|
13
|
+
export function transformed_box(box: ArrayLike<number>, matrix: ArrayLike<number>): number[];
|
|
14
|
+
/**
|
|
15
|
+
* Check every mesh in the scene.
|
|
16
|
+
*
|
|
17
|
+
* @param {object} options
|
|
18
|
+
* @param {Renderer} options.renderer
|
|
19
|
+
* @param {Scene} options.scene
|
|
20
|
+
* @param {PerspectiveCamera} [options.camera] rendered a few times first, so the bounds-refresh
|
|
21
|
+
* chain has published something to check
|
|
22
|
+
* @param {number} [options.tolerance] fraction of an instance's own size it may escape by
|
|
23
|
+
* @returns {Promise<object>}
|
|
24
|
+
*/
|
|
25
|
+
export function verify_instance_bounds({ renderer, scene, camera, tolerance }: {
|
|
26
|
+
renderer: Renderer;
|
|
27
|
+
scene: Scene;
|
|
28
|
+
camera?: PerspectiveCamera;
|
|
29
|
+
tolerance?: number;
|
|
30
|
+
}): Promise<object>;
|
|
31
|
+
//# sourceMappingURL=verify_instance_bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_instance_bounds.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/verify_instance_bounds.js"],"names":[],"mappings":"AAoFA;;;;;;;;;;;GAWG;AACH,qCAJW,UAAU,MAAM,CAAC,UACjB,UAAU,MAAM,CAAC,GACf,MAAM,EAAE,CAqBpB;AAuCD;;;;;;;;;;GAUG;AACH;IAP6B,QAAQ;IACX,KAAK;IACQ,MAAM;IAEjB,SAAS,GAA1B,MAAM;IACJ,QAAQ,MAAM,CAAC,CA4E3B"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { GEOMETRY_METADATA_STRUCT } from "../../renderer/geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Does every instance's published world box actually contain its geometry?
|
|
5
|
+
*
|
|
6
|
+
* This is upstream of the tree and cheap to get wrong, and getting it wrong looks exactly like a
|
|
7
|
+
* broken BVH. `chunk_ray_query_nearest` tests the TLAS leaf's world AABB *before* it transforms the
|
|
8
|
+
* ray and enters the BLAS:
|
|
9
|
+
*
|
|
10
|
+
* ```wgsl
|
|
11
|
+
* if(!aabb3_intersects_ray(node.bounds, ...)){ ...; continue; }
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* So a leaf box smaller than the geometry it stands for is a hard clip. Rays that would have hit
|
|
15
|
+
* the parts sticking out never get to ask the BLAS about them, and those parts are simply absent
|
|
16
|
+
* from the traced image while the rasterizer — which consults no such box — draws them. The pieces
|
|
17
|
+
* that go missing are the outlying ones, which is the tell: a compact core survives and the
|
|
18
|
+
* extremities do not.
|
|
19
|
+
*
|
|
20
|
+
* The rasterizer cannot detect this and neither can any amount of checking the tree, because the
|
|
21
|
+
* tree is fine. Only the composition is wrong.
|
|
22
|
+
*
|
|
23
|
+
* The check is exact rather than statistical: eight corners of the geometry's own bounding box,
|
|
24
|
+
* through the node matrix the shader uses, against the box the shader tests. No sampling, no
|
|
25
|
+
* thresholds, no images.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Read a range of a GPU buffer back to the CPU.
|
|
30
|
+
*
|
|
31
|
+
* @param {GPUDevice} device
|
|
32
|
+
* @param {GPUBuffer} buffer must carry `COPY_SRC`
|
|
33
|
+
* @param {number} offset bytes
|
|
34
|
+
* @param {number} size bytes
|
|
35
|
+
* @returns {Promise<ArrayBuffer>}
|
|
36
|
+
*/
|
|
37
|
+
async function read_back(device, buffer, offset, size) {
|
|
38
|
+
const aligned_offset = Math.floor(offset / 4) * 4;
|
|
39
|
+
const slack = offset - aligned_offset;
|
|
40
|
+
const aligned_size = Math.ceil((size + slack) / 4) * 4;
|
|
41
|
+
|
|
42
|
+
const staging = device.createBuffer({
|
|
43
|
+
label: 'verify/bounds readback',
|
|
44
|
+
size: aligned_size,
|
|
45
|
+
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const encoder = device.createCommandEncoder({ label: 'verify/bounds readback' });
|
|
49
|
+
|
|
50
|
+
encoder.copyBufferToBuffer(buffer, aligned_offset, staging, 0, aligned_size);
|
|
51
|
+
|
|
52
|
+
device.queue.submit([encoder.finish()]);
|
|
53
|
+
|
|
54
|
+
await staging.mapAsync(GPUMapMode.READ);
|
|
55
|
+
|
|
56
|
+
const copy = staging.getMappedRange().slice(slack, slack + size);
|
|
57
|
+
|
|
58
|
+
staging.unmap();
|
|
59
|
+
staging.destroy();
|
|
60
|
+
|
|
61
|
+
return copy;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Apply a column-major 4x4 to a point.
|
|
66
|
+
*
|
|
67
|
+
* @param {ArrayLike<number>} m
|
|
68
|
+
* @param {number} x
|
|
69
|
+
* @param {number} y
|
|
70
|
+
* @param {number} z
|
|
71
|
+
* @returns {number[]}
|
|
72
|
+
*/
|
|
73
|
+
function transform_point(m, x, y, z) {
|
|
74
|
+
const w = m[3] * x + m[7] * y + m[11] * z + m[15];
|
|
75
|
+
|
|
76
|
+
const inverse_w = w === 0 ? 1 : 1 / w;
|
|
77
|
+
|
|
78
|
+
return [
|
|
79
|
+
(m[0] * x + m[4] * y + m[8] * z + m[12]) * inverse_w,
|
|
80
|
+
(m[1] * x + m[5] * y + m[9] * z + m[13]) * inverse_w,
|
|
81
|
+
(m[2] * x + m[6] * y + m[10] * z + m[14]) * inverse_w,
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The AABB of a box's eight corners under a transform.
|
|
87
|
+
*
|
|
88
|
+
* Eight corners rather than two: any rotation in the matrix makes a componentwise transform of the
|
|
89
|
+
* min and max meaningless, which is the trap that makes this worth writing down. Michelle's root
|
|
90
|
+
* carries the file's axis conversion, so her boxes are rotated and a two-corner comparison reports
|
|
91
|
+
* violations that are not there and misses ones that are.
|
|
92
|
+
*
|
|
93
|
+
* @param {ArrayLike<number>} box `[min.xyz, max.xyz]`
|
|
94
|
+
* @param {ArrayLike<number>} matrix column-major 4x4
|
|
95
|
+
* @returns {number[]} `[min.xyz, max.xyz]`
|
|
96
|
+
*/
|
|
97
|
+
export function transformed_box(box, matrix) {
|
|
98
|
+
const low = [Infinity, Infinity, Infinity];
|
|
99
|
+
const high = [-Infinity, -Infinity, -Infinity];
|
|
100
|
+
|
|
101
|
+
for (let corner = 0; corner < 8; corner++) {
|
|
102
|
+
const point = transform_point(
|
|
103
|
+
matrix,
|
|
104
|
+
box[(corner & 1) ? 3 : 0],
|
|
105
|
+
box[(corner & 2) ? 4 : 1],
|
|
106
|
+
box[(corner & 4) ? 5 : 2]
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
for (let axis = 0; axis < 3; axis++) {
|
|
110
|
+
low[axis] = Math.min(low[axis], point[axis]);
|
|
111
|
+
high[axis] = Math.max(high[axis], point[axis]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return [...low, ...high];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* How far `inner` pokes out of `outer`, per axis, as a fraction of `inner`'s own size.
|
|
120
|
+
*
|
|
121
|
+
* Relative so the answer means the same thing whatever the asset's units are, and signed per side
|
|
122
|
+
* so the report says which way it escaped.
|
|
123
|
+
*
|
|
124
|
+
* @param {number[]} inner
|
|
125
|
+
* @param {number[]} outer
|
|
126
|
+
* @returns {{worst: number, sides: object[]}}
|
|
127
|
+
*/
|
|
128
|
+
function containment_error(inner, outer) {
|
|
129
|
+
const sides = [];
|
|
130
|
+
|
|
131
|
+
let worst = 0;
|
|
132
|
+
|
|
133
|
+
for (let axis = 0; axis < 3; axis++) {
|
|
134
|
+
const span = Math.max(1e-9, inner[axis + 3] - inner[axis]);
|
|
135
|
+
|
|
136
|
+
const below = (outer[axis] - inner[axis]) / span;
|
|
137
|
+
const above = (inner[axis + 3] - outer[axis + 3]) / span;
|
|
138
|
+
|
|
139
|
+
if (below > 0) {
|
|
140
|
+
sides.push({ axis, side: 'min', escapes_by: +below.toFixed(4) });
|
|
141
|
+
|
|
142
|
+
worst = Math.max(worst, below);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (above > 0) {
|
|
146
|
+
sides.push({ axis, side: 'max', escapes_by: +above.toFixed(4) });
|
|
147
|
+
|
|
148
|
+
worst = Math.max(worst, above);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return { worst, sides };
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Check every mesh in the scene.
|
|
157
|
+
*
|
|
158
|
+
* @param {object} options
|
|
159
|
+
* @param {Renderer} options.renderer
|
|
160
|
+
* @param {Scene} options.scene
|
|
161
|
+
* @param {PerspectiveCamera} [options.camera] rendered a few times first, so the bounds-refresh
|
|
162
|
+
* chain has published something to check
|
|
163
|
+
* @param {number} [options.tolerance] fraction of an instance's own size it may escape by
|
|
164
|
+
* @returns {Promise<object>}
|
|
165
|
+
*/
|
|
166
|
+
export async function verify_instance_bounds({ renderer, scene, camera, tolerance = 1e-3 }) {
|
|
167
|
+
const graphics = renderer.graphics;
|
|
168
|
+
const device = graphics.device;
|
|
169
|
+
|
|
170
|
+
const scene_context = renderer.scenes.obtain(scene);
|
|
171
|
+
|
|
172
|
+
const geometries = graphics.geometries;
|
|
173
|
+
|
|
174
|
+
if (camera !== undefined) {
|
|
175
|
+
for (let i = 0; i < 8; i++) {
|
|
176
|
+
renderer.render(camera, scene, 0);
|
|
177
|
+
|
|
178
|
+
await device.queue.onSubmittedWorkDone();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const stride = GEOMETRY_METADATA_STRUCT.aligned_size;
|
|
183
|
+
|
|
184
|
+
const box_offset = GEOMETRY_METADATA_STRUCT.fields.find(f => f.name === 'bounding_box').offset;
|
|
185
|
+
|
|
186
|
+
const rows = [];
|
|
187
|
+
|
|
188
|
+
for (const mesh of scene.instances.instances) {
|
|
189
|
+
const row = scene_context.mesh_row_of(mesh);
|
|
190
|
+
|
|
191
|
+
if (row === undefined) {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const record = await scene_context.scene_database.debug_table_read_element('meshes', row);
|
|
196
|
+
|
|
197
|
+
const geometry_index = record.geometry;
|
|
198
|
+
|
|
199
|
+
const geometry_box = [...new Float32Array(await read_back(
|
|
200
|
+
device,
|
|
201
|
+
geometries.buffer_metadata,
|
|
202
|
+
geometry_index * stride + box_offset,
|
|
203
|
+
24
|
|
204
|
+
))];
|
|
205
|
+
|
|
206
|
+
// the same matrix `chunk_ray_query_nearest` inverts to put the ray in geometry space
|
|
207
|
+
const world_box = transformed_box(geometry_box, mesh.transform_global.matrix);
|
|
208
|
+
|
|
209
|
+
const error = containment_error(world_box, record.bounding_box);
|
|
210
|
+
|
|
211
|
+
rows.push({
|
|
212
|
+
name: mesh.name ?? mesh.constructor.name,
|
|
213
|
+
skinned: mesh.isSkinnedMesh === true,
|
|
214
|
+
row,
|
|
215
|
+
geometry_index,
|
|
216
|
+
geometry_box: geometry_box.map(v => +v.toFixed(3)),
|
|
217
|
+
geometry_in_world: world_box.map(v => +v.toFixed(3)),
|
|
218
|
+
published: [...record.bounding_box].map(v => +v.toFixed(3)),
|
|
219
|
+
worst_escape: +error.worst.toFixed(4),
|
|
220
|
+
escapes: error.sides,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
const failures = rows.filter(entry => entry.worst_escape > tolerance);
|
|
225
|
+
|
|
226
|
+
const result = {
|
|
227
|
+
rows,
|
|
228
|
+
failures,
|
|
229
|
+
verdict: failures.length === 0
|
|
230
|
+
? `pass — all ${rows.length} instances are contained by the box the TLAS tests them with`
|
|
231
|
+
: `FAIL — ${failures.length} of ${rows.length} instances stick out of their own TLAS box, `
|
|
232
|
+
+ `worst by ${(Math.max(...failures.map(f => f.worst_escape)) * 100).toFixed(1)}% of its `
|
|
233
|
+
+ `size. Rays are being clipped before they reach the BLAS, and the traced image loses `
|
|
234
|
+
+ `whatever sticks out.`,
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
console.log(result.verdict, result);
|
|
238
|
+
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} options
|
|
3
|
+
* @param {Renderer} options.renderer
|
|
4
|
+
* @param {object} [options.owner] the identity the tree is registered under
|
|
5
|
+
* @param {object} [options.target] an explicit refit target, for a tree whose owner handle is not
|
|
6
|
+
* reachable — a skinned clone's metadata row lives inside the skinning context. Every copy of a
|
|
7
|
+
* geometry shares one topology, so a clone's target is the source's with its own `node_word_offset`
|
|
8
|
+
* substituted, and that is composable from the published lookup alone.
|
|
9
|
+
* @param {number} options.geometry_index the row whose vertices the leaves index into
|
|
10
|
+
* @param {number} [options.tolerance] fraction of a leaf's own size a vertex may sit outside by
|
|
11
|
+
* @returns {Promise<object>}
|
|
12
|
+
*/
|
|
13
|
+
export function verify_leaf_triangles({ renderer, owner, target: explicit_target, geometry_index, tolerance, }: {
|
|
14
|
+
renderer: Renderer;
|
|
15
|
+
owner?: object;
|
|
16
|
+
target?: object;
|
|
17
|
+
geometry_index: number;
|
|
18
|
+
tolerance?: number;
|
|
19
|
+
}): Promise<object>;
|
|
20
|
+
//# sourceMappingURL=verify_leaf_triangles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_leaf_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js"],"names":[],"mappings":"AA4DA;;;;;;;;;;;GAWG;AACH;IAV6B,QAAQ;IACT,KAAK,GAAtB,MAAM;IACW,MAAM,GAAvB,MAAM;IAIU,cAAc,EAA9B,MAAM;IACW,SAAS,GAA1B,MAAM;IACJ,QAAQ,MAAM,CAAC,CAmI3B"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
2
|
+
import {
|
|
3
|
+
BVH_NODE_BOUNDS_WORD,
|
|
4
|
+
BVH_NODE_STRIDE_WORDS
|
|
5
|
+
} from "../../renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js";
|
|
6
|
+
import {
|
|
7
|
+
BLAS_LEAF_BOUNDS_SETTINGS_STRUCT
|
|
8
|
+
} from "../../renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js";
|
|
9
|
+
import { BVH2_NODE_STRUCT } from "../../renderer/shader/chunk/bvh/BVH2_NODE_STRUCT.js";
|
|
10
|
+
import { shader_blas_audit_leaf_triangles } from "./shader_blas_audit_leaf_triangles.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Does every leaf's box actually contain the triangle a ray will test inside it?
|
|
14
|
+
*
|
|
15
|
+
* This is the seam nothing else covers. The refit fills a leaf's box using
|
|
16
|
+
* `geometry_read_triangle_bounds`; `ray_query_blas_nearest` fetches the triangle it tests using
|
|
17
|
+
* `geometry_read_triangle_vertices`. Two functions, one encoded payload, and every check so far has
|
|
18
|
+
* only ever exercised the first — the structural tests confirm the tree is a consistent tree, and a
|
|
19
|
+
* tree consistently bounding the *wrong* triangles is consistent.
|
|
20
|
+
*
|
|
21
|
+
* When they disagree the failure is silent and view-dependent: a ray descends into a box, tests a
|
|
22
|
+
* triangle that is elsewhere, misses, and a whole meshlet is absent from the traced image while the
|
|
23
|
+
* rasterizer — which never consults the tree — draws it.
|
|
24
|
+
*
|
|
25
|
+
* So this runs the intersector's reader over every leaf on the live asset and holds its answer
|
|
26
|
+
* against the box the tree carries. Containment, not equality: a leaf's box is allowed to be
|
|
27
|
+
* larger than its triangle, and under deformation it will be, because the refit and this audit can
|
|
28
|
+
* run a frame apart. It is not allowed to be somewhere else.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @param {GPUDevice} device
|
|
33
|
+
* @param {GPUBuffer} buffer
|
|
34
|
+
* @param {number} offset
|
|
35
|
+
* @param {number} size
|
|
36
|
+
* @returns {Promise<ArrayBuffer>}
|
|
37
|
+
*/
|
|
38
|
+
async function read_back(device, buffer, offset, size) {
|
|
39
|
+
const staging = device.createBuffer({
|
|
40
|
+
label: 'audit/readback',
|
|
41
|
+
size,
|
|
42
|
+
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
const encoder = device.createCommandEncoder({ label: 'audit/readback' });
|
|
46
|
+
|
|
47
|
+
encoder.copyBufferToBuffer(buffer, offset, staging, 0, size);
|
|
48
|
+
|
|
49
|
+
device.queue.submit([encoder.finish()]);
|
|
50
|
+
|
|
51
|
+
await staging.mapAsync(GPUMapMode.READ);
|
|
52
|
+
|
|
53
|
+
const copy = staging.getMappedRange().slice(0);
|
|
54
|
+
|
|
55
|
+
staging.unmap();
|
|
56
|
+
staging.destroy();
|
|
57
|
+
|
|
58
|
+
return copy;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @param {object} options
|
|
63
|
+
* @param {Renderer} options.renderer
|
|
64
|
+
* @param {object} [options.owner] the identity the tree is registered under
|
|
65
|
+
* @param {object} [options.target] an explicit refit target, for a tree whose owner handle is not
|
|
66
|
+
* reachable — a skinned clone's metadata row lives inside the skinning context. Every copy of a
|
|
67
|
+
* geometry shares one topology, so a clone's target is the source's with its own `node_word_offset`
|
|
68
|
+
* substituted, and that is composable from the published lookup alone.
|
|
69
|
+
* @param {number} options.geometry_index the row whose vertices the leaves index into
|
|
70
|
+
* @param {number} [options.tolerance] fraction of a leaf's own size a vertex may sit outside by
|
|
71
|
+
* @returns {Promise<object>}
|
|
72
|
+
*/
|
|
73
|
+
export async function verify_leaf_triangles({
|
|
74
|
+
renderer,
|
|
75
|
+
owner,
|
|
76
|
+
target: explicit_target,
|
|
77
|
+
geometry_index,
|
|
78
|
+
tolerance = 1e-3,
|
|
79
|
+
}) {
|
|
80
|
+
const graphics = renderer.graphics;
|
|
81
|
+
const device = graphics.device;
|
|
82
|
+
|
|
83
|
+
const geometries = graphics.geometries;
|
|
84
|
+
const blas = geometries.blas;
|
|
85
|
+
const meshlets = geometries.meshlets;
|
|
86
|
+
|
|
87
|
+
const target = explicit_target ?? blas.get_refit_target(owner);
|
|
88
|
+
|
|
89
|
+
if (target === undefined) {
|
|
90
|
+
throw new Error('that owner has no resident tree');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const { leaf_count, node_word_offset, leaf_nodes_offset } = target;
|
|
94
|
+
|
|
95
|
+
const out_bytes = leaf_count * 6 * Float32Array.BYTES_PER_ELEMENT;
|
|
96
|
+
|
|
97
|
+
const out_bounds = device.createBuffer({
|
|
98
|
+
label: 'audit/leaf triangles',
|
|
99
|
+
size: out_bytes,
|
|
100
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const cmd = ShadeGPUCommandContext.create(graphics, 'audit/leaf triangles');
|
|
104
|
+
|
|
105
|
+
shader_blas_audit_leaf_triangles.dispatchLinear({
|
|
106
|
+
encoder: cmd,
|
|
107
|
+
element_count: leaf_count,
|
|
108
|
+
bindings: {
|
|
109
|
+
settings: cmd.allocateTransientValueBuffer(BLAS_LEAF_BOUNDS_SETTINGS_STRUCT, {
|
|
110
|
+
leaf_count,
|
|
111
|
+
node_word_offset,
|
|
112
|
+
leaf_nodes_offset,
|
|
113
|
+
geometry_index,
|
|
114
|
+
}),
|
|
115
|
+
leaf_nodes: blas.buffer_leaf_nodes,
|
|
116
|
+
geometries: geometries.buffer_metadata,
|
|
117
|
+
meshlet_metadata: meshlets.buffer_metadata,
|
|
118
|
+
meshlet_data: meshlets.buffer_data,
|
|
119
|
+
nodes: blas.buffer_data,
|
|
120
|
+
out_bounds,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
cmd.finish();
|
|
125
|
+
|
|
126
|
+
await device.queue.onSubmittedWorkDone();
|
|
127
|
+
|
|
128
|
+
const intersector = new Float32Array(await read_back(device, out_bounds, 0, out_bytes));
|
|
129
|
+
|
|
130
|
+
const leaves = new Uint32Array(await read_back(
|
|
131
|
+
device,
|
|
132
|
+
blas.buffer_leaf_nodes,
|
|
133
|
+
leaf_nodes_offset * Uint32Array.BYTES_PER_ELEMENT,
|
|
134
|
+
leaf_count * Uint32Array.BYTES_PER_ELEMENT
|
|
135
|
+
));
|
|
136
|
+
|
|
137
|
+
const node_bytes = Math.max(...leaves) * BVH2_NODE_STRUCT.size + BVH2_NODE_STRUCT.size;
|
|
138
|
+
|
|
139
|
+
const nodes = new Float32Array(await read_back(
|
|
140
|
+
device,
|
|
141
|
+
blas.buffer_data,
|
|
142
|
+
node_word_offset * Uint32Array.BYTES_PER_ELEMENT,
|
|
143
|
+
node_bytes
|
|
144
|
+
));
|
|
145
|
+
|
|
146
|
+
out_bounds.destroy();
|
|
147
|
+
|
|
148
|
+
let escaped = 0;
|
|
149
|
+
let worst = 0;
|
|
150
|
+
|
|
151
|
+
const examples = [];
|
|
152
|
+
|
|
153
|
+
for (let i = 0; i < leaf_count; i++) {
|
|
154
|
+
const base = leaves[i] * BVH_NODE_STRIDE_WORDS + BVH_NODE_BOUNDS_WORD;
|
|
155
|
+
|
|
156
|
+
const source = i * 6;
|
|
157
|
+
|
|
158
|
+
let error = 0;
|
|
159
|
+
|
|
160
|
+
for (let axis = 0; axis < 3; axis++) {
|
|
161
|
+
const span = Math.max(1e-9, nodes[base + axis + 3] - nodes[base + axis]);
|
|
162
|
+
|
|
163
|
+
error = Math.max(
|
|
164
|
+
error,
|
|
165
|
+
(nodes[base + axis] - intersector[source + axis]) / span,
|
|
166
|
+
(intersector[source + axis + 3] - nodes[base + axis + 3]) / span
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (error > tolerance) {
|
|
171
|
+
escaped += 1;
|
|
172
|
+
|
|
173
|
+
if (examples.length < 5) {
|
|
174
|
+
examples.push({
|
|
175
|
+
leaf: i,
|
|
176
|
+
node: leaves[i],
|
|
177
|
+
tree_box: [0, 1, 2, 3, 4, 5].map(k => +nodes[base + k].toFixed(3)),
|
|
178
|
+
intersector_box: [0, 1, 2, 3, 4, 5].map(k => +intersector[source + k].toFixed(3)),
|
|
179
|
+
escapes_by: +error.toFixed(4),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
worst = Math.max(worst, error);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const result = {
|
|
188
|
+
leaf_count,
|
|
189
|
+
escaped,
|
|
190
|
+
worst: +worst.toFixed(5),
|
|
191
|
+
examples,
|
|
192
|
+
verdict: escaped === 0
|
|
193
|
+
? `pass — all ${leaf_count} leaves bound the triangle the intersector fetches for them`
|
|
194
|
+
: `FAIL — ${escaped} of ${leaf_count} leaves bound a different triangle than the `
|
|
195
|
+
+ `intersector tests, worst by ${(worst * 100).toFixed(1)}% of the leaf's own size. `
|
|
196
|
+
+ `Rays descend into those boxes, test a triangle that is elsewhere, and miss.`,
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
console.log(result.verdict, result);
|
|
200
|
+
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run the check.
|
|
3
|
+
*
|
|
4
|
+
* Two samples, taken far enough apart in the dance that the pose is meaningfully different. Each
|
|
5
|
+
* sample holds the two boxes against each other; the pair holds the tree against *itself* over
|
|
6
|
+
* time, which is what catches a refit that runs but reads the source's rest-pose vertices — the
|
|
7
|
+
* boxes would agree at every sample and never move.
|
|
8
|
+
*
|
|
9
|
+
* @param {object} options
|
|
10
|
+
* @param {Renderer} options.renderer
|
|
11
|
+
* @param {PerspectiveCamera} options.camera
|
|
12
|
+
* @param {Scene} options.scene
|
|
13
|
+
* @param {SkinnedMesh} options.mesh a mesh whose clone is being deformed
|
|
14
|
+
* @param {number} [options.tolerance] relative box disagreement to accept
|
|
15
|
+
* @returns {Promise<object>} the samples and the verdict
|
|
16
|
+
*/
|
|
17
|
+
export function verify_skinned_blas_refit({ renderer, camera, scene, mesh, tolerance, }: {
|
|
18
|
+
renderer: Renderer;
|
|
19
|
+
camera: PerspectiveCamera;
|
|
20
|
+
scene: Scene;
|
|
21
|
+
mesh: SkinnedMesh;
|
|
22
|
+
tolerance?: number;
|
|
23
|
+
}): Promise<object>;
|
|
24
|
+
/**
|
|
25
|
+
* Does each leaf's box belong to the triangle that leaf names?
|
|
26
|
+
*
|
|
27
|
+
* The check above cannot see this, and it is worth being explicit about why. Its two properties —
|
|
28
|
+
* root box equals the metadata box, every internal node equals its children's union — are both
|
|
29
|
+
* invariant under *any* permutation of triangles among leaves. Deal the same set of triangle boxes
|
|
30
|
+
* out to the wrong leaves and the union of all of them is unchanged, so the root still matches, and
|
|
31
|
+
* the climb still computes each node from whatever its children hold. A tree that fits every
|
|
32
|
+
* triangle to the wrong leaf passes both and traces garbage: a ray descends into a box, tests the
|
|
33
|
+
* triangle the leaf names, and that triangle is somewhere else entirely.
|
|
34
|
+
*
|
|
35
|
+
* The way to see it is to refit a geometry that is **not** deforming, and hold the result against
|
|
36
|
+
* the tree it was copied from. The CPU builder put each leaf's box there with the correspondence
|
|
37
|
+
* that is correct by construction; the refit recomputes those boxes from the vertex buffer. Nothing
|
|
38
|
+
* moved in between, so the two have to be the same bytes — and a permutation is exactly what stops
|
|
39
|
+
* them being.
|
|
40
|
+
*
|
|
41
|
+
* @param {object} options
|
|
42
|
+
* @param {Renderer} options.renderer
|
|
43
|
+
* @param {MeshletGeometry} options.geometry a geometry nothing deforms
|
|
44
|
+
* @returns {Promise<object>}
|
|
45
|
+
*/
|
|
46
|
+
export function verify_leaf_correspondence({ renderer, geometry }: {
|
|
47
|
+
renderer: Renderer;
|
|
48
|
+
geometry: MeshletGeometry;
|
|
49
|
+
}): Promise<object>;
|
|
50
|
+
//# sourceMappingURL=verify_skinned_blas_refit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_skinned_blas_refit.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js"],"names":[],"mappings":"AA2JA;;;;;;;;;;;;;;;GAeG;AACH;IAP6B,QAAQ;IACC,MAAM;IAClB,KAAK;IACC,IAAI;IACR,SAAS,GAA1B,MAAM;IACJ,QAAQ,MAAM,CAAC,CAkF3B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAJ6B,QAAQ;IACD,QAAQ;IAC/B,QAAQ,MAAM,CAAC,CA4F3B"}
|