@woosh/meep-engine 3.14.2 → 3.14.4

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 (1252) hide show
  1. package/editor/prototypeEditorShell.js +6 -0
  2. package/package.json +1 -1
  3. package/src/CODEC_LAYOUT_VERIFICATION.md +420 -0
  4. package/src/core/binary/zstd/ZstdReverseBitReader.d.ts +76 -0
  5. package/src/core/binary/zstd/ZstdReverseBitReader.d.ts.map +1 -0
  6. package/src/core/binary/zstd/ZstdReverseBitReader.js +223 -0
  7. package/src/core/binary/zstd/zstd_decompress.d.ts +31 -0
  8. package/src/core/binary/zstd/zstd_decompress.d.ts.map +1 -0
  9. package/src/core/binary/zstd/zstd_decompress.js +628 -0
  10. package/src/core/binary/zstd/zstd_fse.d.ts +83 -0
  11. package/src/core/binary/zstd/zstd_fse.d.ts.map +1 -0
  12. package/src/core/binary/zstd/zstd_fse.js +265 -0
  13. package/src/core/binary/zstd/zstd_huffman.d.ts +56 -0
  14. package/src/core/binary/zstd/zstd_huffman.d.ts.map +1 -0
  15. package/src/core/binary/zstd/zstd_huffman.js +244 -0
  16. package/src/core/binary/zstd/zstd_sequence_tables.d.ts +62 -0
  17. package/src/core/binary/zstd/zstd_sequence_tables.d.ts.map +1 -0
  18. package/src/core/binary/zstd/zstd_sequence_tables.js +98 -0
  19. package/src/core/color/COLOR_REVIEW_2026_08_28.md +1 -1
  20. package/src/core/color/PQ/PQ_constants.d.ts +1 -1
  21. package/src/core/color/PQ/PQ_constants.js +1 -1
  22. package/src/engine/Engine.d.ts.map +1 -1
  23. package/src/engine/Engine.js +733 -726
  24. package/src/engine/asset/GameAssetType.d.ts +1 -0
  25. package/src/engine/asset/GameAssetType.js +8 -0
  26. package/src/engine/asset/codec/DecodedImage.d.ts +39 -0
  27. package/src/engine/asset/codec/DecodedImage.d.ts.map +1 -0
  28. package/src/engine/asset/codec/DecodedImage.js +26 -0
  29. package/src/engine/asset/guessAssetType.d.ts.map +1 -1
  30. package/src/engine/asset/guessAssetType.js +10 -0
  31. package/src/engine/asset/load_model_scene_bundle.d.ts +1 -1
  32. package/src/engine/asset/load_model_scene_bundle.d.ts.map +1 -1
  33. package/src/engine/asset/load_model_scene_bundle.js +6 -2
  34. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts +37 -0
  35. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts.map +1 -0
  36. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.js +104 -0
  37. package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +83 -71
  38. package/src/engine/asset/loaders/image/ImageDecoderWorker.js +2 -2
  39. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts +8 -9
  40. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts.map +1 -1
  41. package/src/engine/asset/loaders/image/ImageRGBADataLoader.js +12 -3
  42. package/src/engine/asset/loaders/image/avif/encode_image_source.d.ts +70 -0
  43. package/src/engine/asset/loaders/image/avif/encode_image_source.d.ts.map +1 -0
  44. package/src/engine/asset/loaders/image/avif/encode_image_source.js +117 -0
  45. package/src/engine/asset/loaders/image/avif/encoder_worker.d.ts.map +1 -0
  46. package/src/engine/asset/loaders/image/avif/threaded_image_encoder.d.ts.map +1 -0
  47. package/src/engine/asset/loaders/image/codec/AvifCodec.d.ts +34 -0
  48. package/src/engine/asset/loaders/image/codec/AvifCodec.d.ts.map +1 -0
  49. package/src/engine/asset/loaders/image/codec/AvifCodec.js +85 -0
  50. package/src/engine/asset/loaders/image/codec/JpegCodec.d.ts +26 -0
  51. package/src/engine/asset/loaders/image/codec/JpegCodec.d.ts.map +1 -0
  52. package/src/engine/asset/loaders/image/codec/JpegCodec.js +66 -0
  53. package/src/engine/asset/loaders/image/codec/NativeImageDecoder.d.ts +4 -16
  54. package/src/engine/asset/loaders/image/codec/NativeImageDecoder.d.ts.map +1 -1
  55. package/src/engine/asset/loaders/image/codec/NativeImageDecoder.js +2 -2
  56. package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts +21 -1
  57. package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts.map +1 -1
  58. package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.js +21 -1
  59. package/src/engine/asset/loaders/image/prototypePNG.d.ts.map +1 -0
  60. package/src/engine/asset/loaders/image/prototypePNG.js +37 -0
  61. package/src/engine/asset/preloader/extractAssetListFromManager.d.ts.map +1 -1
  62. package/src/engine/asset/preloader/extractAssetListFromManager.js +2 -1
  63. package/src/engine/graphics/ecs/mesh/assetTypeByPath.d.ts.map +1 -1
  64. package/src/engine/graphics/ecs/mesh/assetTypeByPath.js +6 -0
  65. package/src/engine/graphics/texture/sampler/avif_to_sampler2d.d.ts +25 -0
  66. package/src/engine/graphics/texture/sampler/avif_to_sampler2d.d.ts.map +1 -0
  67. package/src/engine/graphics/texture/sampler/avif_to_sampler2d.js +42 -0
  68. package/src/engine/graphics/texture/sampler/compare/sampler2d_compare.d.ts.map +1 -0
  69. package/src/engine/graphics/texture/sampler/compare/sampler2d_compare.js +94 -0
  70. package/src/engine/graphics/texture/sampler/compare/sampler2d_max_absolute_difference.d.ts +19 -0
  71. package/src/engine/graphics/texture/sampler/compare/sampler2d_max_absolute_difference.d.ts.map +1 -0
  72. package/src/engine/graphics/texture/sampler/compare/sampler2d_max_absolute_difference.js +62 -0
  73. package/src/engine/graphics/texture/sampler/compare/sampler2d_psnr.d.ts +30 -0
  74. package/src/engine/graphics/texture/sampler/compare/sampler2d_psnr.d.ts.map +1 -0
  75. package/src/engine/graphics/texture/sampler/compare/sampler2d_psnr.js +115 -0
  76. package/src/engine/graphics/texture/sampler/sampler2d_to_avif.d.ts.map +1 -0
  77. package/src/engine/graphics/texture/sampler/sampler2d_to_avif.js +108 -0
  78. package/src/engine/graphics/texture/sampler/sampler2d_to_f16.d.ts +7 -1
  79. package/src/engine/graphics/texture/sampler/sampler2d_to_f16.d.ts.map +1 -1
  80. package/src/engine/graphics/texture/sampler/sampler2d_to_f16.js +28 -21
  81. package/src/engine/graphics/texture/sampler/sampler2d_to_uint8_RGBA.d.ts.map +1 -1
  82. package/src/engine/graphics/texture/sampler/sampler2d_to_uint8_RGBA.js +3 -0
  83. package/src/engine/network/NetworkSession.d.ts +24 -4
  84. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  85. package/src/engine/network/NetworkSession.js +28 -4
  86. package/src/engine/network/orchestrator/NetworkPeer.d.ts +47 -6
  87. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  88. package/src/engine/network/orchestrator/NetworkPeer.js +184 -56
  89. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +97 -11
  90. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  91. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +304 -22
  92. package/src/engine/network/replication/Replicator.d.ts +14 -1
  93. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  94. package/src/engine/network/replication/Replicator.js +44 -3
  95. package/src/engine/network/sim/ActionLog.d.ts +21 -3
  96. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  97. package/src/engine/network/sim/ActionLog.js +24 -3
  98. package/src/engine/network/sim/SimAction.d.ts +15 -0
  99. package/src/engine/network/sim/SimAction.d.ts.map +1 -1
  100. package/src/engine/network/sim/SimAction.js +15 -0
  101. package/src/engine/network/sim/SimActionExecutor.d.ts +51 -1
  102. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  103. package/src/engine/network/sim/SimActionExecutor.js +73 -5
  104. package/src/engine/network/transport/Channel.d.ts +1 -1
  105. package/src/engine/network/transport/Channel.js +1 -1
  106. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  107. package/src/engine/simulation/Ticker.d.ts.map +1 -1
  108. package/src/engine/simulation/Ticker.js +4 -1
  109. package/src/engine/ui/GUIEngine.d.ts.map +1 -1
  110. package/src/engine/ui/GUIEngine.js +6 -0
  111. package/src/format/image/avif/DECISIONS.md +545 -0
  112. package/src/format/image/avif/api/AvifDecoder.d.ts.map +1 -0
  113. package/src/format/image/avif/api/apply_transformations.d.ts.map +1 -0
  114. package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -0
  115. package/src/format/image/avif/api/convert_to_rgba.js +204 -0
  116. package/src/format/image/avif/api/decode_avif.d.ts.map +1 -0
  117. package/src/format/image/avif/api/decode_image_item.d.ts.map +1 -0
  118. package/src/format/image/avif/api/encode_avif.d.ts.map +1 -0
  119. package/src/format/image/avif/av1/decode/Av1FrameContext.d.ts.map +1 -0
  120. package/src/format/image/avif/av1/decode/block_decoded.d.ts.map +1 -0
  121. package/src/format/image/avif/av1/decode/decode_av1_still.d.ts.map +1 -0
  122. package/src/format/image/avif/av1/decode/decode_coefficients.d.ts.map +1 -0
  123. package/src/format/image/avif/av1/decode/decode_palette.d.ts.map +1 -0
  124. package/src/format/image/avif/av1/decode/decode_palette.js +442 -0
  125. package/src/format/image/avif/av1/decode/decode_tile.d.ts.map +1 -0
  126. package/src/format/image/avif/av1/decode/decode_tile.js +1213 -0
  127. package/src/format/image/avif/av1/decode/get_scan.d.ts.map +1 -0
  128. package/src/format/image/avif/av1/decode/read_lr.d.ts.map +1 -0
  129. package/src/format/image/avif/av1/decode/read_lr.js +277 -0
  130. package/src/format/image/avif/av1/decode/read_transform_type.d.ts.map +1 -0
  131. package/src/format/image/avif/av1/decode/read_transform_type.js +92 -0
  132. package/src/format/image/avif/av1/decode/reconstruct.d.ts.map +1 -0
  133. package/src/format/image/avif/av1/decode/reconstruct.js +241 -0
  134. package/src/format/image/avif/av1/decode/transform_type.d.ts.map +1 -0
  135. package/src/format/image/avif/av1/encode/Av1BlockSnapshot.d.ts.map +1 -0
  136. package/src/format/image/avif/av1/encode/Av1EncodeContext.d.ts.map +1 -0
  137. package/src/format/image/avif/av1/encode/build_headers.d.ts.map +1 -0
  138. package/src/format/image/avif/av1/encode/choose_chroma_alpha.d.ts.map +1 -0
  139. package/src/format/image/avif/av1/encode/choose_filters.d.ts.map +1 -0
  140. package/src/format/image/avif/av1/encode/choose_restoration.d.ts.map +1 -0
  141. package/src/format/image/avif/av1/encode/choose_restoration.js +616 -0
  142. package/src/format/image/avif/av1/encode/decode_effort.d.ts.map +1 -0
  143. package/src/format/image/avif/av1/encode/encode_av1_still.d.ts.map +1 -0
  144. package/src/format/image/avif/av1/encode/encode_effort.d.ts.map +1 -0
  145. package/src/format/image/avif/av1/encode/encode_tile.d.ts.map +1 -0
  146. package/src/format/image/avif/av1/encode/encode_tile.js +2331 -0
  147. package/src/format/image/avif/av1/encode/quantise.d.ts.map +1 -0
  148. package/src/format/image/avif/av1/encode/write_coefficients.d.ts.map +1 -0
  149. package/src/format/image/avif/av1/encode/write_lr.d.ts.map +1 -0
  150. package/src/format/image/avif/av1/encode/write_transform_type.d.ts.map +1 -0
  151. package/src/format/image/avif/av1/entropy/CdfContext.d.ts.map +1 -0
  152. package/src/format/image/avif/av1/entropy/SymbolReader.d.ts.map +1 -0
  153. package/src/format/image/avif/av1/entropy/SymbolWriter.d.ts.map +1 -0
  154. package/src/format/image/avif/av1/entropy/coefficient_context.d.ts.map +1 -0
  155. package/src/format/image/avif/av1/entropy/partition_cdf.d.ts.map +1 -0
  156. package/src/format/image/avif/av1/entropy/symbol_cost.d.ts.map +1 -0
  157. package/src/format/image/avif/av1/filter/cdef.d.ts.map +1 -0
  158. package/src/format/image/avif/av1/filter/cdef.js +313 -0
  159. package/src/format/image/avif/av1/filter/loop_filter.d.ts.map +1 -0
  160. package/src/format/image/avif/av1/filter/loop_filter.js +377 -0
  161. package/src/format/image/avif/av1/filter/loop_restoration.d.ts.map +1 -0
  162. package/src/format/image/avif/av1/filter/loop_restoration.js +451 -0
  163. package/src/format/image/avif/av1/filter/superres.d.ts.map +1 -0
  164. package/src/format/image/avif/av1/filter/superres.js +86 -0
  165. package/src/format/image/avif/av1/grain/FilmGrainState.d.ts.map +1 -0
  166. package/src/format/image/avif/av1/grain/film_grain.d.ts.map +1 -0
  167. package/src/format/image/avif/av1/grain/film_grain.js +623 -0
  168. package/src/format/image/avif/av1/obu/FrameHeader.d.ts.map +1 -0
  169. package/src/format/image/avif/av1/obu/ObuHeader.d.ts.map +1 -0
  170. package/src/format/image/avif/av1/obu/SequenceHeader.d.ts.map +1 -0
  171. package/src/format/image/avif/av1/obu/for_each_obu.d.ts.map +1 -0
  172. package/src/format/image/avif/av1/obu/parse_frame_header.d.ts.map +1 -0
  173. package/src/format/image/avif/av1/obu/parse_frame_header.js +841 -0
  174. package/src/format/image/avif/av1/obu/parse_obu_header.d.ts.map +1 -0
  175. package/src/format/image/avif/av1/obu/parse_sequence_header.d.ts.map +1 -0
  176. package/src/format/image/avif/av1/obu/write_frame_header.d.ts.map +1 -0
  177. package/src/format/image/avif/av1/obu/write_sequence_header.d.ts.map +1 -0
  178. package/src/format/image/avif/av1/predict/IntraPredictionState.d.ts.map +1 -0
  179. package/src/format/image/avif/av1/predict/intra_filter_type.d.ts.map +1 -0
  180. package/src/format/image/avif/av1/predict/predict_chroma_from_luma.d.ts.map +1 -0
  181. package/src/format/image/avif/av1/predict/predict_chroma_from_luma.js +153 -0
  182. package/src/format/image/avif/av1/predict/predict_intra.d.ts.map +1 -0
  183. package/src/format/image/avif/av1/predict/predict_intra.js +803 -0
  184. package/src/format/image/avif/av1/predict/predict_palette.d.ts.map +1 -0
  185. package/src/format/image/avif/av1/tables/av1_symbols.d.ts.map +1 -0
  186. package/src/format/image/avif/av1/tables/av1_symbols.js +419 -0
  187. package/src/format/image/avif/av1/tables/block_tables.d.ts.map +1 -0
  188. package/src/format/image/avif/av1/tables/block_tables.js +270 -0
  189. package/src/format/image/avif/av1/tables/cdf_tables.d.ts.map +1 -0
  190. package/src/format/image/avif/av1/tables/cdf_tables.js +1893 -0
  191. package/src/format/image/avif/av1/tables/coefficient_tables.d.ts.map +1 -0
  192. package/src/format/image/avif/av1/tables/coefficient_tables.js +82 -0
  193. package/src/format/image/avif/av1/tables/derived_block_tables.d.ts.map +1 -0
  194. package/src/format/image/avif/av1/tables/filter_tables.d.ts.map +1 -0
  195. package/src/format/image/avif/av1/tables/filter_tables.js +313 -0
  196. package/src/format/image/avif/av1/tables/grain_tables.d.ts.map +1 -0
  197. package/src/format/image/avif/av1/tables/grain_tables.js +190 -0
  198. package/src/format/image/avif/av1/tables/prediction_tables.d.ts.map +1 -0
  199. package/src/format/image/avif/av1/tables/prediction_tables.js +223 -0
  200. package/src/format/image/avif/av1/tables/quantizer_matrix_tables.d.ts.map +1 -0
  201. package/src/format/image/avif/av1/tables/quantizer_matrix_tables.js +38 -0
  202. package/src/format/image/avif/av1/tables/quantizer_tables.d.ts.map +1 -0
  203. package/src/format/image/avif/av1/tables/quantizer_tables.js +160 -0
  204. package/src/format/image/avif/av1/tables/scan_tables.d.ts.map +1 -0
  205. package/src/format/image/avif/av1/tables/scan_tables.js +727 -0
  206. package/src/format/image/avif/av1/tables/segmentation_tables.d.ts.map +1 -0
  207. package/src/format/image/avif/av1/tables/segmentation_tables.js +48 -0
  208. package/src/format/image/avif/av1/tables/transform_tables.d.ts.map +1 -0
  209. package/src/format/image/avif/av1/tables/transform_tables.js +140 -0
  210. package/src/format/image/avif/av1/tables/unpack_table.d.ts.map +1 -0
  211. package/src/format/image/avif/av1/tables/unpack_table.js +73 -0
  212. package/src/format/image/avif/av1/transform/forward_transform_2d.d.ts.map +1 -0
  213. package/src/format/image/avif/av1/transform/inverse_transform_1d.d.ts.map +1 -0
  214. package/src/format/image/avif/av1/transform/inverse_transform_1d.js +590 -0
  215. package/src/format/image/avif/av1/transform/inverse_transform_2d.d.ts.map +1 -0
  216. package/src/format/image/avif/av1/transform/inverse_transform_2d.js +180 -0
  217. package/src/format/image/avif/av1/util/ceil_log2.d.ts.map +1 -0
  218. package/src/format/image/avif/av1/util/floor_log2.d.ts +20 -0
  219. package/src/format/image/avif/av1/util/floor_log2.d.ts.map +1 -0
  220. package/src/format/image/avif/av1/util/floor_log2.js +20 -0
  221. package/src/format/image/avif/av1/util/round2.d.ts.map +1 -0
  222. package/src/format/image/avif/av1/util/round2_signed.d.ts.map +1 -0
  223. package/src/format/image/avif/av1/util/tile_log2.d.ts.map +1 -0
  224. package/src/format/image/avif/bitstream/BitReader.d.ts.map +1 -0
  225. package/src/format/image/avif/bitstream/BitWriter.d.ts.map +1 -0
  226. package/src/format/image/avif/color/ColourTransform.d.ts.map +1 -0
  227. package/src/format/image/avif/color/YuvImage.d.ts.map +1 -0
  228. package/src/format/image/avif/color/clamp_sample.d.ts.map +1 -0
  229. package/src/format/image/avif/color/linear_to_transfer.d.ts.map +1 -0
  230. package/src/format/image/avif/color/linear_to_transfer.js +126 -0
  231. package/src/format/image/avif/color/primaries.d.ts.map +1 -0
  232. package/src/format/image/avif/color/rgb_row_to_ycbcr.d.ts.map +1 -0
  233. package/src/format/image/avif/color/transfer_to_linear.d.ts.map +1 -0
  234. package/src/format/image/avif/color/transfer_to_linear.js +171 -0
  235. package/src/format/image/avif/color/upsample_chroma_row.d.ts.map +1 -0
  236. package/src/format/image/avif/color/upsample_chroma_row.js +89 -0
  237. package/src/format/image/avif/color/ycbcr_row_to_rgb.d.ts.map +1 -0
  238. package/src/format/image/avif/color/ycbcr_row_to_rgb.js +78 -0
  239. package/src/format/image/avif/heif/AvifFile.d.ts.map +1 -0
  240. package/src/format/image/avif/heif/ItemProperty.d.ts.map +1 -0
  241. package/src/format/image/avif/heif/find_item_property.d.ts.map +1 -0
  242. package/src/format/image/avif/heif/find_item_references.d.ts.map +1 -0
  243. package/src/format/image/avif/heif/find_items_referencing.d.ts.map +1 -0
  244. package/src/format/image/avif/heif/parse_avif_file.d.ts.map +1 -0
  245. package/src/format/image/avif/heif/parse_avif_file.js +384 -0
  246. package/src/format/image/avif/heif/parse_image_grid.d.ts.map +1 -0
  247. package/src/format/image/avif/heif/parse_image_grid.js +49 -0
  248. package/src/format/image/avif/heif/parse_item_property.d.ts.map +1 -0
  249. package/src/format/image/avif/heif/read_item_data.d.ts.map +1 -0
  250. package/src/format/image/avif/heif/write_avif_file.d.ts.map +1 -0
  251. package/src/format/image/avif/heif/write_item_property.d.ts.map +1 -0
  252. package/src/format/image/avif/index.d.ts +12 -0
  253. package/src/format/image/avif/index.d.ts.map +1 -0
  254. package/src/format/image/avif/index.js +58 -0
  255. package/src/format/image/avif/isobmff/BoxHeader.d.ts.map +1 -0
  256. package/src/format/image/avif/isobmff/BoxWriter.d.ts +118 -0
  257. package/src/format/image/avif/isobmff/BoxWriter.d.ts.map +1 -0
  258. package/src/format/image/avif/isobmff/BoxWriter.js +264 -0
  259. package/src/format/image/avif/isobmff/for_each_box.d.ts.map +1 -0
  260. package/src/format/image/avif/isobmff/read_box_header.d.ts.map +1 -0
  261. package/src/format/image/avif/isobmff/read_full_box_header.d.ts.map +1 -0
  262. package/src/format/image/jpeg/JpegFrame.d.ts.map +1 -0
  263. package/src/format/image/jpeg/JpegFrameComponent.d.ts.map +1 -0
  264. package/src/format/image/jpeg/JpegImage.d.ts.map +1 -0
  265. package/src/format/image/jpeg/JpegImage.js +664 -0
  266. package/src/format/image/jpeg/buildComponentData.d.ts.map +1 -0
  267. package/src/format/image/jpeg/buildHuffmanTable.d.ts.map +1 -0
  268. package/src/format/image/jpeg/decodeScan.d.ts.map +1 -0
  269. package/src/format/image/jpeg/idct8x8_float.d.ts.map +1 -0
  270. package/src/format/image/jpeg/idct8x8_float.js +31 -0
  271. package/src/format/image/jpeg/jpeg_component_row.d.ts.map +1 -0
  272. package/src/format/image/jpeg/jpeg_decode.d.ts.map +1 -0
  273. package/src/format/image/png/PNG.d.ts.map +1 -0
  274. package/src/format/image/png/PNGReader.d.ts +158 -0
  275. package/src/format/image/png/PNGReader.d.ts.map +1 -0
  276. package/src/format/image/png/PNGReader.js +656 -0
  277. package/src/format/image/png/PNG_HEADER_BYTES.d.ts.map +1 -0
  278. package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -0
  279. package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +53 -0
  280. package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +1 -0
  281. package/src/format/image/png/chunk/png_chunk_decode_zTXt.js +42 -0
  282. package/src/format/image/png/crc32.d.ts +2 -0
  283. package/src/format/image/png/crc32.d.ts.map +1 -0
  284. package/src/format/image/png/crc32.js +8 -0
  285. package/src/format/image/png/filter/png_filter_unFilterAverage.d.ts.map +1 -0
  286. package/src/format/image/png/filter/png_filter_unFilterNone.d.ts.map +1 -0
  287. package/src/format/image/png/filter/png_filter_unFilterPaeth.d.ts.map +1 -0
  288. package/src/format/image/png/filter/png_filter_unFilterSub.d.ts.map +1 -0
  289. package/src/format/image/png/filter/png_filter_unFilterUp.d.ts.map +1 -0
  290. package/src/format/image/png/filter/png_unfilter.d.ts.map +1 -0
  291. package/src/format/image/png/filter/png_unfilter.js +68 -0
  292. package/src/format/image/png/png_inflate.d.ts.map +1 -0
  293. package/src/format/image/png/png_unpack_samples.d.ts.map +1 -0
  294. package/src/format/scene/gltf/GLTF_PRIMITIVE_MODE.d.ts.map +1 -0
  295. package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +793 -0
  296. package/src/format/scene/gltf/coalesce_array_duplicates.d.ts.map +1 -0
  297. package/src/format/scene/gltf/ext/GltfBufferViewExtension.d.ts.map +1 -0
  298. package/src/format/scene/gltf/ext/GltfBufferViewExtensionSet.d.ts.map +1 -0
  299. package/src/format/scene/gltf/ext/GltfBufferViewExtensionSet.js +109 -0
  300. package/src/format/scene/gltf/ext/gltf_apply_buffer_view_extensions.d.ts.map +1 -0
  301. package/src/format/scene/gltf/ext/gltf_buffer_view_extensions.d.ts.map +1 -0
  302. package/src/format/scene/gltf/ext/gltf_geometry_extensions.d.ts.map +1 -0
  303. package/src/format/scene/gltf/ext/meshopt/MeshoptBufferViewExtension.d.ts.map +1 -0
  304. package/src/format/scene/gltf/ext/meshopt/MeshoptBufferViewExtension.js +301 -0
  305. package/src/format/scene/gltf/gltf_component_type.d.ts.map +1 -0
  306. package/src/format/scene/gltf/gltf_node_world_matrices.d.ts.map +1 -0
  307. package/src/format/scene/gltf/gltf_node_world_matrices.js +137 -0
  308. package/src/format/scene/gltf/gltf_parse_container.d.ts.map +1 -0
  309. package/src/format/scene/gltf/gltf_read_accessor.d.ts.map +1 -0
  310. package/src/format/scene/gltf/gltf_read_accessor.js +294 -0
  311. package/src/format/scene/gltf/gltf_used_image_indices.d.ts +51 -0
  312. package/src/format/scene/gltf/gltf_used_image_indices.d.ts.map +1 -0
  313. package/src/format/scene/gltf/gltf_used_image_indices.js +122 -0
  314. package/src/format/scene/usd/UsdError.d.ts.map +1 -0
  315. package/src/format/scene/usd/parse_usda.d.ts.map +1 -0
  316. package/src/format/scene/usd/unpack_usdz.d.ts.map +1 -0
  317. package/src/format/scene/usd/unpack_usdz.js +106 -0
  318. package/src/format/scene/usd/usd_compose_transform.d.ts.map +1 -0
  319. package/src/format/scene/usd/usd_compose_transform.js +258 -0
  320. package/src/format/scene/usd/usd_lz4.d.ts.map +1 -0
  321. package/src/format/scene/usd/usd_lz4.js +182 -0
  322. package/src/format/scene/usd/usd_triangulate.d.ts.map +1 -0
  323. package/src/format/texture/TexelPayload.d.ts +55 -0
  324. package/src/format/texture/TexelPayload.d.ts.map +1 -0
  325. package/src/format/texture/TexelPayload.js +39 -0
  326. package/src/format/texture/basis/BasisBitReader.d.ts +77 -0
  327. package/src/format/texture/basis/BasisBitReader.d.ts.map +1 -0
  328. package/src/format/texture/basis/BasisBitReader.js +231 -0
  329. package/src/format/texture/basis/BasisHuffmanTable.d.ts.map +1 -0
  330. package/src/format/texture/basis/astc_block.d.ts +92 -0
  331. package/src/format/texture/basis/astc_block.d.ts.map +1 -0
  332. package/src/format/texture/basis/astc_block.js +164 -0
  333. package/src/format/texture/basis/astc_integer_sequence.d.ts +59 -0
  334. package/src/format/texture/basis/astc_integer_sequence.d.ts.map +1 -0
  335. package/src/format/texture/basis/astc_integer_sequence.js +251 -0
  336. package/src/format/texture/basis/astc_partition.d.ts +56 -0
  337. package/src/format/texture/basis/astc_partition.d.ts.map +1 -0
  338. package/src/format/texture/basis/astc_partition.js +199 -0
  339. package/src/format/texture/basis/basis_read_huffman_table.d.ts.map +1 -0
  340. package/src/format/texture/basis/etc1s/Etc1sSelectorHistory.d.ts.map +1 -0
  341. package/src/format/texture/basis/etc1s/etc1s_block_colors.d.ts.map +1 -0
  342. package/src/format/texture/basis/etc1s/etc1s_decode_slice.d.ts.map +1 -0
  343. package/src/format/texture/basis/etc1s/etc1s_decode_slice.js +290 -0
  344. package/src/format/texture/basis/etc1s/etc1s_read_endpoint_codebook.d.ts.map +1 -0
  345. package/src/format/texture/basis/etc1s/etc1s_read_selector_codebook.d.ts.map +1 -0
  346. package/src/format/texture/basis/etc1s/etc1s_read_slice_tables.d.ts.map +1 -0
  347. package/src/format/texture/basis/transcode/build_range_plan.d.ts +46 -0
  348. package/src/format/texture/basis/transcode/build_range_plan.d.ts.map +1 -0
  349. package/src/format/texture/basis/transcode/etc1s_to_astc.d.ts +30 -0
  350. package/src/format/texture/basis/transcode/etc1s_to_astc.d.ts.map +1 -0
  351. package/src/format/texture/basis/transcode/etc1s_to_astc.js +328 -0
  352. package/src/format/texture/basis/transcode/etc1s_to_bc1.d.ts +34 -0
  353. package/src/format/texture/basis/transcode/etc1s_to_bc1.d.ts.map +1 -0
  354. package/src/format/texture/basis/transcode/etc1s_to_bc1.js +486 -0
  355. package/src/format/texture/basis/transcode/etc1s_to_bc7.d.ts +27 -0
  356. package/src/format/texture/basis/transcode/etc1s_to_bc7.d.ts.map +1 -0
  357. package/src/format/texture/basis/transcode/etc1s_to_etc2.d.ts +31 -0
  358. package/src/format/texture/basis/transcode/etc1s_to_etc2.d.ts.map +1 -0
  359. package/src/format/texture/basis/transcode/etc1s_to_etc2.js +332 -0
  360. package/src/format/texture/basis/transcode/etc1s_to_rgba8.d.ts +39 -0
  361. package/src/format/texture/basis/transcode/etc1s_to_rgba8.d.ts.map +1 -0
  362. package/src/format/texture/basis/transcode/etc1s_to_rgba8.js +115 -0
  363. package/src/format/texture/basis/transcode/fit_endpoints.d.ts +79 -0
  364. package/src/format/texture/basis/transcode/fit_endpoints.d.ts.map +1 -0
  365. package/src/format/texture/basis/transcode/fit_endpoints.js +297 -0
  366. package/src/format/texture/basis/transcode_basis.d.ts +109 -0
  367. package/src/format/texture/basis/transcode_basis.d.ts.map +1 -0
  368. package/src/format/texture/basis/transcode_basis.js +250 -0
  369. package/src/format/texture/basis/transcode_uastc.d.ts +55 -0
  370. package/src/format/texture/basis/transcode_uastc.d.ts.map +1 -0
  371. package/src/format/texture/basis/transcode_uastc.js +117 -0
  372. package/src/format/texture/basis/uastc/bc7_tables.d.ts +111 -0
  373. package/src/format/texture/basis/uastc/bc7_tables.d.ts.map +1 -0
  374. package/src/format/texture/basis/uastc/bc7_tables.js +276 -0
  375. package/src/format/texture/basis/uastc/bc7_write_block.d.ts +124 -0
  376. package/src/format/texture/basis/uastc/bc7_write_block.d.ts.map +1 -0
  377. package/src/format/texture/basis/uastc/bc7_write_block.js +227 -0
  378. package/src/format/texture/basis/uastc/uastc_decode_block.d.ts +105 -0
  379. package/src/format/texture/basis/uastc/uastc_decode_block.d.ts.map +1 -0
  380. package/src/format/texture/basis/uastc/uastc_decode_block.js +480 -0
  381. package/src/format/texture/basis/uastc/uastc_tables.d.ts +240 -0
  382. package/src/format/texture/basis/uastc/uastc_tables.d.ts.map +1 -0
  383. package/src/format/texture/basis/uastc/uastc_tables.js +383 -0
  384. package/src/format/texture/basis/uastc/uastc_to_astc.d.ts +30 -0
  385. package/src/format/texture/basis/uastc/uastc_to_astc.d.ts.map +1 -0
  386. package/src/format/texture/basis/uastc/uastc_to_astc.js +421 -0
  387. package/src/format/texture/basis/uastc/uastc_to_bc5.d.ts +26 -0
  388. package/src/format/texture/basis/uastc/uastc_to_bc5.d.ts.map +1 -0
  389. package/src/format/texture/basis/uastc/uastc_to_bc5.js +115 -0
  390. package/src/format/texture/basis/uastc/uastc_to_bc7.d.ts +36 -0
  391. package/src/format/texture/basis/uastc/uastc_to_bc7.d.ts.map +1 -0
  392. package/src/format/texture/basis/uastc/uastc_to_bc7.js +602 -0
  393. package/src/format/texture/basis/uastc/uastc_to_rgba8.d.ts +37 -0
  394. package/src/format/texture/basis/uastc/uastc_to_rgba8.d.ts.map +1 -0
  395. package/src/format/texture/basis/uastc/uastc_to_rgba8.js +87 -0
  396. package/src/format/texture/bc/bc1_write_block.d.ts +28 -0
  397. package/src/format/texture/bc/bc1_write_block.d.ts.map +1 -0
  398. package/src/format/texture/bc/bc1_write_block.js +41 -0
  399. package/src/format/texture/bc/bc4_write_block.d.ts +32 -0
  400. package/src/format/texture/bc/bc4_write_block.d.ts.map +1 -0
  401. package/src/format/texture/bc/bc4_write_block.js +50 -0
  402. package/src/format/texture/bc/bc6h_write_block_mode11.d.ts +30 -0
  403. package/src/format/texture/bc/bc6h_write_block_mode11.d.ts.map +1 -0
  404. package/src/format/texture/bc/bc6h_write_block_mode11.js +62 -0
  405. package/src/format/texture/ktx2/KTX2_IDENTIFIER.d.ts.map +1 -0
  406. package/src/format/texture/ktx2/KhrDfModel.d.ts.map +1 -0
  407. package/src/format/texture/ktx2/SupercompressionScheme.d.ts.map +1 -0
  408. package/src/format/texture/ktx2/ktx2_read.d.ts +105 -0
  409. package/src/format/texture/ktx2/ktx2_read.d.ts.map +1 -0
  410. package/src/format/texture/ktx2/ktx2_read.js +909 -0
  411. package/src/format/texture/ktx2/ktx2_read_basis_lz_global_data.d.ts +27 -0
  412. package/src/format/texture/ktx2/ktx2_read_basis_lz_global_data.d.ts.map +1 -0
  413. package/src/format/texture/ktx2/ktx2_read_basis_lz_global_data.js +189 -0
  414. package/src/format/texture/ktx2/vk_format_to_texture_format.d.ts +55 -0
  415. package/src/format/texture/ktx2/vk_format_to_texture_format.d.ts.map +1 -0
  416. package/src/format/texture/ktx2/vk_format_to_texture_format.js +290 -0
  417. package/src/shade/descriptor/texture/format/gpu_texture_format_feature.d.ts +16 -0
  418. package/src/shade/descriptor/texture/format/gpu_texture_format_feature.d.ts.map +1 -0
  419. package/src/shade/descriptor/texture/format/gpu_texture_format_feature.js +44 -0
  420. package/src/shade/descriptor/texture/format/gpu_texture_format_info.d.ts +16 -0
  421. package/src/shade/descriptor/texture/format/gpu_texture_format_info.d.ts.map +1 -1
  422. package/src/shade/descriptor/texture/format/gpu_texture_format_info.js +24 -0
  423. package/src/shade/descriptor/texture/format/gpu_texture_format_srgb.d.ts +19 -0
  424. package/src/shade/descriptor/texture/format/gpu_texture_format_srgb.d.ts.map +1 -0
  425. package/src/shade/descriptor/texture/format/gpu_texture_format_srgb.js +50 -0
  426. package/src/shade/device/COPY_BYTES_PER_ROW_ALIGNMENT.d.ts +14 -0
  427. package/src/shade/device/COPY_BYTES_PER_ROW_ALIGNMENT.d.ts.map +1 -0
  428. package/src/shade/device/COPY_BYTES_PER_ROW_ALIGNMENT.js +13 -0
  429. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  430. package/src/shade/device/mock/SoftwareGPUDevice.js +37 -3
  431. package/src/shade/device/mock/SoftwareGPUTexture.d.ts +4 -2
  432. package/src/shade/device/mock/SoftwareGPUTexture.d.ts.map +1 -1
  433. package/src/shade/device/mock/SoftwareGPUTexture.js +39 -3
  434. package/src/shade/device/mock/SoftwareGPUTextureView.d.ts +7 -0
  435. package/src/shade/device/mock/SoftwareGPUTextureView.d.ts.map +1 -1
  436. package/src/shade/device/mock/SoftwareGPUTextureView.js +8 -0
  437. package/src/shade/device/mock/texture_copy.d.ts.map +1 -1
  438. package/src/shade/device/mock/texture_copy.js +74 -12
  439. package/src/shade/playground/basis_textures/README.md +105 -0
  440. package/src/shade/playground/basis_textures/index.html +141 -0
  441. package/src/shade/playground/basis_textures/main.d.ts +8 -0
  442. package/src/shade/playground/basis_textures/main.d.ts.map +1 -0
  443. package/src/shade/playground/basis_textures/main.js +351 -0
  444. package/src/shade/playground/basis_textures/make_basis_gltf.d.mts +2 -0
  445. package/src/shade/playground/basis_textures/make_basis_gltf.d.mts.map +1 -0
  446. package/src/shade/playground/basis_textures/make_basis_gltf.mjs +197 -0
  447. package/src/shade/playground/basis_textures/node_modules/basis_universal/bin/basisu.exe +0 -0
  448. package/src/shade/playground/basis_textures/texture_inventory.d.ts +28 -0
  449. package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -0
  450. package/src/shade/playground/basis_textures/texture_inventory.js +98 -0
  451. package/src/shade/playground/image_decode_bench/README.md +42 -0
  452. package/src/shade/playground/image_decode_bench/decode_worker.d.ts +2 -0
  453. package/src/shade/playground/image_decode_bench/decode_worker.d.ts.map +1 -0
  454. package/src/shade/playground/image_decode_bench/decode_worker.js +19 -0
  455. package/src/shade/playground/image_decode_bench/index.html +34 -0
  456. package/src/shade/playground/image_decode_bench/main.d.ts +2 -0
  457. package/src/shade/playground/image_decode_bench/main.d.ts.map +1 -0
  458. package/src/shade/playground/image_decode_bench/main.js +211 -0
  459. package/src/shade/playground/particle_system/README.md +98 -0
  460. package/src/shade/playground/particle_system/index.html +124 -0
  461. package/src/shade/playground/particle_system/main.d.ts +2 -0
  462. package/src/shade/playground/particle_system/main.d.ts.map +1 -0
  463. package/src/shade/playground/particle_system/main.js +180 -0
  464. package/src/shade/playground/particle_system/particle_scene.d.ts +52 -0
  465. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -0
  466. package/src/shade/playground/particle_system/particle_scene.js +552 -0
  467. package/src/shade/playground/skinned_blas_refit/README.md +1 -1
  468. package/src/shade/playground/skinned_blas_refit/index.html +15 -1
  469. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
  470. package/src/shade/playground/skinned_blas_refit/main.js +339 -3
  471. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +8 -1
  472. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  473. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +27 -5
  474. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +27 -0
  475. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -0
  476. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +127 -0
  477. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -1
  478. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +3 -3
  479. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
  480. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +10 -8
  481. package/src/shade/playground/skinned_mesh_soup/README.md +122 -0
  482. package/src/shade/playground/skinned_mesh_soup/index.html +199 -0
  483. package/src/shade/playground/skinned_mesh_soup/main.d.ts +7 -0
  484. package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -0
  485. package/src/shade/playground/skinned_mesh_soup/main.js +564 -0
  486. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +23 -0
  487. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -0
  488. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +409 -0
  489. package/src/shade/playground/texture_encode/README.md +109 -0
  490. package/src/shade/playground/texture_encode/index.html +133 -0
  491. package/src/shade/playground/texture_encode/main.d.ts +24 -0
  492. package/src/shade/playground/texture_encode/main.d.ts.map +1 -0
  493. package/src/shade/playground/texture_encode/main.js +1430 -0
  494. package/src/shade/playground/texture_encode/panel_view.d.ts +118 -0
  495. package/src/shade/playground/texture_encode/panel_view.d.ts.map +1 -0
  496. package/src/shade/playground/texture_encode/panel_view.js +363 -0
  497. package/src/shade/renderer/Renderer.js +2 -2
  498. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  499. package/src/shade/renderer/animation/GPUAnimationManager.js +49 -5
  500. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  501. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +32 -14
  502. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  503. package/src/shade/renderer/geometry/GPUGeometryManager.js +591 -497
  504. package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts +9 -0
  505. package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts.map +1 -1
  506. package/src/shade/renderer/geometry/GPUGeometryMetadata.js +10 -0
  507. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +606 -0
  508. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts +17 -0
  509. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts.map +1 -0
  510. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.js +44 -0
  511. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts +58 -0
  512. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts.map +1 -0
  513. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +362 -0
  514. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +38 -0
  515. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  516. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +730 -617
  517. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +15 -2
  518. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
  519. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +15 -1
  520. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts +39 -0
  521. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts.map +1 -0
  522. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.js +134 -0
  523. package/src/shade/renderer/geometry/virtual/build/gltf/gltf_collect_geometries.js +3 -3
  524. package/src/shade/renderer/geometry/virtual/build/gltf/gltf_open_document.js +3 -3
  525. package/src/shade/renderer/geometry/virtual/build/gltf/gltf_read_geometry.js +1 -1
  526. package/src/shade/renderer/gpu_primitive/bvh/BVH_NODE_LAYOUT_DEFINITION.d.ts +17 -0
  527. package/src/shade/renderer/gpu_primitive/bvh/BVH_NODE_LAYOUT_DEFINITION.d.ts.map +1 -0
  528. package/src/shade/renderer/gpu_primitive/bvh/BVH_NODE_LAYOUT_DEFINITION.js +30 -0
  529. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +8 -1
  530. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_climb.d.ts +34 -0
  531. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_climb.d.ts.map +1 -0
  532. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_climb.js +102 -0
  533. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +11 -9
  534. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  535. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +24 -86
  536. package/src/shade/renderer/loader/gltf/gltf_create_texture.d.ts +18 -0
  537. package/src/shade/renderer/loader/gltf/gltf_create_texture.d.ts.map +1 -0
  538. package/src/shade/renderer/loader/gltf/gltf_create_texture.js +103 -0
  539. package/src/shade/renderer/loader/gltf/gltf_image_roles.d.ts +26 -0
  540. package/src/shade/renderer/loader/gltf/gltf_image_roles.d.ts.map +1 -0
  541. package/src/shade/renderer/loader/gltf/gltf_image_roles.js +108 -0
  542. package/src/shade/renderer/loader/gltf/load_gltf.d.ts +10 -3
  543. package/src/shade/renderer/loader/gltf/load_gltf.d.ts.map +1 -1
  544. package/src/shade/renderer/loader/gltf/load_gltf.js +1179 -1253
  545. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +18 -1
  546. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts.map +1 -1
  547. package/src/shade/renderer/loader/gltf/tiny-gltf.js +837 -646
  548. package/src/shade/renderer/loader/usd/load_usd.js +3 -3
  549. package/src/shade/renderer/loader/usd/usd_build_scene.js +2 -2
  550. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts +6 -5
  551. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts.map +1 -1
  552. package/src/shade/renderer/loader/usd/usd_decode_image.js +197 -384
  553. package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts.map +1 -1
  554. package/src/shade/renderer/particles/cull/chunk_particle_cull.js +3 -1
  555. package/src/shade/renderer/particles/data/chunk_particle_emitter.js +1 -1
  556. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +1 -1
  557. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
  558. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +89 -0
  559. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -0
  560. package/src/shade/renderer/particles/isa/InstructionStream.js +162 -0
  561. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts +1 -48
  562. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts.map +1 -1
  563. package/src/shade/renderer/particles/isa/ParticleAssembler.js +25 -114
  564. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +1 -1
  565. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +4 -2
  566. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +4 -4
  567. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
  568. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +7 -5
  569. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
  570. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +3 -1
  571. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  572. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +3 -1
  573. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  574. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +5 -2
  575. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  576. package/src/shade/renderer/particles/shaders/shader_particle_render.js +9 -2
  577. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  578. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +3 -1
  579. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  580. package/src/shade/renderer/postprocess/taa/TAA.d.ts +3 -3
  581. package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
  582. package/src/shade/renderer/postprocess/taa/TAA.js +2 -6
  583. package/src/shade/renderer/postprocess/taa/chunk_depth_clip_offset_codec.d.ts +18 -0
  584. package/src/shade/renderer/postprocess/taa/chunk_depth_clip_offset_codec.d.ts.map +1 -0
  585. package/src/shade/renderer/postprocess/taa/chunk_depth_clip_offset_codec.js +36 -0
  586. package/src/shade/renderer/postprocess/taa/chunk_taa_history_color_bounding_box_YCoCg.d.ts.map +1 -1
  587. package/src/shade/renderer/postprocess/taa/chunk_taa_history_color_bounding_box_YCoCg.js +4 -1
  588. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.d.ts.map +1 -1
  589. package/src/shade/renderer/postprocess/taa/shader_depth_occlusion_clip.js +13 -8
  590. package/src/shade/renderer/postprocess/taa/shader_taa.d.ts +1 -1
  591. package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
  592. package/src/shade/renderer/postprocess/taa/shader_taa.js +52 -38
  593. package/src/shade/renderer/restir/di/chunk_restir_temporal_reuse.d.ts +4 -2
  594. package/src/shade/renderer/restir/di/chunk_restir_temporal_reuse.d.ts.map +1 -1
  595. package/src/shade/renderer/restir/di/chunk_restir_temporal_reuse.js +9 -6
  596. package/src/shade/renderer/scene/optimization/deduplicate_images.js +93 -93
  597. package/src/shade/renderer/scene/optimization/downscale_images.js +216 -216
  598. package/src/shade/renderer/scene/serialization/decode_image_source_hdr.js +1 -1
  599. package/src/shade/renderer/scene/serialization/deserialize_scene.js +1 -1
  600. package/src/shade/renderer/scene/serialization/write_image_source.js +1 -1
  601. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +1 -1
  602. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +1 -1
  603. package/src/shade/renderer/shader/chunk/texture/sample/chunk_texture_sample_catmullrom_hardware_5tap_uv.d.ts +2 -1
  604. package/src/shade/renderer/shader/chunk/texture/sample/chunk_texture_sample_catmullrom_hardware_5tap_uv.d.ts.map +1 -1
  605. package/src/shade/renderer/shader/chunk/texture/sample/chunk_texture_sample_catmullrom_hardware_5tap_uv.js +2 -1
  606. package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +893 -10
  607. package/src/shade/renderer/texture/encode/ENCODE_NOTES_2026_09_02.md +462 -0
  608. package/src/shade/renderer/texture/encode/chunk_astc_encode_block_4x4_rgb.d.ts +33 -0
  609. package/src/shade/renderer/texture/encode/chunk_astc_encode_block_4x4_rgb.d.ts.map +1 -0
  610. package/src/shade/renderer/texture/encode/chunk_astc_encode_block_4x4_rgb.js +310 -0
  611. package/src/shade/renderer/texture/encode/chunk_astc_pack_4x4_rgb.d.ts +17 -0
  612. package/src/shade/renderer/texture/encode/chunk_astc_pack_4x4_rgb.d.ts.map +1 -0
  613. package/src/shade/renderer/texture/encode/chunk_astc_pack_4x4_rgb.js +51 -0
  614. package/src/shade/renderer/texture/encode/chunk_bc1_encode_block.d.ts +42 -0
  615. package/src/shade/renderer/texture/encode/chunk_bc1_encode_block.d.ts.map +1 -0
  616. package/src/shade/renderer/texture/encode/chunk_bc1_encode_block.js +375 -0
  617. package/src/shade/renderer/texture/encode/chunk_bc1_pack_block.d.ts +12 -0
  618. package/src/shade/renderer/texture/encode/chunk_bc1_pack_block.d.ts.map +1 -0
  619. package/src/shade/renderer/texture/encode/chunk_bc1_pack_block.js +24 -0
  620. package/src/shade/renderer/texture/encode/chunk_bc4_encode_block.d.ts +45 -0
  621. package/src/shade/renderer/texture/encode/chunk_bc4_encode_block.d.ts.map +1 -0
  622. package/src/shade/renderer/texture/encode/chunk_bc4_encode_block.js +348 -0
  623. package/src/shade/renderer/texture/encode/chunk_bc4_pack_block.d.ts +16 -0
  624. package/src/shade/renderer/texture/encode/chunk_bc4_pack_block.d.ts.map +1 -0
  625. package/src/shade/renderer/texture/encode/chunk_bc4_pack_block.js +33 -0
  626. package/src/shade/renderer/texture/encode/chunk_bc6h_encode_block_mode11.d.ts +32 -0
  627. package/src/shade/renderer/texture/encode/chunk_bc6h_encode_block_mode11.d.ts.map +1 -0
  628. package/src/shade/renderer/texture/encode/chunk_bc6h_encode_block_mode11.js +346 -0
  629. package/src/shade/renderer/texture/encode/chunk_bc6h_pack_mode11.d.ts +10 -0
  630. package/src/shade/renderer/texture/encode/chunk_bc6h_pack_mode11.d.ts.map +1 -0
  631. package/src/shade/renderer/texture/encode/chunk_bc6h_pack_mode11.js +54 -0
  632. package/src/shade/renderer/texture/encode/chunk_bc7_encode_block_mode6.d.ts +36 -0
  633. package/src/shade/renderer/texture/encode/chunk_bc7_encode_block_mode6.d.ts.map +1 -0
  634. package/src/shade/renderer/texture/encode/chunk_bc7_encode_block_mode6.js +327 -0
  635. package/src/shade/renderer/texture/encode/chunk_bc7_pack_mode6.d.ts +22 -0
  636. package/src/shade/renderer/texture/encode/chunk_bc7_pack_mode6.d.ts.map +1 -0
  637. package/src/shade/renderer/texture/encode/chunk_bc7_pack_mode6.js +71 -0
  638. package/src/shade/renderer/texture/encode/chunk_texture_encode_level.d.ts +20 -0
  639. package/src/shade/renderer/texture/encode/chunk_texture_encode_level.d.ts.map +1 -0
  640. package/src/shade/renderer/texture/encode/chunk_texture_encode_level.js +73 -0
  641. package/src/shade/renderer/texture/encode/chunk_texture_encode_load_block.d.ts +16 -0
  642. package/src/shade/renderer/texture/encode/chunk_texture_encode_load_block.d.ts.map +1 -0
  643. package/src/shade/renderer/texture/encode/chunk_texture_encode_load_block.js +36 -0
  644. package/src/shade/renderer/texture/encode/shader_texture_encode_astc_4x4.d.ts +13 -0
  645. package/src/shade/renderer/texture/encode/shader_texture_encode_astc_4x4.d.ts.map +1 -0
  646. package/src/shade/renderer/texture/encode/shader_texture_encode_astc_4x4.js +63 -0
  647. package/src/shade/renderer/texture/encode/shader_texture_encode_bc1.d.ts +12 -0
  648. package/src/shade/renderer/texture/encode/shader_texture_encode_bc1.d.ts.map +1 -0
  649. package/src/shade/renderer/texture/encode/shader_texture_encode_bc1.js +60 -0
  650. package/src/shade/renderer/texture/encode/shader_texture_encode_bc4.d.ts +28 -0
  651. package/src/shade/renderer/texture/encode/shader_texture_encode_bc4.d.ts.map +1 -0
  652. package/src/shade/renderer/texture/encode/shader_texture_encode_bc4.js +76 -0
  653. package/src/shade/renderer/texture/encode/shader_texture_encode_bc4_snorm.d.ts +16 -0
  654. package/src/shade/renderer/texture/encode/shader_texture_encode_bc4_snorm.d.ts.map +1 -0
  655. package/src/shade/renderer/texture/encode/shader_texture_encode_bc4_snorm.js +64 -0
  656. package/src/shade/renderer/texture/encode/shader_texture_encode_bc5.d.ts +14 -0
  657. package/src/shade/renderer/texture/encode/shader_texture_encode_bc5.d.ts.map +1 -0
  658. package/src/shade/renderer/texture/encode/shader_texture_encode_bc5.js +67 -0
  659. package/src/shade/renderer/texture/encode/shader_texture_encode_bc5_snorm.d.ts +10 -0
  660. package/src/shade/renderer/texture/encode/shader_texture_encode_bc5_snorm.d.ts.map +1 -0
  661. package/src/shade/renderer/texture/encode/shader_texture_encode_bc5_snorm.js +63 -0
  662. package/src/shade/renderer/texture/encode/shader_texture_encode_bc6h.d.ts +12 -0
  663. package/src/shade/renderer/texture/encode/shader_texture_encode_bc6h.d.ts.map +1 -0
  664. package/src/shade/renderer/texture/encode/shader_texture_encode_bc6h.js +62 -0
  665. package/src/shade/renderer/texture/encode/shader_texture_encode_bc7.d.ts +14 -0
  666. package/src/shade/renderer/texture/encode/shader_texture_encode_bc7.d.ts.map +1 -0
  667. package/src/shade/renderer/texture/encode/shader_texture_encode_bc7.js +58 -0
  668. package/src/shade/renderer/texture/encode/texture_encode.d.ts +84 -0
  669. package/src/shade/renderer/texture/encode/texture_encode.d.ts.map +1 -0
  670. package/src/shade/renderer/texture/encode/texture_encode.js +168 -0
  671. package/src/shade/renderer/texture/encode/texture_encode_layout.d.ts +196 -0
  672. package/src/shade/renderer/texture/encode/texture_encode_layout.d.ts.map +1 -0
  673. package/src/shade/renderer/texture/encode/texture_encode_layout.js +248 -0
  674. package/src/shade/renderer/texture/encode/texture_encode_resources.d.ts +15 -0
  675. package/src/shade/renderer/texture/encode/texture_encode_resources.d.ts.map +1 -0
  676. package/src/shade/renderer/texture/encode/texture_encode_resources.js +25 -0
  677. package/src/shade/renderer/texture/encode/texture_encode_shader.d.ts +30 -0
  678. package/src/shade/renderer/texture/encode/texture_encode_shader.d.ts.map +1 -0
  679. package/src/shade/renderer/texture/encode/texture_encode_shader.js +108 -0
  680. package/src/shade/renderer/texture/format/gpu_texture_compression_support.d.ts +3 -1
  681. package/src/shade/renderer/texture/format/gpu_texture_compression_support.d.ts.map +1 -1
  682. package/src/shade/renderer/texture/format/gpu_texture_compression_support.js +8 -25
  683. package/src/shade/renderer/texture/format/texture_format_from_shade_image.d.ts.map +1 -1
  684. package/src/shade/renderer/texture/format/texture_format_from_shade_image.js +26 -2
  685. package/src/shade/renderer/texture/source/texel_data_from_ktx2.d.ts +32 -0
  686. package/src/shade/renderer/texture/source/texel_data_from_ktx2.d.ts.map +1 -0
  687. package/src/shade/renderer/texture/source/texel_data_from_ktx2.js +48 -0
  688. package/src/shade/renderer/texture/texture_write_level.d.ts.map +1 -1
  689. package/src/shade/renderer/texture/texture_write_level.js +11 -1
  690. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  691. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +20 -0
  692. package/src/shade/renderer/volumetrics/NOTES.md +28 -0
  693. package/src/shade/renderer/volumetrics/taa/chunk_volumetric_history_bounding_box.d.ts.map +1 -1
  694. package/src/shade/renderer/volumetrics/taa/chunk_volumetric_history_bounding_box.js +7 -2
  695. package/src/shade/renderer/volumetrics/taa/chunk_volumetrics_taa_reproject.d.ts +17 -0
  696. package/src/shade/renderer/volumetrics/taa/chunk_volumetrics_taa_reproject.d.ts.map +1 -0
  697. package/src/shade/renderer/volumetrics/taa/chunk_volumetrics_taa_reproject.js +168 -0
  698. package/src/shade/renderer/volumetrics/taa/chunk_volumetrics_taa_resolve.d.ts +13 -0
  699. package/src/shade/renderer/volumetrics/taa/chunk_volumetrics_taa_resolve.d.ts.map +1 -0
  700. package/src/shade/renderer/volumetrics/taa/chunk_volumetrics_taa_resolve.js +56 -0
  701. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
  702. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +134 -334
  703. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  704. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +49 -21
  705. package/src/avif/encode_image_source.d.ts +0 -70
  706. package/src/avif/encode_image_source.d.ts.map +0 -1
  707. package/src/avif/encode_image_source.js +0 -117
  708. package/src/avif/encoder_worker.d.ts.map +0 -1
  709. package/src/avif/index.d.ts +0 -5
  710. package/src/avif/index.d.ts.map +0 -1
  711. package/src/avif/index.js +0 -21
  712. package/src/avif/native/DECISIONS.md +0 -545
  713. package/src/avif/native/api/AvifDecoder.d.ts.map +0 -1
  714. package/src/avif/native/api/apply_transformations.d.ts.map +0 -1
  715. package/src/avif/native/api/avif_to_sampler2d.d.ts +0 -25
  716. package/src/avif/native/api/avif_to_sampler2d.d.ts.map +0 -1
  717. package/src/avif/native/api/avif_to_sampler2d.js +0 -42
  718. package/src/avif/native/api/convert_to_rgba.d.ts.map +0 -1
  719. package/src/avif/native/api/convert_to_rgba.js +0 -204
  720. package/src/avif/native/api/decode_avif.d.ts.map +0 -1
  721. package/src/avif/native/api/decode_image_item.d.ts.map +0 -1
  722. package/src/avif/native/api/encode_avif.d.ts.map +0 -1
  723. package/src/avif/native/api/sampler2d_to_avif.d.ts.map +0 -1
  724. package/src/avif/native/api/sampler2d_to_avif.js +0 -108
  725. package/src/avif/native/av1/decode/Av1FrameContext.d.ts.map +0 -1
  726. package/src/avif/native/av1/decode/block_decoded.d.ts.map +0 -1
  727. package/src/avif/native/av1/decode/decode_av1_still.d.ts.map +0 -1
  728. package/src/avif/native/av1/decode/decode_coefficients.d.ts.map +0 -1
  729. package/src/avif/native/av1/decode/decode_palette.d.ts.map +0 -1
  730. package/src/avif/native/av1/decode/decode_palette.js +0 -442
  731. package/src/avif/native/av1/decode/decode_tile.d.ts.map +0 -1
  732. package/src/avif/native/av1/decode/decode_tile.js +0 -1213
  733. package/src/avif/native/av1/decode/get_scan.d.ts.map +0 -1
  734. package/src/avif/native/av1/decode/read_lr.d.ts.map +0 -1
  735. package/src/avif/native/av1/decode/read_lr.js +0 -277
  736. package/src/avif/native/av1/decode/read_transform_type.d.ts.map +0 -1
  737. package/src/avif/native/av1/decode/read_transform_type.js +0 -92
  738. package/src/avif/native/av1/decode/reconstruct.d.ts.map +0 -1
  739. package/src/avif/native/av1/decode/reconstruct.js +0 -241
  740. package/src/avif/native/av1/decode/transform_type.d.ts.map +0 -1
  741. package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts.map +0 -1
  742. package/src/avif/native/av1/encode/Av1EncodeContext.d.ts.map +0 -1
  743. package/src/avif/native/av1/encode/build_headers.d.ts.map +0 -1
  744. package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts.map +0 -1
  745. package/src/avif/native/av1/encode/choose_filters.d.ts.map +0 -1
  746. package/src/avif/native/av1/encode/choose_restoration.d.ts.map +0 -1
  747. package/src/avif/native/av1/encode/choose_restoration.js +0 -616
  748. package/src/avif/native/av1/encode/decode_effort.d.ts.map +0 -1
  749. package/src/avif/native/av1/encode/encode_av1_still.d.ts.map +0 -1
  750. package/src/avif/native/av1/encode/encode_effort.d.ts.map +0 -1
  751. package/src/avif/native/av1/encode/encode_tile.d.ts.map +0 -1
  752. package/src/avif/native/av1/encode/encode_tile.js +0 -2331
  753. package/src/avif/native/av1/encode/quantise.d.ts.map +0 -1
  754. package/src/avif/native/av1/encode/write_coefficients.d.ts.map +0 -1
  755. package/src/avif/native/av1/encode/write_lr.d.ts.map +0 -1
  756. package/src/avif/native/av1/encode/write_transform_type.d.ts.map +0 -1
  757. package/src/avif/native/av1/entropy/CdfContext.d.ts.map +0 -1
  758. package/src/avif/native/av1/entropy/SymbolReader.d.ts.map +0 -1
  759. package/src/avif/native/av1/entropy/SymbolWriter.d.ts.map +0 -1
  760. package/src/avif/native/av1/entropy/coefficient_context.d.ts.map +0 -1
  761. package/src/avif/native/av1/entropy/partition_cdf.d.ts.map +0 -1
  762. package/src/avif/native/av1/entropy/symbol_cost.d.ts.map +0 -1
  763. package/src/avif/native/av1/filter/cdef.d.ts.map +0 -1
  764. package/src/avif/native/av1/filter/cdef.js +0 -313
  765. package/src/avif/native/av1/filter/loop_filter.d.ts.map +0 -1
  766. package/src/avif/native/av1/filter/loop_filter.js +0 -377
  767. package/src/avif/native/av1/filter/loop_restoration.d.ts.map +0 -1
  768. package/src/avif/native/av1/filter/loop_restoration.js +0 -451
  769. package/src/avif/native/av1/filter/superres.d.ts.map +0 -1
  770. package/src/avif/native/av1/filter/superres.js +0 -86
  771. package/src/avif/native/av1/grain/FilmGrainState.d.ts.map +0 -1
  772. package/src/avif/native/av1/grain/film_grain.d.ts.map +0 -1
  773. package/src/avif/native/av1/grain/film_grain.js +0 -623
  774. package/src/avif/native/av1/obu/FrameHeader.d.ts.map +0 -1
  775. package/src/avif/native/av1/obu/ObuHeader.d.ts.map +0 -1
  776. package/src/avif/native/av1/obu/SequenceHeader.d.ts.map +0 -1
  777. package/src/avif/native/av1/obu/for_each_obu.d.ts.map +0 -1
  778. package/src/avif/native/av1/obu/parse_frame_header.d.ts.map +0 -1
  779. package/src/avif/native/av1/obu/parse_frame_header.js +0 -841
  780. package/src/avif/native/av1/obu/parse_obu_header.d.ts.map +0 -1
  781. package/src/avif/native/av1/obu/parse_sequence_header.d.ts.map +0 -1
  782. package/src/avif/native/av1/obu/write_frame_header.d.ts.map +0 -1
  783. package/src/avif/native/av1/obu/write_sequence_header.d.ts.map +0 -1
  784. package/src/avif/native/av1/predict/IntraPredictionState.d.ts.map +0 -1
  785. package/src/avif/native/av1/predict/intra_filter_type.d.ts.map +0 -1
  786. package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts.map +0 -1
  787. package/src/avif/native/av1/predict/predict_chroma_from_luma.js +0 -153
  788. package/src/avif/native/av1/predict/predict_intra.d.ts.map +0 -1
  789. package/src/avif/native/av1/predict/predict_intra.js +0 -803
  790. package/src/avif/native/av1/predict/predict_palette.d.ts.map +0 -1
  791. package/src/avif/native/av1/tables/av1_symbols.d.ts.map +0 -1
  792. package/src/avif/native/av1/tables/av1_symbols.js +0 -419
  793. package/src/avif/native/av1/tables/block_tables.d.ts.map +0 -1
  794. package/src/avif/native/av1/tables/block_tables.js +0 -270
  795. package/src/avif/native/av1/tables/cdf_tables.d.ts.map +0 -1
  796. package/src/avif/native/av1/tables/cdf_tables.js +0 -1893
  797. package/src/avif/native/av1/tables/coefficient_tables.d.ts.map +0 -1
  798. package/src/avif/native/av1/tables/coefficient_tables.js +0 -82
  799. package/src/avif/native/av1/tables/derived_block_tables.d.ts.map +0 -1
  800. package/src/avif/native/av1/tables/filter_tables.d.ts.map +0 -1
  801. package/src/avif/native/av1/tables/filter_tables.js +0 -313
  802. package/src/avif/native/av1/tables/grain_tables.d.ts.map +0 -1
  803. package/src/avif/native/av1/tables/grain_tables.js +0 -190
  804. package/src/avif/native/av1/tables/prediction_tables.d.ts.map +0 -1
  805. package/src/avif/native/av1/tables/prediction_tables.js +0 -223
  806. package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts.map +0 -1
  807. package/src/avif/native/av1/tables/quantizer_matrix_tables.js +0 -38
  808. package/src/avif/native/av1/tables/quantizer_tables.d.ts.map +0 -1
  809. package/src/avif/native/av1/tables/quantizer_tables.js +0 -160
  810. package/src/avif/native/av1/tables/scan_tables.d.ts.map +0 -1
  811. package/src/avif/native/av1/tables/scan_tables.js +0 -727
  812. package/src/avif/native/av1/tables/segmentation_tables.d.ts.map +0 -1
  813. package/src/avif/native/av1/tables/segmentation_tables.js +0 -48
  814. package/src/avif/native/av1/tables/transform_tables.d.ts.map +0 -1
  815. package/src/avif/native/av1/tables/transform_tables.js +0 -140
  816. package/src/avif/native/av1/tables/unpack_table.d.ts.map +0 -1
  817. package/src/avif/native/av1/tables/unpack_table.js +0 -73
  818. package/src/avif/native/av1/transform/forward_transform_2d.d.ts.map +0 -1
  819. package/src/avif/native/av1/transform/inverse_transform_1d.d.ts.map +0 -1
  820. package/src/avif/native/av1/transform/inverse_transform_1d.js +0 -590
  821. package/src/avif/native/av1/transform/inverse_transform_2d.d.ts.map +0 -1
  822. package/src/avif/native/av1/transform/inverse_transform_2d.js +0 -180
  823. package/src/avif/native/av1/util/ceil_log2.d.ts.map +0 -1
  824. package/src/avif/native/av1/util/floor_log2.d.ts +0 -20
  825. package/src/avif/native/av1/util/floor_log2.d.ts.map +0 -1
  826. package/src/avif/native/av1/util/floor_log2.js +0 -20
  827. package/src/avif/native/av1/util/round2.d.ts.map +0 -1
  828. package/src/avif/native/av1/util/round2_signed.d.ts.map +0 -1
  829. package/src/avif/native/av1/util/tile_log2.d.ts.map +0 -1
  830. package/src/avif/native/bitstream/BitReader.d.ts.map +0 -1
  831. package/src/avif/native/bitstream/BitWriter.d.ts.map +0 -1
  832. package/src/avif/native/color/ColourTransform.d.ts.map +0 -1
  833. package/src/avif/native/color/YuvImage.d.ts.map +0 -1
  834. package/src/avif/native/color/clamp_sample.d.ts.map +0 -1
  835. package/src/avif/native/color/linear_to_transfer.d.ts.map +0 -1
  836. package/src/avif/native/color/linear_to_transfer.js +0 -126
  837. package/src/avif/native/color/primaries.d.ts.map +0 -1
  838. package/src/avif/native/color/rgb_row_to_ycbcr.d.ts.map +0 -1
  839. package/src/avif/native/color/transfer_to_linear.d.ts.map +0 -1
  840. package/src/avif/native/color/transfer_to_linear.js +0 -171
  841. package/src/avif/native/color/upsample_chroma_row.d.ts.map +0 -1
  842. package/src/avif/native/color/upsample_chroma_row.js +0 -89
  843. package/src/avif/native/color/ycbcr_row_to_rgb.d.ts.map +0 -1
  844. package/src/avif/native/color/ycbcr_row_to_rgb.js +0 -78
  845. package/src/avif/native/heif/AvifFile.d.ts.map +0 -1
  846. package/src/avif/native/heif/ItemProperty.d.ts.map +0 -1
  847. package/src/avif/native/heif/find_item_property.d.ts.map +0 -1
  848. package/src/avif/native/heif/find_item_references.d.ts.map +0 -1
  849. package/src/avif/native/heif/find_items_referencing.d.ts.map +0 -1
  850. package/src/avif/native/heif/parse_avif_file.d.ts.map +0 -1
  851. package/src/avif/native/heif/parse_avif_file.js +0 -384
  852. package/src/avif/native/heif/parse_image_grid.d.ts.map +0 -1
  853. package/src/avif/native/heif/parse_image_grid.js +0 -49
  854. package/src/avif/native/heif/parse_item_property.d.ts.map +0 -1
  855. package/src/avif/native/heif/read_item_data.d.ts.map +0 -1
  856. package/src/avif/native/heif/write_avif_file.d.ts.map +0 -1
  857. package/src/avif/native/heif/write_item_property.d.ts.map +0 -1
  858. package/src/avif/native/index.d.ts +0 -14
  859. package/src/avif/native/index.d.ts.map +0 -1
  860. package/src/avif/native/index.js +0 -56
  861. package/src/avif/native/isobmff/BoxHeader.d.ts.map +0 -1
  862. package/src/avif/native/isobmff/BoxWriter.d.ts +0 -118
  863. package/src/avif/native/isobmff/BoxWriter.d.ts.map +0 -1
  864. package/src/avif/native/isobmff/BoxWriter.js +0 -264
  865. package/src/avif/native/isobmff/for_each_box.d.ts.map +0 -1
  866. package/src/avif/native/isobmff/read_box_header.d.ts.map +0 -1
  867. package/src/avif/native/isobmff/read_full_box_header.d.ts.map +0 -1
  868. package/src/avif/threaded_image_encoder.d.ts.map +0 -1
  869. package/src/basis/BasisBitReader.d.ts +0 -77
  870. package/src/basis/BasisBitReader.d.ts.map +0 -1
  871. package/src/basis/BasisBitReader.js +0 -231
  872. package/src/basis/BasisHuffmanTable.d.ts.map +0 -1
  873. package/src/basis/basis_read_huffman_table.d.ts.map +0 -1
  874. package/src/basis/etc1s/Etc1sSelectorHistory.d.ts.map +0 -1
  875. package/src/basis/etc1s/etc1s_block_colors.d.ts.map +0 -1
  876. package/src/basis/etc1s/etc1s_decode_slice.d.ts.map +0 -1
  877. package/src/basis/etc1s/etc1s_decode_slice.js +0 -258
  878. package/src/basis/etc1s/etc1s_read_endpoint_codebook.d.ts.map +0 -1
  879. package/src/basis/etc1s/etc1s_read_selector_codebook.d.ts.map +0 -1
  880. package/src/basis/etc1s/etc1s_read_slice_tables.d.ts.map +0 -1
  881. package/src/basis/transcode/etc1s_to_bc1.d.ts +0 -24
  882. package/src/basis/transcode/etc1s_to_bc1.d.ts.map +0 -1
  883. package/src/basis/transcode/etc1s_to_bc1.js +0 -205
  884. package/src/basis/transcode/etc1s_to_bc7.d.ts +0 -30
  885. package/src/basis/transcode/etc1s_to_bc7.d.ts.map +0 -1
  886. package/src/basis/transcode/fit_endpoints.d.ts +0 -59
  887. package/src/basis/transcode/fit_endpoints.d.ts.map +0 -1
  888. package/src/basis/transcode/fit_endpoints.js +0 -226
  889. package/src/engine/asset/loaders/gltf/computeObjectBoundingSphere.d.ts +0 -8
  890. package/src/engine/asset/loaders/gltf/computeObjectBoundingSphere.d.ts.map +0 -1
  891. package/src/engine/asset/loaders/gltf/computeObjectBoundingSphere.js +0 -70
  892. package/src/engine/asset/loaders/gltf/isMesh.d.ts +0 -7
  893. package/src/engine/asset/loaders/gltf/isMesh.d.ts.map +0 -1
  894. package/src/engine/asset/loaders/gltf/isMesh.js +0 -8
  895. package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts.map +0 -1
  896. package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts.map +0 -1
  897. package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts.map +0 -1
  898. package/src/engine/asset/loaders/image/jpeg/JpegImage.js +0 -664
  899. package/src/engine/asset/loaders/image/jpeg/buildComponentData.d.ts.map +0 -1
  900. package/src/engine/asset/loaders/image/jpeg/buildHuffmanTable.d.ts.map +0 -1
  901. package/src/engine/asset/loaders/image/jpeg/decodeScan.d.ts.map +0 -1
  902. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts.map +0 -1
  903. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.js +0 -31
  904. package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts.map +0 -1
  905. package/src/engine/asset/loaders/image/jpeg/jpeg_decode.d.ts.map +0 -1
  906. package/src/engine/asset/loaders/image/png/PNG.d.ts.map +0 -1
  907. package/src/engine/asset/loaders/image/png/PNGReader.d.ts +0 -158
  908. package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +0 -1
  909. package/src/engine/asset/loaders/image/png/PNGReader.js +0 -656
  910. package/src/engine/asset/loaders/image/png/PNG_HEADER_BYTES.d.ts.map +0 -1
  911. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +0 -1
  912. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_iTXt.js +0 -53
  913. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +0 -1
  914. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_zTXt.js +0 -42
  915. package/src/engine/asset/loaders/image/png/crc32.d.ts +0 -2
  916. package/src/engine/asset/loaders/image/png/crc32.d.ts.map +0 -1
  917. package/src/engine/asset/loaders/image/png/crc32.js +0 -8
  918. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterAverage.d.ts.map +0 -1
  919. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts.map +0 -1
  920. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterPaeth.d.ts.map +0 -1
  921. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts.map +0 -1
  922. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts.map +0 -1
  923. package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts.map +0 -1
  924. package/src/engine/asset/loaders/image/png/filter/png_unfilter.js +0 -68
  925. package/src/engine/asset/loaders/image/png/png_inflate.d.ts.map +0 -1
  926. package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts.map +0 -1
  927. package/src/engine/asset/loaders/image/png/prototypePNG.d.ts.map +0 -1
  928. package/src/engine/asset/loaders/image/png/prototypePNG.js +0 -37
  929. package/src/ktx2/KTX2_IDENTIFIER.d.ts.map +0 -1
  930. package/src/ktx2/KhrDfModel.d.ts.map +0 -1
  931. package/src/ktx2/SupercompressionScheme.d.ts.map +0 -1
  932. package/src/ktx2/ktx2_read.d.ts +0 -71
  933. package/src/ktx2/ktx2_read.d.ts.map +0 -1
  934. package/src/ktx2/ktx2_read.js +0 -581
  935. package/src/ktx2/ktx2_read_basis_lz_global_data.d.ts +0 -27
  936. package/src/ktx2/ktx2_read_basis_lz_global_data.d.ts.map +0 -1
  937. package/src/ktx2/ktx2_read_basis_lz_global_data.js +0 -189
  938. package/src/ktx2/vk_format_to_texture_format.d.ts +0 -55
  939. package/src/ktx2/vk_format_to_texture_format.d.ts.map +0 -1
  940. package/src/ktx2/vk_format_to_texture_format.js +0 -290
  941. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts +0 -25
  942. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts.map +0 -1
  943. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +0 -102
  944. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts +0 -30
  945. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +0 -1
  946. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +0 -125
  947. package/src/shade/renderer/loader/gltf/GLTF_PRIMITIVE_MODE.d.ts.map +0 -1
  948. package/src/shade/renderer/loader/gltf/MESHOPT_COMPRESSION_PLAN.md +0 -793
  949. package/src/shade/renderer/loader/gltf/coalesce_array_duplicates.d.ts.map +0 -1
  950. package/src/shade/renderer/loader/gltf/ext/GltfBufferViewExtension.d.ts.map +0 -1
  951. package/src/shade/renderer/loader/gltf/ext/GltfBufferViewExtensionSet.d.ts.map +0 -1
  952. package/src/shade/renderer/loader/gltf/ext/GltfBufferViewExtensionSet.js +0 -109
  953. package/src/shade/renderer/loader/gltf/ext/gltf_apply_buffer_view_extensions.d.ts.map +0 -1
  954. package/src/shade/renderer/loader/gltf/ext/gltf_buffer_view_extensions.d.ts.map +0 -1
  955. package/src/shade/renderer/loader/gltf/ext/gltf_geometry_extensions.d.ts.map +0 -1
  956. package/src/shade/renderer/loader/gltf/ext/meshopt/MeshoptBufferViewExtension.d.ts.map +0 -1
  957. package/src/shade/renderer/loader/gltf/ext/meshopt/MeshoptBufferViewExtension.js +0 -301
  958. package/src/shade/renderer/loader/gltf/gltf_component_type.d.ts.map +0 -1
  959. package/src/shade/renderer/loader/gltf/gltf_node_world_matrices.d.ts.map +0 -1
  960. package/src/shade/renderer/loader/gltf/gltf_node_world_matrices.js +0 -137
  961. package/src/shade/renderer/loader/gltf/gltf_parse_container.d.ts.map +0 -1
  962. package/src/shade/renderer/loader/gltf/gltf_read_accessor.d.ts.map +0 -1
  963. package/src/shade/renderer/loader/gltf/gltf_read_accessor.js +0 -294
  964. package/src/shade/renderer/loader/gltf/gltf_used_image_indices.d.ts +0 -25
  965. package/src/shade/renderer/loader/gltf/gltf_used_image_indices.d.ts.map +0 -1
  966. package/src/shade/renderer/loader/gltf/gltf_used_image_indices.js +0 -49
  967. package/src/shade/renderer/loader/usd/UsdError.d.ts.map +0 -1
  968. package/src/shade/renderer/loader/usd/parse_usda.d.ts.map +0 -1
  969. package/src/shade/renderer/loader/usd/unpack_usdz.d.ts.map +0 -1
  970. package/src/shade/renderer/loader/usd/unpack_usdz.js +0 -106
  971. package/src/shade/renderer/loader/usd/usd_compose_transform.d.ts.map +0 -1
  972. package/src/shade/renderer/loader/usd/usd_compose_transform.js +0 -258
  973. package/src/shade/renderer/loader/usd/usd_lz4.d.ts.map +0 -1
  974. package/src/shade/renderer/loader/usd/usd_lz4.js +0 -182
  975. package/src/shade/renderer/loader/usd/usd_triangulate.d.ts.map +0 -1
  976. package/src/shade/renderer/particles/prototypeParticleSystem.d.ts +0 -2
  977. package/src/shade/renderer/particles/prototypeParticleSystem.d.ts.map +0 -1
  978. package/src/shade/renderer/particles/prototypeParticleSystem.js +0 -448
  979. package/src/shade/renderer/postprocess/taa/chunk_taa_sample_history_color.d.ts +0 -2
  980. package/src/shade/renderer/postprocess/taa/chunk_taa_sample_history_color.d.ts.map +0 -1
  981. package/src/shade/renderer/postprocess/taa/chunk_taa_sample_history_color.js +0 -43
  982. package/src/shade/renderer/scene/optimization/sampler2d_compare.d.ts.map +0 -1
  983. package/src/shade/renderer/scene/optimization/sampler2d_compare.js +0 -94
  984. /package/src/{avif → engine/asset/loaders/image/avif}/encoder_worker.d.ts +0 -0
  985. /package/src/{avif → engine/asset/loaders/image/avif}/encoder_worker.js +0 -0
  986. /package/src/{avif → engine/asset/loaders/image/avif}/threaded_image_encoder.d.ts +0 -0
  987. /package/src/{avif → engine/asset/loaders/image/avif}/threaded_image_encoder.js +0 -0
  988. /package/src/engine/asset/loaders/image/{png/prototypePNG.d.ts → prototypePNG.d.ts} +0 -0
  989. /package/src/{shade/renderer/scene/optimization → engine/graphics/texture/sampler/compare}/sampler2d_compare.d.ts +0 -0
  990. /package/src/{avif/native/api → engine/graphics/texture/sampler}/sampler2d_to_avif.d.ts +0 -0
  991. /package/src/{avif/native → format/image/avif}/NOTICE.md +0 -0
  992. /package/src/{avif/native → format/image/avif}/api/AvifDecoder.d.ts +0 -0
  993. /package/src/{avif/native → format/image/avif}/api/AvifDecoder.js +0 -0
  994. /package/src/{avif/native → format/image/avif}/api/apply_transformations.d.ts +0 -0
  995. /package/src/{avif/native → format/image/avif}/api/apply_transformations.js +0 -0
  996. /package/src/{avif/native → format/image/avif}/api/convert_to_rgba.d.ts +0 -0
  997. /package/src/{avif/native → format/image/avif}/api/decode_avif.d.ts +0 -0
  998. /package/src/{avif/native → format/image/avif}/api/decode_avif.js +0 -0
  999. /package/src/{avif/native → format/image/avif}/api/decode_image_item.d.ts +0 -0
  1000. /package/src/{avif/native → format/image/avif}/api/decode_image_item.js +0 -0
  1001. /package/src/{avif/native → format/image/avif}/api/encode_avif.d.ts +0 -0
  1002. /package/src/{avif/native → format/image/avif}/api/encode_avif.js +0 -0
  1003. /package/src/{avif/native → format/image/avif}/av1/decode/Av1FrameContext.d.ts +0 -0
  1004. /package/src/{avif/native → format/image/avif}/av1/decode/Av1FrameContext.js +0 -0
  1005. /package/src/{avif/native → format/image/avif}/av1/decode/block_decoded.d.ts +0 -0
  1006. /package/src/{avif/native → format/image/avif}/av1/decode/block_decoded.js +0 -0
  1007. /package/src/{avif/native → format/image/avif}/av1/decode/decode_av1_still.d.ts +0 -0
  1008. /package/src/{avif/native → format/image/avif}/av1/decode/decode_av1_still.js +0 -0
  1009. /package/src/{avif/native → format/image/avif}/av1/decode/decode_coefficients.d.ts +0 -0
  1010. /package/src/{avif/native → format/image/avif}/av1/decode/decode_coefficients.js +0 -0
  1011. /package/src/{avif/native → format/image/avif}/av1/decode/decode_palette.d.ts +0 -0
  1012. /package/src/{avif/native → format/image/avif}/av1/decode/decode_tile.d.ts +0 -0
  1013. /package/src/{avif/native → format/image/avif}/av1/decode/get_scan.d.ts +0 -0
  1014. /package/src/{avif/native → format/image/avif}/av1/decode/get_scan.js +0 -0
  1015. /package/src/{avif/native → format/image/avif}/av1/decode/read_lr.d.ts +0 -0
  1016. /package/src/{avif/native → format/image/avif}/av1/decode/read_transform_type.d.ts +0 -0
  1017. /package/src/{avif/native → format/image/avif}/av1/decode/reconstruct.d.ts +0 -0
  1018. /package/src/{avif/native → format/image/avif}/av1/decode/transform_type.d.ts +0 -0
  1019. /package/src/{avif/native → format/image/avif}/av1/decode/transform_type.js +0 -0
  1020. /package/src/{avif/native → format/image/avif}/av1/encode/Av1BlockSnapshot.d.ts +0 -0
  1021. /package/src/{avif/native → format/image/avif}/av1/encode/Av1BlockSnapshot.js +0 -0
  1022. /package/src/{avif/native → format/image/avif}/av1/encode/Av1EncodeContext.d.ts +0 -0
  1023. /package/src/{avif/native → format/image/avif}/av1/encode/Av1EncodeContext.js +0 -0
  1024. /package/src/{avif/native → format/image/avif}/av1/encode/build_headers.d.ts +0 -0
  1025. /package/src/{avif/native → format/image/avif}/av1/encode/build_headers.js +0 -0
  1026. /package/src/{avif/native → format/image/avif}/av1/encode/choose_chroma_alpha.d.ts +0 -0
  1027. /package/src/{avif/native → format/image/avif}/av1/encode/choose_chroma_alpha.js +0 -0
  1028. /package/src/{avif/native → format/image/avif}/av1/encode/choose_filters.d.ts +0 -0
  1029. /package/src/{avif/native → format/image/avif}/av1/encode/choose_filters.js +0 -0
  1030. /package/src/{avif/native → format/image/avif}/av1/encode/choose_restoration.d.ts +0 -0
  1031. /package/src/{avif/native → format/image/avif}/av1/encode/decode_effort.d.ts +0 -0
  1032. /package/src/{avif/native → format/image/avif}/av1/encode/decode_effort.js +0 -0
  1033. /package/src/{avif/native → format/image/avif}/av1/encode/encode_av1_still.d.ts +0 -0
  1034. /package/src/{avif/native → format/image/avif}/av1/encode/encode_av1_still.js +0 -0
  1035. /package/src/{avif/native → format/image/avif}/av1/encode/encode_effort.d.ts +0 -0
  1036. /package/src/{avif/native → format/image/avif}/av1/encode/encode_effort.js +0 -0
  1037. /package/src/{avif/native → format/image/avif}/av1/encode/encode_tile.d.ts +0 -0
  1038. /package/src/{avif/native → format/image/avif}/av1/encode/quantise.d.ts +0 -0
  1039. /package/src/{avif/native → format/image/avif}/av1/encode/quantise.js +0 -0
  1040. /package/src/{avif/native → format/image/avif}/av1/encode/write_coefficients.d.ts +0 -0
  1041. /package/src/{avif/native → format/image/avif}/av1/encode/write_coefficients.js +0 -0
  1042. /package/src/{avif/native → format/image/avif}/av1/encode/write_lr.d.ts +0 -0
  1043. /package/src/{avif/native → format/image/avif}/av1/encode/write_lr.js +0 -0
  1044. /package/src/{avif/native → format/image/avif}/av1/encode/write_transform_type.d.ts +0 -0
  1045. /package/src/{avif/native → format/image/avif}/av1/encode/write_transform_type.js +0 -0
  1046. /package/src/{avif/native → format/image/avif}/av1/entropy/CdfContext.d.ts +0 -0
  1047. /package/src/{avif/native → format/image/avif}/av1/entropy/CdfContext.js +0 -0
  1048. /package/src/{avif/native → format/image/avif}/av1/entropy/SymbolReader.d.ts +0 -0
  1049. /package/src/{avif/native → format/image/avif}/av1/entropy/SymbolReader.js +0 -0
  1050. /package/src/{avif/native → format/image/avif}/av1/entropy/SymbolWriter.d.ts +0 -0
  1051. /package/src/{avif/native → format/image/avif}/av1/entropy/SymbolWriter.js +0 -0
  1052. /package/src/{avif/native → format/image/avif}/av1/entropy/coefficient_context.d.ts +0 -0
  1053. /package/src/{avif/native → format/image/avif}/av1/entropy/coefficient_context.js +0 -0
  1054. /package/src/{avif/native → format/image/avif}/av1/entropy/partition_cdf.d.ts +0 -0
  1055. /package/src/{avif/native → format/image/avif}/av1/entropy/partition_cdf.js +0 -0
  1056. /package/src/{avif/native → format/image/avif}/av1/entropy/symbol_cost.d.ts +0 -0
  1057. /package/src/{avif/native → format/image/avif}/av1/entropy/symbol_cost.js +0 -0
  1058. /package/src/{avif/native → format/image/avif}/av1/filter/cdef.d.ts +0 -0
  1059. /package/src/{avif/native → format/image/avif}/av1/filter/loop_filter.d.ts +0 -0
  1060. /package/src/{avif/native → format/image/avif}/av1/filter/loop_restoration.d.ts +0 -0
  1061. /package/src/{avif/native → format/image/avif}/av1/filter/superres.d.ts +0 -0
  1062. /package/src/{avif/native → format/image/avif}/av1/grain/FilmGrainState.d.ts +0 -0
  1063. /package/src/{avif/native → format/image/avif}/av1/grain/FilmGrainState.js +0 -0
  1064. /package/src/{avif/native → format/image/avif}/av1/grain/film_grain.d.ts +0 -0
  1065. /package/src/{avif/native → format/image/avif}/av1/obu/FrameHeader.d.ts +0 -0
  1066. /package/src/{avif/native → format/image/avif}/av1/obu/FrameHeader.js +0 -0
  1067. /package/src/{avif/native → format/image/avif}/av1/obu/ObuHeader.d.ts +0 -0
  1068. /package/src/{avif/native → format/image/avif}/av1/obu/ObuHeader.js +0 -0
  1069. /package/src/{avif/native → format/image/avif}/av1/obu/SequenceHeader.d.ts +0 -0
  1070. /package/src/{avif/native → format/image/avif}/av1/obu/SequenceHeader.js +0 -0
  1071. /package/src/{avif/native → format/image/avif}/av1/obu/for_each_obu.d.ts +0 -0
  1072. /package/src/{avif/native → format/image/avif}/av1/obu/for_each_obu.js +0 -0
  1073. /package/src/{avif/native → format/image/avif}/av1/obu/parse_frame_header.d.ts +0 -0
  1074. /package/src/{avif/native → format/image/avif}/av1/obu/parse_obu_header.d.ts +0 -0
  1075. /package/src/{avif/native → format/image/avif}/av1/obu/parse_obu_header.js +0 -0
  1076. /package/src/{avif/native → format/image/avif}/av1/obu/parse_sequence_header.d.ts +0 -0
  1077. /package/src/{avif/native → format/image/avif}/av1/obu/parse_sequence_header.js +0 -0
  1078. /package/src/{avif/native → format/image/avif}/av1/obu/write_frame_header.d.ts +0 -0
  1079. /package/src/{avif/native → format/image/avif}/av1/obu/write_frame_header.js +0 -0
  1080. /package/src/{avif/native → format/image/avif}/av1/obu/write_sequence_header.d.ts +0 -0
  1081. /package/src/{avif/native → format/image/avif}/av1/obu/write_sequence_header.js +0 -0
  1082. /package/src/{avif/native → format/image/avif}/av1/predict/IntraPredictionState.d.ts +0 -0
  1083. /package/src/{avif/native → format/image/avif}/av1/predict/IntraPredictionState.js +0 -0
  1084. /package/src/{avif/native → format/image/avif}/av1/predict/intra_filter_type.d.ts +0 -0
  1085. /package/src/{avif/native → format/image/avif}/av1/predict/intra_filter_type.js +0 -0
  1086. /package/src/{avif/native → format/image/avif}/av1/predict/predict_chroma_from_luma.d.ts +0 -0
  1087. /package/src/{avif/native → format/image/avif}/av1/predict/predict_intra.d.ts +0 -0
  1088. /package/src/{avif/native → format/image/avif}/av1/predict/predict_palette.d.ts +0 -0
  1089. /package/src/{avif/native → format/image/avif}/av1/predict/predict_palette.js +0 -0
  1090. /package/src/{avif/native → format/image/avif}/av1/tables/av1_symbols.d.ts +0 -0
  1091. /package/src/{avif/native → format/image/avif}/av1/tables/block_tables.d.ts +0 -0
  1092. /package/src/{avif/native → format/image/avif}/av1/tables/cdf_tables.d.ts +0 -0
  1093. /package/src/{avif/native → format/image/avif}/av1/tables/coefficient_tables.d.ts +0 -0
  1094. /package/src/{avif/native → format/image/avif}/av1/tables/derived_block_tables.d.ts +0 -0
  1095. /package/src/{avif/native → format/image/avif}/av1/tables/derived_block_tables.js +0 -0
  1096. /package/src/{avif/native → format/image/avif}/av1/tables/filter_tables.d.ts +0 -0
  1097. /package/src/{avif/native → format/image/avif}/av1/tables/grain_tables.d.ts +0 -0
  1098. /package/src/{avif/native → format/image/avif}/av1/tables/prediction_tables.d.ts +0 -0
  1099. /package/src/{avif/native → format/image/avif}/av1/tables/quantizer_matrix_tables.d.ts +0 -0
  1100. /package/src/{avif/native → format/image/avif}/av1/tables/quantizer_tables.d.ts +0 -0
  1101. /package/src/{avif/native → format/image/avif}/av1/tables/scan_tables.d.ts +0 -0
  1102. /package/src/{avif/native → format/image/avif}/av1/tables/segmentation_tables.d.ts +0 -0
  1103. /package/src/{avif/native → format/image/avif}/av1/tables/transform_tables.d.ts +0 -0
  1104. /package/src/{avif/native → format/image/avif}/av1/tables/unpack_table.d.ts +0 -0
  1105. /package/src/{avif/native → format/image/avif}/av1/transform/forward_transform_2d.d.ts +0 -0
  1106. /package/src/{avif/native → format/image/avif}/av1/transform/forward_transform_2d.js +0 -0
  1107. /package/src/{avif/native → format/image/avif}/av1/transform/inverse_transform_1d.d.ts +0 -0
  1108. /package/src/{avif/native → format/image/avif}/av1/transform/inverse_transform_2d.d.ts +0 -0
  1109. /package/src/{avif/native → format/image/avif}/av1/util/ceil_log2.d.ts +0 -0
  1110. /package/src/{avif/native → format/image/avif}/av1/util/ceil_log2.js +0 -0
  1111. /package/src/{avif/native → format/image/avif}/av1/util/round2.d.ts +0 -0
  1112. /package/src/{avif/native → format/image/avif}/av1/util/round2.js +0 -0
  1113. /package/src/{avif/native → format/image/avif}/av1/util/round2_signed.d.ts +0 -0
  1114. /package/src/{avif/native → format/image/avif}/av1/util/round2_signed.js +0 -0
  1115. /package/src/{avif/native → format/image/avif}/av1/util/tile_log2.d.ts +0 -0
  1116. /package/src/{avif/native → format/image/avif}/av1/util/tile_log2.js +0 -0
  1117. /package/src/{avif/native → format/image/avif}/bitstream/BitReader.d.ts +0 -0
  1118. /package/src/{avif/native → format/image/avif}/bitstream/BitReader.js +0 -0
  1119. /package/src/{avif/native → format/image/avif}/bitstream/BitWriter.d.ts +0 -0
  1120. /package/src/{avif/native → format/image/avif}/bitstream/BitWriter.js +0 -0
  1121. /package/src/{avif/native → format/image/avif}/color/ColourTransform.d.ts +0 -0
  1122. /package/src/{avif/native → format/image/avif}/color/ColourTransform.js +0 -0
  1123. /package/src/{avif/native → format/image/avif}/color/YuvImage.d.ts +0 -0
  1124. /package/src/{avif/native → format/image/avif}/color/YuvImage.js +0 -0
  1125. /package/src/{avif/native → format/image/avif}/color/clamp_sample.d.ts +0 -0
  1126. /package/src/{avif/native → format/image/avif}/color/clamp_sample.js +0 -0
  1127. /package/src/{avif/native → format/image/avif}/color/linear_to_transfer.d.ts +0 -0
  1128. /package/src/{avif/native → format/image/avif}/color/primaries.d.ts +0 -0
  1129. /package/src/{avif/native → format/image/avif}/color/primaries.js +0 -0
  1130. /package/src/{avif/native → format/image/avif}/color/rgb_row_to_ycbcr.d.ts +0 -0
  1131. /package/src/{avif/native → format/image/avif}/color/rgb_row_to_ycbcr.js +0 -0
  1132. /package/src/{avif/native → format/image/avif}/color/transfer_to_linear.d.ts +0 -0
  1133. /package/src/{avif/native → format/image/avif}/color/upsample_chroma_row.d.ts +0 -0
  1134. /package/src/{avif/native → format/image/avif}/color/ycbcr_row_to_rgb.d.ts +0 -0
  1135. /package/src/{avif/native → format/image/avif}/heif/AvifFile.d.ts +0 -0
  1136. /package/src/{avif/native → format/image/avif}/heif/AvifFile.js +0 -0
  1137. /package/src/{avif/native → format/image/avif}/heif/ItemProperty.d.ts +0 -0
  1138. /package/src/{avif/native → format/image/avif}/heif/ItemProperty.js +0 -0
  1139. /package/src/{avif/native → format/image/avif}/heif/find_item_property.d.ts +0 -0
  1140. /package/src/{avif/native → format/image/avif}/heif/find_item_property.js +0 -0
  1141. /package/src/{avif/native → format/image/avif}/heif/find_item_references.d.ts +0 -0
  1142. /package/src/{avif/native → format/image/avif}/heif/find_item_references.js +0 -0
  1143. /package/src/{avif/native → format/image/avif}/heif/find_items_referencing.d.ts +0 -0
  1144. /package/src/{avif/native → format/image/avif}/heif/find_items_referencing.js +0 -0
  1145. /package/src/{avif/native → format/image/avif}/heif/parse_avif_file.d.ts +0 -0
  1146. /package/src/{avif/native → format/image/avif}/heif/parse_image_grid.d.ts +0 -0
  1147. /package/src/{avif/native → format/image/avif}/heif/parse_item_property.d.ts +0 -0
  1148. /package/src/{avif/native → format/image/avif}/heif/parse_item_property.js +0 -0
  1149. /package/src/{avif/native → format/image/avif}/heif/read_item_data.d.ts +0 -0
  1150. /package/src/{avif/native → format/image/avif}/heif/read_item_data.js +0 -0
  1151. /package/src/{avif/native → format/image/avif}/heif/write_avif_file.d.ts +0 -0
  1152. /package/src/{avif/native → format/image/avif}/heif/write_avif_file.js +0 -0
  1153. /package/src/{avif/native → format/image/avif}/heif/write_item_property.d.ts +0 -0
  1154. /package/src/{avif/native → format/image/avif}/heif/write_item_property.js +0 -0
  1155. /package/src/{avif/native → format/image/avif}/isobmff/BoxHeader.d.ts +0 -0
  1156. /package/src/{avif/native → format/image/avif}/isobmff/BoxHeader.js +0 -0
  1157. /package/src/{avif/native → format/image/avif}/isobmff/for_each_box.d.ts +0 -0
  1158. /package/src/{avif/native → format/image/avif}/isobmff/for_each_box.js +0 -0
  1159. /package/src/{avif/native → format/image/avif}/isobmff/read_box_header.d.ts +0 -0
  1160. /package/src/{avif/native → format/image/avif}/isobmff/read_box_header.js +0 -0
  1161. /package/src/{avif/native → format/image/avif}/isobmff/read_full_box_header.d.ts +0 -0
  1162. /package/src/{avif/native → format/image/avif}/isobmff/read_full_box_header.js +0 -0
  1163. /package/src/{engine/asset/loaders → format}/image/jpeg/JpegFrame.d.ts +0 -0
  1164. /package/src/{engine/asset/loaders → format}/image/jpeg/JpegFrame.js +0 -0
  1165. /package/src/{engine/asset/loaders → format}/image/jpeg/JpegFrameComponent.d.ts +0 -0
  1166. /package/src/{engine/asset/loaders → format}/image/jpeg/JpegFrameComponent.js +0 -0
  1167. /package/src/{engine/asset/loaders → format}/image/jpeg/JpegImage.d.ts +0 -0
  1168. /package/src/{engine/asset/loaders → format}/image/jpeg/NOTES.md +0 -0
  1169. /package/src/{engine/asset/loaders → format}/image/jpeg/buildComponentData.d.ts +0 -0
  1170. /package/src/{engine/asset/loaders → format}/image/jpeg/buildComponentData.js +0 -0
  1171. /package/src/{engine/asset/loaders → format}/image/jpeg/buildHuffmanTable.d.ts +0 -0
  1172. /package/src/{engine/asset/loaders → format}/image/jpeg/buildHuffmanTable.js +0 -0
  1173. /package/src/{engine/asset/loaders → format}/image/jpeg/decodeScan.d.ts +0 -0
  1174. /package/src/{engine/asset/loaders → format}/image/jpeg/decodeScan.js +0 -0
  1175. /package/src/{engine/asset/loaders → format}/image/jpeg/idct8x8_float.d.ts +0 -0
  1176. /package/src/{engine/asset/loaders → format}/image/jpeg/jpeg_component_row.d.ts +0 -0
  1177. /package/src/{engine/asset/loaders → format}/image/jpeg/jpeg_component_row.js +0 -0
  1178. /package/src/{engine/asset/loaders → format}/image/jpeg/jpeg_decode.d.ts +0 -0
  1179. /package/src/{engine/asset/loaders → format}/image/jpeg/jpeg_decode.js +0 -0
  1180. /package/src/{engine/asset/loaders → format}/image/png/PNG.d.ts +0 -0
  1181. /package/src/{engine/asset/loaders → format}/image/png/PNG.js +0 -0
  1182. /package/src/{engine/asset/loaders → format}/image/png/PNG_HEADER_BYTES.d.ts +0 -0
  1183. /package/src/{engine/asset/loaders → format}/image/png/PNG_HEADER_BYTES.js +0 -0
  1184. /package/src/{engine/asset/loaders → format}/image/png/chunk/png_chunk_decode_iTXt.d.ts +0 -0
  1185. /package/src/{engine/asset/loaders → format}/image/png/chunk/png_chunk_decode_zTXt.d.ts +0 -0
  1186. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterAverage.d.ts +0 -0
  1187. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterAverage.js +0 -0
  1188. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterNone.d.ts +0 -0
  1189. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterNone.js +0 -0
  1190. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterPaeth.d.ts +0 -0
  1191. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterPaeth.js +0 -0
  1192. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterSub.d.ts +0 -0
  1193. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterSub.js +0 -0
  1194. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterUp.d.ts +0 -0
  1195. /package/src/{engine/asset/loaders → format}/image/png/filter/png_filter_unFilterUp.js +0 -0
  1196. /package/src/{engine/asset/loaders → format}/image/png/filter/png_unfilter.d.ts +0 -0
  1197. /package/src/{engine/asset/loaders → format}/image/png/png_inflate.d.ts +0 -0
  1198. /package/src/{engine/asset/loaders → format}/image/png/png_inflate.js +0 -0
  1199. /package/src/{engine/asset/loaders → format}/image/png/png_unpack_samples.d.ts +0 -0
  1200. /package/src/{engine/asset/loaders → format}/image/png/png_unpack_samples.js +0 -0
  1201. /package/src/{shade/renderer/loader → format/scene}/gltf/GLTF_PRIMITIVE_MODE.d.ts +0 -0
  1202. /package/src/{shade/renderer/loader → format/scene}/gltf/GLTF_PRIMITIVE_MODE.js +0 -0
  1203. /package/src/{shade/renderer/loader → format/scene}/gltf/coalesce_array_duplicates.d.ts +0 -0
  1204. /package/src/{shade/renderer/loader → format/scene}/gltf/coalesce_array_duplicates.js +0 -0
  1205. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/GltfBufferViewExtension.d.ts +0 -0
  1206. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/GltfBufferViewExtension.js +0 -0
  1207. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/GltfBufferViewExtensionSet.d.ts +0 -0
  1208. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/gltf_apply_buffer_view_extensions.d.ts +0 -0
  1209. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/gltf_apply_buffer_view_extensions.js +0 -0
  1210. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/gltf_buffer_view_extensions.d.ts +0 -0
  1211. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/gltf_buffer_view_extensions.js +0 -0
  1212. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/gltf_geometry_extensions.d.ts +0 -0
  1213. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/gltf_geometry_extensions.js +0 -0
  1214. /package/src/{shade/renderer/loader → format/scene}/gltf/ext/meshopt/MeshoptBufferViewExtension.d.ts +0 -0
  1215. /package/src/{shade/renderer/loader → format/scene}/gltf/gltf_component_type.d.ts +0 -0
  1216. /package/src/{shade/renderer/loader → format/scene}/gltf/gltf_component_type.js +0 -0
  1217. /package/src/{shade/renderer/loader → format/scene}/gltf/gltf_node_world_matrices.d.ts +0 -0
  1218. /package/src/{shade/renderer/loader → format/scene}/gltf/gltf_parse_container.d.ts +0 -0
  1219. /package/src/{shade/renderer/loader → format/scene}/gltf/gltf_parse_container.js +0 -0
  1220. /package/src/{shade/renderer/loader → format/scene}/gltf/gltf_read_accessor.d.ts +0 -0
  1221. /package/src/{shade/renderer/loader → format/scene}/usd/UsdError.d.ts +0 -0
  1222. /package/src/{shade/renderer/loader → format/scene}/usd/UsdError.js +0 -0
  1223. /package/src/{shade/renderer/loader → format/scene}/usd/parse_usda.d.ts +0 -0
  1224. /package/src/{shade/renderer/loader → format/scene}/usd/parse_usda.js +0 -0
  1225. /package/src/{shade/renderer/loader → format/scene}/usd/unpack_usdz.d.ts +0 -0
  1226. /package/src/{shade/renderer/loader → format/scene}/usd/usd_compose_transform.d.ts +0 -0
  1227. /package/src/{shade/renderer/loader → format/scene}/usd/usd_lz4.d.ts +0 -0
  1228. /package/src/{shade/renderer/loader → format/scene}/usd/usd_triangulate.d.ts +0 -0
  1229. /package/src/{shade/renderer/loader → format/scene}/usd/usd_triangulate.js +0 -0
  1230. /package/src/{basis → format/texture/basis}/BasisHuffmanTable.d.ts +0 -0
  1231. /package/src/{basis → format/texture/basis}/BasisHuffmanTable.js +0 -0
  1232. /package/src/{basis → format/texture/basis}/basis_read_huffman_table.d.ts +0 -0
  1233. /package/src/{basis → format/texture/basis}/basis_read_huffman_table.js +0 -0
  1234. /package/src/{basis → format/texture/basis}/etc1s/Etc1sSelectorHistory.d.ts +0 -0
  1235. /package/src/{basis → format/texture/basis}/etc1s/Etc1sSelectorHistory.js +0 -0
  1236. /package/src/{basis → format/texture/basis}/etc1s/etc1s_block_colors.d.ts +0 -0
  1237. /package/src/{basis → format/texture/basis}/etc1s/etc1s_block_colors.js +0 -0
  1238. /package/src/{basis → format/texture/basis}/etc1s/etc1s_decode_slice.d.ts +0 -0
  1239. /package/src/{basis → format/texture/basis}/etc1s/etc1s_read_endpoint_codebook.d.ts +0 -0
  1240. /package/src/{basis → format/texture/basis}/etc1s/etc1s_read_endpoint_codebook.js +0 -0
  1241. /package/src/{basis → format/texture/basis}/etc1s/etc1s_read_selector_codebook.d.ts +0 -0
  1242. /package/src/{basis → format/texture/basis}/etc1s/etc1s_read_selector_codebook.js +0 -0
  1243. /package/src/{basis → format/texture/basis}/etc1s/etc1s_read_slice_tables.d.ts +0 -0
  1244. /package/src/{basis → format/texture/basis}/etc1s/etc1s_read_slice_tables.js +0 -0
  1245. /package/src/{basis → format/texture/basis}/transcode/build_range_plan.js +0 -0
  1246. /package/src/{basis → format/texture/basis}/transcode/etc1s_to_bc7.js +0 -0
  1247. /package/src/{ktx2 → format/texture/ktx2}/KTX2_IDENTIFIER.d.ts +0 -0
  1248. /package/src/{ktx2 → format/texture/ktx2}/KTX2_IDENTIFIER.js +0 -0
  1249. /package/src/{ktx2 → format/texture/ktx2}/KhrDfModel.d.ts +0 -0
  1250. /package/src/{ktx2 → format/texture/ktx2}/KhrDfModel.js +0 -0
  1251. /package/src/{ktx2 → format/texture/ktx2}/SupercompressionScheme.d.ts +0 -0
  1252. /package/src/{ktx2 → format/texture/ktx2}/SupercompressionScheme.js +0 -0
@@ -9,6 +9,7 @@ import { make_owner_authorization } from "../ecs/owner_authorization.js";
9
9
  import { Replicator } from "../replication/Replicator.js";
10
10
  import { AlwaysRelevantScope } from "../replication/ScopeFilter.js";
11
11
  import { RewindEngine } from "../sim/RewindEngine.js";
12
+ import { SENDER_DERIVED, SENDER_LOCAL } from "../sim/SimActionExecutor.js";
12
13
  import { NetworkPeer } from "./NetworkPeer.js";
13
14
 
14
15
  /**
@@ -22,20 +23,44 @@ import { NetworkPeer } from "./NetworkPeer.js";
22
23
  * tagged with `(client_frame, sender_id, type_id, payload_bytes)`.
23
24
  * 2. Once per server tick, `tick(current_frame)` consumes the pending log:
24
25
  * - Rejects entries older than the action_log's rewindable window.
25
- * - Determines the oldest pending frame `replay_start`.
26
+ * - Determines `replay_start`: the oldest pending frame carrying an
27
+ * action the log does not already hold. The action stream re-sends
28
+ * every unacked frame each tick, so most of pending is copies of
29
+ * already-applied records; rewinding for those would replay the
30
+ * world into the state it was already in.
26
31
  * - Rewinds the server world back to end-of-(replay_start - 1) via the
27
32
  * action_log's prior-state captures (see {@link RewindEngine}).
28
33
  * - Replays forward `[replay_start, current_frame]`. For each frame `f`:
29
34
  * - Read historical actions out of `action_log[f]` BEFORE
30
35
  * `begin_frame(f)` recycles the buffer.
31
36
  * - Append pending entries for `f`.
37
+ * - Append anything queued by {@link enqueue_action}.
32
38
  * - Stable-sort the merged list by `sender_id` (so multi-client order
33
39
  * is deterministic across peers — relies on per-record sender_id in
34
- * the action log).
35
- * - `executor.execute` each in sorted order, then run the user-
36
- * supplied local sim via {@link onLocalSim}.
40
+ * the action log), and `executor.execute` each in that order.
41
+ * - Run the user-supplied local sim via {@link onLocalSim}.
37
42
  * - Clear pending.
38
43
  *
44
+ * A frame's records have one of two provenances, and the replay treats them
45
+ * differently:
46
+ *
47
+ * - **Input** — actions that arrived from a peer, and actions the server
48
+ * authored via {@link enqueue_action}. Each happened once, at a point in
49
+ * time nothing can recompute, so a replay reapplies it from the log.
50
+ * - **Derived output** — everything {@link onLocalSim} executes. The handler
51
+ * runs again on every replay of the frame, against a world that now
52
+ * includes whatever late input forced the replay, so the replay recomputes
53
+ * it. Reapplying the previous pass's copy as well would apply the effect
54
+ * twice — and three times on the next replay, and so on, without bound.
55
+ * The executor stamps these {@link SENDER_DERIVED} while the handler runs
56
+ * and {@link __read_historical} drops them.
57
+ *
58
+ * Derived records are still written, and still replicate: the prior-state
59
+ * capture is what lets a rewind undo the local sim's effect on replicated
60
+ * components (so derived output need not be idempotent — only deterministic
61
+ * in the frame's post-input state), and the action stream carries them to
62
+ * clients like any other record.
63
+ *
39
64
  * Net effect: a client action tagged at client tick K lands on the server as
40
65
  * if applied against end-of-K-1 server state, regardless of arrival timing
41
66
  * or order. Both peers compute identical world states for identical inputs.
@@ -67,6 +92,17 @@ export class ServerAuthoritativeServer {
67
92
  #historical_scratch = /** @type {Array<{type_id:number, sender_id:number, payload:Uint8Array}>} */ ([]);
68
93
  #sort_scratch = /** @type {Array<{sender_id:number, type_id:number, payload:Uint8Array}>} */ ([]);
69
94
  #payload_buf;
95
+ // Locally-authored actions waiting for the next fresh frame. Parallel
96
+ // arrays, serialized at enqueue time so the caller's instance is not
97
+ // retained (and so a bad action class is rejected at the call site rather
98
+ // than a tick later).
99
+ #local_type_ids = /** @type {number[]} */ ([]);
100
+ #local_payloads = /** @type {Uint8Array[]} */ ([]);
101
+ #local_buf;
102
+ // The frame this tick is simulating for the first time. Only it may take
103
+ // the locally-authored queue; every earlier frame in the replay window
104
+ // already holds, in its history, the actions it was given the first time.
105
+ #fresh_frame = -1;
70
106
  /**
71
107
  * Count of inbound pending entries dropped by the future-lead / total
72
108
  * bounds. See {@link onPendingActionDropped}.
@@ -180,6 +216,16 @@ export class ServerAuthoritativeServer {
180
216
  */
181
217
  this.simulation_delay_ticks = simulation_delay_ticks;
182
218
 
219
+ /**
220
+ * Peer id of this authoritative server, or `-1` when the session has no
221
+ * privileged peer. Actions from {@link enqueue_action} are tagged with
222
+ * it so they pass the owner-authorization gate on any entity (see
223
+ * {@link make_owner_authorization}), which is the documented convention
224
+ * for the server's own mutations.
225
+ * @type {number}
226
+ */
227
+ this.server_peer_id = server_peer_id;
228
+
183
229
  /**
184
230
  * Upper bound on how far ahead of the server's own simulation a peer
185
231
  * may tag an inbound action. `frame_number` is an attacker-controlled
@@ -215,6 +261,9 @@ export class ServerAuthoritativeServer {
215
261
  this.#payload_buf = new BinaryBuffer();
216
262
  this.#payload_buf.setCapacity(64);
217
263
 
264
+ this.#local_buf = new BinaryBuffer();
265
+ this.#local_buf.setCapacity(64);
266
+
218
267
  // Switch the Replicator to deferred-execute mode: incoming actions
219
268
  // accumulate in pending until tick() drains them.
220
269
  this.peer.replicator.on_pending_action = (peer_id, frame_number, type_id, buf, off, len) => {
@@ -231,13 +280,35 @@ export class ServerAuthoritativeServer {
231
280
  };
232
281
 
233
282
  /**
234
- * Fires once per frame during the replay loop, AFTER all merged
235
- * actions for that frame have been applied and BEFORE the action_log
236
- * frame is closed. Use this for server-authoritative local sim
237
- * (clamps, collision, AI step, etc.). The current world state
238
- * reflects all inputs for this frame; the local sim should be
239
- * idempotent under repeated application (because it may run many
240
- * times under rollback).
283
+ * Fires once per execution of a frame, AFTER all input for that frame
284
+ * has been applied and BEFORE the action_log frame is closed. Use it
285
+ * for server-authoritative local sim: clamps, collision, AI step,
286
+ * damage resolution, spawning the effects a hit produces.
287
+ *
288
+ * **This is a derivation, not an event.** The handler runs again on
289
+ * every replay of the frame, and must produce the same result for the
290
+ * same post-input world state — it is a function OF that state, not a
291
+ * one-shot that happens to be called from it. Concretely:
292
+ *
293
+ * - Decide from world state and the frame number. Both are restored
294
+ * before the handler re-runs.
295
+ * - Do NOT latch on handler-local flags (`if (already_fired) return`)
296
+ * to make something happen once. The replay needs the handler to
297
+ * re-emit; a latch makes it emit nothing, and the action is lost
298
+ * the first time a rollback crosses its frame. For a genuine
299
+ * one-shot — a lobby spawn, an admin command, anything decided
300
+ * outside the simulation — use {@link enqueue_action}, which is
301
+ * recorded as input and replayed rather than recomputed.
302
+ *
303
+ * Actions the handler executes are recorded as derived output: they
304
+ * replicate to clients and their prior state is captured so a rewind
305
+ * undoes them, but a replay recomputes them instead of reapplying the
306
+ * previous pass's copy. So they need not be idempotent — a handler may
307
+ * subtract hit points — only deterministic in the frame's post-input
308
+ * state. Components the handler mutates DIRECTLY, without going through
309
+ * an action, have no prior-state capture and are not undone by a
310
+ * rewind; those must additionally be idempotent, which is why a clamp
311
+ * is safe to write that way and `hp -= 10` is not.
241
312
  *
242
313
  * Args: `(frame_number)`.
243
314
  * @type {Signal}
@@ -334,6 +405,71 @@ export class ServerAuthoritativeServer {
334
405
  this.peer.send_time_dilation_feedback(peer_id, this.buffer_depth_for_peer(peer_id));
335
406
  }
336
407
 
408
+ /**
409
+ * Author a server-side action, to be applied on the next simulated frame.
410
+ *
411
+ * This is the supported path for a mutation the simulation cannot
412
+ * recompute — a spawn triggered by a lobby event, an admin command, a
413
+ * scripted trigger — as opposed to {@link onLocalSim}, which derives a
414
+ * frame's output from its state and is re-run on every replay.
415
+ *
416
+ * The action is serialized immediately (so the caller may reuse or discard
417
+ * the instance) and applied exactly once, on the next frame {@link tick}
418
+ * simulates for the first time, merged into that frame's input and ordered
419
+ * with it by sender. From then on it is ordinary history: replayed from the
420
+ * log like any other input, and never re-queued.
421
+ *
422
+ * Callable at any time EXCEPT from inside {@link onLocalSim}, which throws:
423
+ * that handler re-runs on every replay of its frame, so it would queue a
424
+ * fresh copy each time. (`executor.execute` is the opposite — it requires
425
+ * an open action_log frame, so it only works from inside the handler.)
426
+ *
427
+ * Recorded with {@link server_peer_id} as the sender when the session has
428
+ * one, so it passes the owner-authorization gate on any entity; with
429
+ * {@link SENDER_LOCAL} otherwise, which bypasses the gate.
430
+ *
431
+ * @param {SimAction} action
432
+ */
433
+ enqueue_action(action) {
434
+ assert.ok(action && action.isSimAction, 'enqueue_action: action must be a SimAction');
435
+ // Authoring from inside a derivation is always wrong, and unlike a
436
+ // latched handler it is exactly detectable, so it fails loudly here.
437
+ // onLocalSim runs again on every replay of its frame; each run would
438
+ // queue another copy, and each copy is recorded as input, so the
439
+ // applications compound per replay — the very shape this provenance
440
+ // split exists to stop. A handler that wants an effect every time the
441
+ // frame runs should `executor.execute` it as derived output instead.
442
+ // Real runtime check: asserts strip in prod.
443
+ if (this.executor.deriving) {
444
+ throw new Error(
445
+ 'ServerAuthoritativeServer.enqueue_action: cannot author an action from inside onLocalSim — the handler re-runs on every replay, so the action would be queued again each time. Execute it through the executor to record it as derived output, or enqueue it from outside the local sim.',
446
+ );
447
+ }
448
+ const type_id = action.constructor.type_id;
449
+ assert.ok(
450
+ type_id >= 0,
451
+ `enqueue_action: action class '${action.constructor.action_type_name ?? action.constructor.name}' has no wire type_id — register it before enqueueing it`,
452
+ );
453
+
454
+ this.#local_buf.position = 0;
455
+ action.serialize(this.#local_buf);
456
+ const len = this.#local_buf.position;
457
+
458
+ const payload = new Uint8Array(len);
459
+ payload.set(this.#local_buf.raw_bytes.subarray(0, len));
460
+
461
+ this.#local_type_ids.push(type_id);
462
+ this.#local_payloads.push(payload);
463
+ }
464
+
465
+ /**
466
+ * Number of locally-authored actions waiting for the next simulated frame.
467
+ * @returns {number}
468
+ */
469
+ queued_local_action_count() {
470
+ return this.#local_type_ids.length;
471
+ }
472
+
337
473
  /**
338
474
  * Drive the rollback flow for one tick.
339
475
  *
@@ -360,12 +496,31 @@ export class ServerAuthoritativeServer {
360
496
  this.#pending_trim_to_window(window_oldest);
361
497
  }
362
498
 
363
- // 2. Pick the replay window. `__pending_referenced_frames` is
364
- // sorted ascending; entries `> sim_frame` stay buffered.
499
+ // 2. Pick the replay window: the OLDEST pending frame that carries
500
+ // input the action log doesn't already hold.
501
+ //
502
+ // `__pending_referenced_frames` is sorted ascending; entries
503
+ // `> sim_frame` stay buffered. Most of what it holds at any real
504
+ // latency is retransmission: `Replicator.pack_for_peer` packs
505
+ // every frame in [last_acked + 1, current] each tick, so each
506
+ // action arrives once per tick until its ack round-trips, and the
507
+ // deferral hook logs every copy. Taking `refs[0]` verbatim would
508
+ // therefore rewind by the ACK round trip on every tick — and
509
+ // `__replay_frame`'s dedup would then discard the very entries
510
+ // that caused the rewind, leaving the world exactly as it was.
511
+ // So run the same comparison here, before the window is chosen:
512
+ // a frame whose every pending entry is already in the log needs
513
+ // no rewind. What's left is genuinely late input, which is what
514
+ // the rollback exists for.
365
515
  let replay_start = sim_frame;
366
516
  const refs = this.#pending_referenced_frames;
367
- if (refs.length > 0 && refs[0] <= sim_frame) {
368
- replay_start = refs[0];
517
+ for (let i = 0; i < refs.length; i++) {
518
+ const f = refs[i];
519
+ if (f > sim_frame) break;
520
+ if (this.#frame_has_unapplied_input(f)) {
521
+ replay_start = f;
522
+ break;
523
+ }
369
524
  }
370
525
 
371
526
  // 3. Rewind only if the replay window covers committed frames.
@@ -375,7 +530,10 @@ export class ServerAuthoritativeServer {
375
530
  this.onRewind.send3(committed_top, replay_start - 1, committed_top - (replay_start - 1));
376
531
  }
377
532
 
378
- // 4. Replay [replay_start, sim_frame].
533
+ // 4. Replay [replay_start, sim_frame]. Only `sim_frame` is being
534
+ // simulated for the first time; the rest are re-executions of
535
+ // frames the log already holds.
536
+ this.#fresh_frame = sim_frame;
379
537
  for (let f = replay_start; f <= sim_frame; f++) {
380
538
  this.#replay_frame(f);
381
539
  }
@@ -406,6 +564,87 @@ export class ServerAuthoritativeServer {
406
564
  return max - this.current_sim_frame;
407
565
  }
408
566
 
567
+ /**
568
+ * Does frame `f` carry at least one pending entry the action log does not
569
+ * already hold? Only such a frame can change the world when replayed, so
570
+ * only such a frame is worth rewinding to.
571
+ *
572
+ * Same key as {@link __replay_frame}'s dedup — `(sender_id, type_id,
573
+ * payload bytes)` — asked one step earlier, against the log rather than
574
+ * against a scratch copy of it. The two must stay in step: a frame this
575
+ * call reports clean is never replayed, so an entry it treats as a
576
+ * duplicate that `__replay_frame` would have treated as new would be
577
+ * dropped from pending without ever being applied.
578
+ *
579
+ * Note the key can only recognise records the log actually holds. An
580
+ * action the executor REJECTED (owner authorization) writes nothing, so
581
+ * each of its retransmissions still reads as new input and still costs a
582
+ * rewind — unchanged from before this check existed, and self-limiting,
583
+ * because the sender stops re-sending the frame once it is acked.
584
+ *
585
+ * @param {number} f
586
+ * @returns {boolean}
587
+ * @private
588
+ */
589
+ #frame_has_unapplied_input(f) {
590
+ const has_history = this.action_log.has_frame(f);
591
+ for (let i = 0; i < this.#pending_frames.length; i++) {
592
+ if (this.#pending_frames[i] !== f) continue;
593
+ // Nothing recorded for this frame yet: every entry is new.
594
+ if (!has_history) return true;
595
+ if (!this.#log_holds_record(f, this.#pending_senders[i], this.#pending_type_ids[i], this.#pending_payloads[i])) {
596
+ return true;
597
+ }
598
+ }
599
+ return false;
600
+ }
601
+
602
+ /**
603
+ * Walk `action_log[frame_number]` looking for a record identical to
604
+ * `(sender_id, type_id, payload)`. Compares the payload in place against
605
+ * the log's own bytes — no copy, unlike {@link __read_historical}, because
606
+ * this runs per pending entry on every tick.
607
+ *
608
+ * Caller must have checked `action_log.has_frame(frame_number)`.
609
+ *
610
+ * @param {number} frame_number
611
+ * @param {number} sender_id
612
+ * @param {number} type_id
613
+ * @param {Uint8Array} payload
614
+ * @returns {boolean}
615
+ * @private
616
+ */
617
+ #log_holds_record(frame_number, sender_id, type_id, payload) {
618
+ const buf = this.action_log.buffer_for(frame_number); // sets position = 0
619
+ const end = this.action_log.write_end_for(frame_number);
620
+ const bytes = buf.raw_bytes;
621
+ while (buf.position < end) {
622
+ const prior_count = buf.readUintVar();
623
+ for (let i = 0; i < prior_count; i++) {
624
+ buf.readUintVar(); // entity_id
625
+ buf.readUint8(); // component_type_id
626
+ const plen = buf.readUint32();
627
+ buf.position += plen;
628
+ }
629
+ const r_type_id = buf.readUint8();
630
+ const r_sender_id = buf.readUint8();
631
+ const r_payload_len = buf.readUint32();
632
+ const r_payload_start = buf.position;
633
+ buf.position += r_payload_len;
634
+
635
+ if (r_type_id !== type_id) continue;
636
+ if (r_sender_id !== sender_id) continue;
637
+ if (r_payload_len !== payload.length) continue;
638
+
639
+ let same = true;
640
+ for (let i = 0; i < r_payload_len; i++) {
641
+ if (bytes[r_payload_start + i] !== payload[i]) { same = false; break; }
642
+ }
643
+ if (same) return true;
644
+ }
645
+ return false;
646
+ }
647
+
409
648
  /** @private */
410
649
  #replay_frame(f) {
411
650
  this.#sort_scratch.length = 0;
@@ -450,6 +689,26 @@ export class ServerAuthoritativeServer {
450
689
  this.#sort_scratch.push({ sender_id: p_sender, type_id: p_type, payload: p_payload });
451
690
  }
452
691
 
692
+ // Locally-authored actions join the merge as input, and only on the
693
+ // frame being simulated for the first time — a replayed frame already
694
+ // holds, in the history read above, the ones it was given when it was
695
+ // fresh. They go in BEFORE the sort so a frame's input order does not
696
+ // depend on whether it is being simulated fresh or replayed: on replay
697
+ // these come back through __read_historical and are sorted with
698
+ // everything else, so the fresh pass has to sort them the same way.
699
+ if (f === this.#fresh_frame && this.#local_type_ids.length > 0) {
700
+ const sender = this.server_peer_id >= 0 ? this.server_peer_id : SENDER_LOCAL;
701
+ for (let i = 0; i < this.#local_type_ids.length; i++) {
702
+ this.#sort_scratch.push({
703
+ sender_id: sender,
704
+ type_id: this.#local_type_ids[i],
705
+ payload: this.#local_payloads[i],
706
+ });
707
+ }
708
+ this.#local_type_ids.length = 0;
709
+ this.#local_payloads.length = 0;
710
+ }
711
+
453
712
  // Stable sort by sender. Array.prototype.sort is stable since ES2019;
454
713
  // equal sender_ids preserve insertion order, with historical entries
455
714
  // appearing before newly-arrived pending entries for the same sender.
@@ -461,10 +720,24 @@ export class ServerAuthoritativeServer {
461
720
  const s = this.#sort_scratch[i];
462
721
  this.#apply_payload(s.type_id, s.sender_id, s.payload);
463
722
  }
464
- // Notify user code so server-side local sim runs at the right point
465
- // in the frame (after inputs applied, before frame closed). Idempotent
466
- // under repeated application across rollback replays.
467
- this.onLocalSim.send1(f);
723
+
724
+ // Notify user code so server-side local sim runs at the right point in
725
+ // the frame: after all input for the frame is applied, before the frame
726
+ // is closed.
727
+ //
728
+ // Everything the handler executes is DERIVED output — the handler runs
729
+ // again on every replay of this frame, so the replay recomputes it
730
+ // rather than reapplying it. `deriving` makes the executor stamp those
731
+ // records SENDER_DERIVED, which is how __read_historical tells them
732
+ // from the input records above. Cleared in a finally: a handler that
733
+ // throws must not leave the executor stamping every later record as
734
+ // derived, which would silently drop that input from every replay.
735
+ this.executor.deriving = true;
736
+ try {
737
+ this.onLocalSim.send1(f);
738
+ } finally {
739
+ this.executor.deriving = false;
740
+ }
468
741
  this.action_log.end_frame();
469
742
  }
470
743
 
@@ -504,9 +777,18 @@ export class ServerAuthoritativeServer {
504
777
  const type_id = buf.readUint8();
505
778
  const sender_id = buf.readUint8();
506
779
  const payload_len = buf.readUint32();
507
- const payload = new Uint8Array(payload_len);
508
- payload.set(buf.raw_bytes.subarray(buf.position, buf.position + payload_len));
780
+ const payload_start = buf.position;
509
781
  buf.position += payload_len;
782
+
783
+ // Derived records are the previous pass's local-sim output. The
784
+ // caller re-runs onLocalSim for this frame, which recomputes them
785
+ // against a world that now includes the late input that forced the
786
+ // replay; carrying the stale copy forward as well would apply the
787
+ // effect twice, and the copies would accumulate one per replay.
788
+ if (sender_id === SENDER_DERIVED) continue;
789
+
790
+ const payload = new Uint8Array(payload_len);
791
+ payload.set(buf.raw_bytes.subarray(payload_start, payload_start + payload_len));
510
792
  out_array.push({ type_id, sender_id, payload });
511
793
  }
512
794
  }
@@ -111,12 +111,25 @@ export class Replicator {
111
111
  *
112
112
  * Writes nothing if no in-scope actions are found.
113
113
  *
114
+ * `max_bytes` caps how many bytes this call may add. Frame groups are
115
+ * written whole or not at all: when the next group would cross the cap, the
116
+ * pack stops before it and the return value reports how far it got, so the
117
+ * caller can credit exactly what it sent and pick the rest up on a later
118
+ * pass. The one exception is a first group that does not fit by itself —
119
+ * that one is written anyway, because no smaller pack could ever carry the
120
+ * frame and dropping it would strand those actions forever.
121
+ *
114
122
  * @param {number} peer_id
115
123
  * @param {number} start_frame inclusive; if no frame in range is in the log, that frame is skipped
116
124
  * @param {number} end_frame inclusive
117
125
  * @param {BinaryBuffer} out_buffer
126
+ * @param {number} [max_bytes] byte budget for this call; unbounded by default
127
+ * @returns {number} the last frame this pack covers, or `start_frame - 1` if
128
+ * it covers nothing. A frame that was skipped — absent from the log, or
129
+ * holding nothing in scope — counts as covered: the receiver has nothing
130
+ * to apply for it, so the caller may credit it.
118
131
  */
119
- pack_for_peer(peer_id: number, start_frame: number, end_frame: number, out_buffer: BinaryBuffer): void;
132
+ pack_for_peer(peer_id: number, start_frame: number, end_frame: number, out_buffer: BinaryBuffer, max_bytes?: number): number;
120
133
  /**
121
134
  * Parse and apply actions from `in_buffer` into the local world via the executor.
122
135
  * Each frame in the packet opens a new entry in the local action log under the
@@ -1 +1 @@
1
- {"version":3,"file":"Replicator.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/replication/Replicator.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;IA2DI;;;;;;;;OAQG;IACH;;;;;;wCAHiD,MAAM,cAAc,MAAM,GAAG,OAAO;;OA8BpF;IAvED;;;;;;;;;;;;OAYG;IACH,gBAFU,MAAM,CAEc;IAE9B;;;;;;;;;;;;;;;;;OAiBG;IACH,6BAFqB,MAAM,gBAAgB,MAAM,kBAAkB,MAAM,2CAA2C,MAAM,eAAe,MAAM,KAAK,IAAI,CAE/H;IAYrB;;OAEG;IACH,sBAA4B;IAE5B;;OAEG;IACH,mCAAsC;IAEtC;;OAEG;IACH,4BAAwB;IAExB;;OAEG;IACH,iCAA4B;IAE5B;;;;OAIG;IACH;oCAFwC,MAAM,cAAc,MAAM,GAAG,OAAO;MAE5C;IAGpC;;;;;;;;;;OAUG;IACH,uBALW,MAAM,eACN,MAAM,aACN,MAAM,kCA2ChB;IAED;;;;;;;;;OASG;IACH,0BAJW,MAAM,0CAEN,MAAM,QA4GhB;IAED;;;;;;OAMG;IACH,qBAFW,MAAM,QAKhB;;CAuFJ;mBAnZkB,uCAAuC"}
1
+ {"version":3,"file":"Replicator.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/replication/Replicator.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;IA2DI;;;;;;;;OAQG;IACH;;;;;;wCAHiD,MAAM,cAAc,MAAM,GAAG,OAAO;;OA8BpF;IAvED;;;;;;;;;;;;OAYG;IACH,gBAFU,MAAM,CAEc;IAE9B;;;;;;;;;;;;;;;;;OAiBG;IACH,6BAFqB,MAAM,gBAAgB,MAAM,kBAAkB,MAAM,2CAA2C,MAAM,eAAe,MAAM,KAAK,IAAI,CAE/H;IAYrB;;OAEG;IACH,sBAA4B;IAE5B;;OAEG;IACH,mCAAsC;IAEtC;;OAEG;IACH,4BAAwB;IAExB;;OAEG;IACH,iCAA4B;IAE5B;;;;OAIG;IACH;oCAFwC,MAAM,cAAc,MAAM,GAAG,OAAO;MAE5C;IAGpC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,uBAVW,MAAM,eACN,MAAM,aACN,MAAM,wCAEN,MAAM,GACJ,MAAM,CAyElB;IAED;;;;;;;;;OASG;IACH,0BAJW,MAAM,0CAEN,MAAM,QA4GhB;IAED;;;;;;OAMG;IACH,qBAFW,MAAM,QAKhB;;CAuFJ;mBA5bkB,uCAAuC"}
@@ -140,18 +140,40 @@ export class Replicator {
140
140
  *
141
141
  * Writes nothing if no in-scope actions are found.
142
142
  *
143
+ * `max_bytes` caps how many bytes this call may add. Frame groups are
144
+ * written whole or not at all: when the next group would cross the cap, the
145
+ * pack stops before it and the return value reports how far it got, so the
146
+ * caller can credit exactly what it sent and pick the rest up on a later
147
+ * pass. The one exception is a first group that does not fit by itself —
148
+ * that one is written anyway, because no smaller pack could ever carry the
149
+ * frame and dropping it would strand those actions forever.
150
+ *
143
151
  * @param {number} peer_id
144
152
  * @param {number} start_frame inclusive; if no frame in range is in the log, that frame is skipped
145
153
  * @param {number} end_frame inclusive
146
154
  * @param {BinaryBuffer} out_buffer
155
+ * @param {number} [max_bytes] byte budget for this call; unbounded by default
156
+ * @returns {number} the last frame this pack covers, or `start_frame - 1` if
157
+ * it covers nothing. A frame that was skipped — absent from the log, or
158
+ * holding nothing in scope — counts as covered: the receiver has nothing
159
+ * to apply for it, so the caller may credit it.
147
160
  */
148
- pack_for_peer(peer_id, start_frame, end_frame, out_buffer) {
161
+ pack_for_peer(peer_id, start_frame, end_frame, out_buffer, max_bytes = Number.MAX_SAFE_INTEGER) {
149
162
  assert.isNonNegativeInteger(peer_id, 'peer_id');
150
163
  assert.isNonNegativeInteger(start_frame, 'start_frame');
151
164
  assert.isNonNegativeInteger(end_frame, 'end_frame');
152
165
 
166
+ // Budget is measured from wherever the caller had already written to,
167
+ // so a caller that prefixed a packet-type byte gets it counted.
168
+ const budget_end = out_buffer.position + max_bytes;
169
+ let last_packed = start_frame - 1;
170
+ let wrote_any_group = false;
171
+
153
172
  for (let frame = start_frame; frame <= end_frame; frame++) {
154
- if (!this.action_log.has_frame(frame)) continue;
173
+ if (!this.action_log.has_frame(frame)) {
174
+ last_packed = frame;
175
+ continue;
176
+ }
155
177
 
156
178
  const buffer = this.action_log.buffer_for(frame);
157
179
  const end = this.action_log.write_end_for(frame);
@@ -173,9 +195,15 @@ export class Replicator {
173
195
  }
174
196
  }
175
197
 
176
- if (in_scope_count === 0) continue;
198
+ if (in_scope_count === 0) {
199
+ last_packed = frame;
200
+ continue;
201
+ }
177
202
 
178
203
  // Second pass: write the frame header + each in-scope action's payload only.
204
+ // The group's encoded size is only known once written (varint frame
205
+ // numbers and counts), so write it and roll back if it overran.
206
+ const group_start = out_buffer.position;
179
207
  out_buffer.writeUintVar(frame);
180
208
  out_buffer.writeUintVar(in_scope_count);
181
209
 
@@ -184,7 +212,20 @@ export class Replicator {
184
212
  buffer.position = rs;
185
213
  this.#copy_action_to(buffer, out_buffer);
186
214
  }
215
+
216
+ if (wrote_any_group && out_buffer.position > budget_end) {
217
+ // Doesn't fit alongside what we already have. Un-write it and
218
+ // stop — the caller credits only up to the previous frame and
219
+ // this one leads the next pack.
220
+ out_buffer.position = group_start;
221
+ break;
222
+ }
223
+
224
+ wrote_any_group = true;
225
+ last_packed = frame;
187
226
  }
227
+
228
+ return last_packed;
188
229
  }
189
230
 
190
231
  /**
@@ -12,7 +12,7 @@
12
12
  * uint32: prior_payload_len
13
13
  * bytes: prior_payload (adapter.serialize of the component's prior state)
14
14
  * uint8: action_type_id
15
- * uint8: sender_id (peer that originated the action; local-only,
15
+ * uint8: sender_id (provenance of the record; local-only,
16
16
  * STRIPPED by Replicator before send)
17
17
  * uint32: action_payload_len
18
18
  * bytes: action_payload (the action's own serialize output)
@@ -22,8 +22,18 @@
22
22
  * which means rewind code can walk records forward to find boundaries, then
23
23
  * iterate backward to apply prior states — no need to instantiate any actions.
24
24
  *
25
- * Note that `sender_id` is recorded in-buffer for local rollback orchestrators
26
- * (stable-sort tie-breaking by sender on replay) but never crosses the wire —
25
+ * `sender_id` says where the record came from, which is what a rollback replay
26
+ * needs in order to decide what to do with it:
27
+ *
28
+ * - a peer id `[0, 253]` — arrived from that peer;
29
+ * - `SENDER_LOCAL` (255) — authored on this peer;
30
+ * - `SENDER_DERIVED` (254) — computed by this peer's simulation from the
31
+ * frame's own state. A replay of the frame recomputes these rather than
32
+ * reapplying them (see `ServerAuthoritativeServer.__read_historical`), so
33
+ * the sim's output does not accumulate a copy per replay.
34
+ *
35
+ * It also gives the replay a stable sort key, so multi-client action order is
36
+ * deterministic across peers. It never crosses the wire —
27
37
  * {@link Replicator#pack_for_peer} strips it and the receiver derives sender
28
38
  * from the inbound packet's peer_id, so a hostile peer cannot impersonate.
29
39
  *
@@ -60,6 +70,14 @@ export class ActionLog {
60
70
  * Close the currently-open frame.
61
71
  */
62
72
  end_frame(): void;
73
+ /**
74
+ * Is a frame open for writing? {@link current_buffer} — and therefore
75
+ * `SimActionExecutor.execute` — throws when it is not, so a caller that can
76
+ * run either inside or outside a frame checks this to pick its path.
77
+ *
78
+ * @returns {boolean}
79
+ */
80
+ has_open_frame(): boolean;
63
81
  /**
64
82
  * Get the buffer for the currently-open frame for direct writing.
65
83
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ActionLog.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/sim/ActionLog.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH;IAoBI;;OAEG;IACH,qDAFW;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,EAIlE;IAED;;;;OAIG;IACH,sCAEC;IAED;;;;OAIG;IACH,mBAFW,MAAM,QAShB;IAED;;OAEG;IACH,kBASC;IAED;;;;OAIG;IACH,+BAMC;IAED;;;;;OAKG;IACH,iBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;;;;;OAWG;IACH,kBAHW,MAAM,gBAKhB;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,MAAM,CAIlB;;CACJ"}
1
+ {"version":3,"file":"ActionLog.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/sim/ActionLog.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH;IAoBI;;OAEG;IACH,qDAFW;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,EAIlE;IAED;;;;OAIG;IACH,sCAEC;IAED;;;;OAIG;IACH,mBAFW,MAAM,QAShB;IAED;;OAEG;IACH,kBASC;IAED;;;;;;OAMG;IACH,kBAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,+BAMC;IAED;;;;;OAKG;IACH,iBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;;;;;OAWG;IACH,kBAHW,MAAM,gBAKhB;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,MAAM,CAIlB;;CACJ"}
@@ -14,7 +14,7 @@ import { FrameBufferRing } from "../state/FrameBufferRing.js";
14
14
  * uint32: prior_payload_len
15
15
  * bytes: prior_payload (adapter.serialize of the component's prior state)
16
16
  * uint8: action_type_id
17
- * uint8: sender_id (peer that originated the action; local-only,
17
+ * uint8: sender_id (provenance of the record; local-only,
18
18
  * STRIPPED by Replicator before send)
19
19
  * uint32: action_payload_len
20
20
  * bytes: action_payload (the action's own serialize output)
@@ -24,8 +24,18 @@ import { FrameBufferRing } from "../state/FrameBufferRing.js";
24
24
  * which means rewind code can walk records forward to find boundaries, then
25
25
  * iterate backward to apply prior states — no need to instantiate any actions.
26
26
  *
27
- * Note that `sender_id` is recorded in-buffer for local rollback orchestrators
28
- * (stable-sort tie-breaking by sender on replay) but never crosses the wire —
27
+ * `sender_id` says where the record came from, which is what a rollback replay
28
+ * needs in order to decide what to do with it:
29
+ *
30
+ * - a peer id `[0, 253]` — arrived from that peer;
31
+ * - `SENDER_LOCAL` (255) — authored on this peer;
32
+ * - `SENDER_DERIVED` (254) — computed by this peer's simulation from the
33
+ * frame's own state. A replay of the frame recomputes these rather than
34
+ * reapplying them (see `ServerAuthoritativeServer.__read_historical`), so
35
+ * the sim's output does not accumulate a copy per replay.
36
+ *
37
+ * It also gives the replay a stable sort key, so multi-client action order is
38
+ * deterministic across peers. It never crosses the wire —
29
39
  * {@link Replicator#pack_for_peer} strips it and the receiver derives sender
30
40
  * from the inbound packet's peer_id, so a hostile peer cannot impersonate.
31
41
  *
@@ -102,6 +112,17 @@ export class ActionLog {
102
112
  this.#current_buffer = null;
103
113
  }
104
114
 
115
+ /**
116
+ * Is a frame open for writing? {@link current_buffer} — and therefore
117
+ * `SimActionExecutor.execute` — throws when it is not, so a caller that can
118
+ * run either inside or outside a frame checks this to pick its path.
119
+ *
120
+ * @returns {boolean}
121
+ */
122
+ has_open_frame() {
123
+ return this.#current_frame !== -1;
124
+ }
125
+
105
126
  /**
106
127
  * Get the buffer for the currently-open frame for direct writing.
107
128
  *