@woosh/meep-engine 3.47.0 → 3.49.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/build/bundle-worker-terrain.js +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts +1 -2
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.js +2 -4
- package/editor/view/particles/effect/ParticleGraphEditorView.js +1 -1
- package/package.json +1 -1
- package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +27 -11
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +11 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +2 -2
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +7 -7
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +8 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +11 -3
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts +26 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.js +91 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +2 -2
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +8 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts +84 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMedia.js +139 -5
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts +6 -2
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.js +29 -4
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts +10 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.js +38 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSystem.js +46 -3
- package/src/engine/network/NetworkSession.d.ts +16 -5
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +104 -7
- package/src/engine/network/README.md +27 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +40 -18
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +180 -190
- package/src/engine/network/replication/Replicator.d.ts +15 -4
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +50 -16
- package/src/engine/network/state/RecordArrivalRing.d.ts +57 -0
- package/src/engine/network/state/RecordArrivalRing.d.ts.map +1 -0
- package/src/engine/network/state/RecordArrivalRing.js +144 -0
- package/src/engine/physics/cloth/MEASUREMENTS.md +354 -0
- package/src/engine/physics/cloth/PLAN.md +85 -5
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +0 -12
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +0 -13
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +2 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +7 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +4 -15
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts +2 -1
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.js +6 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.js +20 -10
- package/src/engine/physics/cloth/playground/collide.html +5 -3
- package/src/engine/physics/cloth/playground/collide_main.js +14 -13
- package/src/engine/physics/cloth/solver/ClothState.d.ts +30 -2
- package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/ClothState.js +62 -4
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts +11 -3
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_self_find.js +52 -11
- package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts +42 -0
- package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_self_radius.js +64 -0
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +99 -24
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solver_constants.js +102 -25
- package/src/engine/physics/cloth/solver/cloth_step.d.ts +5 -1
- package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step.js +13 -3
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts +0 -1
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step_instance.js +12 -14
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +23 -4
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +36 -8
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.js +4 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts +15 -0
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +21 -0
- package/src/shade/device/pipeline/ComputePipelineManager.d.ts +20 -0
- package/src/shade/device/pipeline/ComputePipelineManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/ComputePipelineManager.js +80 -6
- package/src/shade/device/pipeline/PipelineEnquiry.d.ts +52 -0
- package/src/shade/device/pipeline/PipelineEnquiry.d.ts.map +1 -0
- package/src/shade/device/pipeline/PipelineEnquiry.js +63 -0
- package/src/shade/device/pipeline/RenderPipelineManager.d.ts +21 -0
- package/src/shade/device/pipeline/RenderPipelineManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/RenderPipelineManager.js +84 -4
- package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts +137 -0
- package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/ContactShadowLab.js +654 -0
- package/src/shade/playground/contact_shadows/README.md +126 -0
- package/src/shade/playground/contact_shadows/index.html +191 -0
- package/src/shade/playground/contact_shadows/main.d.ts +2 -0
- package/src/shade/playground/contact_shadows/main.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/main.js +888 -0
- package/src/shade/playground/contact_shadows/scenes.d.ts +48 -0
- package/src/shade/playground/contact_shadows/scenes.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/scenes.js +620 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts +36 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +245 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts +15 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +120 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts +55 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.js +216 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts +20 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.js +114 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts +11 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +90 -0
- package/src/shade/playground/contact_shadows/textures.d.ts +16 -0
- package/src/shade/playground/contact_shadows/textures.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/textures.js +123 -0
- package/src/shade/playground/particle_ecs/README.md +1 -1
- package/src/shade/playground/particle_ecs/effects/flame.json +1932 -1881
- package/src/shade/playground/particle_ecs/effects/smoke.json +99 -1
- package/src/shade/playground/particle_ecs/effects/soot.json +152 -145
- package/src/shade/playground/tonemap_sdr/README.md +90 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts +105 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.js +380 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts +32 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.js +104 -0
- package/src/shade/playground/tonemap_sdr/index.html +90 -0
- package/src/shade/playground/tonemap_sdr/main.d.ts +2 -0
- package/src/shade/playground/tonemap_sdr/main.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/main.js +306 -0
- package/src/shade/playground/tonemap_sdr/scenes.d.ts +26 -0
- package/src/shade/playground/tonemap_sdr/scenes.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/scenes.js +404 -0
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +85 -4
- package/src/shade/playground/water_refraction/README.md +26 -18
- package/src/shade/playground/water_refraction/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts +35 -3
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +208 -12
- package/src/shade/renderer/ShadeToneMappingMode.d.ts +14 -0
- package/src/shade/renderer/ShadeToneMappingMode.d.ts.map +1 -0
- package/src/shade/renderer/ShadeToneMappingMode.js +30 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +9 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +14 -0
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +5 -3
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +7 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +12 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts +8 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +12 -0
- package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
- package/src/shade/renderer/camera/GPUCameraContext.js +19 -8
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +4 -0
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.js +4 -0
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.js +4 -0
- package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_deferred_main.js +3 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts +6 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.js +13 -3
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts +9 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.js +63 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts +10 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.js +87 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts +6 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR.js +23 -5
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts +9 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.js +68 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts +10 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.js +73 -0
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +58 -9
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +35 -25
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +97 -196
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +121 -129
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +3 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +4 -0
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -0
- package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.js +4 -0
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +4 -0
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +131 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +7 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +45 -38
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +2 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +81 -79
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +2 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +5 -3
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts +21 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.js +42 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts +19 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.js +44 -0
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +23 -5
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +139 -23
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts +25 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +179 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +7 -16
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +3 -4
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +6 -23
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts +11 -0
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +14 -3
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.js +13 -3
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js +14 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts +26 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.js +52 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts +32 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.js +89 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +20 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +10 -0
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +294 -281
- package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +18 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts +8 -0
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +234 -218
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts +7 -0
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +13 -0
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts +7 -0
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.js +16 -2
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts +10 -0
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.js +13 -0
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +3 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts +16 -4
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +38 -8
- package/src/shade/renderer/particles/DESIGN.md +49 -7
- package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +453 -0
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +5 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +13 -5
- package/src/shade/renderer/particles/data/particle_emitter_record.js +2 -2
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +12 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts +60 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +156 -0
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +2 -2
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +8 -8
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +6 -4
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +7 -6
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +91 -58
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +10 -0
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +5 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +6 -0
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts +7 -0
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.js +18 -0
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +1 -0
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +11 -0
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +16 -0
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +10 -0
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +16 -0
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +32 -10
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +6 -3
- package/src/shade/renderer/postprocess/taa/TAA.d.ts +12 -0
- package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/TAA.js +15 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +13 -0
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts +31 -3
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +79 -4
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +17 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +35 -4
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts +7 -0
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +182 -169
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +20 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +18 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js +20 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts +7 -0
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +187 -170
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.js +19 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +13 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +25 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +20 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.js +6 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.js +6 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +3 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +3 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +7 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +12 -4
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.js +4 -3
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.js +4 -3
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +11 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +4 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +4 -3
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +15 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +35 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +14 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +32 -4
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +17 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +34 -4
- package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts +5 -3
- package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/chunk_restir_resolve.js +8 -3
- package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/graph_restir_di.js +1 -0
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +5 -1
- package/src/shade/renderer/restir/reservoir/shader.d.ts.map +1 -1
- package/src/shade/renderer/restir/reservoir/shader.js +7 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +7 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +13 -1
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +10 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +19 -0
- package/src/shade/renderer/scene/SceneManager.d.ts +9 -0
- package/src/shade/renderer/scene/SceneManager.d.ts.map +1 -1
- package/src/shade/renderer/scene/SceneManager.js +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.js +17 -0
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +18 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts +12 -0
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +53 -0
- package/src/shade/renderer/shader/ImageShader.d.ts +27 -8
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +70 -1
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts +21 -0
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +71 -1
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.js +45 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_screen_coordinate_to_view.js +3 -3
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -62
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +318 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +237 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +22 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts +14 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.js +28 -15
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +128 -110
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.js +33 -0
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts +4 -0
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.js +12 -1
- package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js +7 -0
- package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +108 -0
- package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.js +23 -4
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.js +56 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.js +2 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts +43 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.js +319 -0
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +33 -0
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.js +140 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts +74 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.js +166 -0
- package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +680 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts +86 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.js +178 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts +67 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.js +205 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts +14 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.js +13 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts +65 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.js +252 -0
- package/src/shade/renderer/shadow/contact/FINDINGS.md +413 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.js +105 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +39 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.js +92 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +128 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts +52 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.js +358 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts +10 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.js +12 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts +13 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.js +14 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +14 -8
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +20 -86
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts +14 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.js +79 -0
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +12 -12
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +153 -151
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts +13 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.js +48 -0
- package/src/shade/renderer/texture/GPUTextureContext.d.ts +10 -0
- package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
- package/src/shade/renderer/texture/GPUTextureContext.js +24 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +219 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +671 -0
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +26 -2
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +108 -4
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +5 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +6 -0
- package/src/shade/renderer/volumetrics/NOTES.md +50 -0
- package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.js +30 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +51 -13
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +98 -13
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts +9 -0
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/SceneVolumetrics.js +78 -68
- package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +326 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +7 -4
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +21 -9
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts +19 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.js +53 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts +12 -3
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.js +85 -48
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +4 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +4 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +4 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +21 -1
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts +98 -0
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.js +115 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts +9 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.js +24 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts +27 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.js +91 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts +35 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.js +92 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts +10 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.js +121 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +38 -3
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +311 -290
- package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.js +28 -49
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +3 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +24 -18
- package/src/shade/renderer/water/chunk_water_transport.d.ts +0 -1
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_transport.js +0 -17
- package/src/shade/renderer/water/shader_water.d.ts +4 -2
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +27 -16
- package/src/shade/renderer/water/shader_water_avboit.d.ts +0 -4
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +0 -63
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +43 -9
- package/src/engine/network/transport/Channel.d.ts +0 -85
- package/src/engine/network/transport/Channel.d.ts.map +0 -1
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts +0 -155
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/FragmentAssembler.d.ts +0 -105
- package/src/engine/network/transport/fragments/FragmentAssembler.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts +0 -103
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/fragment_send.d.ts +0 -61
- package/src/engine/network/transport/fragments/fragment_send.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/packet_size.d.ts +0 -99
- package/src/engine/network/transport/fragments/packet_size.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts +0 -6
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.js +0 -16
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.js +0 -46
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts +0 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.js +0 -127
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.js +0 -39
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
export class Channel {
|
|
2
|
-
/**
|
|
3
|
-
* @param {{
|
|
4
|
-
* transport: { send(bytes: Uint8Array, length: number): void, onReceive: Signal },
|
|
5
|
-
* max_in_flight?: number,
|
|
6
|
-
* }} options
|
|
7
|
-
* `max_in_flight` hard-caps the number of unacked outgoing seqs. It exists
|
|
8
|
-
* to keep the in-flight span well below the seq16 half-range (32768): once
|
|
9
|
-
* an unacked seq falls more than half-range behind the newest sent, the
|
|
10
|
-
* signed `seq16_distance` used for loss detection wraps and the entry can
|
|
11
|
-
* neither be acked nor declared lost — a permanent leak (and a downstream
|
|
12
|
-
* `seq_to_pending` leak in the orchestrator). Capping in-flight makes
|
|
13
|
-
* that lap impossible. Default 1024 ≫ any realistic in-flight window
|
|
14
|
-
* (RTT × send-rate) yet ≪ 32768. Only reached under a sustained one-way
|
|
15
|
-
* stall, where eviction-as-lost is the correct verdict anyway.
|
|
16
|
-
*/
|
|
17
|
-
constructor({ transport, max_in_flight }: {
|
|
18
|
-
transport: {
|
|
19
|
-
send(bytes: Uint8Array, length: number): void;
|
|
20
|
-
onReceive: Signal;
|
|
21
|
-
};
|
|
22
|
-
max_in_flight?: number;
|
|
23
|
-
});
|
|
24
|
-
/**
|
|
25
|
-
* @type {{ send(bytes: Uint8Array, length: number): void, onReceive: Signal }}
|
|
26
|
-
*/
|
|
27
|
-
transport: {
|
|
28
|
-
send(bytes: Uint8Array, length: number): void;
|
|
29
|
-
onReceive: Signal;
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Fired when an outgoing seq has been positively acknowledged by the peer.
|
|
33
|
-
* @type {Signal}
|
|
34
|
-
*/
|
|
35
|
-
onPacketAcked: Signal;
|
|
36
|
-
/**
|
|
37
|
-
* Fired when an outgoing seq has aged out of the ack window without being acked.
|
|
38
|
-
* @type {Signal}
|
|
39
|
-
*/
|
|
40
|
-
onPacketLost: Signal;
|
|
41
|
-
/**
|
|
42
|
-
* Fired when an inbound packet's payload is ready (header already stripped).
|
|
43
|
-
* Handler args: (payload: Uint8Array starting at offset 0, length: number).
|
|
44
|
-
* The Uint8Array is owned by the Channel and may be reused after the handler returns.
|
|
45
|
-
* @type {Signal}
|
|
46
|
-
*/
|
|
47
|
-
onPayload: Signal;
|
|
48
|
-
/**
|
|
49
|
-
* Wrap and send a payload. Returns the seq number assigned to it.
|
|
50
|
-
*
|
|
51
|
-
* @param {Uint8Array} payload
|
|
52
|
-
* @param {number} length payload length in bytes
|
|
53
|
-
* @returns {number} seq
|
|
54
|
-
*/
|
|
55
|
-
send(payload: Uint8Array, length: number): number;
|
|
56
|
-
/**
|
|
57
|
-
* Number of outgoing packets sent but not yet acked or marked lost.
|
|
58
|
-
* @returns {number}
|
|
59
|
-
*/
|
|
60
|
-
unacked_count(): number;
|
|
61
|
-
/**
|
|
62
|
-
* Most recent seq received from the peer, or -1 if none yet.
|
|
63
|
-
* @returns {number}
|
|
64
|
-
*/
|
|
65
|
-
latest_received_seq(): number;
|
|
66
|
-
/**
|
|
67
|
-
* Test-only: seed the next outgoing seq number. Used to fast-forward
|
|
68
|
-
* the seq counter so the seq16 wraparound can be exercised in
|
|
69
|
-
* unit tests without sending 65k packets. Do not call from production.
|
|
70
|
-
* @param {number} seq
|
|
71
|
-
*/
|
|
72
|
-
seed_outgoing_seq_for_testing(seq: number): void;
|
|
73
|
-
/**
|
|
74
|
-
* Detach this Channel from its transport. The transport.onReceive subscription
|
|
75
|
-
* is removed so the Channel stops processing inbound bytes; the Channel's own
|
|
76
|
-
* Signals are left in place (callers usually hold no references to them after
|
|
77
|
-
* dispose, so they GC with the Channel). Required before discarding a Channel
|
|
78
|
-
* whose transport will be reused — otherwise the old Channel keeps consuming
|
|
79
|
-
* inbound packets in parallel with whatever replaces it.
|
|
80
|
-
*/
|
|
81
|
-
dispose(): void;
|
|
82
|
-
#private;
|
|
83
|
-
}
|
|
84
|
-
import Signal from "../../../core/events/signal/Signal.js";
|
|
85
|
-
//# sourceMappingURL=Channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/transport/Channel.js"],"names":[],"mappings":"AA6CA;IAWI;;;;;;;;;;;;;;OAcG;IACH,0CAdW;QACV,SAAa,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QACpF,aAAiB,CAAC,EAAE,MAAM,CAAC;KACxB,EAuFH;IAnEG;;OAEG;IACH,WAFU;QAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAEpD;IA6C1B;;;OAGG;IACH,eAFU,MAAM,CAEiB;IAEjC;;;OAGG;IACH,cAFU,MAAM,CAEgB;IAEhC;;;;;OAKG;IACH,WAFU,MAAM,CAEa;IAGjC;;;;;;OAMG;IACH,cAJW,UAAU,UACV,MAAM,GACJ,MAAM,CAiDlB;IAED;;;OAGG;IACH,iBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,uBAFa,MAAM,CAIlB;IAED;;;;;OAKG;IACH,mCAFW,MAAM,QAIhB;IA+ED;;;;;;;OAOG;IACH,gBAEC;;CAiBJ;mBA9UkB,uCAAuC"}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Largest reliable-command payload that fits in a single channel packet.
|
|
3
|
-
*
|
|
4
|
-
* A command's wire form is `uint8 packet_type + uintVar logical_seq + payload`.
|
|
5
|
-
* The pipeline sends it through {@link Channel#send} directly — it does NOT
|
|
6
|
-
* fragment — so the whole thing must fit one channel packet
|
|
7
|
-
* ({@link MAX_CHANNEL_PAYLOAD_BYTES}). We reserve 11 bytes for the framing:
|
|
8
|
-
* 1 packet-type byte + up to 10 bytes of `uintVar` for `logical_seq` (its
|
|
9
|
-
* worst case; `logical_seq` grows over the session, so we budget the maximum
|
|
10
|
-
* rather than the current value). Sending a larger payload on a UDP-style
|
|
11
|
-
* transport would emit an over-MTU datagram that the network silently drops;
|
|
12
|
-
* we reject it loudly instead.
|
|
13
|
-
*
|
|
14
|
-
* @type {number}
|
|
15
|
-
*/
|
|
16
|
-
export const MAX_RELIABLE_COMMAND_PAYLOAD_BYTES: number;
|
|
17
|
-
/**
|
|
18
|
-
* Reliable, at-least-once delivery layer over a {@link Channel}.
|
|
19
|
-
*
|
|
20
|
-
* Used for messages that must arrive: chat, lobby/room state changes,
|
|
21
|
-
* level transitions, kick / disconnect notifications. Distinct from the
|
|
22
|
-
* action-stream traffic the rest of the netcode uses, which is UDP-style
|
|
23
|
-
* best-effort with per-frame back-fill compensating for losses.
|
|
24
|
-
*
|
|
25
|
-
* Wire layout (after the {@link Channel}'s 8-byte header and the
|
|
26
|
-
* `packet_type` byte that {@link NetworkPeer}'s dispatcher consumes):
|
|
27
|
-
*
|
|
28
|
-
* uintVar logical_seq sender-assigned, monotonically increasing
|
|
29
|
-
* bytes command_payload
|
|
30
|
-
*
|
|
31
|
-
* Reliability mechanism: each outgoing command goes out as one
|
|
32
|
-
* Channel.send call. The returned channel-level seq is tracked in
|
|
33
|
-
* `__unacked`. When the Channel later fires:
|
|
34
|
-
* - `onPacketAcked(seq)`: drop the entry — the command was delivered
|
|
35
|
-
* (the receiver de-duplicated by logical_seq, so a "duplicate" from
|
|
36
|
-
* a previous retransmit is harmless).
|
|
37
|
-
* - `onPacketLost(seq)`: the Channel's 33-packet ack window aged out
|
|
38
|
-
* this seq without seeing it acked. Re-send the same logical
|
|
39
|
-
* command on a fresh channel seq.
|
|
40
|
-
*
|
|
41
|
-
* Receiver side: a sliding-window de-dupe of recent `logical_seq` values.
|
|
42
|
-
* Anything seen within the last `max_received_history` is silently
|
|
43
|
-
* dropped; first-time arrivals fire `onCommand` with the payload bytes.
|
|
44
|
-
*
|
|
45
|
-
* Ordering: NOT guaranteed. Commands may arrive in any order. If you
|
|
46
|
-
* need in-order delivery (level transitions before subsequent chat),
|
|
47
|
-
* key payloads with a counter and reorder in the application handler.
|
|
48
|
-
*
|
|
49
|
-
* Lifecycle constraints:
|
|
50
|
-
* - `max_unacked` caps outstanding commands. Send throws when full
|
|
51
|
-
* (signals real backpressure — receiver gone or path is broken).
|
|
52
|
-
* - `max_received_history` caps the de-dupe set. A retransmit older
|
|
53
|
-
* than this window will be re-delivered as a duplicate to the
|
|
54
|
-
* application; not a problem in practice because the sender's
|
|
55
|
-
* `max_unacked` keeps the inflight set bounded too.
|
|
56
|
-
*
|
|
57
|
-
* Caveats:
|
|
58
|
-
* - Loss detection relies on the Channel's seq window, which advances
|
|
59
|
-
* when subsequent packets are sent. Under sustained no-traffic
|
|
60
|
-
* conditions a single lost reliable command may stay unacked
|
|
61
|
-
* indefinitely — by convention the action-stream's per-tick traffic
|
|
62
|
-
* keeps the window moving even when the application is otherwise
|
|
63
|
-
* idle. Real production code may want a timer-based retransmit
|
|
64
|
-
* fallback layered on top of this.
|
|
65
|
-
*
|
|
66
|
-
* @author Alex Goldring
|
|
67
|
-
* @copyright Company Named Limited (c) 2026
|
|
68
|
-
*/
|
|
69
|
-
export class ReliableCommandPipeline {
|
|
70
|
-
/**
|
|
71
|
-
* @param {{
|
|
72
|
-
* channel: import("./Channel.js").Channel,
|
|
73
|
-
* packet_type: number,
|
|
74
|
-
* max_unacked?: number,
|
|
75
|
-
* max_received_history?: number,
|
|
76
|
-
* max_retries?: number,
|
|
77
|
-
* }} options
|
|
78
|
-
*/
|
|
79
|
-
constructor({ channel, packet_type, max_unacked, max_received_history, max_retries, }: {
|
|
80
|
-
channel: import("./Channel.js").Channel;
|
|
81
|
-
packet_type: number;
|
|
82
|
-
max_unacked?: number;
|
|
83
|
-
max_received_history?: number;
|
|
84
|
-
max_retries?: number;
|
|
85
|
-
});
|
|
86
|
-
/** @type {import("./Channel.js").Channel} */
|
|
87
|
-
channel: import("./Channel.js").Channel;
|
|
88
|
-
/** @type {number} @readonly */
|
|
89
|
-
readonly packet_type: number;
|
|
90
|
-
/** @type {number} @readonly */
|
|
91
|
-
readonly max_unacked: number;
|
|
92
|
-
/** @type {number} @readonly */
|
|
93
|
-
readonly max_received_history: number;
|
|
94
|
-
/**
|
|
95
|
-
* Maximum retransmissions per logical command before it is dropped
|
|
96
|
-
* and {@link onCommandAbandoned} fires. Bounded so a permanently-
|
|
97
|
-
* black-holed peer can't pin retransmit traffic on the channel
|
|
98
|
-
* forever. The default (16) tolerates roughly half a second of
|
|
99
|
-
* sustained loss at typical channel cadences before giving up.
|
|
100
|
-
* @type {number} @readonly
|
|
101
|
-
*/
|
|
102
|
-
readonly max_retries: number;
|
|
103
|
-
/**
|
|
104
|
-
* Fired when a brand-new logical command arrives (not a duplicate).
|
|
105
|
-
* Args: `(buf, payload_offset, payload_length)`. The buffer is
|
|
106
|
-
* shared scratch; consumers must copy bytes if they need them to
|
|
107
|
-
* outlive the handler.
|
|
108
|
-
* @type {Signal}
|
|
109
|
-
*/
|
|
110
|
-
onCommand: Signal;
|
|
111
|
-
/**
|
|
112
|
-
* Fired when a sent command has been retransmitted `max_retries`
|
|
113
|
-
* times without an ack and is being given up on. Args:
|
|
114
|
-
* `(logical_seq)`. Subscribers typically surface this as a "command
|
|
115
|
-
* failed to deliver" event to the application, or treat it as a
|
|
116
|
-
* hard signal to tear down the session.
|
|
117
|
-
* @type {Signal}
|
|
118
|
-
*/
|
|
119
|
-
onCommandAbandoned: Signal;
|
|
120
|
-
/**
|
|
121
|
-
* Send a logical command. Returns the assigned `logical_seq` (useful
|
|
122
|
-
* for application-level diagnostics; the receiver dedups internally
|
|
123
|
-
* regardless).
|
|
124
|
-
*
|
|
125
|
-
* @param {Uint8Array} payload
|
|
126
|
-
* @param {number} length
|
|
127
|
-
* @returns {number}
|
|
128
|
-
*/
|
|
129
|
-
send(payload: Uint8Array, length: number): number;
|
|
130
|
-
/**
|
|
131
|
-
* Called by the orchestrator (typically {@link NetworkPeer}'s
|
|
132
|
-
* dispatcher) when a packet of this pipeline's type arrives. `buf`
|
|
133
|
-
* is positioned just past the packet-type byte.
|
|
134
|
-
*
|
|
135
|
-
* @param {BinaryBuffer} buf
|
|
136
|
-
* @param {number} total_length full transport-level payload length,
|
|
137
|
-
* including the consumed packet-type byte
|
|
138
|
-
*/
|
|
139
|
-
handle_inbound(buf: BinaryBuffer, total_length: number): void;
|
|
140
|
-
/**
|
|
141
|
-
* Number of commands sent that haven't yet been acked. Useful for
|
|
142
|
-
* backpressure / progress UI.
|
|
143
|
-
* @returns {number}
|
|
144
|
-
*/
|
|
145
|
-
unacked_count(): number;
|
|
146
|
-
/**
|
|
147
|
-
* Drop subscriptions and clear state. Required before discarding a
|
|
148
|
-
* pipeline whose channel will outlive it.
|
|
149
|
-
*/
|
|
150
|
-
dispose(): void;
|
|
151
|
-
#private;
|
|
152
|
-
}
|
|
153
|
-
import Signal from "../../../core/events/signal/Signal.js";
|
|
154
|
-
import { BinaryBuffer } from "../../../core/binary/BinaryBuffer.js";
|
|
155
|
-
//# sourceMappingURL=ReliableCommandPipeline.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReliableCommandPipeline.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/transport/ReliableCommandPipeline.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AACH,iDAFU,MAAM,CAEiE;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH;IAsBI;;;;;;;;OAQG;IACH,uFARW;QACV,OAAW,EAAE,OAAO,cAAc,EAAE,OAAO,CAAC;QAC5C,WAAe,EAAE,MAAM,CAAC;QACxB,WAAe,CAAC,EAAE,MAAM,CAAC;QACzB,oBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAe,CAAC,EAAE,MAAM,CAAC;KACtB,EAmFH;IAnEG,6CAA6C;IAC7C,SADW,OAAO,cAAc,EAAE,OAAO,CACnB;IACtB,+BAA+B;IAC/B,sBADW,MAAM,CACa;IAC9B,+BAA+B;IAC/B,sBADW,MAAM,CACa;IAC9B,+BAA+B;IAC/B,+BADW,MAAM,CAC+B;IAChD;;;;;;;OAOG;IACH,sBAFU,MAAM,CAEc;IA2B9B;;;;;;OAMG;IACH,WAFU,MAAM,CAEa;IAE7B;;;;;;;OAOG;IACH,oBAFU,MAAM,CAEsB;IAS1C;;;;;;;;OAQG;IACH,cAJW,UAAU,UACV,MAAM,GACJ,MAAM,CA+BlB;IAED;;;;;;;;OAQG;IACH,oBAJW,YAAY,gBACZ,MAAM,QAwChB;IAED;;;;OAIG;IACH,iBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,gBAMC;;CAsCJ;mBA5UkB,uCAAuC;6BAD7B,sCAAsC"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-peer reassembly buffer for fragmented packets.
|
|
3
|
-
*
|
|
4
|
-
* When a sender's logical payload exceeds the MTU it gets split into
|
|
5
|
-
* multiple {@link NetworkPacketType.FRAGMENT} packets, each carrying a
|
|
6
|
-
* `(message_id, chunk_index, total_chunks, chunk_bytes)` tuple. The
|
|
7
|
-
* receiver feeds those tuples to {@link receive}; once all chunks for a
|
|
8
|
-
* `message_id` have arrived, `receive` returns the reassembled bytes
|
|
9
|
-
* for the upper layer to dispatch.
|
|
10
|
-
*
|
|
11
|
-
* Loss recovery via NACK: a partially-received message that doesn't
|
|
12
|
-
* complete within `nack_initial_delay_ms` triggers a NACK back to the
|
|
13
|
-
* sender listing the missing chunk indices. NACK rounds repeat at
|
|
14
|
-
* `nack_resend_interval_ms` up to `nack_max_rounds`; after that the
|
|
15
|
-
* receiver gives up on the message and the sender's retention ages
|
|
16
|
-
* out independently. Wire the per-tick driver via {@link service}.
|
|
17
|
-
*
|
|
18
|
-
* Loss-of-last-resort model: if even the NACK retries fail (link is
|
|
19
|
-
* dead, sender retention was evicted, etc.) the message never
|
|
20
|
-
* completes and FIFO-evicts when the pending cap is hit. Upper layers
|
|
21
|
-
* are still expected to tolerate occasional missing messages — NACK
|
|
22
|
-
* recovers most loss, not all.
|
|
23
|
-
*
|
|
24
|
-
* @author Alex Goldring
|
|
25
|
-
* @copyright Company Named Limited (c) 2026
|
|
26
|
-
*/
|
|
27
|
-
export class FragmentAssembler {
|
|
28
|
-
/**
|
|
29
|
-
* @param {{
|
|
30
|
-
* max_pending_messages?: number,
|
|
31
|
-
* max_message_size?: number,
|
|
32
|
-
* nack_initial_delay_ms?: number,
|
|
33
|
-
* nack_resend_interval_ms?: number,
|
|
34
|
-
* nack_max_rounds?: number,
|
|
35
|
-
* }} [options]
|
|
36
|
-
* `max_pending_messages` caps the number of in-flight reassembly
|
|
37
|
-
* slots; when full, the oldest pending message is evicted to make
|
|
38
|
-
* room. `max_message_size` rejects reassembled messages larger than
|
|
39
|
-
* this many bytes (defensive against a malicious peer or a wedged
|
|
40
|
-
* sender). The `nack_*` knobs control the retransmit-request timer
|
|
41
|
-
* driven by {@link service}.
|
|
42
|
-
*/
|
|
43
|
-
constructor({ max_pending_messages, max_message_size, nack_initial_delay_ms, nack_resend_interval_ms, nack_max_rounds, }?: {
|
|
44
|
-
max_pending_messages?: number;
|
|
45
|
-
max_message_size?: number;
|
|
46
|
-
nack_initial_delay_ms?: number;
|
|
47
|
-
nack_resend_interval_ms?: number;
|
|
48
|
-
nack_max_rounds?: number;
|
|
49
|
-
});
|
|
50
|
-
/** @type {number} @readonly */
|
|
51
|
-
readonly max_pending_messages: number;
|
|
52
|
-
/** @type {number} @readonly */
|
|
53
|
-
readonly max_message_size: number;
|
|
54
|
-
/** @type {number} @readonly */
|
|
55
|
-
readonly nack_initial_delay_ms: number;
|
|
56
|
-
/** @type {number} @readonly */
|
|
57
|
-
readonly nack_resend_interval_ms: number;
|
|
58
|
-
/** @type {number} @readonly */
|
|
59
|
-
readonly nack_max_rounds: number;
|
|
60
|
-
/**
|
|
61
|
-
* Process an incoming fragment. Returns the reassembled bytes when
|
|
62
|
-
* the message is complete, or null otherwise.
|
|
63
|
-
*
|
|
64
|
-
* @param {number} message_id sender-assigned message id
|
|
65
|
-
* @param {number} chunk_index 0-based
|
|
66
|
-
* @param {number} total_chunks expected number of chunks (>= 1)
|
|
67
|
-
* @param {Uint8Array} chunk_bytes source byte array
|
|
68
|
-
* @param {number} chunk_offset start offset within `chunk_bytes`
|
|
69
|
-
* @param {number} chunk_length number of bytes from `chunk_offset` to consume
|
|
70
|
-
* @returns {Uint8Array|null}
|
|
71
|
-
*/
|
|
72
|
-
receive(message_id: number, chunk_index: number, total_chunks: number, chunk_bytes: Uint8Array, chunk_offset: number, chunk_length: number): Uint8Array | null;
|
|
73
|
-
/**
|
|
74
|
-
* Per-tick maintenance: drive NACK emission for pending messages
|
|
75
|
-
* whose initial delay has elapsed and whose resend interval has
|
|
76
|
-
* lapsed, and drop messages whose NACK budget is exhausted.
|
|
77
|
-
*
|
|
78
|
-
* On the first service tick that observes a pending entry, its
|
|
79
|
-
* arrival is timestamped (so the initial delay is measured from
|
|
80
|
-
* `now_ms` of that tick rather than from the actual wall-clock
|
|
81
|
-
* arrival of the first chunk — at typical tick rates the difference
|
|
82
|
-
* is one tick, negligible vs. the 100 ms initial delay).
|
|
83
|
-
*
|
|
84
|
-
* `on_nack` is invoked once per eligible message with
|
|
85
|
-
* `(message_id, indices, count)`: the missing chunks in index order, but
|
|
86
|
-
* never more of them than the message has delivered. The `indices` argument is a
|
|
87
|
-
* reused internal Uint8Array; only `indices[0..count)` is valid
|
|
88
|
-
* and only for the duration of the call.
|
|
89
|
-
*
|
|
90
|
-
* @param {number} now_ms
|
|
91
|
-
* @param {function(number, Uint8Array, number): void} on_nack
|
|
92
|
-
*/
|
|
93
|
-
service(now_ms: number, on_nack: (arg0: number, arg1: Uint8Array, arg2: number) => void): void;
|
|
94
|
-
/**
|
|
95
|
-
* Number of in-flight reassembly slots currently held.
|
|
96
|
-
* @returns {number}
|
|
97
|
-
*/
|
|
98
|
-
pending_count(): number;
|
|
99
|
-
/**
|
|
100
|
-
* Drop all in-flight reassembly state. Useful on peer disconnect.
|
|
101
|
-
*/
|
|
102
|
-
clear(): void;
|
|
103
|
-
#private;
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=FragmentAssembler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FragmentAssembler.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/network/transport/fragments/FragmentAssembler.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IAmCI;;;;;;;;;;;;;;OAcG;IACH,2HAdW;QACV,oBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,gBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,qBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,uBAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,eAAmB,CAAC,EAAE,MAAM,CAAC;KAC1B,EAwDH;IAnCG,+BAA+B;IAC/B,+BADW,MAAM,CAC+B;IAChD,+BAA+B;IAC/B,2BADW,MAAM,CACuB;IACxC,+BAA+B;IAC/B,gCADW,MAAM,CACiC;IAClD,+BAA+B;IAC/B,kCADW,MAAM,CACqC;IACtD,+BAA+B;IAC/B,0BADW,MAAM,CACqB;IA4B1C;;;;;;;;;;;OAWG;IACH,oBARW,MAAM,eACN,MAAM,gBACN,MAAM,eACN,UAAU,gBACV,MAAM,gBACN,MAAM,GACJ,UAAU,GAAC,IAAI,CAuF3B;IA0BD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,gBAHW,MAAM,kBACG,MAAM,QAAE,UAAU,QAAE,MAAM,KAAG,IAAI,QA+CpD;IAED;;;OAGG;IACH,iBAFa,MAAM,CAIlB;IAED;;OAEG;IACH,cAMC;;CAQJ"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-peer sender-side retention buffer for fragmented message bytes,
|
|
3
|
-
* used to satisfy NACK retransmits from the peer's {@link FragmentAssembler}.
|
|
4
|
-
*
|
|
5
|
-
* Lifecycle:
|
|
6
|
-
* 1. {@link retain} — called on each fragmented send; copies the source
|
|
7
|
-
* bytes into the retention so they're available to retransmit. If
|
|
8
|
-
* the per-peer slot cap is hit, the oldest retained entry is FIFO-
|
|
9
|
-
* evicted.
|
|
10
|
-
* 2. {@link consume_nack} — looks up retained bytes for a NACK target
|
|
11
|
-
* and bumps the retry counter. Returns `null` if the entry is gone
|
|
12
|
-
* (aged out, evicted, or out of retry budget — in which case the
|
|
13
|
-
* entry is dropped here too).
|
|
14
|
-
* 3. {@link service} — call once per tick to age out entries older
|
|
15
|
-
* than `max_age_ms`.
|
|
16
|
-
* 4. {@link clear} — drop everything; call on peer disconnect.
|
|
17
|
-
*
|
|
18
|
-
* Memory cost: each retained entry holds a fresh copy of its source
|
|
19
|
-
* payload (the upstream send buffer is a reused scratch). With the
|
|
20
|
-
* default 16 slots × up-to-64 KiB cap on the receiver, worst case is
|
|
21
|
-
* 1 MiB per peer; steady-state is empty because steady traffic fits in
|
|
22
|
-
* one packet and bypasses fragmentation.
|
|
23
|
-
*
|
|
24
|
-
* @author Alex Goldring
|
|
25
|
-
* @copyright Company Named Limited (c) 2026
|
|
26
|
-
*/
|
|
27
|
-
export class FragmentRetention {
|
|
28
|
-
/**
|
|
29
|
-
* @param {{
|
|
30
|
-
* max_messages?: number,
|
|
31
|
-
* max_age_ms?: number,
|
|
32
|
-
* max_retries?: number,
|
|
33
|
-
* }} [options]
|
|
34
|
-
* `max_messages` caps simultaneously-retained messages; oldest is
|
|
35
|
-
* FIFO-evicted on overflow. `max_age_ms` is the per-entry TTL.
|
|
36
|
-
* `max_retries` caps how many NACK retransmit rounds a single
|
|
37
|
-
* retained message can satisfy before being dropped.
|
|
38
|
-
*/
|
|
39
|
-
constructor({ max_messages, max_age_ms, max_retries, }?: {
|
|
40
|
-
max_messages?: number;
|
|
41
|
-
max_age_ms?: number;
|
|
42
|
-
max_retries?: number;
|
|
43
|
-
});
|
|
44
|
-
/** @type {number} @readonly */
|
|
45
|
-
readonly max_messages: number;
|
|
46
|
-
/** @type {number} @readonly */
|
|
47
|
-
readonly max_age_ms: number;
|
|
48
|
-
/** @type {number} @readonly */
|
|
49
|
-
readonly max_retries: number;
|
|
50
|
-
/**
|
|
51
|
-
* Copy `payload[0..length)` into retention under `message_id`.
|
|
52
|
-
* Evicts the oldest retained entry if `max_messages` is exceeded.
|
|
53
|
-
*
|
|
54
|
-
* If a retained entry already exists for `message_id` (only legitimate
|
|
55
|
-
* cause: uint16 wrap), the old entry is dropped first so the FIFO
|
|
56
|
-
* position and retry budget restart from the new send.
|
|
57
|
-
*
|
|
58
|
-
* @param {number} message_id
|
|
59
|
-
* @param {Uint8Array} payload source bytes (caller may overwrite after return)
|
|
60
|
-
* @param {number} length number of bytes from `payload[0]` to copy
|
|
61
|
-
* @param {number} now_ms monotonic timestamp for age-out
|
|
62
|
-
*/
|
|
63
|
-
retain(message_id: number, payload: Uint8Array, length: number, now_ms: number): void;
|
|
64
|
-
/**
|
|
65
|
-
* Mark a NACK round for `message_id` and return the retained entry
|
|
66
|
-
* so the caller can re-emit the missing chunks. Returns `null` if
|
|
67
|
-
* no entry exists, or if the per-message retry budget is now
|
|
68
|
-
* exhausted (in which case the entry is dropped).
|
|
69
|
-
*
|
|
70
|
-
* @param {number} message_id
|
|
71
|
-
* @returns {{payload: Uint8Array, length: number}|null}
|
|
72
|
-
*/
|
|
73
|
-
consume_nack(message_id: number): {
|
|
74
|
-
payload: Uint8Array;
|
|
75
|
-
length: number;
|
|
76
|
-
} | null;
|
|
77
|
-
/**
|
|
78
|
-
* Per-tick maintenance: evict any entry older than `max_age_ms`.
|
|
79
|
-
*
|
|
80
|
-
* The FIFO is in strict insertion order, so we can stop at the first
|
|
81
|
-
* still-fresh entry rather than scanning the whole map.
|
|
82
|
-
*
|
|
83
|
-
* @param {number} now_ms
|
|
84
|
-
*/
|
|
85
|
-
service(now_ms: number): void;
|
|
86
|
-
/**
|
|
87
|
-
* Number of currently-retained messages.
|
|
88
|
-
* @returns {number}
|
|
89
|
-
*/
|
|
90
|
-
size(): number;
|
|
91
|
-
/**
|
|
92
|
-
* Whether `message_id` is currently retained.
|
|
93
|
-
* @param {number} message_id
|
|
94
|
-
* @returns {boolean}
|
|
95
|
-
*/
|
|
96
|
-
has(message_id: number): boolean;
|
|
97
|
-
/**
|
|
98
|
-
* Drop every retained entry. Use on peer disconnect.
|
|
99
|
-
*/
|
|
100
|
-
clear(): void;
|
|
101
|
-
#private;
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=FragmentRetention.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FragmentRetention.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/network/transport/fragments/FragmentRetention.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IAUI;;;;;;;;;;OAUG;IACH,yDAVW;QACV,YAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAe,CAAC,EAAE,MAAM,CAAC;KACtB,EA6BH;IAdG,+BAA+B;IAC/B,uBADW,MAAM,CACe;IAChC,+BAA+B;IAC/B,qBADW,MAAM,CACW;IAC5B,+BAA+B;IAC/B,sBADW,MAAM,CACa;IAWlC;;;;;;;;;;;;OAYG;IACH,mBALW,MAAM,WACN,UAAU,UACV,MAAM,UACN,MAAM,QAuBhB;IAED;;;;;;;;OAQG;IACH,yBAHW,MAAM,GACJ;QAAC,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,GAAC,IAAI,CAYtD;IAED;;;;;;;OAOG;IACH,gBAFW,MAAM,QAehB;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;OAEG;IACH,cAGC;;CAQJ"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Send a logical payload through a callback, splitting into fragment
|
|
3
|
-
* packets if it exceeds the channel's single-packet capacity.
|
|
4
|
-
*
|
|
5
|
-
* Layout of each emitted fragment packet (before the Channel adds its
|
|
6
|
-
* 8-byte header):
|
|
7
|
-
*
|
|
8
|
-
* uint8 FRAGMENT_PACKET_TYPE
|
|
9
|
-
* uint16 message_id (little-endian)
|
|
10
|
-
* uint8 chunk_index
|
|
11
|
-
* uint8 total_chunks
|
|
12
|
-
* bytes chunk_payload
|
|
13
|
-
*
|
|
14
|
-
* The chunk_payload bytes are slices of the original logical payload,
|
|
15
|
-
* concatenated in chunk_index order they reconstruct the original
|
|
16
|
-
* payload byte-for-byte. The logical payload's own packet-type byte is
|
|
17
|
-
* the first byte of chunk 0 and is preserved by the reassembly.
|
|
18
|
-
*
|
|
19
|
-
* Single-packet messages (payload <= MAX_CHANNEL_PAYLOAD_BYTES) are sent
|
|
20
|
-
* as-is with NO fragmentation header — the receiver dispatches them
|
|
21
|
-
* normally via the FIRST byte. Fragmentation overhead only applies when
|
|
22
|
-
* the payload genuinely doesn't fit.
|
|
23
|
-
*
|
|
24
|
-
* @param {Uint8Array} payload
|
|
25
|
-
* @param {number} payload_length
|
|
26
|
-
* @param {number} message_id sender-assigned, unique per logical message
|
|
27
|
-
* @param {number} fragment_packet_type packet-type byte for fragment packets
|
|
28
|
-
* @param {Uint8Array} scratch reusable scratch buffer; must be >= MAX_CHANNEL_PAYLOAD_BYTES
|
|
29
|
-
* @param {function(Uint8Array, number): void} send_fn
|
|
30
|
-
* invoked once per emitted packet — single send for non-fragmented case,
|
|
31
|
-
* N sends for fragmented case
|
|
32
|
-
*/
|
|
33
|
-
export function send_fragmented(payload: Uint8Array, payload_length: number, message_id: number, fragment_packet_type: number, scratch: Uint8Array, send_fn: (arg0: Uint8Array, arg1: number) => void): void;
|
|
34
|
-
/**
|
|
35
|
-
* Number of chunks {@link send_fragmented} splits a payload of `payload_length` bytes into — the
|
|
36
|
-
* chunk indices a receiver may ask to have re-sent are `[0, count)`.
|
|
37
|
-
*
|
|
38
|
-
* @param {number} payload_length
|
|
39
|
-
* @returns {number}
|
|
40
|
-
*/
|
|
41
|
-
export function fragment_chunk_count(payload_length: number): number;
|
|
42
|
-
/**
|
|
43
|
-
* Re-emit a single fragment chunk for a previously-sent fragmented
|
|
44
|
-
* message. Used by the NACK retransmit path: the sender's
|
|
45
|
-
* {@link FragmentRetention} keeps the source bytes so any chunk can be
|
|
46
|
-
* deterministically rebuilt.
|
|
47
|
-
*
|
|
48
|
-
* The wire layout matches what {@link send_fragmented} would have
|
|
49
|
-
* produced for the same `(message_id, chunk_index, total_chunks)` —
|
|
50
|
-
* receivers can't tell a retransmit from an original.
|
|
51
|
-
*
|
|
52
|
-
* @param {Uint8Array} payload retained source bytes
|
|
53
|
-
* @param {number} payload_length
|
|
54
|
-
* @param {number} message_id
|
|
55
|
-
* @param {number} chunk_index must be < derived total_chunks; silently ignored otherwise
|
|
56
|
-
* @param {number} fragment_packet_type
|
|
57
|
-
* @param {Uint8Array} scratch reusable scratch; must be >= MAX_CHANNEL_PAYLOAD_BYTES
|
|
58
|
-
* @param {function(Uint8Array, number): void} send_fn
|
|
59
|
-
*/
|
|
60
|
-
export function resend_fragment_chunk(payload: Uint8Array, payload_length: number, message_id: number, chunk_index: number, fragment_packet_type: number, scratch: Uint8Array, send_fn: (arg0: Uint8Array, arg1: number) => void): void;
|
|
61
|
-
//# sourceMappingURL=fragment_send.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fragment_send.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/network/transport/fragments/fragment_send.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,yCATW,UAAU,kBACV,MAAM,cACN,MAAM,wBACN,MAAM,WACN,UAAU,kBACD,UAAU,QAAE,MAAM,KAAG,IAAI,QAkD5C;AAED;;;;;;GAMG;AACH,qDAHW,MAAM,GACJ,MAAM,CAQlB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,+CARW,UAAU,kBACV,MAAM,cACN,MAAM,eACN,MAAM,wBACN,MAAM,WACN,UAAU,kBACD,UAAU,QAAE,MAAM,KAAG,IAAI,QAqC5C"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Packet-size constants for the fragmentation layer.
|
|
3
|
-
*
|
|
4
|
-
* The target transport MTU is 1200 bytes (Quake / Source / Glenn Fiedler's
|
|
5
|
-
* Networked Physics recommend ~1200 to stay under typical PMTU after IP/UDP
|
|
6
|
-
* headers; ethernet 1500 - 40 IPv6 - 8 UDP = 1452 in the best case, but
|
|
7
|
-
* intermediate hops with tunnelling, IPv6 extension headers, or DSLite
|
|
8
|
-
* routinely shave this down — 1200 is the safe number).
|
|
9
|
-
*
|
|
10
|
-
* Above this, the application's logical payload must be split into chunks
|
|
11
|
-
* via {@link send_fragmented} and reassembled on the receiver via
|
|
12
|
-
* {@link FragmentAssembler}.
|
|
13
|
-
*
|
|
14
|
-
* Header overhead breakdown for a fragment packet, from the transport's
|
|
15
|
-
* point of view:
|
|
16
|
-
* - {@link Channel} adds 9 bytes (seq + ack_latest + ack_bitfield + ack_present).
|
|
17
|
-
* - The FRAGMENT packet type byte = 1 byte.
|
|
18
|
-
* - Fragment header (message_id uint16 + chunk_index uint8 + total_chunks
|
|
19
|
-
* uint8) = 4 bytes.
|
|
20
|
-
* Total overhead per fragment = 14 bytes; payload capacity per fragment =
|
|
21
|
-
* 1200 - 14 = 1186 bytes.
|
|
22
|
-
*
|
|
23
|
-
* For a logical message that fits in a single packet (no fragmentation
|
|
24
|
-
* needed), only the Channel header overhead applies — the payload starts
|
|
25
|
-
* with its own packet-type byte (e.g. ACTION_STREAM) and is sent directly.
|
|
26
|
-
*
|
|
27
|
-
* @author Alex Goldring
|
|
28
|
-
* @copyright Company Named Limited (c) 2026
|
|
29
|
-
*/
|
|
30
|
-
/** Target transport MTU. */
|
|
31
|
-
export const MTU_BYTES: 1200;
|
|
32
|
-
/** Channel layer's per-packet header size. Must match {@link Channel}'s HEADER_SIZE. */
|
|
33
|
-
export const CHANNEL_HEADER_BYTES: 9;
|
|
34
|
-
/**
|
|
35
|
-
* Bytes the Channel reserves for the actual payload (no fragmentation):
|
|
36
|
-
* MTU minus the channel header.
|
|
37
|
-
*/
|
|
38
|
-
export const MAX_CHANNEL_PAYLOAD_BYTES: number;
|
|
39
|
-
/**
|
|
40
|
-
* Fragment header bytes within the channel payload:
|
|
41
|
-
* - 1 byte for the FRAGMENT packet-type marker
|
|
42
|
-
* - 2 bytes for message_id (uint16)
|
|
43
|
-
* - 1 byte for chunk_index (uint8)
|
|
44
|
-
* - 1 byte for total_chunks (uint8)
|
|
45
|
-
*/
|
|
46
|
-
export const FRAGMENT_HEADER_BYTES: 5;
|
|
47
|
-
/** Maximum number of payload bytes per fragment packet. */
|
|
48
|
-
export const MAX_FRAGMENT_CHUNK_BYTES: number;
|
|
49
|
-
/** Maximum number of chunks in a single logical message (limited by uint8 total_chunks). */
|
|
50
|
-
export const MAX_CHUNKS_PER_MESSAGE: 255;
|
|
51
|
-
/** Largest single logical payload supportable by this fragmentation scheme. */
|
|
52
|
-
export const MAX_LOGICAL_MESSAGE_BYTES: number;
|
|
53
|
-
/**
|
|
54
|
-
* NACK retransmit timing.
|
|
55
|
-
*
|
|
56
|
-
* FRAGMENT_NACK_INITIAL_DELAY_MS — how long the receiver waits after the
|
|
57
|
-
* first chunk of a message arrives before NACKing the missing chunks.
|
|
58
|
-
* Trades off latency-of-recovery against premature NACKs for chunks
|
|
59
|
-
* that were just slightly late.
|
|
60
|
-
* FRAGMENT_NACK_RESEND_INTERVAL_MS — period between NACK retries when a
|
|
61
|
-
* message remains incomplete.
|
|
62
|
-
* FRAGMENT_NACK_MAX_ROUNDS — after this many NACK rounds without
|
|
63
|
-
* completion, the receiver drops the message; the sender's retention
|
|
64
|
-
* ages out independently.
|
|
65
|
-
*
|
|
66
|
-
* 75 ms initial delay is sized for the consumer mobile RTT bands measured
|
|
67
|
-
* across US / EU / China in 2024–2025: 5G median 15–45 ms, 4G median
|
|
68
|
-
* 30–55 ms, per-path jitter <10 ms for the majority of long-lived
|
|
69
|
-
* connections. 75 ms sits comfortably above worst-case (4G median + jitter
|
|
70
|
-
* + wire time for a small burst) so legitimate stragglers land before the
|
|
71
|
-
* NACK fires, while keeping recovery latency on real loss to ~75 ms + 1
|
|
72
|
-
* RTT. On worst-case paths the receiver may occasionally NACK chunks
|
|
73
|
-
* still in transit; the receiver-side dedup absorbs the duplicate
|
|
74
|
-
* retransmits.
|
|
75
|
-
*/
|
|
76
|
-
export const FRAGMENT_NACK_INITIAL_DELAY_MS: 75;
|
|
77
|
-
export const FRAGMENT_NACK_RESEND_INTERVAL_MS: 75;
|
|
78
|
-
export const FRAGMENT_NACK_MAX_ROUNDS: 3;
|
|
79
|
-
/**
|
|
80
|
-
* Sender-side retention bounds. The sender keeps a copy of each fragmented
|
|
81
|
-
* message's bytes so it can satisfy NACK retransmits. Retention is
|
|
82
|
-
* FIFO-evicted at `FRAGMENT_RETENTION_MAX_MESSAGES` and age-evicted at
|
|
83
|
-
* `FRAGMENT_RETENTION_MAX_AGE_MS`.
|
|
84
|
-
*
|
|
85
|
-
* Worst-case memory per peer: `FRAGMENT_RETENTION_MAX_MESSAGES *
|
|
86
|
-
* max_message_size` bytes. With the FragmentAssembler default of 64 KiB,
|
|
87
|
-
* that's 1 MiB per peer at saturation; steady-state retention is empty
|
|
88
|
-
* because steady traffic fits in one packet and bypasses fragmentation.
|
|
89
|
-
*
|
|
90
|
-
* `FRAGMENT_RETENTION_MAX_RETRIES` is how many NACKs a retained message is
|
|
91
|
-
* repaired for. A NACK re-sends each chunk of the message at most once, so
|
|
92
|
-
* whatever a peer asks, repair costs at most this many copies of a message
|
|
93
|
-
* the sender chose to send. It matches the receiver's
|
|
94
|
-
* `FRAGMENT_NACK_MAX_ROUNDS`: an honest receiver never asks more often.
|
|
95
|
-
*/
|
|
96
|
-
export const FRAGMENT_RETENTION_MAX_AGE_MS: 1500;
|
|
97
|
-
export const FRAGMENT_RETENTION_MAX_MESSAGES: 16;
|
|
98
|
-
export const FRAGMENT_RETENTION_MAX_RETRIES: 3;
|
|
99
|
-
//# sourceMappingURL=packet_size.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packet_size.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/network/transport/fragments/packet_size.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,4BAA4B;AAC5B,6BAA8B;AAE9B,wFAAwF;AACxF,qCAAsC;AAEtC;;;GAGG;AACH,+CAA0E;AAE1E;;;;;;GAMG;AACH,sCAAuC;AAEvC,2DAA2D;AAC3D,8CAA0F;AAE1F,4FAA4F;AAC5F,yCAA0C;AAE1C,+EAA+E;AAC/E,+CAA2F;AAE3F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,gDAAiD;AACjD,kDAAmD;AACnD,yCAA0C;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,iDAAkD;AAClD,iDAAkD;AAClD,+CAAgD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_RRTAndODTFit.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.js"],"names":[],"mappings":"AAEA;;GAEG;AACH,2CAUI;0BAfsB,gCAAgC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* source: https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs
|
|
5
|
-
*/
|
|
6
|
-
export const chunk_RRTAndODTFit = CodeChunk.from(
|
|
7
|
-
// language=WGSL
|
|
8
|
-
`
|
|
9
|
-
fn RRTAndODTFit( color: vec3<f32> ) -> vec3<f32> {
|
|
10
|
-
|
|
11
|
-
let a = color * ( color + 0.0245786 ) - 0.000090537;
|
|
12
|
-
let b = color * ( 0.983729 * color + 0.4329510 ) + 0.238081;
|
|
13
|
-
|
|
14
|
-
return a / b;
|
|
15
|
-
|
|
16
|
-
}`);
|