@woosh/meep-engine 3.8.0 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (735) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/package.json +3 -2
  4. package/src/avif/encode_image_source.d.ts +70 -0
  5. package/src/avif/encode_image_source.d.ts.map +1 -0
  6. package/src/avif/encode_image_source.js +117 -0
  7. package/src/avif/encoder_worker.js +15 -126
  8. package/src/avif/index.d.ts +4 -2
  9. package/src/avif/index.js +21 -2
  10. package/src/avif/native/DECISIONS.md +537 -0
  11. package/src/avif/native/NOTICE.md +61 -0
  12. package/src/avif/native/api/AvifDecoder.d.ts +67 -0
  13. package/src/avif/native/api/AvifDecoder.d.ts.map +1 -0
  14. package/src/avif/native/api/AvifDecoder.js +121 -0
  15. package/src/avif/native/api/apply_transformations.d.ts +30 -0
  16. package/src/avif/native/api/apply_transformations.d.ts.map +1 -0
  17. package/src/avif/native/api/apply_transformations.js +120 -0
  18. package/src/avif/native/api/avif_to_sampler2d.d.ts +25 -0
  19. package/src/avif/native/api/avif_to_sampler2d.d.ts.map +1 -0
  20. package/src/avif/native/api/avif_to_sampler2d.js +42 -0
  21. package/src/avif/native/api/convert_to_rgba.d.ts +54 -0
  22. package/src/avif/native/api/convert_to_rgba.d.ts.map +1 -0
  23. package/src/avif/native/api/convert_to_rgba.js +204 -0
  24. package/src/avif/native/api/decode_avif.d.ts +24 -0
  25. package/src/avif/native/api/decode_avif.d.ts.map +1 -0
  26. package/src/avif/native/api/decode_avif.js +111 -0
  27. package/src/avif/native/api/decode_image_item.d.ts +18 -0
  28. package/src/avif/native/api/decode_image_item.d.ts.map +1 -0
  29. package/src/avif/native/api/decode_image_item.js +234 -0
  30. package/src/avif/native/api/encode_avif.d.ts +73 -0
  31. package/src/avif/native/api/encode_avif.d.ts.map +1 -0
  32. package/src/avif/native/api/encode_avif.js +488 -0
  33. package/src/avif/native/api/sampler2d_to_avif.d.ts +22 -0
  34. package/src/avif/native/api/sampler2d_to_avif.d.ts.map +1 -0
  35. package/src/avif/native/api/sampler2d_to_avif.js +108 -0
  36. package/src/avif/native/av1/decode/Av1FrameContext.d.ts +286 -0
  37. package/src/avif/native/av1/decode/Av1FrameContext.d.ts.map +1 -0
  38. package/src/avif/native/av1/decode/Av1FrameContext.js +622 -0
  39. package/src/avif/native/av1/decode/block_decoded.d.ts +27 -0
  40. package/src/avif/native/av1/decode/block_decoded.d.ts.map +1 -0
  41. package/src/avif/native/av1/decode/block_decoded.js +59 -0
  42. package/src/avif/native/av1/decode/decode_av1_still.d.ts +22 -0
  43. package/src/avif/native/av1/decode/decode_av1_still.d.ts.map +1 -0
  44. package/src/avif/native/av1/decode/decode_av1_still.js +309 -0
  45. package/src/avif/native/av1/decode/decode_coefficients.d.ts +20 -0
  46. package/src/avif/native/av1/decode/decode_coefficients.d.ts.map +1 -0
  47. package/src/avif/native/av1/decode/decode_coefficients.js +259 -0
  48. package/src/avif/native/av1/decode/decode_palette.d.ts +28 -0
  49. package/src/avif/native/av1/decode/decode_palette.d.ts.map +1 -0
  50. package/src/avif/native/av1/decode/decode_palette.js +442 -0
  51. package/src/avif/native/av1/decode/decode_tile.d.ts +14 -0
  52. package/src/avif/native/av1/decode/decode_tile.d.ts.map +1 -0
  53. package/src/avif/native/av1/decode/decode_tile.js +1213 -0
  54. package/src/avif/native/av1/decode/get_scan.d.ts +16 -0
  55. package/src/avif/native/av1/decode/get_scan.d.ts.map +1 -0
  56. package/src/avif/native/av1/decode/get_scan.js +138 -0
  57. package/src/avif/native/av1/decode/read_lr.d.ts +35 -0
  58. package/src/avif/native/av1/decode/read_lr.d.ts.map +1 -0
  59. package/src/avif/native/av1/decode/read_lr.js +277 -0
  60. package/src/avif/native/av1/decode/read_transform_type.d.ts +19 -0
  61. package/src/avif/native/av1/decode/read_transform_type.d.ts.map +1 -0
  62. package/src/avif/native/av1/decode/read_transform_type.js +92 -0
  63. package/src/avif/native/av1/decode/reconstruct.d.ts +36 -0
  64. package/src/avif/native/av1/decode/reconstruct.d.ts.map +1 -0
  65. package/src/avif/native/av1/decode/reconstruct.js +241 -0
  66. package/src/avif/native/av1/decode/transform_type.d.ts +49 -0
  67. package/src/avif/native/av1/decode/transform_type.d.ts.map +1 -0
  68. package/src/avif/native/av1/decode/transform_type.js +137 -0
  69. package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts +81 -0
  70. package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts.map +1 -0
  71. package/src/avif/native/av1/encode/Av1BlockSnapshot.js +299 -0
  72. package/src/avif/native/av1/encode/Av1EncodeContext.d.ts +384 -0
  73. package/src/avif/native/av1/encode/Av1EncodeContext.d.ts.map +1 -0
  74. package/src/avif/native/av1/encode/Av1EncodeContext.js +590 -0
  75. package/src/avif/native/av1/encode/build_headers.d.ts +50 -0
  76. package/src/avif/native/av1/encode/build_headers.d.ts.map +1 -0
  77. package/src/avif/native/av1/encode/build_headers.js +359 -0
  78. package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts +26 -0
  79. package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts.map +1 -0
  80. package/src/avif/native/av1/encode/choose_chroma_alpha.js +90 -0
  81. package/src/avif/native/av1/encode/choose_filters.d.ts +21 -0
  82. package/src/avif/native/av1/encode/choose_filters.d.ts.map +1 -0
  83. package/src/avif/native/av1/encode/choose_filters.js +318 -0
  84. package/src/avif/native/av1/encode/choose_restoration.d.ts +35 -0
  85. package/src/avif/native/av1/encode/choose_restoration.d.ts.map +1 -0
  86. package/src/avif/native/av1/encode/choose_restoration.js +616 -0
  87. package/src/avif/native/av1/encode/decode_effort.d.ts +57 -0
  88. package/src/avif/native/av1/encode/decode_effort.d.ts.map +1 -0
  89. package/src/avif/native/av1/encode/decode_effort.js +59 -0
  90. package/src/avif/native/av1/encode/encode_av1_still.d.ts +17 -0
  91. package/src/avif/native/av1/encode/encode_av1_still.d.ts.map +1 -0
  92. package/src/avif/native/av1/encode/encode_av1_still.js +194 -0
  93. package/src/avif/native/av1/encode/encode_effort.d.ts +56 -0
  94. package/src/avif/native/av1/encode/encode_effort.d.ts.map +1 -0
  95. package/src/avif/native/av1/encode/encode_effort.js +97 -0
  96. package/src/avif/native/av1/encode/encode_tile.d.ts +26 -0
  97. package/src/avif/native/av1/encode/encode_tile.d.ts.map +1 -0
  98. package/src/avif/native/av1/encode/encode_tile.js +2331 -0
  99. package/src/avif/native/av1/encode/quantise.d.ts +51 -0
  100. package/src/avif/native/av1/encode/quantise.d.ts.map +1 -0
  101. package/src/avif/native/av1/encode/quantise.js +212 -0
  102. package/src/avif/native/av1/encode/write_coefficients.d.ts +42 -0
  103. package/src/avif/native/av1/encode/write_coefficients.d.ts.map +1 -0
  104. package/src/avif/native/av1/encode/write_coefficients.js +367 -0
  105. package/src/avif/native/av1/encode/write_lr.d.ts +33 -0
  106. package/src/avif/native/av1/encode/write_lr.d.ts.map +1 -0
  107. package/src/avif/native/av1/encode/write_lr.js +174 -0
  108. package/src/avif/native/av1/encode/write_transform_type.d.ts +21 -0
  109. package/src/avif/native/av1/encode/write_transform_type.d.ts.map +1 -0
  110. package/src/avif/native/av1/encode/write_transform_type.js +70 -0
  111. package/src/avif/native/av1/entropy/CdfContext.d.ts +167 -0
  112. package/src/avif/native/av1/entropy/CdfContext.d.ts.map +1 -0
  113. package/src/avif/native/av1/entropy/CdfContext.js +433 -0
  114. package/src/avif/native/av1/entropy/SymbolReader.d.ts +103 -0
  115. package/src/avif/native/av1/entropy/SymbolReader.d.ts.map +1 -0
  116. package/src/avif/native/av1/entropy/SymbolReader.js +317 -0
  117. package/src/avif/native/av1/entropy/SymbolWriter.d.ts +107 -0
  118. package/src/avif/native/av1/entropy/SymbolWriter.d.ts.map +1 -0
  119. package/src/avif/native/av1/entropy/SymbolWriter.js +352 -0
  120. package/src/avif/native/av1/entropy/coefficient_context.d.ts +71 -0
  121. package/src/avif/native/av1/entropy/coefficient_context.d.ts.map +1 -0
  122. package/src/avif/native/av1/entropy/coefficient_context.js +325 -0
  123. package/src/avif/native/av1/entropy/partition_cdf.d.ts +54 -0
  124. package/src/avif/native/av1/entropy/partition_cdf.d.ts.map +1 -0
  125. package/src/avif/native/av1/entropy/partition_cdf.js +98 -0
  126. package/src/avif/native/av1/entropy/symbol_cost.d.ts +37 -0
  127. package/src/avif/native/av1/entropy/symbol_cost.d.ts.map +1 -0
  128. package/src/avif/native/av1/entropy/symbol_cost.js +76 -0
  129. package/src/avif/native/av1/filter/cdef.d.ts +15 -0
  130. package/src/avif/native/av1/filter/cdef.d.ts.map +1 -0
  131. package/src/avif/native/av1/filter/cdef.js +313 -0
  132. package/src/avif/native/av1/filter/loop_filter.d.ts +14 -0
  133. package/src/avif/native/av1/filter/loop_filter.d.ts.map +1 -0
  134. package/src/avif/native/av1/filter/loop_filter.js +377 -0
  135. package/src/avif/native/av1/filter/loop_restoration.d.ts +42 -0
  136. package/src/avif/native/av1/filter/loop_restoration.d.ts.map +1 -0
  137. package/src/avif/native/av1/filter/loop_restoration.js +451 -0
  138. package/src/avif/native/av1/filter/superres.d.ts +18 -0
  139. package/src/avif/native/av1/filter/superres.d.ts.map +1 -0
  140. package/src/avif/native/av1/filter/superres.js +86 -0
  141. package/src/avif/native/av1/grain/FilmGrainState.d.ts +62 -0
  142. package/src/avif/native/av1/grain/FilmGrainState.d.ts.map +1 -0
  143. package/src/avif/native/av1/grain/FilmGrainState.js +87 -0
  144. package/src/avif/native/av1/grain/film_grain.d.ts +16 -0
  145. package/src/avif/native/av1/grain/film_grain.d.ts.map +1 -0
  146. package/src/avif/native/av1/grain/film_grain.js +623 -0
  147. package/src/avif/native/av1/obu/FrameHeader.d.ts +248 -0
  148. package/src/avif/native/av1/obu/FrameHeader.d.ts.map +1 -0
  149. package/src/avif/native/av1/obu/FrameHeader.js +381 -0
  150. package/src/avif/native/av1/obu/ObuHeader.d.ts +53 -0
  151. package/src/avif/native/av1/obu/ObuHeader.d.ts.map +1 -0
  152. package/src/avif/native/av1/obu/ObuHeader.js +62 -0
  153. package/src/avif/native/av1/obu/SequenceHeader.d.ts +157 -0
  154. package/src/avif/native/av1/obu/SequenceHeader.d.ts.map +1 -0
  155. package/src/avif/native/av1/obu/SequenceHeader.js +225 -0
  156. package/src/avif/native/av1/obu/for_each_obu.d.ts +24 -0
  157. package/src/avif/native/av1/obu/for_each_obu.d.ts.map +1 -0
  158. package/src/avif/native/av1/obu/for_each_obu.js +50 -0
  159. package/src/avif/native/av1/obu/parse_frame_header.d.ts +18 -0
  160. package/src/avif/native/av1/obu/parse_frame_header.d.ts.map +1 -0
  161. package/src/avif/native/av1/obu/parse_frame_header.js +841 -0
  162. package/src/avif/native/av1/obu/parse_obu_header.d.ts +23 -0
  163. package/src/avif/native/av1/obu/parse_obu_header.d.ts.map +1 -0
  164. package/src/avif/native/av1/obu/parse_obu_header.js +69 -0
  165. package/src/avif/native/av1/obu/parse_sequence_header.d.ts +17 -0
  166. package/src/avif/native/av1/obu/parse_sequence_header.d.ts.map +1 -0
  167. package/src/avif/native/av1/obu/parse_sequence_header.js +263 -0
  168. package/src/avif/native/av1/obu/write_frame_header.d.ts +16 -0
  169. package/src/avif/native/av1/obu/write_frame_header.d.ts.map +1 -0
  170. package/src/avif/native/av1/obu/write_frame_header.js +579 -0
  171. package/src/avif/native/av1/obu/write_sequence_header.d.ts +17 -0
  172. package/src/avif/native/av1/obu/write_sequence_header.d.ts.map +1 -0
  173. package/src/avif/native/av1/obu/write_sequence_header.js +189 -0
  174. package/src/avif/native/av1/predict/IntraPredictionState.d.ts +49 -0
  175. package/src/avif/native/av1/predict/IntraPredictionState.d.ts.map +1 -0
  176. package/src/avif/native/av1/predict/IntraPredictionState.js +58 -0
  177. package/src/avif/native/av1/predict/intra_filter_type.d.ts +17 -0
  178. package/src/avif/native/av1/predict/intra_filter_type.d.ts.map +1 -0
  179. package/src/avif/native/av1/predict/intra_filter_type.js +79 -0
  180. package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts +50 -0
  181. package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts.map +1 -0
  182. package/src/avif/native/av1/predict/predict_chroma_from_luma.js +153 -0
  183. package/src/avif/native/av1/predict/predict_intra.d.ts +42 -0
  184. package/src/avif/native/av1/predict/predict_intra.d.ts.map +1 -0
  185. package/src/avif/native/av1/predict/predict_intra.js +803 -0
  186. package/src/avif/native/av1/predict/predict_palette.d.ts +23 -0
  187. package/src/avif/native/av1/predict/predict_palette.d.ts.map +1 -0
  188. package/src/avif/native/av1/predict/predict_palette.js +36 -0
  189. package/src/avif/native/av1/tables/av1_symbols.d.ts +411 -0
  190. package/src/avif/native/av1/tables/av1_symbols.d.ts.map +1 -0
  191. package/src/avif/native/av1/tables/av1_symbols.js +419 -0
  192. package/src/avif/native/av1/tables/block_tables.d.ts +181 -0
  193. package/src/avif/native/av1/tables/block_tables.d.ts.map +1 -0
  194. package/src/avif/native/av1/tables/block_tables.js +270 -0
  195. package/src/avif/native/av1/tables/cdf_tables.d.ts +961 -0
  196. package/src/avif/native/av1/tables/cdf_tables.d.ts.map +1 -0
  197. package/src/avif/native/av1/tables/cdf_tables.js +1893 -0
  198. package/src/avif/native/av1/tables/coefficient_tables.d.ts +41 -0
  199. package/src/avif/native/av1/tables/coefficient_tables.d.ts.map +1 -0
  200. package/src/avif/native/av1/tables/coefficient_tables.js +82 -0
  201. package/src/avif/native/av1/tables/derived_block_tables.d.ts +15 -0
  202. package/src/avif/native/av1/tables/derived_block_tables.d.ts.map +1 -0
  203. package/src/avif/native/av1/tables/derived_block_tables.js +23 -0
  204. package/src/avif/native/av1/tables/filter_tables.d.ts +171 -0
  205. package/src/avif/native/av1/tables/filter_tables.d.ts.map +1 -0
  206. package/src/avif/native/av1/tables/filter_tables.js +313 -0
  207. package/src/avif/native/av1/tables/grain_tables.d.ts +11 -0
  208. package/src/avif/native/av1/tables/grain_tables.d.ts.map +1 -0
  209. package/src/avif/native/av1/tables/grain_tables.js +190 -0
  210. package/src/avif/native/av1/tables/prediction_tables.d.ts +141 -0
  211. package/src/avif/native/av1/tables/prediction_tables.d.ts.map +1 -0
  212. package/src/avif/native/av1/tables/prediction_tables.js +223 -0
  213. package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts +21 -0
  214. package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts.map +1 -0
  215. package/src/avif/native/av1/tables/quantizer_matrix_tables.js +38 -0
  216. package/src/avif/native/av1/tables/quantizer_tables.d.ts +21 -0
  217. package/src/avif/native/av1/tables/quantizer_tables.d.ts.map +1 -0
  218. package/src/avif/native/av1/tables/quantizer_tables.js +160 -0
  219. package/src/avif/native/av1/tables/scan_tables.d.ts +321 -0
  220. package/src/avif/native/av1/tables/scan_tables.d.ts.map +1 -0
  221. package/src/avif/native/av1/tables/scan_tables.js +727 -0
  222. package/src/avif/native/av1/tables/segmentation_tables.d.ts +31 -0
  223. package/src/avif/native/av1/tables/segmentation_tables.d.ts.map +1 -0
  224. package/src/avif/native/av1/tables/segmentation_tables.js +48 -0
  225. package/src/avif/native/av1/tables/transform_tables.d.ts +91 -0
  226. package/src/avif/native/av1/tables/transform_tables.d.ts.map +1 -0
  227. package/src/avif/native/av1/tables/transform_tables.js +140 -0
  228. package/src/avif/native/av1/tables/unpack_table.d.ts +33 -0
  229. package/src/avif/native/av1/tables/unpack_table.d.ts.map +1 -0
  230. package/src/avif/native/av1/tables/unpack_table.js +73 -0
  231. package/src/avif/native/av1/transform/forward_transform_2d.d.ts +61 -0
  232. package/src/avif/native/av1/transform/forward_transform_2d.d.ts.map +1 -0
  233. package/src/avif/native/av1/transform/forward_transform_2d.js +574 -0
  234. package/src/avif/native/av1/transform/inverse_transform_1d.d.ts +76 -0
  235. package/src/avif/native/av1/transform/inverse_transform_1d.d.ts.map +1 -0
  236. package/src/avif/native/av1/transform/inverse_transform_1d.js +590 -0
  237. package/src/avif/native/av1/transform/inverse_transform_2d.d.ts +46 -0
  238. package/src/avif/native/av1/transform/inverse_transform_2d.d.ts.map +1 -0
  239. package/src/avif/native/av1/transform/inverse_transform_2d.js +180 -0
  240. package/src/avif/native/av1/util/ceil_log2.d.ts +13 -0
  241. package/src/avif/native/av1/util/ceil_log2.d.ts.map +1 -0
  242. package/src/avif/native/av1/util/ceil_log2.js +18 -0
  243. package/src/avif/native/av1/util/floor_log2.d.ts +20 -0
  244. package/src/avif/native/av1/util/floor_log2.d.ts.map +1 -0
  245. package/src/avif/native/av1/util/floor_log2.js +20 -0
  246. package/src/avif/native/av1/util/round2.d.ts +22 -0
  247. package/src/avif/native/av1/util/round2.d.ts.map +1 -0
  248. package/src/avif/native/av1/util/round2.js +27 -0
  249. package/src/avif/native/av1/util/round2_signed.d.ts +14 -0
  250. package/src/avif/native/av1/util/round2_signed.d.ts.map +1 -0
  251. package/src/avif/native/av1/util/round2_signed.js +17 -0
  252. package/src/avif/native/av1/util/tile_log2.d.ts +16 -0
  253. package/src/avif/native/av1/util/tile_log2.d.ts.map +1 -0
  254. package/src/avif/native/av1/util/tile_log2.js +23 -0
  255. package/src/avif/native/bitstream/BitReader.d.ts +174 -0
  256. package/src/avif/native/bitstream/BitReader.d.ts.map +1 -0
  257. package/src/avif/native/bitstream/BitReader.js +391 -0
  258. package/src/avif/native/bitstream/BitWriter.d.ts +122 -0
  259. package/src/avif/native/bitstream/BitWriter.d.ts.map +1 -0
  260. package/src/avif/native/bitstream/BitWriter.js +351 -0
  261. package/src/avif/native/color/ColourTransform.d.ts +62 -0
  262. package/src/avif/native/color/ColourTransform.d.ts.map +1 -0
  263. package/src/avif/native/color/ColourTransform.js +189 -0
  264. package/src/avif/native/color/YuvImage.d.ts +51 -0
  265. package/src/avif/native/color/YuvImage.d.ts.map +1 -0
  266. package/src/avif/native/color/YuvImage.js +66 -0
  267. package/src/avif/native/color/clamp_sample.d.ts +18 -0
  268. package/src/avif/native/color/clamp_sample.d.ts.map +1 -0
  269. package/src/avif/native/color/clamp_sample.js +25 -0
  270. package/src/avif/native/color/linear_to_transfer.d.ts +24 -0
  271. package/src/avif/native/color/linear_to_transfer.d.ts.map +1 -0
  272. package/src/avif/native/color/linear_to_transfer.js +126 -0
  273. package/src/avif/native/color/primaries.d.ts +20 -0
  274. package/src/avif/native/color/primaries.d.ts.map +1 -0
  275. package/src/avif/native/color/primaries.js +94 -0
  276. package/src/avif/native/color/rgb_row_to_ycbcr.d.ts +20 -0
  277. package/src/avif/native/color/rgb_row_to_ycbcr.d.ts.map +1 -0
  278. package/src/avif/native/color/rgb_row_to_ycbcr.js +78 -0
  279. package/src/avif/native/color/transfer_to_linear.d.ts +49 -0
  280. package/src/avif/native/color/transfer_to_linear.d.ts.map +1 -0
  281. package/src/avif/native/color/transfer_to_linear.js +171 -0
  282. package/src/avif/native/color/upsample_chroma_row.d.ts +35 -0
  283. package/src/avif/native/color/upsample_chroma_row.d.ts.map +1 -0
  284. package/src/avif/native/color/upsample_chroma_row.js +89 -0
  285. package/src/avif/native/color/ycbcr_row_to_rgb.d.ts +23 -0
  286. package/src/avif/native/color/ycbcr_row_to_rgb.d.ts.map +1 -0
  287. package/src/avif/native/color/ycbcr_row_to_rgb.js +78 -0
  288. package/src/avif/native/heif/AvifFile.d.ts +112 -0
  289. package/src/avif/native/heif/AvifFile.d.ts.map +1 -0
  290. package/src/avif/native/heif/AvifFile.js +142 -0
  291. package/src/avif/native/heif/ItemProperty.d.ts +244 -0
  292. package/src/avif/native/heif/ItemProperty.d.ts.map +1 -0
  293. package/src/avif/native/heif/ItemProperty.js +321 -0
  294. package/src/avif/native/heif/find_item_property.d.ts +17 -0
  295. package/src/avif/native/heif/find_item_property.d.ts.map +1 -0
  296. package/src/avif/native/heif/find_item_property.js +28 -0
  297. package/src/avif/native/heif/find_item_references.d.ts +16 -0
  298. package/src/avif/native/heif/find_item_references.d.ts.map +1 -0
  299. package/src/avif/native/heif/find_item_references.js +29 -0
  300. package/src/avif/native/heif/find_items_referencing.d.ts +17 -0
  301. package/src/avif/native/heif/find_items_referencing.d.ts.map +1 -0
  302. package/src/avif/native/heif/find_items_referencing.js +36 -0
  303. package/src/avif/native/heif/parse_avif_file.d.ts +15 -0
  304. package/src/avif/native/heif/parse_avif_file.d.ts.map +1 -0
  305. package/src/avif/native/heif/parse_avif_file.js +383 -0
  306. package/src/avif/native/heif/parse_image_grid.d.ts +18 -0
  307. package/src/avif/native/heif/parse_image_grid.d.ts.map +1 -0
  308. package/src/avif/native/heif/parse_image_grid.js +48 -0
  309. package/src/avif/native/heif/parse_item_property.d.ts +18 -0
  310. package/src/avif/native/heif/parse_item_property.d.ts.map +1 -0
  311. package/src/avif/native/heif/parse_item_property.js +243 -0
  312. package/src/avif/native/heif/read_item_data.d.ts +22 -0
  313. package/src/avif/native/heif/read_item_data.d.ts.map +1 -0
  314. package/src/avif/native/heif/read_item_data.js +97 -0
  315. package/src/avif/native/heif/write_avif_file.d.ts +50 -0
  316. package/src/avif/native/heif/write_avif_file.d.ts.map +1 -0
  317. package/src/avif/native/heif/write_avif_file.js +348 -0
  318. package/src/avif/native/heif/write_item_property.d.ts +16 -0
  319. package/src/avif/native/heif/write_item_property.d.ts.map +1 -0
  320. package/src/avif/native/heif/write_item_property.js +182 -0
  321. package/src/avif/native/index.d.ts +14 -0
  322. package/src/avif/native/index.d.ts.map +1 -0
  323. package/src/avif/native/index.js +56 -0
  324. package/src/avif/native/isobmff/BoxHeader.d.ts +50 -0
  325. package/src/avif/native/isobmff/BoxHeader.d.ts.map +1 -0
  326. package/src/avif/native/isobmff/BoxHeader.js +57 -0
  327. package/src/avif/native/isobmff/BoxWriter.d.ts +118 -0
  328. package/src/avif/native/isobmff/BoxWriter.d.ts.map +1 -0
  329. package/src/avif/native/isobmff/BoxWriter.js +264 -0
  330. package/src/avif/native/isobmff/ByteCursor.d.ts +125 -0
  331. package/src/avif/native/isobmff/ByteCursor.d.ts.map +1 -0
  332. package/src/avif/native/isobmff/ByteCursor.js +298 -0
  333. package/src/avif/native/isobmff/for_each_box.d.ts +23 -0
  334. package/src/avif/native/isobmff/for_each_box.d.ts.map +1 -0
  335. package/src/avif/native/isobmff/for_each_box.js +39 -0
  336. package/src/avif/native/isobmff/read_box_header.d.ts +22 -0
  337. package/src/avif/native/isobmff/read_box_header.d.ts.map +1 -0
  338. package/src/avif/native/isobmff/read_box_header.js +59 -0
  339. package/src/avif/native/isobmff/read_full_box_header.d.ts +26 -0
  340. package/src/avif/native/isobmff/read_full_box_header.d.ts.map +1 -0
  341. package/src/avif/native/isobmff/read_full_box_header.js +33 -0
  342. package/src/avif/threaded_image_encoder.d.ts +7 -2
  343. package/src/avif/threaded_image_encoder.d.ts.map +1 -1
  344. package/src/avif/threaded_image_encoder.js +107 -21
  345. package/src/core/binary/BinaryBuffer.d.ts +40 -0
  346. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  347. package/src/core/binary/BinaryBuffer.js +100 -0
  348. package/src/core/binary/hash/crc32.d.ts +16 -0
  349. package/src/core/binary/hash/crc32.d.ts.map +1 -0
  350. package/src/core/binary/hash/crc32.js +96 -0
  351. package/src/core/binary/utf8/utf8_decode.d.ts +21 -0
  352. package/src/core/binary/utf8/utf8_decode.d.ts.map +1 -0
  353. package/src/core/binary/utf8/utf8_decode.js +43 -0
  354. package/src/core/binary/utf8/utf8_encode_into.d.ts +20 -0
  355. package/src/core/binary/utf8/utf8_encode_into.d.ts.map +1 -0
  356. package/src/core/binary/utf8/utf8_encode_into.js +48 -0
  357. package/src/core/binary/utf8/utf8_encoded_length.d.ts +14 -0
  358. package/src/core/binary/utf8/utf8_encoded_length.d.ts.map +1 -0
  359. package/src/core/binary/utf8/utf8_encoded_length.js +36 -0
  360. package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +417 -0
  361. package/src/core/color/COLOR_REVIEW_2026_08_28.md +779 -0
  362. package/src/core/color/Color.d.ts +128 -20
  363. package/src/core/color/Color.d.ts.map +1 -1
  364. package/src/core/color/Color.js +959 -866
  365. package/src/core/color/PQ/PQ_constants.d.ts +10 -0
  366. package/src/core/color/PQ/PQ_constants.d.ts.map +1 -1
  367. package/src/core/color/PQ/PQ_constants.js +10 -0
  368. package/src/core/color/PQ/linear_to_PQ.d.ts.map +1 -1
  369. package/src/core/color/PQ/linear_to_PQ.js +6 -0
  370. package/src/core/color/REC709_PRIMARIES.d.ts +50 -0
  371. package/src/core/color/REC709_PRIMARIES.d.ts.map +1 -0
  372. package/src/core/color/REC709_PRIMARIES.js +53 -0
  373. package/src/core/color/construct/color_from_hex.d.ts +21 -0
  374. package/src/core/color/construct/color_from_hex.d.ts.map +1 -0
  375. package/src/core/color/construct/color_from_hex.js +33 -0
  376. package/src/core/color/construct/color_from_temperature.d.ts +22 -0
  377. package/src/core/color/construct/color_from_temperature.d.ts.map +1 -0
  378. package/src/core/color/construct/color_from_temperature.js +33 -0
  379. package/src/core/color/construct/color_from_uint24.d.ts +19 -0
  380. package/src/core/color/construct/color_from_uint24.d.ts.map +1 -0
  381. package/src/core/color/construct/color_from_uint24.js +26 -0
  382. package/src/core/color/construct/color_from_uint32.d.ts +20 -0
  383. package/src/core/color/construct/color_from_uint32.d.ts.map +1 -0
  384. package/src/core/color/construct/color_from_uint32.js +39 -0
  385. package/src/core/color/construct/color_gray.d.ts +17 -0
  386. package/src/core/color/construct/color_gray.d.ts.map +1 -0
  387. package/src/core/color/construct/color_gray.js +22 -0
  388. package/src/core/color/hex/hex2rgb.d.ts +1 -11
  389. package/src/core/color/hex/hex2rgb.d.ts.map +1 -1
  390. package/src/core/color/hex/hex2rgb.js +7 -24
  391. package/src/core/color/hex/hex_to_rgb.d.ts +18 -0
  392. package/src/core/color/hex/hex_to_rgb.d.ts.map +1 -0
  393. package/src/core/color/hex/hex_to_rgb.js +62 -0
  394. package/src/core/color/hex/rgb2hex.d.ts +1 -8
  395. package/src/core/color/hex/rgb2hex.d.ts.map +1 -1
  396. package/src/core/color/hex/rgb2hex.js +7 -13
  397. package/src/core/color/hex/rgb_to_hex.d.ts +9 -0
  398. package/src/core/color/hex/rgb_to_hex.d.ts.map +1 -0
  399. package/src/core/color/hex/rgb_to_hex.js +13 -0
  400. package/src/core/color/hex/rgba_to_hex.d.ts +19 -0
  401. package/src/core/color/hex/rgba_to_hex.d.ts.map +1 -0
  402. package/src/core/color/hex/rgba_to_hex.js +23 -0
  403. package/src/core/color/hsv/hsv2rgb.d.ts +1 -12
  404. package/src/core/color/hsv/hsv2rgb.d.ts.map +1 -1
  405. package/src/core/color/hsv/hsv2rgb.js +8 -21
  406. package/src/core/color/hsv/hsv2rgb_float.d.ts +1 -12
  407. package/src/core/color/hsv/hsv2rgb_float.d.ts.map +1 -1
  408. package/src/core/color/hsv/hsv2rgb_float.js +8 -56
  409. package/src/core/color/hsv/hsv_to_rgb.d.ts +13 -0
  410. package/src/core/color/hsv/hsv_to_rgb.d.ts.map +1 -0
  411. package/src/core/color/hsv/hsv_to_rgb.js +39 -0
  412. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts +13 -0
  413. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -0
  414. package/src/core/color/hsv/hsv_to_rgb_uint8.js +21 -0
  415. package/src/core/color/hsv/hue_to_rgb_sextant.d.ts +24 -0
  416. package/src/core/color/hsv/hue_to_rgb_sextant.d.ts.map +1 -0
  417. package/src/core/color/hsv/hue_to_rgb_sextant.js +67 -0
  418. package/src/core/color/hsv/rgb2hsv.d.ts +1 -12
  419. package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
  420. package/src/core/color/hsv/rgb2hsv.js +7 -42
  421. package/src/core/color/hsv/rgb_to_hsv.d.ts +13 -0
  422. package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -0
  423. package/src/core/color/hsv/rgb_to_hsv.js +42 -0
  424. package/src/core/color/hunt/hpe_to_xyz.d.ts +2 -0
  425. package/src/core/color/hunt/hpe_to_xyz.d.ts.map +1 -0
  426. package/src/core/color/hunt/hpe_to_xyz.js +4 -0
  427. package/src/core/color/hunt/xyz_to_hpe.d.ts +1 -6
  428. package/src/core/color/hunt/xyz_to_hpe.d.ts.map +1 -1
  429. package/src/core/color/hunt/xyz_to_hpe.js +12 -15
  430. package/src/core/color/illuminant/D65_spd_tabulated.d.ts.map +1 -1
  431. package/src/core/color/illuminant/D65_spd_tabulated.js +107 -104
  432. package/src/core/color/int2rgb.d.ts +1 -10
  433. package/src/core/color/int2rgb.d.ts.map +1 -1
  434. package/src/core/color/int2rgb.js +7 -12
  435. package/src/core/color/int_to_rgb.d.ts +21 -0
  436. package/src/core/color/int_to_rgb.d.ts.map +1 -0
  437. package/src/core/color/int_to_rgb.js +33 -0
  438. package/src/core/color/kelvin/kelvin_to_rgb.d.ts.map +1 -1
  439. package/src/core/color/kelvin/kelvin_to_rgb.js +22 -2
  440. package/src/core/color/kelvin/rgb_to_kelvin.d.ts +22 -2
  441. package/src/core/color/kelvin/rgb_to_kelvin.d.ts.map +1 -1
  442. package/src/core/color/kelvin/rgb_to_kelvin.js +22 -2
  443. package/src/core/color/lab/lab_to_xyz.d.ts +20 -0
  444. package/src/core/color/lab/lab_to_xyz.d.ts.map +1 -0
  445. package/src/core/color/lab/lab_to_xyz.js +69 -0
  446. package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts +34 -0
  447. package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts.map +1 -0
  448. package/src/core/color/oklab/gamut_clip_adaptive_l0.js +46 -0
  449. package/src/core/color/oklab/gamut_clip_at_l0.d.ts +33 -0
  450. package/src/core/color/oklab/gamut_clip_at_l0.d.ts.map +1 -0
  451. package/src/core/color/oklab/gamut_clip_at_l0.js +84 -0
  452. package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts +24 -0
  453. package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts.map +1 -0
  454. package/src/core/color/oklab/gamut_clip_preserve_chroma.js +37 -0
  455. package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts +23 -0
  456. package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts.map +1 -0
  457. package/src/core/color/oklab/gamut_clip_project_to_lcusp.js +46 -0
  458. package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts +19 -0
  459. package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts.map +1 -0
  460. package/src/core/color/oklab/linear_srgb_to_okhsl.js +93 -0
  461. package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts +12 -4
  462. package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts.map +1 -1
  463. package/src/core/color/oklab/linear_srgb_to_okhsv.js +108 -84
  464. package/src/core/color/oklab/linear_srgb_to_oklab.d.ts +13 -4
  465. package/src/core/color/oklab/linear_srgb_to_oklab.d.ts.map +1 -1
  466. package/src/core/color/oklab/linear_srgb_to_oklab.js +28 -19
  467. package/src/core/color/oklab/okhsl_chroma_bounds.d.ts +51 -0
  468. package/src/core/color/oklab/okhsl_chroma_bounds.d.ts.map +1 -0
  469. package/src/core/color/oklab/okhsl_chroma_bounds.js +128 -0
  470. package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts +19 -0
  471. package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts.map +1 -0
  472. package/src/core/color/oklab/okhsl_to_linear_srgb.js +85 -0
  473. package/src/core/color/oklab/oklab_to_oklch.d.ts +24 -0
  474. package/src/core/color/oklab/oklab_to_oklch.d.ts.map +1 -0
  475. package/src/core/color/oklab/oklab_to_oklch.js +35 -0
  476. package/src/core/color/oklab/oklch_to_oklab.d.ts +18 -0
  477. package/src/core/color/oklab/oklch_to_oklab.d.ts.map +1 -0
  478. package/src/core/color/oklab/oklch_to_oklab.js +26 -0
  479. package/src/core/color/oklab/toe.d.ts +12 -0
  480. package/src/core/color/oklab/toe.d.ts.map +1 -1
  481. package/src/core/color/oklab/toe.js +34 -22
  482. package/src/core/color/operations/color_add.d.ts +21 -0
  483. package/src/core/color/operations/color_add.d.ts.map +1 -0
  484. package/src/core/color/operations/color_add.js +23 -0
  485. package/src/core/color/operations/color_add_scaled.d.ts +20 -0
  486. package/src/core/color/operations/color_add_scaled.d.ts.map +1 -0
  487. package/src/core/color/operations/color_add_scaled.js +30 -0
  488. package/src/core/color/operations/color_clamp.d.ts +22 -0
  489. package/src/core/color/operations/color_clamp.d.ts.map +1 -0
  490. package/src/core/color/operations/color_clamp.js +25 -0
  491. package/src/core/color/operations/color_darken.d.ts +2 -1
  492. package/src/core/color/operations/color_darken.d.ts.map +1 -1
  493. package/src/core/color/operations/color_darken.js +25 -24
  494. package/src/core/color/operations/color_desaturate.d.ts +2 -1
  495. package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
  496. package/src/core/color/operations/color_desaturate.js +25 -24
  497. package/src/core/color/operations/color_get_hsl.d.ts +18 -0
  498. package/src/core/color/operations/color_get_hsl.d.ts.map +1 -0
  499. package/src/core/color/operations/color_get_hsl.js +60 -0
  500. package/src/core/color/operations/color_is_in_gamut.d.ts +20 -0
  501. package/src/core/color/operations/color_is_in_gamut.d.ts.map +1 -0
  502. package/src/core/color/operations/color_is_in_gamut.js +30 -0
  503. package/src/core/color/operations/color_lerp.d.ts +12 -3
  504. package/src/core/color/operations/color_lerp.d.ts.map +1 -1
  505. package/src/core/color/operations/color_lerp.js +55 -46
  506. package/src/core/color/operations/color_lighten.d.ts +9 -5
  507. package/src/core/color/operations/color_lighten.d.ts.map +1 -1
  508. package/src/core/color/operations/color_lighten.js +29 -24
  509. package/src/core/color/operations/color_mix_okhsv_channel.d.ts +24 -0
  510. package/src/core/color/operations/color_mix_okhsv_channel.d.ts.map +1 -0
  511. package/src/core/color/operations/color_mix_okhsv_channel.js +48 -0
  512. package/src/core/color/operations/color_multiply_rgb.d.ts +21 -0
  513. package/src/core/color/operations/color_multiply_rgb.d.ts.map +1 -0
  514. package/src/core/color/operations/color_multiply_rgb.js +26 -0
  515. package/src/core/color/operations/color_saturate.d.ts +9 -5
  516. package/src/core/color/operations/color_saturate.d.ts.map +1 -1
  517. package/src/core/color/operations/color_saturate.js +29 -24
  518. package/src/core/color/operations/color_scale_okhsv_channel.d.ts +1 -1
  519. package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -1
  520. package/src/core/color/operations/color_scale_okhsv_channel.js +58 -45
  521. package/src/core/color/operations/color_srgb_apply.d.ts +28 -0
  522. package/src/core/color/operations/color_srgb_apply.d.ts.map +1 -0
  523. package/src/core/color/operations/color_srgb_apply.js +40 -0
  524. package/src/core/color/operations/color_sub.d.ts +16 -0
  525. package/src/core/color/operations/color_sub.d.ts.map +1 -0
  526. package/src/core/color/operations/color_sub.js +18 -0
  527. package/src/core/color/parse_color.d.ts +10 -1
  528. package/src/core/color/parse_color.d.ts.map +1 -1
  529. package/src/core/color/parse_color.js +100 -84
  530. package/src/core/color/parse_color_normalized.d.ts +24 -0
  531. package/src/core/color/parse_color_normalized.d.ts.map +1 -0
  532. package/src/core/color/parse_color_normalized.js +38 -0
  533. package/src/core/color/rgb2uint24.d.ts +1 -8
  534. package/src/core/color/rgb2uint24.d.ts.map +1 -1
  535. package/src/core/color/rgb2uint24.js +7 -20
  536. package/src/core/color/rgb2uint32.d.ts +1 -9
  537. package/src/core/color/rgb2uint32.d.ts.map +1 -1
  538. package/src/core/color/rgb2uint32.js +7 -18
  539. package/src/core/color/rgb_to_luminance.d.ts +14 -5
  540. package/src/core/color/rgb_to_luminance.d.ts.map +1 -1
  541. package/src/core/color/rgb_to_luminance.js +24 -13
  542. package/src/core/color/rgb_to_uint24.d.ts +9 -0
  543. package/src/core/color/rgb_to_uint24.d.ts.map +1 -0
  544. package/src/core/color/rgb_to_uint24.js +20 -0
  545. package/src/core/color/rgb_to_uint32.d.ts +10 -0
  546. package/src/core/color/rgb_to_uint32.d.ts.map +1 -0
  547. package/src/core/color/rgb_to_uint32.js +21 -0
  548. package/src/core/color/sRGB/linear_to_sRGB.d.ts +7 -0
  549. package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
  550. package/src/core/color/sRGB/linear_to_sRGB.js +39 -32
  551. package/src/core/color/xyz/hpe_to_xyz.d.ts +24 -0
  552. package/src/core/color/xyz/hpe_to_xyz.d.ts.map +1 -0
  553. package/src/core/color/xyz/hpe_to_xyz.js +39 -0
  554. package/src/core/color/xyz/rgb_to_xyz.d.ts +17 -2
  555. package/src/core/color/xyz/rgb_to_xyz.d.ts.map +1 -1
  556. package/src/core/color/xyz/rgb_to_xyz.js +44 -18
  557. package/src/core/color/xyz/xyz_cmf_tabulated.d.ts.map +1 -1
  558. package/src/core/color/xyz/xyz_cmf_tabulated.js +217 -211
  559. package/src/core/color/xyz/xyz_cmf_wyman.d.ts +4 -0
  560. package/src/core/color/xyz/xyz_cmf_wyman.d.ts.map +1 -1
  561. package/src/core/color/xyz/xyz_cmf_wyman.js +74 -65
  562. package/src/core/color/xyz/xyz_to_hpe.d.ts +18 -0
  563. package/src/core/color/xyz/xyz_to_hpe.d.ts.map +1 -0
  564. package/src/core/color/xyz/xyz_to_hpe.js +33 -0
  565. package/src/core/color/xyz/xyz_to_rgb.d.ts +17 -2
  566. package/src/core/color/xyz/xyz_to_rgb.d.ts.map +1 -1
  567. package/src/core/color/xyz/xyz_to_rgb.js +39 -16
  568. package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts +7 -2
  569. package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts.map +1 -1
  570. package/src/core/color/ycxcz/xyz_to_ycxcz.js +33 -28
  571. package/src/core/events/signal/Signal.js +820 -820
  572. package/src/core/math/clamp_index.d.ts +18 -0
  573. package/src/core/math/clamp_index.d.ts.map +1 -0
  574. package/src/core/math/clamp_index.js +23 -0
  575. package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +803 -0
  576. package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts +5 -3
  577. package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts.map +1 -1
  578. package/src/engine/asset/loaders/image/jpeg/JpegFrame.js +5 -3
  579. package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts +2 -1
  580. package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts.map +1 -1
  581. package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.js +2 -1
  582. package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts +17 -0
  583. package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts.map +1 -1
  584. package/src/engine/asset/loaders/image/jpeg/JpegImage.js +197 -157
  585. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts +0 -1
  586. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts.map +1 -1
  587. package/src/engine/asset/loaders/image/jpeg/idct8x8_float.js +0 -1
  588. package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts +28 -0
  589. package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts.map +1 -0
  590. package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.js +31 -0
  591. package/src/engine/asset/loaders/image/png/PNG.d.ts +3 -18
  592. package/src/engine/asset/loaders/image/png/PNG.d.ts.map +1 -1
  593. package/src/engine/asset/loaders/image/png/PNG.js +3 -139
  594. package/src/engine/asset/loaders/image/png/PNGReader.d.ts +16 -16
  595. package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
  596. package/src/engine/asset/loaders/image/png/PNGReader.js +143 -160
  597. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_iTXt.js +3 -3
  598. package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_zTXt.js +3 -3
  599. package/src/engine/asset/loaders/image/png/crc32.d.ts +1 -15
  600. package/src/engine/asset/loaders/image/png/crc32.d.ts.map +1 -1
  601. package/src/engine/asset/loaders/image/png/crc32.js +5 -89
  602. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts +12 -10
  603. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts.map +1 -1
  604. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.js +20 -45
  605. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts +2 -1
  606. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts.map +1 -1
  607. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.js +2 -0
  608. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts +2 -1
  609. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts.map +1 -1
  610. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.js +2 -0
  611. package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts +22 -0
  612. package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts.map +1 -0
  613. package/src/engine/asset/loaders/image/png/filter/png_unfilter.js +68 -0
  614. package/src/engine/asset/loaders/image/png/png_inflate.d.ts +20 -0
  615. package/src/engine/asset/loaders/image/png/png_inflate.d.ts.map +1 -0
  616. package/src/engine/asset/loaders/image/png/png_inflate.js +85 -0
  617. package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts +22 -0
  618. package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts.map +1 -0
  619. package/src/engine/asset/loaders/image/png/png_unpack_samples.js +38 -0
  620. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  621. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +135 -132
  622. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +16 -3
  623. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  624. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1157 -1149
  625. package/src/engine/graphics/render/frame_graph/FrameGraph.js +900 -900
  626. package/src/engine/physics/ecs/PhysicsSystem.d.ts +72 -81
  627. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  628. package/src/engine/physics/ecs/PhysicsSystem.js +86 -77
  629. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  630. package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +451 -0
  631. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +625 -0
  632. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  633. package/src/shade/renderer/rasterize/native/oit/shader_oit_blend.d.ts.map +1 -1
  634. package/src/shade/renderer/rasterize/native/oit/shader_oit_blend.js +5 -4
  635. package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts +14 -3
  636. package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts.map +1 -1
  637. package/src/shade/renderer/scene/serialization/decode_image_source_hdr.js +50 -51
  638. package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
  639. package/src/shade/renderer/scene/serialization/deserialize_scene.js +531 -521
  640. package/src/shade/renderer/scene/serialization/write_image_source.d.ts.map +1 -1
  641. package/src/shade/renderer/scene/serialization/write_image_source.js +6 -4
  642. package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.d.ts.map +1 -1
  643. package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.js +34 -32
  644. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +31 -0
  645. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts.map +1 -1
  646. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -31
  647. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts +10 -0
  648. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts.map +1 -1
  649. package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.js +32 -22
  650. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.d.ts.map +1 -1
  651. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js +22 -21
  652. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +6 -0
  653. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
  654. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +110 -104
  655. package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.d.ts.map +1 -1
  656. package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.js +23 -21
  657. package/src/shade/renderer/shader/chunk/math/chunk_magnitude_floor.d.ts +9 -0
  658. package/src/shade/renderer/shader/chunk/math/chunk_magnitude_floor.d.ts.map +1 -0
  659. package/src/shade/renderer/shader/chunk/math/chunk_magnitude_floor.js +16 -0
  660. package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_magnitude_floor.d.ts +10 -0
  661. package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_magnitude_floor.d.ts.map +1 -0
  662. package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_magnitude_floor.js +17 -0
  663. package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_solve_cubic_blinn.d.ts.map +1 -1
  664. package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_solve_cubic_blinn.js +7 -1
  665. package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_square_root.d.ts.map +1 -1
  666. package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_square_root.js +9 -3
  667. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic.d.ts.map +1 -1
  668. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic.js +13 -7
  669. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic_blinn_smallest.d.ts.map +1 -1
  670. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic_blinn_smallest.js +13 -4
  671. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quadratic.d.ts.map +1 -1
  672. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quadratic.js +20 -13
  673. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quartic_neumark.d.ts.map +1 -1
  674. package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quartic_neumark.js +8 -4
  675. package/src/shade/renderer/shader/chunk/mboit/NOTES.md +35 -1
  676. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_2_trigonometric_moments.d.ts.map +1 -1
  677. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_2_trigonometric_moments.js +18 -5
  678. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_3_trigonometric_moments.d.ts.map +1 -1
  679. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_3_trigonometric_moments.js +21 -8
  680. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_4_trigonometric_moments.d.ts.map +1 -1
  681. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_4_trigonometric_moments.js +25 -12
  682. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_generate_trigonometric_moments_4.d.ts +6 -2
  683. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_generate_trigonometric_moments_4.d.ts.map +1 -1
  684. package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_generate_trigonometric_moments_4.js +42 -35
  685. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_4_power_moments.d.ts.map +1 -1
  686. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_4_power_moments.js +18 -5
  687. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_6_power_moments.d.ts.map +1 -1
  688. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_6_power_moments.js +24 -9
  689. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_8_power_moments.d.ts.map +1 -1
  690. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_8_power_moments.js +29 -13
  691. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_generate_power_moments_4.d.ts +12 -0
  692. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_generate_power_moments_4.d.ts.map +1 -1
  693. package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_generate_power_moments_4.js +38 -48
  694. package/src/view/elements/ColorPickerView.js +296 -296
  695. package/src/avif/codec/dec/Readme.md +0 -14
  696. package/src/avif/codec/dec/avif_dec.cpp +0 -234
  697. package/src/avif/codec/dec/avif_dec.d.ts +0 -3
  698. package/src/avif/codec/dec/avif_dec.d.ts.map +0 -1
  699. package/src/avif/codec/dec/avif_dec.js +0 -16
  700. package/src/avif/codec/dec/avif_dec.wasm +0 -0
  701. package/src/avif/codec/enc/README.md +0 -37
  702. package/src/avif/codec/enc/avif_enc.cpp +0 -216
  703. package/src/avif/codec/enc/avif_enc.d.ts +0 -3
  704. package/src/avif/codec/enc/avif_enc.d.ts.map +0 -1
  705. package/src/avif/codec/enc/avif_enc.js +0 -6144
  706. package/src/avif/codec/enc/avif_enc.wasm +0 -0
  707. package/src/avif/codec/enc/avif_enc_mt.d.ts +0 -3
  708. package/src/avif/codec/enc/avif_enc_mt.d.ts.map +0 -1
  709. package/src/avif/codec/enc/avif_enc_mt.js +0 -6811
  710. package/src/avif/codec/enc/avif_enc_mt.wasm +0 -0
  711. package/src/avif/codec/enc/avif_enc_mt.worker.d.mts +0 -2
  712. package/src/avif/codec/enc/avif_enc_mt.worker.d.mts.map +0 -1
  713. package/src/avif/codec/enc/avif_enc_mt.worker.d.ts +0 -11
  714. package/src/avif/codec/enc/avif_enc_mt.worker.d.ts.map +0 -1
  715. package/src/avif/codec/enc/avif_enc_mt.worker.js +0 -171
  716. package/src/avif/codec/enc/avif_enc_mt.worker.mjs +0 -1
  717. package/src/avif/decode.d.ts +0 -3
  718. package/src/avif/decode.d.ts.map +0 -1
  719. package/src/avif/decode.js +0 -42
  720. package/src/avif/encode.d.ts +0 -3
  721. package/src/avif/encode.d.ts.map +0 -1
  722. package/src/avif/encode.js +0 -75
  723. package/src/avif/meta.d.ts +0 -24
  724. package/src/avif/meta.d.ts.map +0 -1
  725. package/src/avif/meta.js +0 -23
  726. package/src/avif/tsconfig.tsbuildinfo +0 -1
  727. package/src/avif/utils.d.ts +0 -17
  728. package/src/avif/utils.d.ts.map +0 -1
  729. package/src/avif/utils.js +0 -31
  730. package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts +0 -23
  731. package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts.map +0 -1
  732. package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.js +0 -214
  733. package/src/engine/asset/loaders/image/png/inflate.d.ts +0 -7
  734. package/src/engine/asset/loaders/image/png/inflate.d.ts.map +0 -1
  735. package/src/engine/asset/loaders/image/png/inflate.js +0 -20
@@ -1 +1 @@
1
- {"version":3,"file":"write_image_source.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/serialization/write_image_source.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,iEAJW,MAAM,UACN,MAAM,GACJ,QAAQ,WAAW,CAAC,CAIhC;AAED;;;;GAIG;AACH,iDAJW,WAAW,eAAW,WAAW,GAAC,WAAW,YAC7C,MAAM,GACJ,QAAQ,WAAW,CAAC,CAiBhC"}
1
+ {"version":3,"file":"write_image_source.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/scene/serialization/write_image_source.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,iEAJW,MAAM,UACN,MAAM,GACJ,QAAQ,WAAW,CAAC,CAIhC;AAED;;;;GAIG;AACH,iDAJW,WAAW,eAAW,WAAW,GAAC,WAAW,YAC7C,MAAM,GACJ,QAAQ,WAAW,CAAC,CAmBhC"}
@@ -21,13 +21,15 @@ export async function write_image_source(
21
21
  ) {
22
22
  const encoder = get_threaded_image_encoder();
23
23
 
24
- if (image_source instanceof ImageBitmap) {
25
- return encoder.encode_bitmap(image_source, quality);
26
- }
27
-
24
+ // sampler first, and `ImageBitmap` only where there is one: the encoder is portable now, and a
25
+ // reference to a browser global would be the only thing keeping this path out of node
28
26
  if (image_source.isSampler2D === true) {
29
27
  return encoder.encode_sampler2d(image_source, quality);
30
28
  }
31
29
 
30
+ if (typeof ImageBitmap !== "undefined" && image_source instanceof ImageBitmap) {
31
+ return encoder.encode_bitmap(image_source, quality);
32
+ }
33
+
32
34
  throw new Error("Unsupported image source type");
33
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_rgb_to_luminance.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,qCAFU,SAAS,CAehB;0BA9BuB,6BAA6B"}
1
+ {"version":3,"file":"chunk_rgb_to_luminance.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,qCAFU,SAAS,CAiBhB;0BAhCuB,6BAA6B"}
@@ -1,32 +1,34 @@
1
- import { CodeChunk } from "../../compiler/CodeChunk.js";
2
-
3
- /**
4
- * Input color must be in linear space to get correct results
5
- * Valid for Rec709 color space input.
6
- * Matches sRGB primaries as well.
7
- *
8
- * Values are slightly different ( ~ 0.0001) from those in the "IEC 61966-2-1" spec. They are derived from the following chroma coordinates:
9
- * xr, yr, zr = 0.6400, 0.3300, 0.0300
10
- * xg, yg, zg = 0.3000, 0.6000, 0.1000
11
- * xb, yb, zb = 0.1500, 0.0600, 0.7900
12
- * xw, yw, zw = 0.3127, 0.3290, 0.3583
13
- *
14
- * @see https://en.wikipedia.org/wiki/Luminance
15
- * @see https://stackoverflow.com/a/56678483/3973586
16
- * @type {CodeChunk}
17
- */
18
- export const chunk_rgb_to_luminance = CodeChunk.from(
19
- //language=WGSL
20
- `
21
- fn rgb_to_luminance(rgb_rec709: vec3f) -> f32 {
22
-
23
- const luminance_weights = vec3f(0.212639005871510, 0.715168678767756, 0.072192315360734);
24
-
25
- return dot(
26
- rgb_rec709,
27
- luminance_weights
28
- );
29
-
30
- }
31
- `);
32
-
1
+ import { CodeChunk } from "../../compiler/CodeChunk.js";
2
+
3
+ /**
4
+ * Input color must be in linear space to get correct results
5
+ * Valid for Rec709 color space input.
6
+ * Matches sRGB primaries as well.
7
+ *
8
+ * Values are slightly different ( ~ 0.0001) from those in the "IEC 61966-2-1" spec. They are derived from the following chroma coordinates:
9
+ * xr, yr, zr = 0.6400, 0.3300, 0.0300
10
+ * xg, yg, zg = 0.3000, 0.6000, 0.1000
11
+ * xb, yb, zb = 0.1500, 0.0600, 0.7900
12
+ * xw, yw, zw = 0.3127, 0.3290, 0.3583
13
+ *
14
+ * @see https://en.wikipedia.org/wiki/Luminance
15
+ * @see https://stackoverflow.com/a/56678483/3973586
16
+ * @type {CodeChunk}
17
+ */
18
+ export const chunk_rgb_to_luminance = CodeChunk.from(
19
+ //language=WGSL
20
+ `
21
+ fn rgb_to_luminance(rgb_rec709: vec3f) -> f32 {
22
+
23
+ // REC709_LUMINANCE_R/G/B from core/color/REC709_PRIMARIES.js, digit for digit. f32 rounds them, but
24
+ // keeping the spelling identical is what lets a reader see that these are the same numbers.
25
+ const luminance_weights = vec3f(0.21263900587151035754, 0.71516867876775592746, 0.07219231536073371500);
26
+
27
+ return dot(
28
+ rgb_rec709,
29
+ luminance_weights
30
+ );
31
+
32
+ }
33
+ `);
34
+
@@ -1,3 +1,34 @@
1
+ /**
2
+ * SMPTE ST 2084 EOTF, decoding a PQ signal to linear light in GT7 units.
3
+ *
4
+ * ## About that 100
5
+ *
6
+ * `REFERENCE_LUMINANCE` is **not** an SDR white point competing with the 203 nits of BT.2408. It is the
7
+ * "Standard 1.0 unit" from the GT7 tone mapping paper, and it is the same 100 that `chunk_tonemap_gt7`
8
+ * uses to normalise its `paper_white_nits` and `peak_nits` uniforms. The two have to stay equal: GT7
9
+ * round-trips through this function and its inverse, so changing one alone shifts the whole curve.
10
+ *
11
+ * Three different quantities in this engine are all called a reference white, and they are worth keeping
12
+ * apart:
13
+ *
14
+ * | Where | Value | What it means |
15
+ * |---|---|---|
16
+ * | here, and `chunk_tonemap_gt7` | 100 nits | GT7's internal unit for a GPU linear `1.0` |
17
+ * | `core/color/PQ/PQ_constants.js` | 203 nits | BT.2408 graphics white, a *renderer* convention |
18
+ * | `avif/native/color/transfer_to_linear.js` | 100 nits | the reference display the SDR curves in H.273 are defined against |
19
+ *
20
+ * The CPU's `linear_to_PQ` / `PQ_to_linear` fold in none of these — they are pure ST 2084 in PQ's own
21
+ * normalisation, which is what makes them an exact inverse pair — so the 203 is applied by their callers.
22
+ * This chunk does fold its 100 in, on both sides, so it is an exact inverse pair too, just of a different
23
+ * function.
24
+ *
25
+ * The place the two conventions actually meet is `linear_reference_nits`, which `sampler2d_to_avif` and
26
+ * `avif_to_sampler2d` each name explicitly.
27
+ *
28
+ * @see chunk_inverseEotfSt2084
29
+ * @see chunk_tonemap_gt7 the consumer whose REF_LUMINANCE must match
30
+ * @type {CodeChunk}
31
+ */
1
32
  export const chunk_eotfSt2084: CodeChunk;
2
33
  import { CodeChunk } from "../../../compiler/CodeChunk.js";
3
34
  //# sourceMappingURL=chunk_eotf_st2084.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_eotf_st2084.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js"],"names":[],"mappings":"AAEA,yCA6BC;0BA/ByB,gCAAgC"}
1
+ {"version":3,"file":"chunk_eotf_st2084.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,+BAFU,SAAS,CA+BlB;0BA9DyB,gCAAgC"}
@@ -1,32 +1,63 @@
1
- import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
-
3
- export const chunk_eotfSt2084 = CodeChunk.from(
4
- //language=WGSL
5
- `
6
- fn eotfSt2084(n_in: f32) -> f32 {
7
- var n = n_in;
8
- if (n < 0.0) { n = 0.0; }
9
- if (n > 1.0) { n = 1.0; }
10
-
11
- let m1 = 0.1593017578125;
12
- let m2 = 78.84375; // Scale 1.0
13
- let c1 = 0.8359375;
14
- let c2 = 18.8515625;
15
- let c3 = 18.6875;
16
- let pqC = 10000.0;
17
-
18
- let np = pow(n, 1.0 / m2);
19
- var l = np - c1;
20
- if (l < 0.0) { l = 0.0; }
21
-
22
- l = l / (c2 - c3 * np);
23
- l = pow(l, 1.0 / m1);
24
-
25
- let physical = l * pqC;
26
-
27
- const REFERENCE_LUMINANCE = 100.0;
28
-
29
- return physical / REFERENCE_LUMINANCE;
30
- }
31
- `
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+
3
+ /**
4
+ * SMPTE ST 2084 EOTF, decoding a PQ signal to linear light in GT7 units.
5
+ *
6
+ * ## About that 100
7
+ *
8
+ * `REFERENCE_LUMINANCE` is **not** an SDR white point competing with the 203 nits of BT.2408. It is the
9
+ * "Standard 1.0 unit" from the GT7 tone mapping paper, and it is the same 100 that `chunk_tonemap_gt7`
10
+ * uses to normalise its `paper_white_nits` and `peak_nits` uniforms. The two have to stay equal: GT7
11
+ * round-trips through this function and its inverse, so changing one alone shifts the whole curve.
12
+ *
13
+ * Three different quantities in this engine are all called a reference white, and they are worth keeping
14
+ * apart:
15
+ *
16
+ * | Where | Value | What it means |
17
+ * |---|---|---|
18
+ * | here, and `chunk_tonemap_gt7` | 100 nits | GT7's internal unit for a GPU linear `1.0` |
19
+ * | `core/color/PQ/PQ_constants.js` | 203 nits | BT.2408 graphics white, a *renderer* convention |
20
+ * | `avif/native/color/transfer_to_linear.js` | 100 nits | the reference display the SDR curves in H.273 are defined against |
21
+ *
22
+ * The CPU's `linear_to_PQ` / `PQ_to_linear` fold in none of these — they are pure ST 2084 in PQ's own
23
+ * normalisation, which is what makes them an exact inverse pair — so the 203 is applied by their callers.
24
+ * This chunk does fold its 100 in, on both sides, so it is an exact inverse pair too, just of a different
25
+ * function.
26
+ *
27
+ * The place the two conventions actually meet is `linear_reference_nits`, which `sampler2d_to_avif` and
28
+ * `avif_to_sampler2d` each name explicitly.
29
+ *
30
+ * @see chunk_inverseEotfSt2084
31
+ * @see chunk_tonemap_gt7 the consumer whose REF_LUMINANCE must match
32
+ * @type {CodeChunk}
33
+ */
34
+ export const chunk_eotfSt2084 = CodeChunk.from(
35
+ //language=WGSL
36
+ `
37
+ fn eotfSt2084(n_in: f32) -> f32 {
38
+ var n = n_in;
39
+ if (n < 0.0) { n = 0.0; }
40
+ if (n > 1.0) { n = 1.0; }
41
+
42
+ let m1 = 0.1593017578125;
43
+ let m2 = 78.84375; // Scale 1.0
44
+ let c1 = 0.8359375;
45
+ let c2 = 18.8515625;
46
+ let c3 = 18.6875;
47
+ let pqC = 10000.0;
48
+
49
+ let np = pow(n, 1.0 / m2);
50
+ var l = np - c1;
51
+ if (l < 0.0) { l = 0.0; }
52
+
53
+ l = l / (c2 - c3 * np);
54
+ l = pow(l, 1.0 / m1);
55
+
56
+ let physical = l * pqC;
57
+
58
+ const REFERENCE_LUMINANCE = 100.0;
59
+
60
+ return physical / REFERENCE_LUMINANCE;
61
+ }
62
+ `
32
63
  )
@@ -1,3 +1,13 @@
1
+ /**
2
+ * SMPTE ST 2084 inverse EOTF, encoding linear light in GT7 units as a PQ signal.
3
+ *
4
+ * `REFERENCE_LUMINANCE` here must equal the one in {@link chunk_eotfSt2084}, and both must equal
5
+ * `chunk_tonemap_gt7`'s `REF_LUMINANCE` — see the note there for what the 100 is and how it relates to the
6
+ * 203 nits on the CPU side.
7
+ *
8
+ * @see chunk_eotfSt2084
9
+ * @type {CodeChunk}
10
+ */
1
11
  export const chunk_inverseEotfSt2084: CodeChunk;
2
12
  import { CodeChunk } from "../../../compiler/CodeChunk.js";
3
13
  //# sourceMappingURL=chunk_inverse_eotf_st2084.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_inverse_eotf_st2084.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.js"],"names":[],"mappings":"AAEA,gDAoBC;0BAtByB,gCAAgC"}
1
+ {"version":3,"file":"chunk_inverse_eotf_st2084.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.js"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,sCAFU,SAAS,CAsBlB;0BAhCyB,gCAAgC"}
@@ -1,23 +1,33 @@
1
- import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
-
3
- export const chunk_inverseEotfSt2084 = CodeChunk.from(
4
- //language=WGSL
5
- `
6
- fn inverseEotfSt2084(v: f32) -> f32 {
7
- let m1 = 0.1593017578125;
8
- let m2 = 78.84375; // Scale 1.0
9
- let c1 = 0.8359375;
10
- let c2 = 18.8515625;
11
- let c3 = 18.6875;
12
- let pqC = 10000.0;
13
-
14
- const REFERENCE_LUMINANCE = 100.0;
15
-
16
- let physical = v * REFERENCE_LUMINANCE;
17
- let y = physical / pqC;
18
- let ym = pow(y, m1);
19
-
20
- return exp2(m2 * (log2(c1 + c2 * ym) - log2(1.0 + c3 * ym)));
21
- }
22
- `
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+
3
+ /**
4
+ * SMPTE ST 2084 inverse EOTF, encoding linear light in GT7 units as a PQ signal.
5
+ *
6
+ * `REFERENCE_LUMINANCE` here must equal the one in {@link chunk_eotfSt2084}, and both must equal
7
+ * `chunk_tonemap_gt7`'s `REF_LUMINANCE` — see the note there for what the 100 is and how it relates to the
8
+ * 203 nits on the CPU side.
9
+ *
10
+ * @see chunk_eotfSt2084
11
+ * @type {CodeChunk}
12
+ */
13
+ export const chunk_inverseEotfSt2084 = CodeChunk.from(
14
+ //language=WGSL
15
+ `
16
+ fn inverseEotfSt2084(v: f32) -> f32 {
17
+ let m1 = 0.1593017578125;
18
+ let m2 = 78.84375; // Scale 1.0
19
+ let c1 = 0.8359375;
20
+ let c2 = 18.8515625;
21
+ let c3 = 18.6875;
22
+ let pqC = 10000.0;
23
+
24
+ const REFERENCE_LUMINANCE = 100.0;
25
+
26
+ let physical = v * REFERENCE_LUMINANCE;
27
+ let y = physical / pqC;
28
+ let ym = pow(y, m1);
29
+
30
+ return exp2(m2 * (log2(c1 + c2 * ym) - log2(1.0 + c3 * ym)));
31
+ }
32
+ `
23
33
  )
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_sRGBTransferOETF.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,+CASG;0BAnBuB,gCAAgC"}
1
+ {"version":3,"file":"chunk_sRGBTransferOETF.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,+CAUG;0BApBuB,gCAAgC"}
@@ -1,21 +1,22 @@
1
- import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
-
3
-
4
- /**
5
- * Most monitors use this.
6
- * Optical-electro transfer function (OETF)
7
- *
8
- * sRGB-linear to sRGB
9
- * @see https://github.com/mrdoob/three.js/blob/aedb9c75bedff3a5f8476dbb8b41dd40c4b09603/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js#L41
10
- */
11
- export const chunk_sRGBTransferOETF = CodeChunk.from(
12
- //language=WGSL
13
- `
14
- fn sRGBTransferOETF( value:vec3<f32> ) -> vec3<f32> {
15
- let high = pow( value, vec3( 0.41666666666 ) ) * 1.055 - vec3( 0.055 );
16
- let low = value * 12.92;
17
-
18
- return select( low, high, value > vec3( 0.0031308 ) );
19
- }
20
- `);
21
-
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+
3
+
4
+ /**
5
+ * Most monitors use this.
6
+ * Optical-electro transfer function (OETF)
7
+ *
8
+ * sRGB-linear to sRGB
9
+ * @see https://github.com/mrdoob/three.js/blob/aedb9c75bedff3a5f8476dbb8b41dd40c4b09603/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js#L41
10
+ */
11
+ export const chunk_sRGBTransferOETF = CodeChunk.from(
12
+ //language=WGSL
13
+ `
14
+ fn sRGBTransferOETF( value:vec3<f32> ) -> vec3<f32> {
15
+ // 1 / 2.4, spelled exactly as SRGB_OETF_EXPONENT in core/color/REC709_PRIMARIES.js
16
+ let high = pow( value, vec3( 0.4166666666666667 ) ) * 1.055 - vec3( 0.055 );
17
+ let low = value * 12.92;
18
+
19
+ return select( low, high, value > vec3( 0.0031308 ) );
20
+ }
21
+ `);
22
+
@@ -1,5 +1,11 @@
1
1
  /**
2
+ * `REF_LUMINANCE` is the paper's "Standard 1.0 unit" and must stay equal to the `REFERENCE_LUMINANCE` in
3
+ * {@link chunk_eotfSt2084} / {@link chunk_inverseEotfSt2084}, which this function round-trips through. It is
4
+ * not the BT.2408 SDR white of 203 nits used on the CPU side; see the note on `chunk_eotfSt2084` for how the
5
+ * three reference whites in this engine relate.
6
+ *
2
7
  * @see "Driving Toward Reality: Physically Based Tone Mapping and Perceptual Fidelity in Gran Turismo 7"
8
+ * @see chunk_eotfSt2084
3
9
  * @type {CodeChunk}
4
10
  */
5
11
  export const chunk_tonemap_gt7: CodeChunk;
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_tonemap_gt7.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js"],"names":[],"mappings":"AAUA;;;GAGG;AACH,gCAFU,SAAS,CA4FlB;0BAxGyB,mCAAmC"}
1
+ {"version":3,"file":"chunk_tonemap_gt7.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,gCAFU,SAAS,CA4FlB;0BA9GyB,mCAAmC"}
@@ -1,105 +1,111 @@
1
- import { CodeChunk } from "../../../../compiler/CodeChunk.js";
2
- import { chunk_CRM_FROM_REC2020_TO_REC709 } from "../../conversion/chunk_CRM_FROM_REC2020_TO_REC709.js";
3
- import { chunk_CRM_FROM_REC709_TO_REC2020 } from "../../conversion/chunk_CRM_FROM_REC709_TO_REC2020.js";
4
- import { chunk_eotfSt2084 } from "../../iCtCp/chunk_eotf_st2084.js";
5
- import { chunk_iCtCp_to_rgb } from "../../iCtCp/chunk_iCtCp_to_rgb.js";
6
- import { chunk_inverseEotfSt2084 } from "../../iCtCp/chunk_inverse_eotf_st2084.js";
7
- import { chunk_rgb_to_iCtCp } from "../../iCtCp/chunk_rgb_to_iCtCp.js";
8
- import { chunk_gt_evaluate_curve } from "./chunk_gt_evaluate_curve.js";
9
- import { GT7_TONE_MAPPING_CURVE_STRUCT } from "./GT7_TONE_MAPPING_CURVE_STRUCT.js";
10
-
11
- /**
12
- * @see "Driving Toward Reality: Physically Based Tone Mapping and Perceptual Fidelity in Gran Turismo 7"
13
- * @type {CodeChunk}
14
- */
15
- export const chunk_tonemap_gt7 = CodeChunk.from(
16
- //language=WGSL
17
- `
18
- fn tonemap_gt7(
19
- rgb_rec709:vec3<f32>,
20
- peak_nits: f32,
21
- paper_white_nits: f32,
22
- ) -> vec3<f32>{
23
-
24
- // Constants for the GT7 "Standard" 1.0 unit
25
- const REF_LUMINANCE: f32 = 100.0;
26
-
27
- // input is in rec.709, the tonemapper is in rec.2020
28
- var color_linear = CRM_FROM_REC709_TO_REC2020 * rgb_rec709;
29
-
30
- // normalize to paper white
31
- let paper_white = paper_white_nits / REF_LUMINANCE;
32
- color_linear *= paper_white;
33
-
34
- var curve: ${GT7_TONE_MAPPING_CURVE_STRUCT.wgsl_ref};
35
- // initialize curve
36
- const alpha = 0.25;
37
- const gray_point = 0.538;
38
- const linear_section = 0.444;
39
- const toe_strength = 1.280;
40
-
41
- let peak_intensity = peak_nits / REF_LUMINANCE;
42
-
43
- //
44
- curve.peakIntensity = peak_intensity;
45
- curve.midPoint = gray_point;
46
- curve.linearSection = linear_section;
47
- curve.toeStrength = toe_strength;
48
-
49
- // Pre-compute constants for the shoulder region.
50
- let k = (linear_section - 1.0) / (alpha - 1.0);
51
- curve.kA = peak_intensity * linear_section + peak_intensity * k;
52
- curve.kB = -peak_intensity * k * exp(linear_section / k);
53
- curve.kC = -1.0 / (k * peak_intensity);
54
-
55
- //
56
- // PATH A: Create "Twisted" RGB (Per-channel Mapping)
57
- // This creates the "film/camera-like" look where highlights shift to CMY/White
58
- var rgb_twisted: vec3<f32>;
59
- rgb_twisted.r = gt_evaluate_curve(&curve, color_linear.r);
60
- rgb_twisted.g = gt_evaluate_curve(&curve, color_linear.g);
61
- rgb_twisted.b = gt_evaluate_curve(&curve, color_linear.b);
62
-
63
- // PATH B: Create "Untwisted" RGB (Luminance from Twisted, Chroma from Original)
64
- // 1. Get ICtCp for both Original and Twisted
65
- let ictcp_original = rgb_to_iCtCp(color_linear);
66
- let ictcp_twisted = rgb_to_iCtCp(rgb_twisted);
67
-
68
- const CHROMA_START_PQ = 0.7;
69
- const CHROMA_END_PQ = 1.0;
70
-
71
- // 2. Calculate Whitening Scale based on Original Luminance (PQ encoded)
72
- // As luminance increases, we reduce chroma to avoid artifacts and simulate saturation limit
73
- let luminance_pq = ictcp_original.x; // rgb_to_iCtCp returns PQ encoding in X
74
- let shoulder_saturation_scale = 1.0 - smoothstep(CHROMA_START_PQ, CHROMA_END_PQ, luminance_pq);
75
-
76
- // Blend Ratio: 0.0 = Fully Untwisted (Preserves hue/sat), 1.0 = Fully Twisted (Camera-like shift)
77
- const BLEND_RATIO = 0.7;
78
-
79
- // Mix between the Twisted (Per-channel) and Untwisted (ICtCp reconstructed) versions
80
- let ictcp_final = vec3<f32>(
81
- ictcp_twisted.x,
82
- mix(ictcp_original.yz * shoulder_saturation_scale, ictcp_twisted.yz, BLEND_RATIO)
83
- );
84
-
85
- var final_color = iCtCp_to_rgb(ictcp_final);
86
-
87
- // renormalize
88
- final_color /= paper_white;
89
-
90
- // go back to rec.709
91
- final_color = CRM_FROM_REC2020_TO_REC709 * final_color;
92
-
93
- return final_color;
94
- }
95
- `, [
96
- chunk_CRM_FROM_REC709_TO_REC2020,
97
- chunk_CRM_FROM_REC2020_TO_REC709,
98
- GT7_TONE_MAPPING_CURVE_STRUCT.declaration_chunk,
99
- chunk_gt_evaluate_curve,
100
- chunk_iCtCp_to_rgb,
101
- chunk_rgb_to_iCtCp,
102
- chunk_eotfSt2084,
103
- chunk_inverseEotfSt2084,
104
- ]
1
+ import { CodeChunk } from "../../../../compiler/CodeChunk.js";
2
+ import { chunk_CRM_FROM_REC2020_TO_REC709 } from "../../conversion/chunk_CRM_FROM_REC2020_TO_REC709.js";
3
+ import { chunk_CRM_FROM_REC709_TO_REC2020 } from "../../conversion/chunk_CRM_FROM_REC709_TO_REC2020.js";
4
+ import { chunk_eotfSt2084 } from "../../iCtCp/chunk_eotf_st2084.js";
5
+ import { chunk_iCtCp_to_rgb } from "../../iCtCp/chunk_iCtCp_to_rgb.js";
6
+ import { chunk_inverseEotfSt2084 } from "../../iCtCp/chunk_inverse_eotf_st2084.js";
7
+ import { chunk_rgb_to_iCtCp } from "../../iCtCp/chunk_rgb_to_iCtCp.js";
8
+ import { chunk_gt_evaluate_curve } from "./chunk_gt_evaluate_curve.js";
9
+ import { GT7_TONE_MAPPING_CURVE_STRUCT } from "./GT7_TONE_MAPPING_CURVE_STRUCT.js";
10
+
11
+ /**
12
+ * `REF_LUMINANCE` is the paper's "Standard 1.0 unit" and must stay equal to the `REFERENCE_LUMINANCE` in
13
+ * {@link chunk_eotfSt2084} / {@link chunk_inverseEotfSt2084}, which this function round-trips through. It is
14
+ * not the BT.2408 SDR white of 203 nits used on the CPU side; see the note on `chunk_eotfSt2084` for how the
15
+ * three reference whites in this engine relate.
16
+ *
17
+ * @see "Driving Toward Reality: Physically Based Tone Mapping and Perceptual Fidelity in Gran Turismo 7"
18
+ * @see chunk_eotfSt2084
19
+ * @type {CodeChunk}
20
+ */
21
+ export const chunk_tonemap_gt7 = CodeChunk.from(
22
+ //language=WGSL
23
+ `
24
+ fn tonemap_gt7(
25
+ rgb_rec709:vec3<f32>,
26
+ peak_nits: f32,
27
+ paper_white_nits: f32,
28
+ ) -> vec3<f32>{
29
+
30
+ // Constants for the GT7 "Standard" 1.0 unit
31
+ const REF_LUMINANCE: f32 = 100.0;
32
+
33
+ // input is in rec.709, the tonemapper is in rec.2020
34
+ var color_linear = CRM_FROM_REC709_TO_REC2020 * rgb_rec709;
35
+
36
+ // normalize to paper white
37
+ let paper_white = paper_white_nits / REF_LUMINANCE;
38
+ color_linear *= paper_white;
39
+
40
+ var curve: ${GT7_TONE_MAPPING_CURVE_STRUCT.wgsl_ref};
41
+ // initialize curve
42
+ const alpha = 0.25;
43
+ const gray_point = 0.538;
44
+ const linear_section = 0.444;
45
+ const toe_strength = 1.280;
46
+
47
+ let peak_intensity = peak_nits / REF_LUMINANCE;
48
+
49
+ //
50
+ curve.peakIntensity = peak_intensity;
51
+ curve.midPoint = gray_point;
52
+ curve.linearSection = linear_section;
53
+ curve.toeStrength = toe_strength;
54
+
55
+ // Pre-compute constants for the shoulder region.
56
+ let k = (linear_section - 1.0) / (alpha - 1.0);
57
+ curve.kA = peak_intensity * linear_section + peak_intensity * k;
58
+ curve.kB = -peak_intensity * k * exp(linear_section / k);
59
+ curve.kC = -1.0 / (k * peak_intensity);
60
+
61
+ //
62
+ // PATH A: Create "Twisted" RGB (Per-channel Mapping)
63
+ // This creates the "film/camera-like" look where highlights shift to CMY/White
64
+ var rgb_twisted: vec3<f32>;
65
+ rgb_twisted.r = gt_evaluate_curve(&curve, color_linear.r);
66
+ rgb_twisted.g = gt_evaluate_curve(&curve, color_linear.g);
67
+ rgb_twisted.b = gt_evaluate_curve(&curve, color_linear.b);
68
+
69
+ // PATH B: Create "Untwisted" RGB (Luminance from Twisted, Chroma from Original)
70
+ // 1. Get ICtCp for both Original and Twisted
71
+ let ictcp_original = rgb_to_iCtCp(color_linear);
72
+ let ictcp_twisted = rgb_to_iCtCp(rgb_twisted);
73
+
74
+ const CHROMA_START_PQ = 0.7;
75
+ const CHROMA_END_PQ = 1.0;
76
+
77
+ // 2. Calculate Whitening Scale based on Original Luminance (PQ encoded)
78
+ // As luminance increases, we reduce chroma to avoid artifacts and simulate saturation limit
79
+ let luminance_pq = ictcp_original.x; // rgb_to_iCtCp returns PQ encoding in X
80
+ let shoulder_saturation_scale = 1.0 - smoothstep(CHROMA_START_PQ, CHROMA_END_PQ, luminance_pq);
81
+
82
+ // Blend Ratio: 0.0 = Fully Untwisted (Preserves hue/sat), 1.0 = Fully Twisted (Camera-like shift)
83
+ const BLEND_RATIO = 0.7;
84
+
85
+ // Mix between the Twisted (Per-channel) and Untwisted (ICtCp reconstructed) versions
86
+ let ictcp_final = vec3<f32>(
87
+ ictcp_twisted.x,
88
+ mix(ictcp_original.yz * shoulder_saturation_scale, ictcp_twisted.yz, BLEND_RATIO)
89
+ );
90
+
91
+ var final_color = iCtCp_to_rgb(ictcp_final);
92
+
93
+ // renormalize
94
+ final_color /= paper_white;
95
+
96
+ // go back to rec.709
97
+ final_color = CRM_FROM_REC2020_TO_REC709 * final_color;
98
+
99
+ return final_color;
100
+ }
101
+ `, [
102
+ chunk_CRM_FROM_REC709_TO_REC2020,
103
+ chunk_CRM_FROM_REC2020_TO_REC709,
104
+ GT7_TONE_MAPPING_CURVE_STRUCT.declaration_chunk,
105
+ chunk_gt_evaluate_curve,
106
+ chunk_iCtCp_to_rgb,
107
+ chunk_rgb_to_iCtCp,
108
+ chunk_eotfSt2084,
109
+ chunk_inverseEotfSt2084,
110
+ ]
105
111
  )
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_rgb_to_xyz.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,+BAFU,SAAS,CAejB;0BAnBwB,gCAAgC"}
1
+ {"version":3,"file":"chunk_rgb_to_xyz.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,+BAFU,SAAS,CAiBjB;0BArBwB,gCAAgC"}