@woosh/meep-engine 3.3.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/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/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 +26 -5
- package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
- package/src/engine/ecs/util/hideEntityGracefully.js +196 -208
- 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/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/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/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/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.js +0 -36
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.js +0 -54
- package/src/shade/renderer/shader/chunk/bvh/packed/NOTES.md +0 -19
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.js +0 -9
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts +0 -6
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.js +0 -5
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts +0 -8
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.js +0 -17
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.js +0 -14
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.js +0 -27
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.js +0 -31
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.js +0 -25
- package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.js +0 -42
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.js +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.d.ts +0 -0
- /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.js +0 -0
- /package/src/shade/playground/{main.d.ts → bvh_repro/main.d.ts} +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
2
|
+
import { MAX_SUBGROUPS_PER_WORKGROUP, SORT_WORKGROUP_SIZE } from "./defs.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Workgroup-wide exclusive scan of one `u32` per thread, returning
|
|
6
|
+
* `vec2(exclusive_prefix, workgroup_total)`.
|
|
7
|
+
*
|
|
8
|
+
* Two levels: `subgroupInclusiveAdd` inside each subgroup, then a Hillis–Steele scan over the
|
|
9
|
+
* per-subgroup totals in workgroup memory. Subgroup ops carry the wide part of the work; workgroup
|
|
10
|
+
* memory is the correctness layer across subgroup boundaries, because subgroup size is a runtime
|
|
11
|
+
* value in [4, 128] and nothing here may assume one.
|
|
12
|
+
*
|
|
13
|
+
* The Hillis–Steele loop's trip count is the **constant** `MAX_SUBGROUPS_PER_WORKGROUP` rather than
|
|
14
|
+
* the real subgroup count. It contains `workgroupBarrier`, and a barrier under a bound derived from
|
|
15
|
+
* `subgroup_size` is precisely the shape a uniformity analysis is entitled to reject; iterations
|
|
16
|
+
* past the real subgroup count find `active` false and write nothing. The per-iteration
|
|
17
|
+
* read-barrier-write split is what keeps a thread from overwriting a value another thread has yet
|
|
18
|
+
* to read.
|
|
19
|
+
*
|
|
20
|
+
* Callers must invoke this from workgroup-uniform control flow — subgroup builtins require it, and
|
|
21
|
+
* so do the barriers. The barrier at the top is what lets a caller invoke it repeatedly: it fences
|
|
22
|
+
* the previous call's reads of `wg_sort_partials` against this call's writes.
|
|
23
|
+
*
|
|
24
|
+
* @type {CodeChunk}
|
|
25
|
+
*/
|
|
26
|
+
export const chunk_sort_workgroup_scan = CodeChunk.from(
|
|
27
|
+
//language=WGSL
|
|
28
|
+
`
|
|
29
|
+
var<workgroup> wg_sort_partials: array<u32, ${MAX_SUBGROUPS_PER_WORKGROUP}>;
|
|
30
|
+
|
|
31
|
+
fn sort_workgroup_exclusive_scan(
|
|
32
|
+
value: u32,
|
|
33
|
+
thread_id: u32,
|
|
34
|
+
lane_id: u32,
|
|
35
|
+
lane_count: u32
|
|
36
|
+
) -> vec2<u32> {
|
|
37
|
+
let subgroup_id = thread_id / lane_count;
|
|
38
|
+
let subgroup_count = ${SORT_WORKGROUP_SIZE}u / lane_count;
|
|
39
|
+
|
|
40
|
+
let inclusive = subgroupInclusiveAdd(value);
|
|
41
|
+
|
|
42
|
+
workgroupBarrier();
|
|
43
|
+
|
|
44
|
+
if (lane_id == lane_count - 1u) {
|
|
45
|
+
wg_sort_partials[subgroup_id] = inclusive;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
workgroupBarrier();
|
|
49
|
+
|
|
50
|
+
for (var offset = 1u; offset < ${MAX_SUBGROUPS_PER_WORKGROUP}u; offset <<= 1u) {
|
|
51
|
+
let contributes = thread_id < subgroup_count && thread_id >= offset;
|
|
52
|
+
|
|
53
|
+
var carry = 0u;
|
|
54
|
+
if (contributes) {
|
|
55
|
+
carry = wg_sort_partials[thread_id - offset];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
workgroupBarrier();
|
|
59
|
+
|
|
60
|
+
if (contributes) {
|
|
61
|
+
wg_sort_partials[thread_id] += carry;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
workgroupBarrier();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var subgroup_prefix = 0u;
|
|
68
|
+
if (subgroup_id != 0u) {
|
|
69
|
+
subgroup_prefix = wg_sort_partials[subgroup_id - 1u];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return vec2<u32>(inclusive - value + subgroup_prefix, wg_sort_partials[subgroup_count - 1u]);
|
|
73
|
+
}
|
|
74
|
+
`);
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared configuration for the key-value radix sort.
|
|
3
|
+
*
|
|
4
|
+
* The sort is LSD reduce-then-scan: four 8-bit digit passes, each of them a per-tile histogram,
|
|
5
|
+
* a spine scan through {@link graph_prefix_scan_csdldf}, and a rank-and-scatter. The numbers below
|
|
6
|
+
* are what the three stages have to agree on, so they live in one place rather than in each
|
|
7
|
+
* shader's template literal.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Number of digit bins. 8-bit digits — one `u32` key is covered by {@link RADIX_PASSES} of them.
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const RADIX: number;
|
|
14
|
+
/**
|
|
15
|
+
* `log2(RADIX)` — also the number of binary split rounds the scatter's in-tile sort runs.
|
|
16
|
+
* @type {number}
|
|
17
|
+
*/
|
|
18
|
+
export const RADIX_LOG: number;
|
|
19
|
+
/**
|
|
20
|
+
* (key width) / RADIX_LOG. Four passes over a 32-bit key.
|
|
21
|
+
*
|
|
22
|
+
* Even, which is what puts the result back in the caller's buffers rather than in the ping-pong
|
|
23
|
+
* scratch — see {@link graph_radix_sort}.
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
export const RADIX_PASSES: number;
|
|
27
|
+
/**
|
|
28
|
+
* Threads per workgroup, in both the histogram and the scatter.
|
|
29
|
+
*
|
|
30
|
+
* 256 is `maxComputeInvocationsPerWorkgroup`'s default value, and it is also exactly {@link RADIX},
|
|
31
|
+
* which is what lets the scatter run "one thread per bin" over its local histogram with no strided
|
|
32
|
+
* loop.
|
|
33
|
+
* @type {number}
|
|
34
|
+
*/
|
|
35
|
+
export const SORT_WORKGROUP_SIZE: number;
|
|
36
|
+
/**
|
|
37
|
+
* Keys each thread carries through a tile.
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
export const SORT_KEYS_PER_THREAD: number;
|
|
41
|
+
/**
|
|
42
|
+
* Keys one workgroup processes. Also the granularity of the spine: the spine holds one 256-bin
|
|
43
|
+
* histogram per tile.
|
|
44
|
+
* @type {number}
|
|
45
|
+
*/
|
|
46
|
+
export const SORT_TILE_SIZE: number;
|
|
47
|
+
/**
|
|
48
|
+
* The smallest subgroup size WebGPU permits, and therefore the largest number of subgroups a
|
|
49
|
+
* workgroup can be split into: `SORT_WORKGROUP_SIZE / MIN_SUBGROUP_SIZE`.
|
|
50
|
+
*
|
|
51
|
+
* Subgroup size is a runtime value in [4, 128]; nothing here may bake a width in. What the bound
|
|
52
|
+
* buys is a *compile-time* trip count for the loop that scans the per-subgroup partials — a loop
|
|
53
|
+
* that contains barriers, and whose bound therefore has to be provably uniform. Iterations past
|
|
54
|
+
* the real subgroup count do nothing.
|
|
55
|
+
* @type {number}
|
|
56
|
+
*/
|
|
57
|
+
export const MIN_SUBGROUP_SIZE: number;
|
|
58
|
+
/**
|
|
59
|
+
* @type {number}
|
|
60
|
+
*/
|
|
61
|
+
export const MAX_SUBGROUPS_PER_WORKGROUP: number;
|
|
62
|
+
/**
|
|
63
|
+
* Words of `{count: u32, elements: array<vec4u>}` header that sit in front of the spine's elements.
|
|
64
|
+
*
|
|
65
|
+
* {@link graph_prefix_scan_csdldf} reads its element count from word 0 and its `elements` member is
|
|
66
|
+
* `@align(16)`, so the first count word lives at word 4. The histogram and scatter shaders bind the
|
|
67
|
+
* same buffer flat and have to step over the header by hand.
|
|
68
|
+
* @type {number}
|
|
69
|
+
*/
|
|
70
|
+
export const SPINE_HEADER_WORDS: number;
|
|
71
|
+
//# sourceMappingURL=defs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/defs.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,oBAFU,MAAM,CAES;AAEzB;;;GAGG;AACH,wBAFU,MAAM,CAEW;AAE3B;;;;;;GAMG;AACH,2BAFU,MAAM,CAEc;AAE9B;;;;;;;GAOG;AACH,kCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,mCAFU,MAAM,CAEsB;AAEtC;;;;GAIG;AACH,6BAFU,MAAM,CAEyD;AAEzE;;;;;;;;;GASG;AACH,gCAFU,MAAM,CAEmB;AAEnC;;GAEG;AACH,0CAFU,MAAM,CAEmE;AAEnF;;;;;;;GAOG;AACH,iCAFU,MAAM,CAEoB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared configuration for the key-value radix sort.
|
|
3
|
+
*
|
|
4
|
+
* The sort is LSD reduce-then-scan: four 8-bit digit passes, each of them a per-tile histogram,
|
|
5
|
+
* a spine scan through {@link graph_prefix_scan_csdldf}, and a rank-and-scatter. The numbers below
|
|
6
|
+
* are what the three stages have to agree on, so they live in one place rather than in each
|
|
7
|
+
* shader's template literal.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Number of digit bins. 8-bit digits — one `u32` key is covered by {@link RADIX_PASSES} of them.
|
|
12
|
+
* @type {number}
|
|
13
|
+
*/
|
|
14
|
+
export const RADIX = 256;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* `log2(RADIX)` — also the number of binary split rounds the scatter's in-tile sort runs.
|
|
18
|
+
* @type {number}
|
|
19
|
+
*/
|
|
20
|
+
export const RADIX_LOG = 8;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* (key width) / RADIX_LOG. Four passes over a 32-bit key.
|
|
24
|
+
*
|
|
25
|
+
* Even, which is what puts the result back in the caller's buffers rather than in the ping-pong
|
|
26
|
+
* scratch — see {@link graph_radix_sort}.
|
|
27
|
+
* @type {number}
|
|
28
|
+
*/
|
|
29
|
+
export const RADIX_PASSES = 4;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Threads per workgroup, in both the histogram and the scatter.
|
|
33
|
+
*
|
|
34
|
+
* 256 is `maxComputeInvocationsPerWorkgroup`'s default value, and it is also exactly {@link RADIX},
|
|
35
|
+
* which is what lets the scatter run "one thread per bin" over its local histogram with no strided
|
|
36
|
+
* loop.
|
|
37
|
+
* @type {number}
|
|
38
|
+
*/
|
|
39
|
+
export const SORT_WORKGROUP_SIZE = 256;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Keys each thread carries through a tile.
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
export const SORT_KEYS_PER_THREAD = 4;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Keys one workgroup processes. Also the granularity of the spine: the spine holds one 256-bin
|
|
49
|
+
* histogram per tile.
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
52
|
+
export const SORT_TILE_SIZE = SORT_WORKGROUP_SIZE * SORT_KEYS_PER_THREAD;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The smallest subgroup size WebGPU permits, and therefore the largest number of subgroups a
|
|
56
|
+
* workgroup can be split into: `SORT_WORKGROUP_SIZE / MIN_SUBGROUP_SIZE`.
|
|
57
|
+
*
|
|
58
|
+
* Subgroup size is a runtime value in [4, 128]; nothing here may bake a width in. What the bound
|
|
59
|
+
* buys is a *compile-time* trip count for the loop that scans the per-subgroup partials — a loop
|
|
60
|
+
* that contains barriers, and whose bound therefore has to be provably uniform. Iterations past
|
|
61
|
+
* the real subgroup count do nothing.
|
|
62
|
+
* @type {number}
|
|
63
|
+
*/
|
|
64
|
+
export const MIN_SUBGROUP_SIZE = 4;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @type {number}
|
|
68
|
+
*/
|
|
69
|
+
export const MAX_SUBGROUPS_PER_WORKGROUP = SORT_WORKGROUP_SIZE / MIN_SUBGROUP_SIZE;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Words of `{count: u32, elements: array<vec4u>}` header that sit in front of the spine's elements.
|
|
73
|
+
*
|
|
74
|
+
* {@link graph_prefix_scan_csdldf} reads its element count from word 0 and its `elements` member is
|
|
75
|
+
* `@align(16)`, so the first count word lives at word 4. The histogram and scatter shaders bind the
|
|
76
|
+
* same buffer flat and have to step over the header by hand.
|
|
77
|
+
* @type {number}
|
|
78
|
+
*/
|
|
79
|
+
export const SPINE_HEADER_WORDS = 4;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key-value LSD radix sort, reduce-then-scan, built on the CSDLDF spine.
|
|
3
|
+
*
|
|
4
|
+
* Keys are 32-bit unsigned integers, values are 32-bit unsigned integers, sorting is always
|
|
5
|
+
* ASCENDING and STABLE — equal keys come out in their input order, which is what an LSD radix sort
|
|
6
|
+
* needs of each of its own digit passes and what a caller sorting Morton codes needs of the whole
|
|
7
|
+
* thing. The result lands back in the caller's own buffers: four digit passes ping-pong between
|
|
8
|
+
* them and a pair of transients, and four is even.
|
|
9
|
+
*
|
|
10
|
+
* One digit pass is three dispatches:
|
|
11
|
+
*
|
|
12
|
+
* 1. {@link shader_radix_sort_histogram} — a 256-bin histogram per tile, written into the spine
|
|
13
|
+
* bin-major;
|
|
14
|
+
* 2. {@link graph_prefix_scan_csdldf}, reused as-is — one running scan over the whole spine
|
|
15
|
+
* therefore yields the global start of every digit and the per-tile offset within it together.
|
|
16
|
+
* That scan is inclusive-only and in-place, so the scatter recovers the exclusive value by
|
|
17
|
+
* subtracting the tile's own count (which it has, having re-derived the tile histogram to rank
|
|
18
|
+
* its keys anyway);
|
|
19
|
+
* 3. {@link shader_radix_sort_scatter} — rank within the tile, then scatter.
|
|
20
|
+
*
|
|
21
|
+
* Twelve dispatches per sort, against the seven of the single-pass one-sweep formulation that
|
|
22
|
+
* commit `b6049214c` removed. What that buys is the absence of any unbounded cross-workgroup wait:
|
|
23
|
+
* the only spin anywhere is CSDLDF's own bounded-spin-then-fallback, so the sort makes progress on
|
|
24
|
+
* a scheduler that offers no fairness guarantee at all. The single-pass upgrade is recorded in
|
|
25
|
+
* `GPU_BVH_BUILD_PLAN.md` §4.2.1 as v2, gated on a measurement from a real consumer.
|
|
26
|
+
*
|
|
27
|
+
* @param {FrameGraph} graph
|
|
28
|
+
* @param {number} keys buffer resource ID, `array<u32>`, at least `element_count` entries
|
|
29
|
+
* @param {number} values buffer resource ID, `array<u32>`, at least `element_count` entries
|
|
30
|
+
* @param {number} element_count number of input elements
|
|
31
|
+
* @returns {{keys:number, values:number}} sorted output, in the caller's buffers
|
|
32
|
+
*/
|
|
33
|
+
export function graph_radix_sort({ graph, keys, values, element_count, }: FrameGraph): {
|
|
34
|
+
keys: number;
|
|
35
|
+
values: number;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=graph_radix_sort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_radix_sort.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,uFAFa;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,MAAM,CAAA;CAAC,CA4JxC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { round_up } from "../../../../core/math/round_up.js";
|
|
3
|
+
import { warn_limited } from "../../../util/warn_limited.js";
|
|
4
|
+
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
5
|
+
import { graph_prefix_scan_csdldf } from "../prefix_sum/v1/graph_prefix_scan_csdldf.js";
|
|
6
|
+
import { RADIX, RADIX_LOG, RADIX_PASSES, SORT_TILE_SIZE, SPINE_HEADER_WORDS } from "./defs.js";
|
|
7
|
+
import { SORT_PASS_SETTINGS_STRUCT } from "./SORT_PASS_SETTINGS_STRUCT.js";
|
|
8
|
+
import { shader_radix_sort_histogram } from "./shader_radix_sort_histogram.js";
|
|
9
|
+
import { shader_radix_sort_scatter } from "./shader_radix_sort_scatter.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Key-value LSD radix sort, reduce-then-scan, built on the CSDLDF spine.
|
|
13
|
+
*
|
|
14
|
+
* Keys are 32-bit unsigned integers, values are 32-bit unsigned integers, sorting is always
|
|
15
|
+
* ASCENDING and STABLE — equal keys come out in their input order, which is what an LSD radix sort
|
|
16
|
+
* needs of each of its own digit passes and what a caller sorting Morton codes needs of the whole
|
|
17
|
+
* thing. The result lands back in the caller's own buffers: four digit passes ping-pong between
|
|
18
|
+
* them and a pair of transients, and four is even.
|
|
19
|
+
*
|
|
20
|
+
* One digit pass is three dispatches:
|
|
21
|
+
*
|
|
22
|
+
* 1. {@link shader_radix_sort_histogram} — a 256-bin histogram per tile, written into the spine
|
|
23
|
+
* bin-major;
|
|
24
|
+
* 2. {@link graph_prefix_scan_csdldf}, reused as-is — one running scan over the whole spine
|
|
25
|
+
* therefore yields the global start of every digit and the per-tile offset within it together.
|
|
26
|
+
* That scan is inclusive-only and in-place, so the scatter recovers the exclusive value by
|
|
27
|
+
* subtracting the tile's own count (which it has, having re-derived the tile histogram to rank
|
|
28
|
+
* its keys anyway);
|
|
29
|
+
* 3. {@link shader_radix_sort_scatter} — rank within the tile, then scatter.
|
|
30
|
+
*
|
|
31
|
+
* Twelve dispatches per sort, against the seven of the single-pass one-sweep formulation that
|
|
32
|
+
* commit `b6049214c` removed. What that buys is the absence of any unbounded cross-workgroup wait:
|
|
33
|
+
* the only spin anywhere is CSDLDF's own bounded-spin-then-fallback, so the sort makes progress on
|
|
34
|
+
* a scheduler that offers no fairness guarantee at all. The single-pass upgrade is recorded in
|
|
35
|
+
* `GPU_BVH_BUILD_PLAN.md` §4.2.1 as v2, gated on a measurement from a real consumer.
|
|
36
|
+
*
|
|
37
|
+
* @param {FrameGraph} graph
|
|
38
|
+
* @param {number} keys buffer resource ID, `array<u32>`, at least `element_count` entries
|
|
39
|
+
* @param {number} values buffer resource ID, `array<u32>`, at least `element_count` entries
|
|
40
|
+
* @param {number} element_count number of input elements
|
|
41
|
+
* @returns {{keys:number, values:number}} sorted output, in the caller's buffers
|
|
42
|
+
*/
|
|
43
|
+
export function graph_radix_sort({
|
|
44
|
+
graph,
|
|
45
|
+
keys,
|
|
46
|
+
values,
|
|
47
|
+
element_count,
|
|
48
|
+
}) {
|
|
49
|
+
|
|
50
|
+
assert.defined(graph, 'graph');
|
|
51
|
+
assert.isNonNegativeInteger(keys, 'keys');
|
|
52
|
+
assert.isNonNegativeInteger(values, 'values');
|
|
53
|
+
assert.isNonNegativeInteger(element_count, 'element_count');
|
|
54
|
+
|
|
55
|
+
if (element_count <= 1) {
|
|
56
|
+
// nothing a sort could change
|
|
57
|
+
return { keys, values };
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const tile_count = Math.ceil(element_count / SORT_TILE_SIZE);
|
|
61
|
+
|
|
62
|
+
const spine_element_count = tile_count * RADIX;
|
|
63
|
+
const spine_size = (SPINE_HEADER_WORDS + spine_element_count) * Uint32Array.BYTES_PER_ELEMENT;
|
|
64
|
+
|
|
65
|
+
// The histogram writes every element cell, but the `{count, elements}` header's padding words
|
|
66
|
+
// and any tail the round-up leaves are never written and would otherwise carry whatever the
|
|
67
|
+
// pool last put there into the scan.
|
|
68
|
+
const SPINE_DESCRIPTOR = BufferResourceDescriptor.from(
|
|
69
|
+
spine_size,
|
|
70
|
+
GPUBufferUsage.STORAGE,
|
|
71
|
+
0, spine_size
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
// aligned on a 1k boundary to lower memory fragmentation, as the deleted port did
|
|
75
|
+
const PING_PONG_DESCRIPTOR = BufferResourceDescriptor.from(
|
|
76
|
+
round_up(element_count * Uint32Array.BYTES_PER_ELEMENT, 1024),
|
|
77
|
+
GPUBufferUsage.STORAGE
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @param pass_data
|
|
82
|
+
* @param {FramePassResources} resources
|
|
83
|
+
* @param {GraphicsExecutionContext} context
|
|
84
|
+
*/
|
|
85
|
+
function execute_histogram(pass_data, resources, context) {
|
|
86
|
+
const encoder = context.encoder;
|
|
87
|
+
|
|
88
|
+
const MAX_DISPATCH_SIZE = encoder.device.limits.maxComputeWorkgroupsPerDimension;
|
|
89
|
+
|
|
90
|
+
if (tile_count > MAX_DISPATCH_SIZE) {
|
|
91
|
+
warn_limited(`radix sort: tile_count(=${tile_count}) > MAX_DISPATCH_SIZE(=${MAX_DISPATCH_SIZE}). Sort will be incomplete`);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
shader_radix_sort_histogram.dispatch({
|
|
95
|
+
encoder,
|
|
96
|
+
group_count_x: tile_count,
|
|
97
|
+
bindings: {
|
|
98
|
+
settings: encoder.allocateTransientValueBuffer(SORT_PASS_SETTINGS_STRUCT, {
|
|
99
|
+
shift: pass_data.shift,
|
|
100
|
+
element_count,
|
|
101
|
+
tile_count,
|
|
102
|
+
}),
|
|
103
|
+
keys: resources.get(pass_data.keys),
|
|
104
|
+
spine: resources.get(pass_data.spine),
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @param pass_data
|
|
111
|
+
* @param {FramePassResources} resources
|
|
112
|
+
* @param {GraphicsExecutionContext} context
|
|
113
|
+
*/
|
|
114
|
+
function execute_scatter(pass_data, resources, context) {
|
|
115
|
+
const encoder = context.encoder;
|
|
116
|
+
|
|
117
|
+
const in_keys = resources.get(pass_data.in_keys);
|
|
118
|
+
const in_values = resources.get(pass_data.in_values);
|
|
119
|
+
const out_keys = resources.get(pass_data.out_keys);
|
|
120
|
+
const out_values = resources.get(pass_data.out_values);
|
|
121
|
+
|
|
122
|
+
const required = element_count * Uint32Array.BYTES_PER_ELEMENT;
|
|
123
|
+
|
|
124
|
+
assert.greaterThanOrEqual(in_keys.size, required, 'key buffer underflow');
|
|
125
|
+
assert.greaterThanOrEqual(in_values.size, required, 'value buffer underflow');
|
|
126
|
+
assert.greaterThanOrEqual(out_keys.size, required, 'key output buffer underflow');
|
|
127
|
+
assert.greaterThanOrEqual(out_values.size, required, 'value output buffer underflow');
|
|
128
|
+
|
|
129
|
+
shader_radix_sort_scatter.dispatch({
|
|
130
|
+
encoder,
|
|
131
|
+
group_count_x: tile_count,
|
|
132
|
+
bindings: {
|
|
133
|
+
settings: encoder.allocateTransientValueBuffer(SORT_PASS_SETTINGS_STRUCT, {
|
|
134
|
+
shift: pass_data.shift,
|
|
135
|
+
element_count,
|
|
136
|
+
tile_count,
|
|
137
|
+
}),
|
|
138
|
+
in_keys,
|
|
139
|
+
in_values,
|
|
140
|
+
out_keys,
|
|
141
|
+
out_values,
|
|
142
|
+
spine: resources.get(pass_data.spine),
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
let read_keys = keys;
|
|
148
|
+
let read_values = values;
|
|
149
|
+
|
|
150
|
+
// the ping-pong halves, created by the first scatter and then alternated into
|
|
151
|
+
let write_keys;
|
|
152
|
+
let write_values;
|
|
153
|
+
|
|
154
|
+
for (let pass_index = 0; pass_index < RADIX_PASSES; pass_index++) {
|
|
155
|
+
|
|
156
|
+
const shift = pass_index * RADIX_LOG;
|
|
157
|
+
|
|
158
|
+
const histogram_data = { shift };
|
|
159
|
+
const histogram_pass = graph.add(`radix sort/histogram ${pass_index}`, histogram_data, execute_histogram);
|
|
160
|
+
|
|
161
|
+
histogram_data.keys = histogram_pass.read(read_keys);
|
|
162
|
+
histogram_data.spine = histogram_pass.create(`radix sort/spine ${pass_index}`, SPINE_DESCRIPTOR);
|
|
163
|
+
|
|
164
|
+
const scanned_spine = graph_prefix_scan_csdldf({
|
|
165
|
+
graph,
|
|
166
|
+
data: histogram_data.spine,
|
|
167
|
+
element_max_count: spine_element_count,
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
const scatter_data = { shift };
|
|
171
|
+
const scatter_pass = graph.add(`radix sort/scatter ${pass_index}`, scatter_data, execute_scatter);
|
|
172
|
+
|
|
173
|
+
scatter_data.in_keys = scatter_pass.read(read_keys);
|
|
174
|
+
scatter_data.in_values = scatter_pass.read(read_values);
|
|
175
|
+
scatter_data.spine = scatter_pass.read(scanned_spine);
|
|
176
|
+
|
|
177
|
+
if (write_keys === undefined) {
|
|
178
|
+
write_keys = scatter_pass.create("radix sort/ping-pong keys", PING_PONG_DESCRIPTOR);
|
|
179
|
+
write_values = scatter_pass.create("radix sort/ping-pong values", PING_PONG_DESCRIPTOR);
|
|
180
|
+
} else {
|
|
181
|
+
write_keys = scatter_pass.write(write_keys);
|
|
182
|
+
write_values = scatter_pass.write(write_values);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
scatter_data.out_keys = write_keys;
|
|
186
|
+
scatter_data.out_values = write_values;
|
|
187
|
+
|
|
188
|
+
// what this pass wrote is what the next one sorts
|
|
189
|
+
[read_keys, write_keys] = [write_keys, read_keys];
|
|
190
|
+
[read_values, write_values] = [write_values, read_values];
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return {
|
|
194
|
+
keys: read_keys,
|
|
195
|
+
values: read_values,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-tile 256-bin digit histogram — stage (a) of one digit pass of {@link graph_radix_sort}.
|
|
3
|
+
*
|
|
4
|
+
* One workgroup per tile; the counts land in the spine bin-major, so that the single scan that
|
|
5
|
+
* follows produces global digit offsets and per-tile offsets in one traversal.
|
|
6
|
+
*
|
|
7
|
+
* Subgroup ballot peer-aggregation ahead of the workgroup atomics (the deleted one-sweep port's
|
|
8
|
+
* `WarpLevelMultiSplit`) is the recorded upgrade here; it is left out of v1 because this pass reads
|
|
9
|
+
* each key once and is bandwidth-shaped, while the machinery it needs is the widest part of the
|
|
10
|
+
* subgroup-size surface.
|
|
11
|
+
*
|
|
12
|
+
* @type {ComputeShader}
|
|
13
|
+
*/
|
|
14
|
+
export const shader_radix_sort_histogram: ComputeShader;
|
|
15
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
16
|
+
//# sourceMappingURL=shader_radix_sort_histogram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_radix_sort_histogram.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;GAYG;AACH,0CAFU,aAAa,CAOpB;8BAjF2B,+BAA+B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
3
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
4
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
5
|
+
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
6
|
+
import { chunk_sort_digit } from "./chunk_sort_digit.js";
|
|
7
|
+
import { RADIX, SORT_KEYS_PER_THREAD, SORT_TILE_SIZE, SORT_WORKGROUP_SIZE } from "./defs.js";
|
|
8
|
+
import { SORT_PASS_SETTINGS_STRUCT } from "./SORT_PASS_SETTINGS_STRUCT.js";
|
|
9
|
+
|
|
10
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
11
|
+
resources.createGroup()
|
|
12
|
+
.addUniform("settings", SORT_PASS_SETTINGS_STRUCT)
|
|
13
|
+
.addStorageBuffer("keys", WebGPUArray.from(u32), false)
|
|
14
|
+
// `{count: u32, elements: array<vec4u>}` as the scan sees it, flat as this pass writes it.
|
|
15
|
+
// Every cell is produced by exactly one thread of one workgroup, so no atomics: the only
|
|
16
|
+
// consumer is a later dispatch, and WebGPU orders dispatches against each other.
|
|
17
|
+
.addStorageBuffer("spine", WebGPUArray.from(u32), true);
|
|
18
|
+
|
|
19
|
+
const body = CodeChunk.from(
|
|
20
|
+
//language=WGSL
|
|
21
|
+
`
|
|
22
|
+
const WORKGROUP_SIZE = ${SORT_WORKGROUP_SIZE}u;
|
|
23
|
+
const KEYS_PER_THREAD = ${SORT_KEYS_PER_THREAD}u;
|
|
24
|
+
const TILE_SIZE = ${SORT_TILE_SIZE}u;
|
|
25
|
+
const RADIX = ${RADIX}u;
|
|
26
|
+
|
|
27
|
+
// One bin per thread — RADIX and the workgroup size are equal, so the clear and the write-out are
|
|
28
|
+
// both a single unstrided step.
|
|
29
|
+
var<workgroup> wg_histogram: array<atomic<u32>, RADIX>;
|
|
30
|
+
|
|
31
|
+
@compute @workgroup_size(WORKGROUP_SIZE, 1, 1)
|
|
32
|
+
fn main(
|
|
33
|
+
@builtin(local_invocation_index) thread_id: u32,
|
|
34
|
+
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
35
|
+
) {
|
|
36
|
+
let tile = workgroup_id.x;
|
|
37
|
+
|
|
38
|
+
atomicStore(&wg_histogram[thread_id], 0u);
|
|
39
|
+
|
|
40
|
+
workgroupBarrier();
|
|
41
|
+
|
|
42
|
+
// Striped so that neighbouring threads read neighbouring addresses. The tail tile is partial;
|
|
43
|
+
// the keys past the end are not counted, which is what lets the scatter recognise them later
|
|
44
|
+
// by position alone.
|
|
45
|
+
let tile_base = tile * TILE_SIZE;
|
|
46
|
+
for (var k = 0u; k < KEYS_PER_THREAD; k += 1u) {
|
|
47
|
+
let source = tile_base + k * WORKGROUP_SIZE + thread_id;
|
|
48
|
+
|
|
49
|
+
if (source < settings.element_count) {
|
|
50
|
+
atomicAdd(&wg_histogram[sort_extract_digit(keys[source], settings.shift)], 1u);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
workgroupBarrier();
|
|
55
|
+
|
|
56
|
+
spine[sort_spine_index(thread_id, tile, settings.tile_count)] = atomicLoad(&wg_histogram[thread_id]);
|
|
57
|
+
|
|
58
|
+
// The scan is indirect-dispatched off an element count it reads from word 0 of this buffer.
|
|
59
|
+
if (tile == 0u && thread_id == 0u) {
|
|
60
|
+
spine[0] = settings.tile_count * RADIX;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
`, [
|
|
64
|
+
chunk_sort_digit,
|
|
65
|
+
]);
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Per-tile 256-bin digit histogram — stage (a) of one digit pass of {@link graph_radix_sort}.
|
|
69
|
+
*
|
|
70
|
+
* One workgroup per tile; the counts land in the spine bin-major, so that the single scan that
|
|
71
|
+
* follows produces global digit offsets and per-tile offsets in one traversal.
|
|
72
|
+
*
|
|
73
|
+
* Subgroup ballot peer-aggregation ahead of the workgroup atomics (the deleted one-sweep port's
|
|
74
|
+
* `WarpLevelMultiSplit`) is the recorded upgrade here; it is left out of v1 because this pass reads
|
|
75
|
+
* each key once and is bandwidth-shaped, while the machinery it needs is the widest part of the
|
|
76
|
+
* subgroup-size surface.
|
|
77
|
+
*
|
|
78
|
+
* @type {ComputeShader}
|
|
79
|
+
*/
|
|
80
|
+
export const shader_radix_sort_histogram = ComputeShader.from({
|
|
81
|
+
label: "RadixSort/Histogram",
|
|
82
|
+
resources,
|
|
83
|
+
body,
|
|
84
|
+
group_size: [SORT_WORKGROUP_SIZE, 1, 1],
|
|
85
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rank-and-scatter — stage (c) of one digit pass of {@link graph_radix_sort}.
|
|
3
|
+
*
|
|
4
|
+
* One workgroup per tile. The tile is sorted by the current digit in workgroup memory (stability is
|
|
5
|
+
* what an LSD radix sort's correctness rests on, and it is also what lets the tail tile's padding
|
|
6
|
+
* be identified by position), the tile's own histogram is re-derived rather than carried over from
|
|
7
|
+
* the histogram pass — the scan is inclusive-only, and re-counting is cheaper than preserving
|
|
8
|
+
* pre-scan counts — and each key is written to
|
|
9
|
+
* `spine_inclusive[bin] - local_count[bin] - bin_start[bin] + sorted_position`.
|
|
10
|
+
*
|
|
11
|
+
* @type {ComputeShader}
|
|
12
|
+
*/
|
|
13
|
+
export const shader_radix_sort_scatter: ComputeShader;
|
|
14
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
15
|
+
//# sourceMappingURL=shader_radix_sort_scatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_radix_sort_scatter.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js"],"names":[],"mappings":"AA8KA;;;;;;;;;;;GAWG;AACH,wCAFU,aAAa,CAOpB;8BA3L2B,+BAA+B"}
|