@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.
Files changed (619) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/particles/effect/ParticleReferenceSimulation.d.ts +1 -2
  3. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
  4. package/editor/particles/effect/ParticleReferenceSimulation.js +2 -4
  5. package/editor/view/particles/effect/ParticleGraphEditorView.js +1 -1
  6. package/package.json +1 -1
  7. package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +27 -11
  8. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  9. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +11 -0
  10. package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +2 -2
  11. package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
  12. package/src/engine/graphics/ecs/particles/ParticleEffect.js +7 -7
  13. package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +8 -0
  14. package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -1
  15. package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +11 -3
  16. package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts +26 -0
  17. package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts.map +1 -0
  18. package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.js +91 -0
  19. package/src/engine/graphics3/GPUParticleEmitterSystem.js +2 -2
  20. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
  21. package/src/engine/graphics3/GraphicsEngine.js +8 -1
  22. package/src/engine/graphics3/ParticipatingMedia.d.ts +84 -1
  23. package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
  24. package/src/engine/graphics3/ParticipatingMedia.js +139 -5
  25. package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts +6 -2
  26. package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts.map +1 -1
  27. package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.js +29 -4
  28. package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts +10 -0
  29. package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts.map +1 -0
  30. package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.js +38 -0
  31. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
  32. package/src/engine/graphics3/ParticipatingMediaSystem.js +46 -3
  33. package/src/engine/network/NetworkSession.d.ts +16 -5
  34. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  35. package/src/engine/network/NetworkSession.js +104 -7
  36. package/src/engine/network/README.md +27 -1
  37. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +40 -18
  38. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  39. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +180 -190
  40. package/src/engine/network/replication/Replicator.d.ts +15 -4
  41. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  42. package/src/engine/network/replication/Replicator.js +50 -16
  43. package/src/engine/network/state/RecordArrivalRing.d.ts +57 -0
  44. package/src/engine/network/state/RecordArrivalRing.d.ts.map +1 -0
  45. package/src/engine/network/state/RecordArrivalRing.js +144 -0
  46. package/src/engine/physics/cloth/MEASUREMENTS.md +354 -0
  47. package/src/engine/physics/cloth/PLAN.md +85 -5
  48. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +0 -12
  49. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
  50. package/src/engine/physics/cloth/ecs/ClothInstance.js +0 -13
  51. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +2 -1
  52. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
  53. package/src/engine/physics/cloth/ecs/ClothSystem.js +7 -1
  54. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  55. package/src/engine/physics/cloth/ecs/ClothWorld.js +4 -15
  56. package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts +2 -1
  57. package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts.map +1 -1
  58. package/src/engine/physics/cloth/ecs/WorkerClothSystem.js +6 -1
  59. package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
  60. package/src/engine/physics/cloth/ecs/cloth_build_rows.js +20 -10
  61. package/src/engine/physics/cloth/playground/collide.html +5 -3
  62. package/src/engine/physics/cloth/playground/collide_main.js +14 -13
  63. package/src/engine/physics/cloth/solver/ClothState.d.ts +30 -2
  64. package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
  65. package/src/engine/physics/cloth/solver/ClothState.js +62 -4
  66. package/src/engine/physics/cloth/solver/cloth_self_find.d.ts +11 -3
  67. package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -1
  68. package/src/engine/physics/cloth/solver/cloth_self_find.js +52 -11
  69. package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts +42 -0
  70. package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts.map +1 -0
  71. package/src/engine/physics/cloth/solver/cloth_self_radius.js +64 -0
  72. package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +99 -24
  73. package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -1
  74. package/src/engine/physics/cloth/solver/cloth_solver_constants.js +102 -25
  75. package/src/engine/physics/cloth/solver/cloth_step.d.ts +5 -1
  76. package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
  77. package/src/engine/physics/cloth/solver/cloth_step.js +13 -3
  78. package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts +0 -1
  79. package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -1
  80. package/src/engine/physics/cloth/solver/cloth_step_instance.js +12 -14
  81. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +23 -4
  82. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  83. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +36 -8
  84. package/src/engine/physics/cloth/solver/constraint/cloth_self_row.d.ts.map +1 -1
  85. package/src/engine/physics/cloth/solver/constraint/cloth_self_row.js +4 -2
  86. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  87. package/src/shade/device/mock/SoftwareGPUDevice.d.ts +15 -0
  88. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  89. package/src/shade/device/mock/SoftwareGPUDevice.js +21 -0
  90. package/src/shade/device/pipeline/ComputePipelineManager.d.ts +20 -0
  91. package/src/shade/device/pipeline/ComputePipelineManager.d.ts.map +1 -1
  92. package/src/shade/device/pipeline/ComputePipelineManager.js +80 -6
  93. package/src/shade/device/pipeline/PipelineEnquiry.d.ts +52 -0
  94. package/src/shade/device/pipeline/PipelineEnquiry.d.ts.map +1 -0
  95. package/src/shade/device/pipeline/PipelineEnquiry.js +63 -0
  96. package/src/shade/device/pipeline/RenderPipelineManager.d.ts +21 -0
  97. package/src/shade/device/pipeline/RenderPipelineManager.d.ts.map +1 -1
  98. package/src/shade/device/pipeline/RenderPipelineManager.js +84 -4
  99. package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts +137 -0
  100. package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts.map +1 -0
  101. package/src/shade/playground/contact_shadows/ContactShadowLab.js +654 -0
  102. package/src/shade/playground/contact_shadows/README.md +126 -0
  103. package/src/shade/playground/contact_shadows/index.html +191 -0
  104. package/src/shade/playground/contact_shadows/main.d.ts +2 -0
  105. package/src/shade/playground/contact_shadows/main.d.ts.map +1 -0
  106. package/src/shade/playground/contact_shadows/main.js +888 -0
  107. package/src/shade/playground/contact_shadows/scenes.d.ts +48 -0
  108. package/src/shade/playground/contact_shadows/scenes.d.ts.map +1 -0
  109. package/src/shade/playground/contact_shadows/scenes.js +620 -0
  110. package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts +36 -0
  111. package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -0
  112. package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +245 -0
  113. package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts +15 -0
  114. package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -0
  115. package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +120 -0
  116. package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts +55 -0
  117. package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts.map +1 -0
  118. package/src/shade/playground/contact_shadows/shader_contact_lab_stats.js +216 -0
  119. package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts +20 -0
  120. package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts.map +1 -0
  121. package/src/shade/playground/contact_shadows/shader_contact_lab_view.js +114 -0
  122. package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts +11 -0
  123. package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -0
  124. package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +90 -0
  125. package/src/shade/playground/contact_shadows/textures.d.ts +16 -0
  126. package/src/shade/playground/contact_shadows/textures.d.ts.map +1 -0
  127. package/src/shade/playground/contact_shadows/textures.js +123 -0
  128. package/src/shade/playground/particle_ecs/README.md +1 -1
  129. package/src/shade/playground/particle_ecs/effects/flame.json +1932 -1881
  130. package/src/shade/playground/particle_ecs/effects/smoke.json +99 -1
  131. package/src/shade/playground/particle_ecs/effects/soot.json +152 -145
  132. package/src/shade/playground/tonemap_sdr/README.md +90 -0
  133. package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts +105 -0
  134. package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts.map +1 -0
  135. package/src/shade/playground/tonemap_sdr/ToneMapCompare.js +380 -0
  136. package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts +32 -0
  137. package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts.map +1 -0
  138. package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.js +104 -0
  139. package/src/shade/playground/tonemap_sdr/index.html +90 -0
  140. package/src/shade/playground/tonemap_sdr/main.d.ts +2 -0
  141. package/src/shade/playground/tonemap_sdr/main.d.ts.map +1 -0
  142. package/src/shade/playground/tonemap_sdr/main.js +306 -0
  143. package/src/shade/playground/tonemap_sdr/scenes.d.ts +26 -0
  144. package/src/shade/playground/tonemap_sdr/scenes.d.ts.map +1 -0
  145. package/src/shade/playground/tonemap_sdr/scenes.js +404 -0
  146. package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
  147. package/src/shade/playground/volumetrics_froxel/main.js +85 -4
  148. package/src/shade/playground/water_refraction/README.md +26 -18
  149. package/src/shade/playground/water_refraction/index.html +1 -1
  150. package/src/shade/renderer/Renderer.d.ts +35 -3
  151. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  152. package/src/shade/renderer/Renderer.js +208 -12
  153. package/src/shade/renderer/ShadeToneMappingMode.d.ts +14 -0
  154. package/src/shade/renderer/ShadeToneMappingMode.d.ts.map +1 -0
  155. package/src/shade/renderer/ShadeToneMappingMode.js +30 -0
  156. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +9 -0
  157. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  158. package/src/shade/renderer/animation/GPUAnimationManager.js +14 -0
  159. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  160. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +5 -3
  161. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +7 -0
  162. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  163. package/src/shade/renderer/buffer/table/GPUDatabase.js +12 -0
  164. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts +8 -0
  165. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  166. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +12 -0
  167. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  168. package/src/shade/renderer/camera/GPUCameraContext.js +19 -8
  169. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
  170. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +4 -0
  171. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.d.ts.map +1 -1
  172. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.js +4 -0
  173. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.d.ts.map +1 -1
  174. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.js +4 -0
  175. package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
  176. package/src/shade/renderer/deferred/shader_deferred_main.js +3 -0
  177. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts +6 -0
  178. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
  179. package/src/shade/renderer/deferred/shader_tonemap_HDR.js +13 -3
  180. package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts +9 -0
  181. package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +1 -0
  182. package/src/shade/renderer/deferred/shader_tonemap_HDR_none.js +63 -0
  183. package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts +10 -0
  184. package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -0
  185. package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.js +87 -0
  186. package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts +6 -0
  187. package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +1 -1
  188. package/src/shade/renderer/deferred/shader_tonemap_LDR.js +23 -5
  189. package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts +9 -0
  190. package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +1 -0
  191. package/src/shade/renderer/deferred/shader_tonemap_LDR_none.js +68 -0
  192. package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts +10 -0
  193. package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -0
  194. package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.js +73 -0
  195. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
  196. package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +58 -9
  197. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +35 -25
  198. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  199. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +97 -196
  200. package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts.map +1 -1
  201. package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +121 -129
  202. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
  203. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +3 -0
  204. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  205. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -0
  206. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
  207. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +4 -0
  208. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  209. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
  210. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
  211. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -0
  212. package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.d.ts.map +1 -1
  213. package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.js +4 -0
  214. package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
  215. package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +4 -0
  216. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +131 -1
  217. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +7 -0
  218. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -1
  219. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +45 -38
  220. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +2 -0
  221. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -1
  222. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +81 -79
  223. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +2 -0
  224. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -1
  225. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +5 -3
  226. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts +21 -0
  227. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts.map +1 -0
  228. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.js +42 -0
  229. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts +19 -0
  230. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts.map +1 -0
  231. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.js +44 -0
  232. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +23 -5
  233. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -1
  234. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +139 -23
  235. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts +25 -0
  236. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts.map +1 -0
  237. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +179 -0
  238. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +2 -2
  239. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  240. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +7 -16
  241. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +3 -4
  242. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  243. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +6 -23
  244. package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts +11 -0
  245. package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
  246. package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +14 -3
  247. package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts +10 -0
  248. package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts.map +1 -1
  249. package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.js +13 -3
  250. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts +10 -0
  251. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts.map +1 -1
  252. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js +14 -0
  253. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts +26 -0
  254. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts.map +1 -0
  255. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.js +52 -0
  256. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts +32 -0
  257. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts.map +1 -0
  258. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.js +89 -0
  259. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +10 -0
  260. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
  261. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +20 -1
  262. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +10 -0
  263. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  264. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +294 -281
  265. package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
  266. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  267. package/src/shade/renderer/light/GPULightCollection.js +18 -1
  268. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts +8 -0
  269. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  270. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +234 -218
  271. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts +7 -0
  272. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
  273. package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +13 -0
  274. package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts +7 -0
  275. package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts.map +1 -1
  276. package/src/shade/renderer/light/cluster/graph_build_light_clusters.js +16 -2
  277. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts +10 -0
  278. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  279. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +13 -0
  280. package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
  281. package/src/shade/renderer/lightmap/GPULightMap.js +3 -0
  282. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
  283. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
  284. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
  285. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
  286. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  287. package/src/shade/renderer/material/GPUMaterialManager.d.ts +16 -4
  288. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  289. package/src/shade/renderer/material/GPUMaterialManager.js +38 -8
  290. package/src/shade/renderer/particles/DESIGN.md +49 -7
  291. package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +453 -0
  292. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +5 -1
  293. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
  294. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +13 -5
  295. package/src/shade/renderer/particles/data/particle_emitter_record.js +2 -2
  296. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
  297. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +12 -0
  298. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts +60 -0
  299. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
  300. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +156 -0
  301. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +2 -2
  302. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
  303. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +8 -8
  304. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
  305. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +6 -4
  306. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +7 -6
  307. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
  308. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +91 -58
  309. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  310. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +10 -0
  311. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  312. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +5 -1
  313. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  314. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +6 -0
  315. package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts +7 -0
  316. package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts.map +1 -1
  317. package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.js +18 -0
  318. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
  319. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +1 -0
  320. package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
  321. package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
  322. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +11 -0
  323. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  324. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +16 -0
  325. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +10 -0
  326. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  327. package/src/shade/renderer/postprocess/gtao/GTAO.js +16 -0
  328. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  329. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +32 -10
  330. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  331. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
  332. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -0
  333. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -1
  334. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +6 -3
  335. package/src/shade/renderer/postprocess/taa/TAA.d.ts +12 -0
  336. package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
  337. package/src/shade/renderer/postprocess/taa/TAA.js +15 -0
  338. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -0
  339. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
  340. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +13 -0
  341. package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts +31 -3
  342. package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
  343. package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +79 -4
  344. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +17 -0
  345. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
  346. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +35 -4
  347. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts +7 -0
  348. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
  349. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +182 -169
  350. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts +10 -0
  351. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
  352. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +20 -1
  353. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +10 -0
  354. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -1
  355. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +18 -1
  356. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts +10 -0
  357. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts.map +1 -1
  358. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js +20 -1
  359. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts +7 -0
  360. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
  361. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +187 -170
  362. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts +10 -0
  363. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts.map +1 -1
  364. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.js +19 -1
  365. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +13 -0
  366. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
  367. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +25 -1
  368. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts +10 -0
  369. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
  370. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +20 -0
  371. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -1
  372. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.js +6 -0
  373. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -1
  374. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.js +6 -0
  375. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +3 -2
  376. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  377. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +3 -2
  378. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +7 -2
  379. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  380. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +12 -4
  381. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts.map +1 -1
  382. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.js +4 -3
  383. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts.map +1 -1
  384. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.js +4 -3
  385. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts +2 -1
  386. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
  387. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +11 -3
  388. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts.map +1 -1
  389. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +4 -3
  390. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.d.ts.map +1 -1
  391. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +4 -3
  392. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +15 -0
  393. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  394. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +35 -2
  395. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +14 -0
  396. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  397. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +32 -4
  398. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +17 -0
  399. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  400. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +34 -4
  401. package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts +5 -3
  402. package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts.map +1 -1
  403. package/src/shade/renderer/restir/di/chunk_restir_resolve.js +8 -3
  404. package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
  405. package/src/shade/renderer/restir/di/graph_restir_di.js +1 -0
  406. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  407. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +5 -1
  408. package/src/shade/renderer/restir/reservoir/shader.d.ts.map +1 -1
  409. package/src/shade/renderer/restir/reservoir/shader.js +7 -4
  410. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +7 -0
  411. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  412. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +13 -1
  413. package/src/shade/renderer/scene/GPUSceneContext.d.ts +10 -0
  414. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  415. package/src/shade/renderer/scene/GPUSceneContext.js +19 -0
  416. package/src/shade/renderer/scene/SceneManager.d.ts +9 -0
  417. package/src/shade/renderer/scene/SceneManager.d.ts.map +1 -1
  418. package/src/shade/renderer/scene/SceneManager.js +11 -0
  419. package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts +11 -0
  420. package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts.map +1 -1
  421. package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.js +17 -0
  422. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +11 -0
  423. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
  424. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +18 -1
  425. package/src/shade/renderer/shader/ComputeShader.d.ts +12 -0
  426. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  427. package/src/shade/renderer/shader/ComputeShader.js +53 -0
  428. package/src/shade/renderer/shader/ImageShader.d.ts +27 -8
  429. package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
  430. package/src/shade/renderer/shader/ImageShader.js +70 -1
  431. package/src/shade/renderer/shader/ShaderDescriptor.d.ts +21 -0
  432. package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
  433. package/src/shade/renderer/shader/ShaderDescriptor.js +71 -1
  434. package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts +17 -0
  435. package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts.map +1 -0
  436. package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.js +45 -0
  437. package/src/shade/renderer/shader/chunk/camera/chunk_screen_coordinate_to_view.js +3 -3
  438. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +1 -1
  439. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -62
  440. package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +318 -0
  441. package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +237 -0
  442. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts +17 -0
  443. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts.map +1 -0
  444. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +22 -0
  445. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts +14 -1
  446. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts.map +1 -1
  447. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.js +28 -15
  448. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +12 -0
  449. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
  450. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +128 -110
  451. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts +20 -0
  452. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts.map +1 -0
  453. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.js +33 -0
  454. package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts +4 -0
  455. package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts.map +1 -1
  456. package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.js +12 -1
  457. package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.d.ts.map +1 -1
  458. package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js +7 -0
  459. package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +108 -0
  460. package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.d.ts.map +1 -1
  461. package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.js +23 -4
  462. package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts +18 -0
  463. package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts.map +1 -0
  464. package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.js +56 -0
  465. package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.d.ts.map +1 -1
  466. package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.js +2 -0
  467. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts +43 -0
  468. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts.map +1 -0
  469. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.js +319 -0
  470. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +33 -0
  471. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
  472. package/src/shade/renderer/shader/compiler/CodeChunk.js +140 -0
  473. package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts +74 -0
  474. package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts.map +1 -0
  475. package/src/shade/renderer/shader/compiler/CodeChunkChoice.js +166 -0
  476. package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +680 -0
  477. package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts +86 -0
  478. package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts.map +1 -0
  479. package/src/shade/renderer/shader/compiler/ShaderSwitch.js +178 -0
  480. package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts +67 -0
  481. package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts.map +1 -0
  482. package/src/shade/renderer/shader/compiler/ShaderSwitchSet.js +205 -0
  483. package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts +14 -0
  484. package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts.map +1 -0
  485. package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.js +13 -0
  486. package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts +65 -0
  487. package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts.map +1 -0
  488. package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.js +252 -0
  489. package/src/shade/renderer/shadow/contact/FINDINGS.md +413 -0
  490. package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts +29 -0
  491. package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts.map +1 -0
  492. package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.js +105 -0
  493. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +29 -0
  494. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -0
  495. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +39 -0
  496. package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts +29 -0
  497. package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts.map +1 -0
  498. package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.js +92 -0
  499. package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts +29 -0
  500. package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -0
  501. package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +128 -0
  502. package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts +52 -0
  503. package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts.map +1 -0
  504. package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.js +358 -0
  505. package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts +10 -0
  506. package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts.map +1 -0
  507. package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.js +12 -0
  508. package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts +13 -0
  509. package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts.map +1 -0
  510. package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.js +14 -0
  511. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +14 -8
  512. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
  513. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +20 -86
  514. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts +14 -0
  515. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts.map +1 -0
  516. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.js +79 -0
  517. package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
  518. package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +12 -12
  519. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  520. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +153 -151
  521. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts +13 -0
  522. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts.map +1 -0
  523. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.js +48 -0
  524. package/src/shade/renderer/texture/GPUTextureContext.d.ts +10 -0
  525. package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
  526. package/src/shade/renderer/texture/GPUTextureContext.js +24 -0
  527. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +219 -0
  528. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -0
  529. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +671 -0
  530. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +26 -2
  531. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  532. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +108 -4
  533. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +5 -1
  534. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  535. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +6 -0
  536. package/src/shade/renderer/volumetrics/NOTES.md +50 -0
  537. package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.d.ts.map +1 -1
  538. package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.js +30 -1
  539. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +51 -13
  540. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  541. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +98 -13
  542. package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts +9 -0
  543. package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts.map +1 -1
  544. package/src/shade/renderer/volumetrics/SceneVolumetrics.js +78 -68
  545. package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +326 -0
  546. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +7 -4
  547. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -1
  548. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +21 -9
  549. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts +19 -0
  550. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts.map +1 -0
  551. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.js +53 -0
  552. package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts +12 -3
  553. package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts.map +1 -1
  554. package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.js +85 -48
  555. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +4 -1
  556. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +1 -1
  557. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +4 -1
  558. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +4 -1
  559. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  560. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +21 -1
  561. package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts +98 -0
  562. package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts.map +1 -0
  563. package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.js +115 -0
  564. package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts +9 -0
  565. package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts.map +1 -0
  566. package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.js +24 -0
  567. package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts +27 -0
  568. package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts.map +1 -0
  569. package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.js +91 -0
  570. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts +35 -0
  571. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts.map +1 -0
  572. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.js +92 -0
  573. package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts +10 -0
  574. package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts.map +1 -0
  575. package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.js +121 -0
  576. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  577. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +38 -3
  578. package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
  579. package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +311 -290
  580. package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.d.ts.map +1 -1
  581. package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.js +28 -49
  582. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +3 -1
  583. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  584. package/src/shade/renderer/water/GPUWaterRenderer.js +24 -18
  585. package/src/shade/renderer/water/chunk_water_transport.d.ts +0 -1
  586. package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
  587. package/src/shade/renderer/water/chunk_water_transport.js +0 -17
  588. package/src/shade/renderer/water/shader_water.d.ts +4 -2
  589. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  590. package/src/shade/renderer/water/shader_water.js +27 -16
  591. package/src/shade/renderer/water/shader_water_avboit.d.ts +0 -4
  592. package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
  593. package/src/shade/renderer/water/shader_water_avboit.js +0 -63
  594. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  595. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +43 -9
  596. package/src/engine/network/transport/Channel.d.ts +0 -85
  597. package/src/engine/network/transport/Channel.d.ts.map +0 -1
  598. package/src/engine/network/transport/ReliableCommandPipeline.d.ts +0 -155
  599. package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +0 -1
  600. package/src/engine/network/transport/fragments/FragmentAssembler.d.ts +0 -105
  601. package/src/engine/network/transport/fragments/FragmentAssembler.d.ts.map +0 -1
  602. package/src/engine/network/transport/fragments/FragmentRetention.d.ts +0 -103
  603. package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +0 -1
  604. package/src/engine/network/transport/fragments/fragment_send.d.ts +0 -61
  605. package/src/engine/network/transport/fragments/fragment_send.d.ts.map +0 -1
  606. package/src/engine/network/transport/fragments/packet_size.d.ts +0 -99
  607. package/src/engine/network/transport/fragments/packet_size.d.ts.map +0 -1
  608. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts +0 -6
  609. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts.map +0 -1
  610. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.js +0 -16
  611. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts +0 -7
  612. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts.map +0 -1
  613. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.js +0 -46
  614. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts +0 -10
  615. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts.map +0 -1
  616. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.js +0 -127
  617. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts +0 -7
  618. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts.map +0 -1
  619. 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,6 +0,0 @@
1
- /**
2
- * source: https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs
3
- */
4
- export const chunk_RRTAndODTFit: CodeChunk;
5
- import { CodeChunk } from "../../../compiler/CodeChunk.js";
6
- //# sourceMappingURL=chunk_RRTAndODTFit.d.ts.map
@@ -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
- }`);