@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
|
@@ -1,765 +0,0 @@
|
|
|
1
|
-
import Quaternion from "../../core/geom/Quaternion.js";
|
|
2
|
-
import Vector3 from "../../core/geom/Vector3.js";
|
|
3
|
-
import { randomFloatBetween } from "../../core/math/random/randomFloatBetween.js";
|
|
4
|
-
import { randomFromArray } from "../../core/math/random/randomFromArray.js";
|
|
5
|
-
import { roundFair } from "../../core/math/random/roundFair.js";
|
|
6
|
-
import { seededRandom } from "../../core/math/random/seededRandom.js";
|
|
7
|
-
import { AnimationCurve } from "../../engine/animation/curve/AnimationCurve.js";
|
|
8
|
-
import { Keyframe } from "../../engine/animation/curve/Keyframe.js";
|
|
9
|
-
import { Transform } from "../../engine/ecs/transform/Transform.js";
|
|
10
|
-
import { FrameGraph } from "../../engine/graphics/render/frame_graph/FrameGraph.js";
|
|
11
|
-
import { ShadeGPUCommandContext } from "../device/ShadeGPUCommandContext.js";
|
|
12
|
-
import { shader_animation_apply, WORKGROUP_SIZE as ANIMATION_APPLY_WORKGROUP_SIZE } from "../renderer/animation/shader_animation_apply.js";
|
|
13
|
-
import {
|
|
14
|
-
shader_animation_pose_resolve,
|
|
15
|
-
WORKGROUP_SIZE as ANIMATION_POSE_RESOLVE_WORKGROUP_SIZE,
|
|
16
|
-
} from "../renderer/animation/shader_animation_pose_resolve.js";
|
|
17
|
-
import { BoxGeometry, PlaneGeometry } from "../renderer/geometry/BoxGeometry.js";
|
|
18
|
-
import { RasterizationCollectionType } from "../renderer/rasterize/expand/RasterizationCollectionType.js";
|
|
19
|
-
import { make_sunlight } from "../renderer/light/make_sunlight.js";
|
|
20
|
-
import { load_default_environment } from "./load_default_environment.js";
|
|
21
|
-
import { StandardShadeMaterial } from "../renderer/material/StandardShadeMaterial.js";
|
|
22
|
-
import { Mesh } from "../renderer/scene/Mesh.js";
|
|
23
|
-
import { Node3D } from "../renderer/scene/Node3D.js";
|
|
24
|
-
import { Node3DProperty } from "../renderer/object_property/Node3DProperty.js";
|
|
25
|
-
import {
|
|
26
|
-
REFRESH_ALL_MESH_BOUNDS_SETTINGS_STRUCT,
|
|
27
|
-
shader_refresh_all_mesh_bounds
|
|
28
|
-
} from "../renderer/object_property/shader_refresh_all_mesh_bounds.js";
|
|
29
|
-
import { graph_scene_update_transform_hierarchy } from "../renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js";
|
|
30
|
-
import { graph_import_buffer } from "../renderer/shader/graph/graph_import_buffer.js";
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Number of trees per side of the grid; total tree count is the square
|
|
34
|
-
* of this. Adjust to scale the load — each tree adds dozens to thousands
|
|
35
|
-
* of joints depending on how the branching dice land.
|
|
36
|
-
*/
|
|
37
|
-
const TREE_GRID_RESOLUTION = 3;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Centre-to-centre spacing between trees in metres. Kept short so a
|
|
41
|
-
* single camera pose covers the full grid; small enough that limbs at
|
|
42
|
-
* full sway don't punch into the next tree's roots.
|
|
43
|
-
*/
|
|
44
|
-
const TREE_SPACING = 3.0;
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Limb dimensions. The box is centred on its origin in the geometry,
|
|
48
|
-
* but each Mesh is offset by `BOX_HEIGHT/2` along its joint's local +Y
|
|
49
|
-
* so the joint sits at the *base* of the limb. Children attach at the
|
|
50
|
-
* limb's tip (offset `BOX_HEIGHT` from the joint origin).
|
|
51
|
-
*/
|
|
52
|
-
const BOX_HEIGHT = 0.3;
|
|
53
|
-
const BOX_THICKNESS = 0.08;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Hard depth cap for any branch — guards against pathologically long
|
|
57
|
-
* tails when the branching distribution stays at ≥ 1 by chance. The
|
|
58
|
-
* deepest a leaf transform's parent walk can go is `MAX_DEPTH + 1`
|
|
59
|
-
* (the wrapping joint plus the visual mesh), comfortably under the
|
|
60
|
-
* hierarchy shader's MAX_PARENT_WALK = 64.
|
|
61
|
-
*/
|
|
62
|
-
const MAX_DEPTH = 32;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Number of pre-built rotation tracks shared across every joint. Each
|
|
66
|
-
* limb picks one at random via `randomFromArray`, so the visual
|
|
67
|
-
* variety is bounded by this pool size — more tracks → more distinct
|
|
68
|
-
* rotation targets visible at once. Per-frame cost is independent of
|
|
69
|
-
* the pool: tracks are GPU-side animation data, evaluated by the
|
|
70
|
-
* apply shader, not iterated on the CPU.
|
|
71
|
-
*/
|
|
72
|
-
const TRACK_POOL_SIZE = 1024;
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Common loop period for every track in the pool — the curve
|
|
76
|
-
* evaluator clamps `time` to `[time_min, time_max]`, so a single
|
|
77
|
-
* clip-time can only meaningfully drive tracks that share its range.
|
|
78
|
-
* Per-tree clips get a random phase offset within this period for
|
|
79
|
-
* cross-tree variety.
|
|
80
|
-
*/
|
|
81
|
-
const LOOP_PERIOD_S = 7;
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* How far each joint slerps from identity at the apex of its cycle. A
|
|
85
|
-
* full random quaternion is on average a ~90° rotation; this scales
|
|
86
|
-
* that down so a deep chain doesn't sweep through wild angles when
|
|
87
|
-
* everything aligns.
|
|
88
|
-
*/
|
|
89
|
-
const ROTATION_SLERP_FACTOR = 0.04;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Seed for the scene generator so the topology and the per-joint
|
|
93
|
-
* animation choices are reproducible.
|
|
94
|
-
*/
|
|
95
|
-
const RANDOM_SEED = 1234;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Shape of the per-joint branching distribution.
|
|
99
|
-
*
|
|
100
|
-
* Branch count is rolled as `roundFair(randomFloatBetween(lo, hi))`,
|
|
101
|
-
* with `lo` and `hi` shrinking as we go deeper. The floor decays
|
|
102
|
-
* slowly while the range (hi − lo) decays much faster, so deeper
|
|
103
|
-
* levels collapse to a near-deterministic ~0.85 — almost always one
|
|
104
|
-
* child, occasionally none, never branching. That keeps the tree
|
|
105
|
-
* extending without exploding: depth ~32 is reachable by chance, but
|
|
106
|
-
* the total node count stays tractable.
|
|
107
|
-
*
|
|
108
|
-
* @param {number} depth
|
|
109
|
-
* @returns {{lo: number, hi: number}}
|
|
110
|
-
*/
|
|
111
|
-
function branching_range_at_depth(depth) {
|
|
112
|
-
const FLOOR_INITIAL = 1.0;
|
|
113
|
-
const FLOOR_SHRINK_PER_LEVEL = 0.99;
|
|
114
|
-
|
|
115
|
-
const RANGE_INITIAL = 2.0;
|
|
116
|
-
const RANGE_SHRINK_PER_LEVEL = 0.9;
|
|
117
|
-
|
|
118
|
-
const lo = FLOOR_INITIAL * Math.pow(FLOOR_SHRINK_PER_LEVEL, depth);
|
|
119
|
-
const range = RANGE_INITIAL * Math.pow(RANGE_SHRINK_PER_LEVEL, depth);
|
|
120
|
-
|
|
121
|
-
return { lo, hi: lo + range };
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Build a quaternion-rotation animation track that oscillates between
|
|
126
|
-
* identity and `target` and back over `period_s` seconds.
|
|
127
|
-
*
|
|
128
|
-
* The four channels (x, y, z, w) animate independently as scalar
|
|
129
|
-
* Hermite curves; the apply shader normalizes the result so any drift
|
|
130
|
-
* off the unit 4-sphere from per-channel interpolation is corrected.
|
|
131
|
-
* Three keyframes per channel are enough for a small offset — the
|
|
132
|
-
* exact path between identity and a small `target` is nearly linear,
|
|
133
|
-
* so smoothed cubic interpolation is well within visual tolerance.
|
|
134
|
-
*
|
|
135
|
-
* @param {GPUAnimationManager} manager
|
|
136
|
-
* @param {Quaternion} source
|
|
137
|
-
* @param {Quaternion} target
|
|
138
|
-
* @param {number} period_s
|
|
139
|
-
* @returns {number} track id
|
|
140
|
-
*/
|
|
141
|
-
function add_oscillating_rotation_track(manager, source, target, period_s) {
|
|
142
|
-
const x_keys = [
|
|
143
|
-
Keyframe.from(0, source.x),
|
|
144
|
-
Keyframe.from(period_s / 2, target.x),
|
|
145
|
-
Keyframe.from(period_s, source.x),
|
|
146
|
-
];
|
|
147
|
-
const y_keys = [
|
|
148
|
-
Keyframe.from(0, source.y),
|
|
149
|
-
Keyframe.from(period_s / 2, target.y),
|
|
150
|
-
Keyframe.from(period_s, source.y),
|
|
151
|
-
];
|
|
152
|
-
const z_keys = [
|
|
153
|
-
Keyframe.from(0, source.z),
|
|
154
|
-
Keyframe.from(period_s / 2, target.z),
|
|
155
|
-
Keyframe.from(period_s, source.z),
|
|
156
|
-
];
|
|
157
|
-
const w_keys = [
|
|
158
|
-
Keyframe.from(0, source.w),
|
|
159
|
-
Keyframe.from(period_s / 2, target.w),
|
|
160
|
-
Keyframe.from(period_s, source.w),
|
|
161
|
-
];
|
|
162
|
-
|
|
163
|
-
const x_curve = AnimationCurve.from(x_keys);
|
|
164
|
-
x_curve.alignAllTangents();
|
|
165
|
-
const y_curve = AnimationCurve.from(y_keys);
|
|
166
|
-
y_curve.alignAllTangents();
|
|
167
|
-
const z_curve = AnimationCurve.from(z_keys);
|
|
168
|
-
z_curve.alignAllTangents();
|
|
169
|
-
const w_curve = AnimationCurve.from(w_keys);
|
|
170
|
-
w_curve.alignAllTangents();
|
|
171
|
-
|
|
172
|
-
return manager.add_track({
|
|
173
|
-
x: manager.add_curve(x_curve),
|
|
174
|
-
y: manager.add_curve(y_curve),
|
|
175
|
-
z: manager.add_curve(z_curve),
|
|
176
|
-
w: manager.add_curve(w_curve),
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Recursively build a single tree of jointed limbs into `parent`.
|
|
182
|
-
*
|
|
183
|
-
* Each level adds:
|
|
184
|
-
* - a non-mesh `Node3D` (the joint) that owns the rotation animation,
|
|
185
|
-
* positioned at the tip of the parent's limb so its rotation pivots
|
|
186
|
-
* around that point;
|
|
187
|
-
* - a child `Mesh` (the visible limb) offset along the joint's local
|
|
188
|
-
* +Y so the limb extends outward from the pivot;
|
|
189
|
-
* - 0..N child joints, recursively, attached at the limb's tip.
|
|
190
|
-
*
|
|
191
|
-
* Joints are pushed into `joints_out` (a flat list) so the deferred
|
|
192
|
-
* animation-binding pass can iterate them once GPU node ids are
|
|
193
|
-
* known.
|
|
194
|
-
*
|
|
195
|
-
* @param {Node3D} parent_joint Parent in the hierarchy. The first
|
|
196
|
-
* call passes the tree root; recursive calls pass the joint
|
|
197
|
-
* spawned at the previous level.
|
|
198
|
-
* @param {number} depth
|
|
199
|
-
* @param {function():number} random
|
|
200
|
-
* @param {BoxGeometry} limb_geometry
|
|
201
|
-
* @param {StandardShadeMaterial} limb_material
|
|
202
|
-
* @param {Node3D[]} joints_out Accumulator the caller scans after the
|
|
203
|
-
* tree is fully attached to the scene.
|
|
204
|
-
*/
|
|
205
|
-
function grow_branch(parent_joint, depth, random, limb_geometry, limb_material, joints_out) {
|
|
206
|
-
// Visual limb: offset along the joint's local +Y so the limb
|
|
207
|
-
// extends from the joint origin upward. Rotating the joint pivots
|
|
208
|
-
// both the limb and any child joints around this origin — exactly
|
|
209
|
-
// the "elbow at the base of the bone" feel we want.
|
|
210
|
-
const limb = new Mesh();
|
|
211
|
-
limb.geometry = limb_geometry;
|
|
212
|
-
limb.material = limb_material;
|
|
213
|
-
limb.transform_local.setTranslation(0, BOX_HEIGHT / 2, 0);
|
|
214
|
-
parent_joint.addChild(limb);
|
|
215
|
-
|
|
216
|
-
joints_out.push(parent_joint);
|
|
217
|
-
|
|
218
|
-
if (depth >= MAX_DEPTH) return;
|
|
219
|
-
|
|
220
|
-
const { lo, hi } = branching_range_at_depth(depth);
|
|
221
|
-
const branch_count = roundFair(randomFloatBetween(random, lo, hi), random);
|
|
222
|
-
|
|
223
|
-
for (let i = 0; i < branch_count; i++) {
|
|
224
|
-
const child_joint = new Node3D();
|
|
225
|
-
// Hung off the tip of the parent limb so children visually
|
|
226
|
-
// attach at the far end. Same axis as the limb's extension —
|
|
227
|
-
// the joint's rotation pivot is the limb tip.
|
|
228
|
-
child_joint.transform_local.setTranslation(0, BOX_HEIGHT, 0);
|
|
229
|
-
parent_joint.addChild(child_joint);
|
|
230
|
-
|
|
231
|
-
grow_branch(child_joint, depth + 1, random, limb_geometry, limb_material, joints_out);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Stress test for the GPU animation system and the transform-hierarchy
|
|
237
|
-
* resolve pass.
|
|
238
|
-
*
|
|
239
|
-
* Generates a `TREE_GRID_RESOLUTION × TREE_GRID_RESOLUTION` grid of
|
|
240
|
-
* jointed branches in the XZ plane. The animation database is structured as:
|
|
241
|
-
* - a shared pool of `TRACK_POOL_SIZE` rotation tracks, each with a
|
|
242
|
-
* distinct small random target rotation slerped `ROTATION_SLERP_FACTOR`
|
|
243
|
-
* of the way toward a uniformly-random orientation;
|
|
244
|
-
* - one clip per tree, with one binding per joint pointing at a
|
|
245
|
-
* randomly-picked track from the pool;
|
|
246
|
-
* - per-tree random phase offsets so neighbouring trees animate out
|
|
247
|
-
* of sync without needing per-track time-scaling.
|
|
248
|
-
*
|
|
249
|
-
* Per-frame the engine advances one clip per tree and dispatches
|
|
250
|
-
* the apply shader over every (clip, binding) pair (~total joint
|
|
251
|
-
* count). The transform-hierarchy pass sees long parent chains (up to
|
|
252
|
-
* depth `MAX_DEPTH`) with deep-tree fan-out near the roots, exercising
|
|
253
|
-
* both the lookback fast-path and the local-walk fallback in
|
|
254
|
-
* `shader_nodes_update_transform_hierarchy`.
|
|
255
|
-
*
|
|
256
|
-
* Topology, track targets, and per-joint track picks are all seeded by
|
|
257
|
-
* `RANDOM_SEED` so reruns produce identical scenes.
|
|
258
|
-
*
|
|
259
|
-
* @param {object} args
|
|
260
|
-
* @param {Renderer} args.renderer
|
|
261
|
-
* @param {Scene} args.scene
|
|
262
|
-
* @param {OrbitalCameraController} args.controller
|
|
263
|
-
*/
|
|
264
|
-
export function animation_prototype_stress({ renderer, scene, controller }) {
|
|
265
|
-
|
|
266
|
-
const random = seededRandom(RANDOM_SEED);
|
|
267
|
-
|
|
268
|
-
// ── Lighting & environment ──────────────────────────────────
|
|
269
|
-
scene.lights.add(make_sunlight({
|
|
270
|
-
intensity: 3,
|
|
271
|
-
direction: new Vector3(-0.4, -1, -0.3),
|
|
272
|
-
}));
|
|
273
|
-
|
|
274
|
-
load_default_environment(scene);
|
|
275
|
-
|
|
276
|
-
// ── Ground plane ────────────────────────────────────────────
|
|
277
|
-
// Sized to fit the grid plus margin on every side.
|
|
278
|
-
const ground_extent = TREE_GRID_RESOLUTION * TREE_SPACING + 10;
|
|
279
|
-
const plane_material = new StandardShadeMaterial();
|
|
280
|
-
plane_material.diffuse_color.parse("#b5b5b5");
|
|
281
|
-
plane_material.roughness_factor = 1;
|
|
282
|
-
plane_material.metallic_factor = 0;
|
|
283
|
-
|
|
284
|
-
const plane_transform = Transform.fromJSON({ position: { x: 0, y: 0, z: 0 } });
|
|
285
|
-
plane_transform.lookAt(Vector3.up);
|
|
286
|
-
|
|
287
|
-
const ground = Mesh.from(
|
|
288
|
-
new PlaneGeometry(ground_extent, ground_extent, 1, 1),
|
|
289
|
-
plane_material,
|
|
290
|
-
plane_transform.matrix,
|
|
291
|
-
);
|
|
292
|
-
ground.name = "Ground";
|
|
293
|
-
scene.add(ground);
|
|
294
|
-
|
|
295
|
-
// ── Trees ──────────────────────────────────────────────────
|
|
296
|
-
// One geometry + material shared across every limb. The mesh
|
|
297
|
-
// count still scales with joints (rasterization, culling,
|
|
298
|
-
// bounds-refresh all run per mesh), but vertex-buffer / material
|
|
299
|
-
// memory is constant.
|
|
300
|
-
const limb_geometry = new BoxGeometry(BOX_THICKNESS, BOX_HEIGHT, BOX_THICKNESS);
|
|
301
|
-
const limb_material = new StandardShadeMaterial();
|
|
302
|
-
limb_material.diffuse_color.parse("#7E5A3C");
|
|
303
|
-
limb_material.roughness_factor = 0.7;
|
|
304
|
-
limb_material.metallic_factor = 0;
|
|
305
|
-
|
|
306
|
-
// ── Animation manager + track pool ─────────────────────────
|
|
307
|
-
// Pool of TRACK_POOL_SIZE pre-built rotation tracks, each with a
|
|
308
|
-
// distinct small random target rotation. Tracks are created once
|
|
309
|
-
// upfront; every limb picks one at random via `randomFromArray`,
|
|
310
|
-
// so the apply shader sees a steady-state animation database
|
|
311
|
-
// regardless of how many trees end up referencing each track.
|
|
312
|
-
// Animation manager is owned by the scene context — fetch it via
|
|
313
|
-
// the scene context, don't construct a separate one. See the
|
|
314
|
-
// matching note in animation_prototype.js.
|
|
315
|
-
const animation_manager = renderer.scenes.obtain(scene).animation_manager;
|
|
316
|
-
|
|
317
|
-
/** @type {number[]} */
|
|
318
|
-
const track_pool = [];
|
|
319
|
-
{
|
|
320
|
-
const scratch_target = new Quaternion();
|
|
321
|
-
const scratch_source = new Quaternion();
|
|
322
|
-
for (let i = 0; i < TRACK_POOL_SIZE; i++) {
|
|
323
|
-
scratch_target.random(random);
|
|
324
|
-
scratch_target.slerpQuaternions(Quaternion.identity, scratch_target, ROTATION_SLERP_FACTOR);
|
|
325
|
-
scratch_source.normalize();
|
|
326
|
-
|
|
327
|
-
scratch_source.random(random);
|
|
328
|
-
scratch_source.slerpQuaternions(Quaternion.identity, scratch_source, ROTATION_SLERP_FACTOR);
|
|
329
|
-
scratch_source.normalize();
|
|
330
|
-
|
|
331
|
-
const track_id = add_oscillating_rotation_track(
|
|
332
|
-
animation_manager, scratch_source, scratch_target, LOOP_PERIOD_S
|
|
333
|
-
);
|
|
334
|
-
track_pool.push(track_id);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
let total_joint_count = 0;
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Per-tree state captured at scene-build time. The joints array
|
|
342
|
-
* and the corresponding track-pick array are populated together
|
|
343
|
-
* during topology generation (track picks happen here so the
|
|
344
|
-
* scene's reproducible-from-seed property covers track selection
|
|
345
|
-
* too); the deferred animation-binding pass turns each row into a
|
|
346
|
-
* single clip whose bindings reference the picked tracks.
|
|
347
|
-
*
|
|
348
|
-
* @type {{
|
|
349
|
-
* joints: Node3D[],
|
|
350
|
-
* track_ids: number[],
|
|
351
|
-
* phase_offset_s: number,
|
|
352
|
-
* }[]}
|
|
353
|
-
*/
|
|
354
|
-
const trees = [];
|
|
355
|
-
|
|
356
|
-
// Grid centred on the origin in the XZ plane. With
|
|
357
|
-
// TREE_GRID_RESOLUTION = 10 and TREE_SPACING = 1 each side spans
|
|
358
|
-
// [-4.5, 4.5]. Iterated as a flat index so the rest of the loop
|
|
359
|
-
// body needs no extra indentation.
|
|
360
|
-
const total_tree_count = TREE_GRID_RESOLUTION * TREE_GRID_RESOLUTION;
|
|
361
|
-
const grid_start = -((TREE_GRID_RESOLUTION - 1) * TREE_SPACING) / 2;
|
|
362
|
-
|
|
363
|
-
for (let i = 0; i < total_tree_count; i++) {
|
|
364
|
-
const gx = i % TREE_GRID_RESOLUTION;
|
|
365
|
-
const gz = Math.floor(i / TREE_GRID_RESOLUTION);
|
|
366
|
-
|
|
367
|
-
const tree_root = new Node3D();
|
|
368
|
-
tree_root.name = `tree_${gx}_${gz}_root`;
|
|
369
|
-
tree_root.transform_local.setTranslation(
|
|
370
|
-
grid_start + gx * TREE_SPACING,
|
|
371
|
-
0,
|
|
372
|
-
grid_start + gz * TREE_SPACING,
|
|
373
|
-
);
|
|
374
|
-
|
|
375
|
-
const tree_joints = [];
|
|
376
|
-
grow_branch(tree_root, 0, random, limb_geometry, limb_material, tree_joints);
|
|
377
|
-
|
|
378
|
-
// updateMatrices populates each node's transform_global from
|
|
379
|
-
// local + parent.global on the CPU side, so the first
|
|
380
|
-
// GPUSceneContext.build has correct globals to upload before
|
|
381
|
-
// the GPU hierarchy pass takes over.
|
|
382
|
-
tree_root.updateMatrices();
|
|
383
|
-
|
|
384
|
-
scene.add(tree_root);
|
|
385
|
-
|
|
386
|
-
// Pick a track per joint now, while RNG state is fresh.
|
|
387
|
-
// Doing it in two passes (build topology → pick tracks)
|
|
388
|
-
// would also work, but coupling them keeps the seed → output
|
|
389
|
-
// mapping straightforward to reason about.
|
|
390
|
-
const tree_track_ids = new Array(tree_joints.length);
|
|
391
|
-
for (let j = 0; j < tree_joints.length; j++) {
|
|
392
|
-
tree_track_ids[j] = randomFromArray(random, track_pool);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
trees.push({
|
|
396
|
-
joints: tree_joints,
|
|
397
|
-
track_ids: tree_track_ids,
|
|
398
|
-
phase_offset_s: randomFloatBetween(random, 0, LOOP_PERIOD_S),
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
total_joint_count += tree_joints.length;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
// Prime two rasterization collection limits — Meshes / Meshlets —
|
|
405
|
-
// through `limits.prime()` (sets both stats AND the runaway-clamp
|
|
406
|
-
// baseline so the renderer's first `update()` doesn't observe
|
|
407
|
-
// these as growth and reset siblings).
|
|
408
|
-
//
|
|
409
|
-
// Meshes / Meshlets: a 3×3 tree grid with depth-32 branching
|
|
410
|
-
// produces ~40k limb meshes, well past the GPUCollectionLimits
|
|
411
|
-
// defaults of 1e4 / 2e5. Without the prime, the cull-pass output
|
|
412
|
-
// overflows `arrayLength(output.elements)` and the truncated tail
|
|
413
|
-
// drops most trees from the visible set — ground at row 0
|
|
414
|
-
// survives because page-iteration order puts it first in the
|
|
415
|
-
// output stream. Each box has ~6 meshlets (one per face); pad to
|
|
416
|
-
// 10 to absorb larger primitives or any future encoder change
|
|
417
|
-
// that bumps the per-mesh meshlet count.
|
|
418
|
-
{
|
|
419
|
-
const limits = renderer.graphics.collection_limits;
|
|
420
|
-
|
|
421
|
-
// mesh count = ground (1) + every limb across every tree.
|
|
422
|
-
// `scene.instances.instances` is the cached mesh-only filter
|
|
423
|
-
// of the scene's InstanceBatch — same accessor scene.build
|
|
424
|
-
// iterates.
|
|
425
|
-
const total_mesh_count = scene.instances.instances.length;
|
|
426
|
-
const meshes_target = Math.ceil(total_mesh_count * 1.5);
|
|
427
|
-
if (meshes_target > limits.get_limit(RasterizationCollectionType.Meshes)) {
|
|
428
|
-
limits.prime(RasterizationCollectionType.Meshes, meshes_target);
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
const meshlets_target = total_mesh_count * 10;
|
|
432
|
-
if (meshlets_target > limits.get_limit(RasterizationCollectionType.Meshlets)) {
|
|
433
|
-
limits.prime(RasterizationCollectionType.Meshlets, meshlets_target);
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
console.log(
|
|
437
|
-
`[stress] total_joint_count=${total_joint_count}, ` +
|
|
438
|
-
`total_mesh_count=${total_mesh_count}; ` +
|
|
439
|
-
`Meshes=${limits.get_limit(RasterizationCollectionType.Meshes)}, ` +
|
|
440
|
-
`Meshlets=${limits.get_limit(RasterizationCollectionType.Meshlets)}`
|
|
441
|
-
);
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
// ── Camera ──────────────────────────────────────────────────
|
|
445
|
-
// Pulled back along +Z and slightly elevated so the whole grid
|
|
446
|
-
// fits in frame at startup.
|
|
447
|
-
const grid_span = TREE_GRID_RESOLUTION * TREE_SPACING;
|
|
448
|
-
const camera_position = new Vector3(0, BOX_HEIGHT * MAX_DEPTH * 0.4, grid_span * 0.55);
|
|
449
|
-
const camera_target = new Vector3(0, BOX_HEIGHT * MAX_DEPTH * 0.25, 0);
|
|
450
|
-
controller.look(camera_position, camera_target);
|
|
451
|
-
controller.camera.near = 0.1;
|
|
452
|
-
controller.camera.far = grid_span * 3 + 10;
|
|
453
|
-
|
|
454
|
-
// ── Deferred clip creation ─────────────────────────────────
|
|
455
|
-
// Clips can't be created until the joints have GPU rows in
|
|
456
|
-
// `id_mapping`, which only happens after the first
|
|
457
|
-
// `GPUSceneContext.build`. We run this once on the first
|
|
458
|
-
// onFrameFinished where the scene database is populated.
|
|
459
|
-
|
|
460
|
-
/**
|
|
461
|
-
* One clip id per tree, captured in the same order as `trees`.
|
|
462
|
-
* Used per-frame to advance each clip's time.
|
|
463
|
-
* @type {number[]}
|
|
464
|
-
*/
|
|
465
|
-
const tree_clip_ids = new Array(trees.length);
|
|
466
|
-
|
|
467
|
-
let bindings_initialised = false;
|
|
468
|
-
let post_apply_readback_done = false;
|
|
469
|
-
let post_apply_frames_remaining = 1;
|
|
470
|
-
let render_state_logged = false;
|
|
471
|
-
|
|
472
|
-
/**
|
|
473
|
-
* Diagnostic — one-shot dump of what the GPU side actually believes
|
|
474
|
-
* about the scene right after the first build runs. Pinpoints the
|
|
475
|
-
* category of bug for "trees aren't visible":
|
|
476
|
-
* - meshes_table empty / row 0 only → mesh-add path didn't run.
|
|
477
|
-
* - meshes_table populated but every row points at the same geometry
|
|
478
|
-
* id → obtain_geometry_index folded source + clones into one slot.
|
|
479
|
-
* - meshes_table populated but every row's geometry id is past
|
|
480
|
-
* geometry_count → clones polluted the buffer for non-skinned meshes.
|
|
481
|
-
* - meshes_table populated, geometry ids reasonable, but bounds are
|
|
482
|
-
* NaN / garbage → bounding-box / sphere serialisation regressed.
|
|
483
|
-
*
|
|
484
|
-
* @param {GPUSceneContext} gpu_scene
|
|
485
|
-
*/
|
|
486
|
-
function log_render_state(gpu_scene) {
|
|
487
|
-
const meshes_table = gpu_scene.scene_database.get('meshes');
|
|
488
|
-
const transforms_table = gpu_scene.scene_database.get('transforms');
|
|
489
|
-
const geometry_count = gpu_scene.geometries.managed.size;
|
|
490
|
-
|
|
491
|
-
// CPU-side meshes_table.count (count() is the cardinality of the
|
|
492
|
-
// occupancy bitset, populated synchronously by add() during build).
|
|
493
|
-
const mesh_row_count = meshes_table.count;
|
|
494
|
-
const transform_row_count = transforms_table.count;
|
|
495
|
-
|
|
496
|
-
console.log(
|
|
497
|
-
`[stress] render state: ` +
|
|
498
|
-
`meshes_table.count=${mesh_row_count}, ` +
|
|
499
|
-
`transforms_table.count=${transform_row_count}, ` +
|
|
500
|
-
`geometry_count=${geometry_count}, ` +
|
|
501
|
-
`instance_count=${gpu_scene.scene.instance_count}, ` +
|
|
502
|
-
`node_count=${gpu_scene.scene.node_count}`
|
|
503
|
-
);
|
|
504
|
-
|
|
505
|
-
// Async: read the meshes_table back from the GPU and dump a
|
|
506
|
-
// representative cross-section so we can compare CPU's view with
|
|
507
|
-
// what's actually in the buffer the rasterizer reads.
|
|
508
|
-
gpu_scene.scene_database.debug_table_read_element('meshes', 0).then((row0) => {
|
|
509
|
-
const summary = row0
|
|
510
|
-
? `geometry=${row0.geometry}, material=${row0.material}, node=${row0.node}, bb=${JSON.stringify(row0.bounding_box)}`
|
|
511
|
-
: 'undefined';
|
|
512
|
-
console.log(`[stress] gpu meshes[0] = ${summary}`);
|
|
513
|
-
});
|
|
514
|
-
|
|
515
|
-
if (mesh_row_count > 1) {
|
|
516
|
-
gpu_scene.scene_database.debug_table_read_element('meshes', 1).then((row1) => {
|
|
517
|
-
const summary = row1
|
|
518
|
-
? `geometry=${row1.geometry}, material=${row1.material}, node=${row1.node}, bb=${JSON.stringify(row1.bounding_box)}`
|
|
519
|
-
: 'undefined';
|
|
520
|
-
console.log(`[stress] gpu meshes[1] = ${summary}`);
|
|
521
|
-
});
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
if (mesh_row_count > 2) {
|
|
525
|
-
gpu_scene.scene_database.debug_table_read_element('meshes', mesh_row_count - 1).then((rowN) => {
|
|
526
|
-
const summary = rowN
|
|
527
|
-
? `geometry=${rowN.geometry}, material=${rowN.material}, node=${rowN.node}, bb=${JSON.stringify(rowN.bounding_box)}`
|
|
528
|
-
: 'undefined';
|
|
529
|
-
console.log(`[stress] gpu meshes[${mesh_row_count - 1}] = ${summary}`);
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
function initialise_bindings(gpu_scene) {
|
|
535
|
-
let min_instance = Infinity;
|
|
536
|
-
let max_instance = -Infinity;
|
|
537
|
-
let undefined_count = 0;
|
|
538
|
-
let total_bindings = 0;
|
|
539
|
-
|
|
540
|
-
// Sanity: walk id_mapping and count entries that resolve into
|
|
541
|
-
// the scene/mesh/joint ranges based on what we know about how
|
|
542
|
-
// GPUSceneContext.build allocates rows. A joint should never
|
|
543
|
-
// resolve to scene's row 0 or to a mesh row — if any do, the
|
|
544
|
-
// binding will write rotation into the wrong place.
|
|
545
|
-
const expected_first_joint_row = 1 + gpu_scene.scene.instance_count;
|
|
546
|
-
let joints_outside_expected_range = 0;
|
|
547
|
-
|
|
548
|
-
for (let i = 0; i < trees.length; i++) {
|
|
549
|
-
const tree = trees[i];
|
|
550
|
-
const bindings = [];
|
|
551
|
-
|
|
552
|
-
for (let j = 0; j < tree.joints.length; j++) {
|
|
553
|
-
const joint = tree.joints[j];
|
|
554
|
-
const node_row = gpu_scene.id_mapping.get(joint.id);
|
|
555
|
-
if (node_row === undefined) {
|
|
556
|
-
undefined_count++;
|
|
557
|
-
continue;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
if (node_row < expected_first_joint_row) {
|
|
561
|
-
joints_outside_expected_range++;
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
if (node_row < min_instance) min_instance = node_row;
|
|
565
|
-
if (node_row > max_instance) max_instance = node_row;
|
|
566
|
-
total_bindings++;
|
|
567
|
-
|
|
568
|
-
bindings.push({
|
|
569
|
-
track: tree.track_ids[j],
|
|
570
|
-
instance: node_row,
|
|
571
|
-
property: Node3DProperty.Rotation,
|
|
572
|
-
});
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
if (bindings.length === 0) continue;
|
|
576
|
-
|
|
577
|
-
tree_clip_ids[i] = animation_manager.add_clip({
|
|
578
|
-
time: tree.phase_offset_s,
|
|
579
|
-
bindings,
|
|
580
|
-
});
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
console.log(
|
|
584
|
-
`[stress] bindings: total=${total_bindings}, ` +
|
|
585
|
-
`instance range=[${min_instance}, ${max_instance}], ` +
|
|
586
|
-
`expected_first_joint_row=${expected_first_joint_row}, ` +
|
|
587
|
-
`joints_in_mesh_range=${joints_outside_expected_range}, ` +
|
|
588
|
-
`id_mapping_size=${gpu_scene.id_mapping.size}, ` +
|
|
589
|
-
`instance_count=${gpu_scene.scene.instance_count}, ` +
|
|
590
|
-
`node_count=${gpu_scene.scene.node_count}, ` +
|
|
591
|
-
`undefined_resolutions=${undefined_count}`
|
|
592
|
-
);
|
|
593
|
-
|
|
594
|
-
bindings_initialised = true;
|
|
595
|
-
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
// Expose for debugging from the console.
|
|
599
|
-
window.animation_manager = animation_manager;
|
|
600
|
-
|
|
601
|
-
// ── Per-frame: advance clip times, dispatch evaluation ─────
|
|
602
|
-
const start_time_ms = performance.now();
|
|
603
|
-
|
|
604
|
-
renderer.onFrameFinished.add(() => {
|
|
605
|
-
const gpu_scene = renderer.scenes.obtain(scene);
|
|
606
|
-
const scene_database_buffer = gpu_scene.scene_database_buffer;
|
|
607
|
-
|
|
608
|
-
if (scene_database_buffer === undefined) {
|
|
609
|
-
// Scene hasn't been built yet — nothing to write into
|
|
610
|
-
// and id_mapping isn't populated.
|
|
611
|
-
return;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
if (!render_state_logged) {
|
|
615
|
-
log_render_state(gpu_scene);
|
|
616
|
-
render_state_logged = true;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
if (!bindings_initialised) {
|
|
620
|
-
initialise_bindings(gpu_scene);
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
const elapsed_s = (performance.now() - start_time_ms) * 1e-3;
|
|
624
|
-
|
|
625
|
-
// One clip per tree. Each clip drives every limb in its tree
|
|
626
|
-
// through its own time axis; the per-tree phase offset is
|
|
627
|
-
// baked in here (rather than as a track property) so all
|
|
628
|
-
// tracks in the pool can share the same curve range and stay
|
|
629
|
-
// cheap to evaluate.
|
|
630
|
-
for (let i = 0; i < tree_clip_ids.length; i++) {
|
|
631
|
-
const clip_id = tree_clip_ids[i];
|
|
632
|
-
if (clip_id === undefined) continue;
|
|
633
|
-
const t = (elapsed_s + trees[i].phase_offset_s) % LOOP_PERIOD_S;
|
|
634
|
-
animation_manager.set_time(clip_id, t);
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
const apply_dispatch_groups = animation_manager.database
|
|
638
|
-
.get('animation_bound_track_groups')
|
|
639
|
-
.dispatch_group_count(ANIMATION_APPLY_WORKGROUP_SIZE);
|
|
640
|
-
if (apply_dispatch_groups === 0) {
|
|
641
|
-
return;
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
const cmd = ShadeGPUCommandContext.create(
|
|
645
|
-
renderer.graphics,
|
|
646
|
-
"AnimationPrototypeStress/Tick"
|
|
647
|
-
);
|
|
648
|
-
|
|
649
|
-
animation_manager.update(cmd);
|
|
650
|
-
|
|
651
|
-
// Size the pose accumulator to cover every allocated row of
|
|
652
|
-
// the transforms table — apply writes by absolute row index,
|
|
653
|
-
// resolve iterates the table via page iterator.
|
|
654
|
-
const transforms_table = gpu_scene.scene_database.get('transforms');
|
|
655
|
-
const resolve_dispatch_groups = transforms_table.dispatch_group_count(
|
|
656
|
-
ANIMATION_POSE_RESOLVE_WORKGROUP_SIZE
|
|
657
|
-
);
|
|
658
|
-
const pose_accumulator_rows = transforms_table.dispatch_page_count
|
|
659
|
-
* transforms_table.descriptor.elements_per_page;
|
|
660
|
-
animation_manager.ensure_pose_accumulator_capacity(pose_accumulator_rows);
|
|
661
|
-
|
|
662
|
-
const graph = new FrameGraph("AnimationPrototypeStress/Tick");
|
|
663
|
-
|
|
664
|
-
// ── Imported existing resources ────────────────────────
|
|
665
|
-
const gr_animation_database = graph_import_buffer(
|
|
666
|
-
graph, animation_manager.database.buffer, "animation_database"
|
|
667
|
-
);
|
|
668
|
-
const gr_scene_database = graph_import_buffer(
|
|
669
|
-
graph, scene_database_buffer, "scene_database"
|
|
670
|
-
);
|
|
671
|
-
const gr_geometries = graph_import_buffer(
|
|
672
|
-
graph, gpu_scene.geometries.buffer_metadata, "geometries"
|
|
673
|
-
);
|
|
674
|
-
const gr_materials = graph_import_buffer(
|
|
675
|
-
graph, gpu_scene.materials.metadata_table.buffer, "materials"
|
|
676
|
-
);
|
|
677
|
-
const gr_pose_accumulator = graph_import_buffer(
|
|
678
|
-
graph, animation_manager.pose_accumulator_buffer, "pose_accumulator"
|
|
679
|
-
);
|
|
680
|
-
|
|
681
|
-
// ── Pass 1: animation apply ───────────────────────────
|
|
682
|
-
// Atomic-adds weighted per-binding values into the pose
|
|
683
|
-
// accumulator. With one clip per tree at weight 1.0 and
|
|
684
|
-
// disjoint joint targets, there's no inter-thread contention
|
|
685
|
-
// on accumulator slots.
|
|
686
|
-
const apply_data = {};
|
|
687
|
-
const apply_pass = graph.add("animation/apply", apply_data, (data, resources, ctx) => {
|
|
688
|
-
shader_animation_apply.dispatch({
|
|
689
|
-
encoder: ctx.encoder,
|
|
690
|
-
group_count_x: apply_dispatch_groups,
|
|
691
|
-
bindings: {
|
|
692
|
-
animation_database: resources.get(data.animation_database),
|
|
693
|
-
pose_accumulator: resources.get(data.pose_accumulator),
|
|
694
|
-
materials: resources.get(data.materials),
|
|
695
|
-
},
|
|
696
|
-
});
|
|
697
|
-
});
|
|
698
|
-
|
|
699
|
-
apply_data.animation_database = apply_pass.read(gr_animation_database);
|
|
700
|
-
apply_data.materials = apply_pass.write(apply_pass.read(gr_materials));
|
|
701
|
-
apply_data.pose_accumulator = apply_pass.write(apply_pass.read(gr_pose_accumulator));
|
|
702
|
-
|
|
703
|
-
// ── Pass 2: pose resolve ──────────────────────────────
|
|
704
|
-
const resolve_data = {};
|
|
705
|
-
const resolve_pass = graph.add("animation/pose_resolve", resolve_data, (data, resources, ctx) => {
|
|
706
|
-
if (resolve_dispatch_groups === 0) {
|
|
707
|
-
return;
|
|
708
|
-
}
|
|
709
|
-
shader_animation_pose_resolve.dispatch({
|
|
710
|
-
encoder: ctx.encoder,
|
|
711
|
-
group_count_x: resolve_dispatch_groups,
|
|
712
|
-
bindings: {
|
|
713
|
-
scene_database: resources.get(data.scene_database),
|
|
714
|
-
pose_accumulator: resources.get(data.pose_accumulator),
|
|
715
|
-
},
|
|
716
|
-
});
|
|
717
|
-
});
|
|
718
|
-
|
|
719
|
-
resolve_data.scene_database = resolve_pass.write(resolve_pass.read(gr_scene_database));
|
|
720
|
-
resolve_data.pose_accumulator = resolve_pass.write(resolve_pass.read(apply_data.pose_accumulator));
|
|
721
|
-
|
|
722
|
-
// ── Pass 3: propagate node.local → node.global ─────────
|
|
723
|
-
const { scene_database: gr_scene_database_after_propagate } =
|
|
724
|
-
graph_scene_update_transform_hierarchy({
|
|
725
|
-
graph,
|
|
726
|
-
scene: gpu_scene,
|
|
727
|
-
scene_database: resolve_data.scene_database,
|
|
728
|
-
});
|
|
729
|
-
|
|
730
|
-
// ── Pass 4: blanket bounds refresh ─────────────────────
|
|
731
|
-
// With the stress test driving joints (non-mesh nodes),
|
|
732
|
-
// descendant limbs' world positions move but their bounds
|
|
733
|
-
// don't update. Sweep every mesh once a frame until proper
|
|
734
|
-
// descendant invalidation lands (Phase 3 — per-meshlet
|
|
735
|
-
// bounds refresh).
|
|
736
|
-
const refresh_all_data = {};
|
|
737
|
-
const refresh_all_pass = graph.add(
|
|
738
|
-
"object-property/refresh-all-mesh-bounds",
|
|
739
|
-
refresh_all_data,
|
|
740
|
-
(data, resources, ctx) => {
|
|
741
|
-
const settings = ctx.encoder.allocateTransientValueBuffer(
|
|
742
|
-
REFRESH_ALL_MESH_BOUNDS_SETTINGS_STRUCT,
|
|
743
|
-
{ instance_count: gpu_scene.scene.instance_count }
|
|
744
|
-
);
|
|
745
|
-
shader_refresh_all_mesh_bounds.dispatchLinear({
|
|
746
|
-
encoder: ctx.encoder,
|
|
747
|
-
element_count: gpu_scene.scene.instance_count,
|
|
748
|
-
bindings: {
|
|
749
|
-
settings,
|
|
750
|
-
scene_database: resources.get(data.scene_database),
|
|
751
|
-
geometries: resources.get(data.geometries),
|
|
752
|
-
},
|
|
753
|
-
});
|
|
754
|
-
}
|
|
755
|
-
);
|
|
756
|
-
refresh_all_data.scene_database = refresh_all_pass.write(
|
|
757
|
-
refresh_all_pass.read(gr_scene_database_after_propagate)
|
|
758
|
-
);
|
|
759
|
-
refresh_all_data.geometries = refresh_all_pass.read(gr_geometries);
|
|
760
|
-
|
|
761
|
-
cmd.encodeGraph(graph);
|
|
762
|
-
cmd.finish();
|
|
763
|
-
|
|
764
|
-
});
|
|
765
|
-
}
|