@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.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +3 -2
- package/src/avif/encode_image_source.d.ts +70 -0
- package/src/avif/encode_image_source.d.ts.map +1 -0
- package/src/avif/encode_image_source.js +117 -0
- package/src/avif/encoder_worker.js +15 -126
- package/src/avif/index.d.ts +4 -2
- package/src/avif/index.js +21 -2
- package/src/avif/native/DECISIONS.md +537 -0
- package/src/avif/native/NOTICE.md +61 -0
- package/src/avif/native/api/AvifDecoder.d.ts +67 -0
- package/src/avif/native/api/AvifDecoder.d.ts.map +1 -0
- package/src/avif/native/api/AvifDecoder.js +121 -0
- package/src/avif/native/api/apply_transformations.d.ts +30 -0
- package/src/avif/native/api/apply_transformations.d.ts.map +1 -0
- package/src/avif/native/api/apply_transformations.js +120 -0
- package/src/avif/native/api/avif_to_sampler2d.d.ts +25 -0
- package/src/avif/native/api/avif_to_sampler2d.d.ts.map +1 -0
- package/src/avif/native/api/avif_to_sampler2d.js +42 -0
- package/src/avif/native/api/convert_to_rgba.d.ts +54 -0
- package/src/avif/native/api/convert_to_rgba.d.ts.map +1 -0
- package/src/avif/native/api/convert_to_rgba.js +204 -0
- package/src/avif/native/api/decode_avif.d.ts +24 -0
- package/src/avif/native/api/decode_avif.d.ts.map +1 -0
- package/src/avif/native/api/decode_avif.js +111 -0
- package/src/avif/native/api/decode_image_item.d.ts +18 -0
- package/src/avif/native/api/decode_image_item.d.ts.map +1 -0
- package/src/avif/native/api/decode_image_item.js +234 -0
- package/src/avif/native/api/encode_avif.d.ts +73 -0
- package/src/avif/native/api/encode_avif.d.ts.map +1 -0
- package/src/avif/native/api/encode_avif.js +488 -0
- package/src/avif/native/api/sampler2d_to_avif.d.ts +22 -0
- package/src/avif/native/api/sampler2d_to_avif.d.ts.map +1 -0
- package/src/avif/native/api/sampler2d_to_avif.js +108 -0
- package/src/avif/native/av1/decode/Av1FrameContext.d.ts +286 -0
- package/src/avif/native/av1/decode/Av1FrameContext.d.ts.map +1 -0
- package/src/avif/native/av1/decode/Av1FrameContext.js +622 -0
- package/src/avif/native/av1/decode/block_decoded.d.ts +27 -0
- package/src/avif/native/av1/decode/block_decoded.d.ts.map +1 -0
- package/src/avif/native/av1/decode/block_decoded.js +59 -0
- package/src/avif/native/av1/decode/decode_av1_still.d.ts +22 -0
- package/src/avif/native/av1/decode/decode_av1_still.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_av1_still.js +309 -0
- package/src/avif/native/av1/decode/decode_coefficients.d.ts +20 -0
- package/src/avif/native/av1/decode/decode_coefficients.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_coefficients.js +259 -0
- package/src/avif/native/av1/decode/decode_palette.d.ts +28 -0
- package/src/avif/native/av1/decode/decode_palette.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_palette.js +442 -0
- package/src/avif/native/av1/decode/decode_tile.d.ts +14 -0
- package/src/avif/native/av1/decode/decode_tile.d.ts.map +1 -0
- package/src/avif/native/av1/decode/decode_tile.js +1213 -0
- package/src/avif/native/av1/decode/get_scan.d.ts +16 -0
- package/src/avif/native/av1/decode/get_scan.d.ts.map +1 -0
- package/src/avif/native/av1/decode/get_scan.js +138 -0
- package/src/avif/native/av1/decode/read_lr.d.ts +35 -0
- package/src/avif/native/av1/decode/read_lr.d.ts.map +1 -0
- package/src/avif/native/av1/decode/read_lr.js +277 -0
- package/src/avif/native/av1/decode/read_transform_type.d.ts +19 -0
- package/src/avif/native/av1/decode/read_transform_type.d.ts.map +1 -0
- package/src/avif/native/av1/decode/read_transform_type.js +92 -0
- package/src/avif/native/av1/decode/reconstruct.d.ts +36 -0
- package/src/avif/native/av1/decode/reconstruct.d.ts.map +1 -0
- package/src/avif/native/av1/decode/reconstruct.js +241 -0
- package/src/avif/native/av1/decode/transform_type.d.ts +49 -0
- package/src/avif/native/av1/decode/transform_type.d.ts.map +1 -0
- package/src/avif/native/av1/decode/transform_type.js +137 -0
- package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts +81 -0
- package/src/avif/native/av1/encode/Av1BlockSnapshot.d.ts.map +1 -0
- package/src/avif/native/av1/encode/Av1BlockSnapshot.js +299 -0
- package/src/avif/native/av1/encode/Av1EncodeContext.d.ts +384 -0
- package/src/avif/native/av1/encode/Av1EncodeContext.d.ts.map +1 -0
- package/src/avif/native/av1/encode/Av1EncodeContext.js +590 -0
- package/src/avif/native/av1/encode/build_headers.d.ts +50 -0
- package/src/avif/native/av1/encode/build_headers.d.ts.map +1 -0
- package/src/avif/native/av1/encode/build_headers.js +359 -0
- package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts +26 -0
- package/src/avif/native/av1/encode/choose_chroma_alpha.d.ts.map +1 -0
- package/src/avif/native/av1/encode/choose_chroma_alpha.js +90 -0
- package/src/avif/native/av1/encode/choose_filters.d.ts +21 -0
- package/src/avif/native/av1/encode/choose_filters.d.ts.map +1 -0
- package/src/avif/native/av1/encode/choose_filters.js +318 -0
- package/src/avif/native/av1/encode/choose_restoration.d.ts +35 -0
- package/src/avif/native/av1/encode/choose_restoration.d.ts.map +1 -0
- package/src/avif/native/av1/encode/choose_restoration.js +616 -0
- package/src/avif/native/av1/encode/decode_effort.d.ts +57 -0
- package/src/avif/native/av1/encode/decode_effort.d.ts.map +1 -0
- package/src/avif/native/av1/encode/decode_effort.js +59 -0
- package/src/avif/native/av1/encode/encode_av1_still.d.ts +17 -0
- package/src/avif/native/av1/encode/encode_av1_still.d.ts.map +1 -0
- package/src/avif/native/av1/encode/encode_av1_still.js +194 -0
- package/src/avif/native/av1/encode/encode_effort.d.ts +56 -0
- package/src/avif/native/av1/encode/encode_effort.d.ts.map +1 -0
- package/src/avif/native/av1/encode/encode_effort.js +97 -0
- package/src/avif/native/av1/encode/encode_tile.d.ts +26 -0
- package/src/avif/native/av1/encode/encode_tile.d.ts.map +1 -0
- package/src/avif/native/av1/encode/encode_tile.js +2331 -0
- package/src/avif/native/av1/encode/quantise.d.ts +51 -0
- package/src/avif/native/av1/encode/quantise.d.ts.map +1 -0
- package/src/avif/native/av1/encode/quantise.js +212 -0
- package/src/avif/native/av1/encode/write_coefficients.d.ts +42 -0
- package/src/avif/native/av1/encode/write_coefficients.d.ts.map +1 -0
- package/src/avif/native/av1/encode/write_coefficients.js +367 -0
- package/src/avif/native/av1/encode/write_lr.d.ts +33 -0
- package/src/avif/native/av1/encode/write_lr.d.ts.map +1 -0
- package/src/avif/native/av1/encode/write_lr.js +174 -0
- package/src/avif/native/av1/encode/write_transform_type.d.ts +21 -0
- package/src/avif/native/av1/encode/write_transform_type.d.ts.map +1 -0
- package/src/avif/native/av1/encode/write_transform_type.js +70 -0
- package/src/avif/native/av1/entropy/CdfContext.d.ts +167 -0
- package/src/avif/native/av1/entropy/CdfContext.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/CdfContext.js +433 -0
- package/src/avif/native/av1/entropy/SymbolReader.d.ts +103 -0
- package/src/avif/native/av1/entropy/SymbolReader.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/SymbolReader.js +317 -0
- package/src/avif/native/av1/entropy/SymbolWriter.d.ts +107 -0
- package/src/avif/native/av1/entropy/SymbolWriter.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/SymbolWriter.js +352 -0
- package/src/avif/native/av1/entropy/coefficient_context.d.ts +71 -0
- package/src/avif/native/av1/entropy/coefficient_context.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/coefficient_context.js +325 -0
- package/src/avif/native/av1/entropy/partition_cdf.d.ts +54 -0
- package/src/avif/native/av1/entropy/partition_cdf.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/partition_cdf.js +98 -0
- package/src/avif/native/av1/entropy/symbol_cost.d.ts +37 -0
- package/src/avif/native/av1/entropy/symbol_cost.d.ts.map +1 -0
- package/src/avif/native/av1/entropy/symbol_cost.js +76 -0
- package/src/avif/native/av1/filter/cdef.d.ts +15 -0
- package/src/avif/native/av1/filter/cdef.d.ts.map +1 -0
- package/src/avif/native/av1/filter/cdef.js +313 -0
- package/src/avif/native/av1/filter/loop_filter.d.ts +14 -0
- package/src/avif/native/av1/filter/loop_filter.d.ts.map +1 -0
- package/src/avif/native/av1/filter/loop_filter.js +377 -0
- package/src/avif/native/av1/filter/loop_restoration.d.ts +42 -0
- package/src/avif/native/av1/filter/loop_restoration.d.ts.map +1 -0
- package/src/avif/native/av1/filter/loop_restoration.js +451 -0
- package/src/avif/native/av1/filter/superres.d.ts +18 -0
- package/src/avif/native/av1/filter/superres.d.ts.map +1 -0
- package/src/avif/native/av1/filter/superres.js +86 -0
- package/src/avif/native/av1/grain/FilmGrainState.d.ts +62 -0
- package/src/avif/native/av1/grain/FilmGrainState.d.ts.map +1 -0
- package/src/avif/native/av1/grain/FilmGrainState.js +87 -0
- package/src/avif/native/av1/grain/film_grain.d.ts +16 -0
- package/src/avif/native/av1/grain/film_grain.d.ts.map +1 -0
- package/src/avif/native/av1/grain/film_grain.js +623 -0
- package/src/avif/native/av1/obu/FrameHeader.d.ts +248 -0
- package/src/avif/native/av1/obu/FrameHeader.d.ts.map +1 -0
- package/src/avif/native/av1/obu/FrameHeader.js +381 -0
- package/src/avif/native/av1/obu/ObuHeader.d.ts +53 -0
- package/src/avif/native/av1/obu/ObuHeader.d.ts.map +1 -0
- package/src/avif/native/av1/obu/ObuHeader.js +62 -0
- package/src/avif/native/av1/obu/SequenceHeader.d.ts +157 -0
- package/src/avif/native/av1/obu/SequenceHeader.d.ts.map +1 -0
- package/src/avif/native/av1/obu/SequenceHeader.js +225 -0
- package/src/avif/native/av1/obu/for_each_obu.d.ts +24 -0
- package/src/avif/native/av1/obu/for_each_obu.d.ts.map +1 -0
- package/src/avif/native/av1/obu/for_each_obu.js +50 -0
- package/src/avif/native/av1/obu/parse_frame_header.d.ts +18 -0
- package/src/avif/native/av1/obu/parse_frame_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/parse_frame_header.js +841 -0
- package/src/avif/native/av1/obu/parse_obu_header.d.ts +23 -0
- package/src/avif/native/av1/obu/parse_obu_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/parse_obu_header.js +69 -0
- package/src/avif/native/av1/obu/parse_sequence_header.d.ts +17 -0
- package/src/avif/native/av1/obu/parse_sequence_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/parse_sequence_header.js +263 -0
- package/src/avif/native/av1/obu/write_frame_header.d.ts +16 -0
- package/src/avif/native/av1/obu/write_frame_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/write_frame_header.js +579 -0
- package/src/avif/native/av1/obu/write_sequence_header.d.ts +17 -0
- package/src/avif/native/av1/obu/write_sequence_header.d.ts.map +1 -0
- package/src/avif/native/av1/obu/write_sequence_header.js +189 -0
- package/src/avif/native/av1/predict/IntraPredictionState.d.ts +49 -0
- package/src/avif/native/av1/predict/IntraPredictionState.d.ts.map +1 -0
- package/src/avif/native/av1/predict/IntraPredictionState.js +58 -0
- package/src/avif/native/av1/predict/intra_filter_type.d.ts +17 -0
- package/src/avif/native/av1/predict/intra_filter_type.d.ts.map +1 -0
- package/src/avif/native/av1/predict/intra_filter_type.js +79 -0
- package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts +50 -0
- package/src/avif/native/av1/predict/predict_chroma_from_luma.d.ts.map +1 -0
- package/src/avif/native/av1/predict/predict_chroma_from_luma.js +153 -0
- package/src/avif/native/av1/predict/predict_intra.d.ts +42 -0
- package/src/avif/native/av1/predict/predict_intra.d.ts.map +1 -0
- package/src/avif/native/av1/predict/predict_intra.js +803 -0
- package/src/avif/native/av1/predict/predict_palette.d.ts +23 -0
- package/src/avif/native/av1/predict/predict_palette.d.ts.map +1 -0
- package/src/avif/native/av1/predict/predict_palette.js +36 -0
- package/src/avif/native/av1/tables/av1_symbols.d.ts +411 -0
- package/src/avif/native/av1/tables/av1_symbols.d.ts.map +1 -0
- package/src/avif/native/av1/tables/av1_symbols.js +419 -0
- package/src/avif/native/av1/tables/block_tables.d.ts +181 -0
- package/src/avif/native/av1/tables/block_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/block_tables.js +270 -0
- package/src/avif/native/av1/tables/cdf_tables.d.ts +961 -0
- package/src/avif/native/av1/tables/cdf_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/cdf_tables.js +1893 -0
- package/src/avif/native/av1/tables/coefficient_tables.d.ts +41 -0
- package/src/avif/native/av1/tables/coefficient_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/coefficient_tables.js +82 -0
- package/src/avif/native/av1/tables/derived_block_tables.d.ts +15 -0
- package/src/avif/native/av1/tables/derived_block_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/derived_block_tables.js +23 -0
- package/src/avif/native/av1/tables/filter_tables.d.ts +171 -0
- package/src/avif/native/av1/tables/filter_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/filter_tables.js +313 -0
- package/src/avif/native/av1/tables/grain_tables.d.ts +11 -0
- package/src/avif/native/av1/tables/grain_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/grain_tables.js +190 -0
- package/src/avif/native/av1/tables/prediction_tables.d.ts +141 -0
- package/src/avif/native/av1/tables/prediction_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/prediction_tables.js +223 -0
- package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts +21 -0
- package/src/avif/native/av1/tables/quantizer_matrix_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/quantizer_matrix_tables.js +38 -0
- package/src/avif/native/av1/tables/quantizer_tables.d.ts +21 -0
- package/src/avif/native/av1/tables/quantizer_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/quantizer_tables.js +160 -0
- package/src/avif/native/av1/tables/scan_tables.d.ts +321 -0
- package/src/avif/native/av1/tables/scan_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/scan_tables.js +727 -0
- package/src/avif/native/av1/tables/segmentation_tables.d.ts +31 -0
- package/src/avif/native/av1/tables/segmentation_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/segmentation_tables.js +48 -0
- package/src/avif/native/av1/tables/transform_tables.d.ts +91 -0
- package/src/avif/native/av1/tables/transform_tables.d.ts.map +1 -0
- package/src/avif/native/av1/tables/transform_tables.js +140 -0
- package/src/avif/native/av1/tables/unpack_table.d.ts +33 -0
- package/src/avif/native/av1/tables/unpack_table.d.ts.map +1 -0
- package/src/avif/native/av1/tables/unpack_table.js +73 -0
- package/src/avif/native/av1/transform/forward_transform_2d.d.ts +61 -0
- package/src/avif/native/av1/transform/forward_transform_2d.d.ts.map +1 -0
- package/src/avif/native/av1/transform/forward_transform_2d.js +574 -0
- package/src/avif/native/av1/transform/inverse_transform_1d.d.ts +76 -0
- package/src/avif/native/av1/transform/inverse_transform_1d.d.ts.map +1 -0
- package/src/avif/native/av1/transform/inverse_transform_1d.js +590 -0
- package/src/avif/native/av1/transform/inverse_transform_2d.d.ts +46 -0
- package/src/avif/native/av1/transform/inverse_transform_2d.d.ts.map +1 -0
- package/src/avif/native/av1/transform/inverse_transform_2d.js +180 -0
- package/src/avif/native/av1/util/ceil_log2.d.ts +13 -0
- package/src/avif/native/av1/util/ceil_log2.d.ts.map +1 -0
- package/src/avif/native/av1/util/ceil_log2.js +18 -0
- package/src/avif/native/av1/util/floor_log2.d.ts +20 -0
- package/src/avif/native/av1/util/floor_log2.d.ts.map +1 -0
- package/src/avif/native/av1/util/floor_log2.js +20 -0
- package/src/avif/native/av1/util/round2.d.ts +22 -0
- package/src/avif/native/av1/util/round2.d.ts.map +1 -0
- package/src/avif/native/av1/util/round2.js +27 -0
- package/src/avif/native/av1/util/round2_signed.d.ts +14 -0
- package/src/avif/native/av1/util/round2_signed.d.ts.map +1 -0
- package/src/avif/native/av1/util/round2_signed.js +17 -0
- package/src/avif/native/av1/util/tile_log2.d.ts +16 -0
- package/src/avif/native/av1/util/tile_log2.d.ts.map +1 -0
- package/src/avif/native/av1/util/tile_log2.js +23 -0
- package/src/avif/native/bitstream/BitReader.d.ts +174 -0
- package/src/avif/native/bitstream/BitReader.d.ts.map +1 -0
- package/src/avif/native/bitstream/BitReader.js +391 -0
- package/src/avif/native/bitstream/BitWriter.d.ts +122 -0
- package/src/avif/native/bitstream/BitWriter.d.ts.map +1 -0
- package/src/avif/native/bitstream/BitWriter.js +351 -0
- package/src/avif/native/color/ColourTransform.d.ts +62 -0
- package/src/avif/native/color/ColourTransform.d.ts.map +1 -0
- package/src/avif/native/color/ColourTransform.js +189 -0
- package/src/avif/native/color/YuvImage.d.ts +51 -0
- package/src/avif/native/color/YuvImage.d.ts.map +1 -0
- package/src/avif/native/color/YuvImage.js +66 -0
- package/src/avif/native/color/clamp_sample.d.ts +18 -0
- package/src/avif/native/color/clamp_sample.d.ts.map +1 -0
- package/src/avif/native/color/clamp_sample.js +25 -0
- package/src/avif/native/color/linear_to_transfer.d.ts +24 -0
- package/src/avif/native/color/linear_to_transfer.d.ts.map +1 -0
- package/src/avif/native/color/linear_to_transfer.js +126 -0
- package/src/avif/native/color/primaries.d.ts +20 -0
- package/src/avif/native/color/primaries.d.ts.map +1 -0
- package/src/avif/native/color/primaries.js +94 -0
- package/src/avif/native/color/rgb_row_to_ycbcr.d.ts +20 -0
- package/src/avif/native/color/rgb_row_to_ycbcr.d.ts.map +1 -0
- package/src/avif/native/color/rgb_row_to_ycbcr.js +78 -0
- package/src/avif/native/color/transfer_to_linear.d.ts +49 -0
- package/src/avif/native/color/transfer_to_linear.d.ts.map +1 -0
- package/src/avif/native/color/transfer_to_linear.js +171 -0
- package/src/avif/native/color/upsample_chroma_row.d.ts +35 -0
- package/src/avif/native/color/upsample_chroma_row.d.ts.map +1 -0
- package/src/avif/native/color/upsample_chroma_row.js +89 -0
- package/src/avif/native/color/ycbcr_row_to_rgb.d.ts +23 -0
- package/src/avif/native/color/ycbcr_row_to_rgb.d.ts.map +1 -0
- package/src/avif/native/color/ycbcr_row_to_rgb.js +78 -0
- package/src/avif/native/heif/AvifFile.d.ts +112 -0
- package/src/avif/native/heif/AvifFile.d.ts.map +1 -0
- package/src/avif/native/heif/AvifFile.js +142 -0
- package/src/avif/native/heif/ItemProperty.d.ts +244 -0
- package/src/avif/native/heif/ItemProperty.d.ts.map +1 -0
- package/src/avif/native/heif/ItemProperty.js +321 -0
- package/src/avif/native/heif/find_item_property.d.ts +17 -0
- package/src/avif/native/heif/find_item_property.d.ts.map +1 -0
- package/src/avif/native/heif/find_item_property.js +28 -0
- package/src/avif/native/heif/find_item_references.d.ts +16 -0
- package/src/avif/native/heif/find_item_references.d.ts.map +1 -0
- package/src/avif/native/heif/find_item_references.js +29 -0
- package/src/avif/native/heif/find_items_referencing.d.ts +17 -0
- package/src/avif/native/heif/find_items_referencing.d.ts.map +1 -0
- package/src/avif/native/heif/find_items_referencing.js +36 -0
- package/src/avif/native/heif/parse_avif_file.d.ts +15 -0
- package/src/avif/native/heif/parse_avif_file.d.ts.map +1 -0
- package/src/avif/native/heif/parse_avif_file.js +383 -0
- package/src/avif/native/heif/parse_image_grid.d.ts +18 -0
- package/src/avif/native/heif/parse_image_grid.d.ts.map +1 -0
- package/src/avif/native/heif/parse_image_grid.js +48 -0
- package/src/avif/native/heif/parse_item_property.d.ts +18 -0
- package/src/avif/native/heif/parse_item_property.d.ts.map +1 -0
- package/src/avif/native/heif/parse_item_property.js +243 -0
- package/src/avif/native/heif/read_item_data.d.ts +22 -0
- package/src/avif/native/heif/read_item_data.d.ts.map +1 -0
- package/src/avif/native/heif/read_item_data.js +97 -0
- package/src/avif/native/heif/write_avif_file.d.ts +50 -0
- package/src/avif/native/heif/write_avif_file.d.ts.map +1 -0
- package/src/avif/native/heif/write_avif_file.js +348 -0
- package/src/avif/native/heif/write_item_property.d.ts +16 -0
- package/src/avif/native/heif/write_item_property.d.ts.map +1 -0
- package/src/avif/native/heif/write_item_property.js +182 -0
- package/src/avif/native/index.d.ts +14 -0
- package/src/avif/native/index.d.ts.map +1 -0
- package/src/avif/native/index.js +56 -0
- package/src/avif/native/isobmff/BoxHeader.d.ts +50 -0
- package/src/avif/native/isobmff/BoxHeader.d.ts.map +1 -0
- package/src/avif/native/isobmff/BoxHeader.js +57 -0
- package/src/avif/native/isobmff/BoxWriter.d.ts +118 -0
- package/src/avif/native/isobmff/BoxWriter.d.ts.map +1 -0
- package/src/avif/native/isobmff/BoxWriter.js +264 -0
- package/src/avif/native/isobmff/ByteCursor.d.ts +125 -0
- package/src/avif/native/isobmff/ByteCursor.d.ts.map +1 -0
- package/src/avif/native/isobmff/ByteCursor.js +298 -0
- package/src/avif/native/isobmff/for_each_box.d.ts +23 -0
- package/src/avif/native/isobmff/for_each_box.d.ts.map +1 -0
- package/src/avif/native/isobmff/for_each_box.js +39 -0
- package/src/avif/native/isobmff/read_box_header.d.ts +22 -0
- package/src/avif/native/isobmff/read_box_header.d.ts.map +1 -0
- package/src/avif/native/isobmff/read_box_header.js +59 -0
- package/src/avif/native/isobmff/read_full_box_header.d.ts +26 -0
- package/src/avif/native/isobmff/read_full_box_header.d.ts.map +1 -0
- package/src/avif/native/isobmff/read_full_box_header.js +33 -0
- package/src/avif/threaded_image_encoder.d.ts +7 -2
- package/src/avif/threaded_image_encoder.d.ts.map +1 -1
- package/src/avif/threaded_image_encoder.js +107 -21
- package/src/core/binary/BinaryBuffer.d.ts +40 -0
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.js +100 -0
- package/src/core/binary/hash/crc32.d.ts +16 -0
- package/src/core/binary/hash/crc32.d.ts.map +1 -0
- package/src/core/binary/hash/crc32.js +96 -0
- package/src/core/binary/utf8/utf8_decode.d.ts +21 -0
- package/src/core/binary/utf8/utf8_decode.d.ts.map +1 -0
- package/src/core/binary/utf8/utf8_decode.js +43 -0
- package/src/core/binary/utf8/utf8_encode_into.d.ts +20 -0
- package/src/core/binary/utf8/utf8_encode_into.d.ts.map +1 -0
- package/src/core/binary/utf8/utf8_encode_into.js +48 -0
- package/src/core/binary/utf8/utf8_encoded_length.d.ts +14 -0
- package/src/core/binary/utf8/utf8_encoded_length.d.ts.map +1 -0
- package/src/core/binary/utf8/utf8_encoded_length.js +36 -0
- package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +417 -0
- package/src/core/color/COLOR_REVIEW_2026_08_28.md +779 -0
- package/src/core/color/Color.d.ts +128 -20
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/Color.js +959 -866
- package/src/core/color/PQ/PQ_constants.d.ts +10 -0
- package/src/core/color/PQ/PQ_constants.d.ts.map +1 -1
- package/src/core/color/PQ/PQ_constants.js +10 -0
- package/src/core/color/PQ/linear_to_PQ.d.ts.map +1 -1
- package/src/core/color/PQ/linear_to_PQ.js +6 -0
- package/src/core/color/REC709_PRIMARIES.d.ts +50 -0
- package/src/core/color/REC709_PRIMARIES.d.ts.map +1 -0
- package/src/core/color/REC709_PRIMARIES.js +53 -0
- package/src/core/color/construct/color_from_hex.d.ts +21 -0
- package/src/core/color/construct/color_from_hex.d.ts.map +1 -0
- package/src/core/color/construct/color_from_hex.js +33 -0
- package/src/core/color/construct/color_from_temperature.d.ts +22 -0
- package/src/core/color/construct/color_from_temperature.d.ts.map +1 -0
- package/src/core/color/construct/color_from_temperature.js +33 -0
- package/src/core/color/construct/color_from_uint24.d.ts +19 -0
- package/src/core/color/construct/color_from_uint24.d.ts.map +1 -0
- package/src/core/color/construct/color_from_uint24.js +26 -0
- package/src/core/color/construct/color_from_uint32.d.ts +20 -0
- package/src/core/color/construct/color_from_uint32.d.ts.map +1 -0
- package/src/core/color/construct/color_from_uint32.js +39 -0
- package/src/core/color/construct/color_gray.d.ts +17 -0
- package/src/core/color/construct/color_gray.d.ts.map +1 -0
- package/src/core/color/construct/color_gray.js +22 -0
- package/src/core/color/hex/hex2rgb.d.ts +1 -11
- package/src/core/color/hex/hex2rgb.d.ts.map +1 -1
- package/src/core/color/hex/hex2rgb.js +7 -24
- package/src/core/color/hex/hex_to_rgb.d.ts +18 -0
- package/src/core/color/hex/hex_to_rgb.d.ts.map +1 -0
- package/src/core/color/hex/hex_to_rgb.js +62 -0
- package/src/core/color/hex/rgb2hex.d.ts +1 -8
- package/src/core/color/hex/rgb2hex.d.ts.map +1 -1
- package/src/core/color/hex/rgb2hex.js +7 -13
- package/src/core/color/hex/rgb_to_hex.d.ts +9 -0
- package/src/core/color/hex/rgb_to_hex.d.ts.map +1 -0
- package/src/core/color/hex/rgb_to_hex.js +13 -0
- package/src/core/color/hex/rgba_to_hex.d.ts +19 -0
- package/src/core/color/hex/rgba_to_hex.d.ts.map +1 -0
- package/src/core/color/hex/rgba_to_hex.js +23 -0
- package/src/core/color/hsv/hsv2rgb.d.ts +1 -12
- package/src/core/color/hsv/hsv2rgb.d.ts.map +1 -1
- package/src/core/color/hsv/hsv2rgb.js +8 -21
- package/src/core/color/hsv/hsv2rgb_float.d.ts +1 -12
- package/src/core/color/hsv/hsv2rgb_float.d.ts.map +1 -1
- package/src/core/color/hsv/hsv2rgb_float.js +8 -56
- package/src/core/color/hsv/hsv_to_rgb.d.ts +13 -0
- package/src/core/color/hsv/hsv_to_rgb.d.ts.map +1 -0
- package/src/core/color/hsv/hsv_to_rgb.js +39 -0
- package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts +13 -0
- package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -0
- package/src/core/color/hsv/hsv_to_rgb_uint8.js +21 -0
- package/src/core/color/hsv/hue_to_rgb_sextant.d.ts +24 -0
- package/src/core/color/hsv/hue_to_rgb_sextant.d.ts.map +1 -0
- package/src/core/color/hsv/hue_to_rgb_sextant.js +67 -0
- package/src/core/color/hsv/rgb2hsv.d.ts +1 -12
- package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
- package/src/core/color/hsv/rgb2hsv.js +7 -42
- package/src/core/color/hsv/rgb_to_hsv.d.ts +13 -0
- package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -0
- package/src/core/color/hsv/rgb_to_hsv.js +42 -0
- package/src/core/color/hunt/hpe_to_xyz.d.ts +2 -0
- package/src/core/color/hunt/hpe_to_xyz.d.ts.map +1 -0
- package/src/core/color/hunt/hpe_to_xyz.js +4 -0
- package/src/core/color/hunt/xyz_to_hpe.d.ts +1 -6
- package/src/core/color/hunt/xyz_to_hpe.d.ts.map +1 -1
- package/src/core/color/hunt/xyz_to_hpe.js +12 -15
- package/src/core/color/illuminant/D65_spd_tabulated.d.ts.map +1 -1
- package/src/core/color/illuminant/D65_spd_tabulated.js +107 -104
- package/src/core/color/int2rgb.d.ts +1 -10
- package/src/core/color/int2rgb.d.ts.map +1 -1
- package/src/core/color/int2rgb.js +7 -12
- package/src/core/color/int_to_rgb.d.ts +21 -0
- package/src/core/color/int_to_rgb.d.ts.map +1 -0
- package/src/core/color/int_to_rgb.js +33 -0
- package/src/core/color/kelvin/kelvin_to_rgb.d.ts.map +1 -1
- package/src/core/color/kelvin/kelvin_to_rgb.js +22 -2
- package/src/core/color/kelvin/rgb_to_kelvin.d.ts +22 -2
- package/src/core/color/kelvin/rgb_to_kelvin.d.ts.map +1 -1
- package/src/core/color/kelvin/rgb_to_kelvin.js +22 -2
- package/src/core/color/lab/lab_to_xyz.d.ts +20 -0
- package/src/core/color/lab/lab_to_xyz.d.ts.map +1 -0
- package/src/core/color/lab/lab_to_xyz.js +69 -0
- package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts +34 -0
- package/src/core/color/oklab/gamut_clip_adaptive_l0.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_adaptive_l0.js +46 -0
- package/src/core/color/oklab/gamut_clip_at_l0.d.ts +33 -0
- package/src/core/color/oklab/gamut_clip_at_l0.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_at_l0.js +84 -0
- package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts +24 -0
- package/src/core/color/oklab/gamut_clip_preserve_chroma.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_preserve_chroma.js +37 -0
- package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts +23 -0
- package/src/core/color/oklab/gamut_clip_project_to_lcusp.d.ts.map +1 -0
- package/src/core/color/oklab/gamut_clip_project_to_lcusp.js +46 -0
- package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts +19 -0
- package/src/core/color/oklab/linear_srgb_to_okhsl.d.ts.map +1 -0
- package/src/core/color/oklab/linear_srgb_to_okhsl.js +93 -0
- package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts +12 -4
- package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts.map +1 -1
- package/src/core/color/oklab/linear_srgb_to_okhsv.js +108 -84
- package/src/core/color/oklab/linear_srgb_to_oklab.d.ts +13 -4
- package/src/core/color/oklab/linear_srgb_to_oklab.d.ts.map +1 -1
- package/src/core/color/oklab/linear_srgb_to_oklab.js +28 -19
- package/src/core/color/oklab/okhsl_chroma_bounds.d.ts +51 -0
- package/src/core/color/oklab/okhsl_chroma_bounds.d.ts.map +1 -0
- package/src/core/color/oklab/okhsl_chroma_bounds.js +128 -0
- package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts +19 -0
- package/src/core/color/oklab/okhsl_to_linear_srgb.d.ts.map +1 -0
- package/src/core/color/oklab/okhsl_to_linear_srgb.js +85 -0
- package/src/core/color/oklab/oklab_to_oklch.d.ts +24 -0
- package/src/core/color/oklab/oklab_to_oklch.d.ts.map +1 -0
- package/src/core/color/oklab/oklab_to_oklch.js +35 -0
- package/src/core/color/oklab/oklch_to_oklab.d.ts +18 -0
- package/src/core/color/oklab/oklch_to_oklab.d.ts.map +1 -0
- package/src/core/color/oklab/oklch_to_oklab.js +26 -0
- package/src/core/color/oklab/toe.d.ts +12 -0
- package/src/core/color/oklab/toe.d.ts.map +1 -1
- package/src/core/color/oklab/toe.js +34 -22
- package/src/core/color/operations/color_add.d.ts +21 -0
- package/src/core/color/operations/color_add.d.ts.map +1 -0
- package/src/core/color/operations/color_add.js +23 -0
- package/src/core/color/operations/color_add_scaled.d.ts +20 -0
- package/src/core/color/operations/color_add_scaled.d.ts.map +1 -0
- package/src/core/color/operations/color_add_scaled.js +30 -0
- package/src/core/color/operations/color_clamp.d.ts +22 -0
- package/src/core/color/operations/color_clamp.d.ts.map +1 -0
- package/src/core/color/operations/color_clamp.js +25 -0
- package/src/core/color/operations/color_darken.d.ts +2 -1
- package/src/core/color/operations/color_darken.d.ts.map +1 -1
- package/src/core/color/operations/color_darken.js +25 -24
- package/src/core/color/operations/color_desaturate.d.ts +2 -1
- package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
- package/src/core/color/operations/color_desaturate.js +25 -24
- package/src/core/color/operations/color_get_hsl.d.ts +18 -0
- package/src/core/color/operations/color_get_hsl.d.ts.map +1 -0
- package/src/core/color/operations/color_get_hsl.js +60 -0
- package/src/core/color/operations/color_is_in_gamut.d.ts +20 -0
- package/src/core/color/operations/color_is_in_gamut.d.ts.map +1 -0
- package/src/core/color/operations/color_is_in_gamut.js +30 -0
- package/src/core/color/operations/color_lerp.d.ts +12 -3
- package/src/core/color/operations/color_lerp.d.ts.map +1 -1
- package/src/core/color/operations/color_lerp.js +55 -46
- package/src/core/color/operations/color_lighten.d.ts +9 -5
- package/src/core/color/operations/color_lighten.d.ts.map +1 -1
- package/src/core/color/operations/color_lighten.js +29 -24
- package/src/core/color/operations/color_mix_okhsv_channel.d.ts +24 -0
- package/src/core/color/operations/color_mix_okhsv_channel.d.ts.map +1 -0
- package/src/core/color/operations/color_mix_okhsv_channel.js +48 -0
- package/src/core/color/operations/color_multiply_rgb.d.ts +21 -0
- package/src/core/color/operations/color_multiply_rgb.d.ts.map +1 -0
- package/src/core/color/operations/color_multiply_rgb.js +26 -0
- package/src/core/color/operations/color_saturate.d.ts +9 -5
- package/src/core/color/operations/color_saturate.d.ts.map +1 -1
- package/src/core/color/operations/color_saturate.js +29 -24
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts +1 -1
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -1
- package/src/core/color/operations/color_scale_okhsv_channel.js +58 -45
- package/src/core/color/operations/color_srgb_apply.d.ts +28 -0
- package/src/core/color/operations/color_srgb_apply.d.ts.map +1 -0
- package/src/core/color/operations/color_srgb_apply.js +40 -0
- package/src/core/color/operations/color_sub.d.ts +16 -0
- package/src/core/color/operations/color_sub.d.ts.map +1 -0
- package/src/core/color/operations/color_sub.js +18 -0
- package/src/core/color/parse_color.d.ts +10 -1
- package/src/core/color/parse_color.d.ts.map +1 -1
- package/src/core/color/parse_color.js +100 -84
- package/src/core/color/parse_color_normalized.d.ts +24 -0
- package/src/core/color/parse_color_normalized.d.ts.map +1 -0
- package/src/core/color/parse_color_normalized.js +38 -0
- package/src/core/color/rgb2uint24.d.ts +1 -8
- package/src/core/color/rgb2uint24.d.ts.map +1 -1
- package/src/core/color/rgb2uint24.js +7 -20
- package/src/core/color/rgb2uint32.d.ts +1 -9
- package/src/core/color/rgb2uint32.d.ts.map +1 -1
- package/src/core/color/rgb2uint32.js +7 -18
- package/src/core/color/rgb_to_luminance.d.ts +14 -5
- package/src/core/color/rgb_to_luminance.d.ts.map +1 -1
- package/src/core/color/rgb_to_luminance.js +24 -13
- package/src/core/color/rgb_to_uint24.d.ts +9 -0
- package/src/core/color/rgb_to_uint24.d.ts.map +1 -0
- package/src/core/color/rgb_to_uint24.js +20 -0
- package/src/core/color/rgb_to_uint32.d.ts +10 -0
- package/src/core/color/rgb_to_uint32.d.ts.map +1 -0
- package/src/core/color/rgb_to_uint32.js +21 -0
- package/src/core/color/sRGB/linear_to_sRGB.d.ts +7 -0
- package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
- package/src/core/color/sRGB/linear_to_sRGB.js +39 -32
- package/src/core/color/xyz/hpe_to_xyz.d.ts +24 -0
- package/src/core/color/xyz/hpe_to_xyz.d.ts.map +1 -0
- package/src/core/color/xyz/hpe_to_xyz.js +39 -0
- package/src/core/color/xyz/rgb_to_xyz.d.ts +17 -2
- package/src/core/color/xyz/rgb_to_xyz.d.ts.map +1 -1
- package/src/core/color/xyz/rgb_to_xyz.js +44 -18
- package/src/core/color/xyz/xyz_cmf_tabulated.d.ts.map +1 -1
- package/src/core/color/xyz/xyz_cmf_tabulated.js +217 -211
- package/src/core/color/xyz/xyz_cmf_wyman.d.ts +4 -0
- package/src/core/color/xyz/xyz_cmf_wyman.d.ts.map +1 -1
- package/src/core/color/xyz/xyz_cmf_wyman.js +74 -65
- package/src/core/color/xyz/xyz_to_hpe.d.ts +18 -0
- package/src/core/color/xyz/xyz_to_hpe.d.ts.map +1 -0
- package/src/core/color/xyz/xyz_to_hpe.js +33 -0
- package/src/core/color/xyz/xyz_to_rgb.d.ts +17 -2
- package/src/core/color/xyz/xyz_to_rgb.d.ts.map +1 -1
- package/src/core/color/xyz/xyz_to_rgb.js +39 -16
- package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts +7 -2
- package/src/core/color/ycxcz/xyz_to_ycxcz.d.ts.map +1 -1
- package/src/core/color/ycxcz/xyz_to_ycxcz.js +33 -28
- package/src/core/events/signal/Signal.js +820 -820
- package/src/core/math/clamp_index.d.ts +18 -0
- package/src/core/math/clamp_index.d.ts.map +1 -0
- package/src/core/math/clamp_index.js +23 -0
- package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +803 -0
- package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts +5 -3
- package/src/engine/asset/loaders/image/jpeg/JpegFrame.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/JpegFrame.js +5 -3
- package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts +2 -1
- package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/JpegFrameComponent.js +2 -1
- package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts +17 -0
- package/src/engine/asset/loaders/image/jpeg/JpegImage.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/JpegImage.js +197 -157
- package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts +0 -1
- package/src/engine/asset/loaders/image/jpeg/idct8x8_float.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/jpeg/idct8x8_float.js +0 -1
- package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts +28 -0
- package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/jpeg/jpeg_component_row.js +31 -0
- package/src/engine/asset/loaders/image/png/PNG.d.ts +3 -18
- package/src/engine/asset/loaders/image/png/PNG.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/PNG.js +3 -139
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts +16 -16
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/PNGReader.js +143 -160
- package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_iTXt.js +3 -3
- package/src/engine/asset/loaders/image/png/chunk/png_chunk_decode_zTXt.js +3 -3
- package/src/engine/asset/loaders/image/png/crc32.d.ts +1 -15
- package/src/engine/asset/loaders/image/png/crc32.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/crc32.js +5 -89
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts +12 -10
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.js +20 -45
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts +2 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterSub.js +2 -0
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts +2 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterUp.js +2 -0
- package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts +22 -0
- package/src/engine/asset/loaders/image/png/filter/png_unfilter.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/png/filter/png_unfilter.js +68 -0
- package/src/engine/asset/loaders/image/png/png_inflate.d.ts +20 -0
- package/src/engine/asset/loaders/image/png/png_inflate.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/png/png_inflate.js +85 -0
- package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts +22 -0
- package/src/engine/asset/loaders/image/png/png_unpack_samples.d.ts.map +1 -0
- package/src/engine/asset/loaders/image/png/png_unpack_samples.js +38 -0
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +135 -132
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +16 -3
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1157 -1149
- package/src/engine/graphics/render/frame_graph/FrameGraph.js +900 -900
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +72 -81
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +86 -77
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +451 -0
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +625 -0
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_blend.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_blend.js +5 -4
- package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts +14 -3
- package/src/shade/renderer/scene/serialization/decode_image_source_hdr.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/decode_image_source_hdr.js +50 -51
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/deserialize_scene.js +531 -521
- package/src/shade/renderer/scene/serialization/write_image_source.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/write_image_source.js +6 -4
- package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/chunk_rgb_to_luminance.js +34 -32
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +31 -0
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -31
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts +10 -0
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_inverse_eotf_st2084.js +32 -22
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferOETF.js +22 -21
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +110 -104
- package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/xyz/chunk_rgb_to_xyz.js +23 -21
- package/src/shade/renderer/shader/chunk/math/chunk_magnitude_floor.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/math/chunk_magnitude_floor.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_magnitude_floor.js +16 -0
- package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_magnitude_floor.d.ts +10 -0
- package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_magnitude_floor.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_magnitude_floor.js +17 -0
- package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_solve_cubic_blinn.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_solve_cubic_blinn.js +7 -1
- package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_square_root.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/complex/chunk_complex_square_root.js +9 -3
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic.js +13 -7
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic_blinn_smallest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_cubic_blinn_smallest.js +13 -4
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quadratic.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quadratic.js +20 -13
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quartic_neumark.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/math/polynomial/chunk_solve_quartic_neumark.js +8 -4
- package/src/shade/renderer/shader/chunk/mboit/NOTES.md +35 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_2_trigonometric_moments.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_2_trigonometric_moments.js +18 -5
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_3_trigonometric_moments.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_3_trigonometric_moments.js +21 -8
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_4_trigonometric_moments.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_compute_transmittance_from_4_trigonometric_moments.js +25 -12
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_generate_trigonometric_moments_4.d.ts +6 -2
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_generate_trigonometric_moments_4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/geometric/chunk_generate_trigonometric_moments_4.js +42 -35
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_4_power_moments.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_4_power_moments.js +18 -5
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_6_power_moments.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_6_power_moments.js +24 -9
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_8_power_moments.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_compute_transmittance_from_8_power_moments.js +29 -13
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_generate_power_moments_4.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_generate_power_moments_4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/mboit/moments/power/chunk_generate_power_moments_4.js +38 -48
- package/src/view/elements/ColorPickerView.js +296 -296
- package/src/avif/codec/dec/Readme.md +0 -14
- package/src/avif/codec/dec/avif_dec.cpp +0 -234
- package/src/avif/codec/dec/avif_dec.d.ts +0 -3
- package/src/avif/codec/dec/avif_dec.d.ts.map +0 -1
- package/src/avif/codec/dec/avif_dec.js +0 -16
- package/src/avif/codec/dec/avif_dec.wasm +0 -0
- package/src/avif/codec/enc/README.md +0 -37
- package/src/avif/codec/enc/avif_enc.cpp +0 -216
- package/src/avif/codec/enc/avif_enc.d.ts +0 -3
- package/src/avif/codec/enc/avif_enc.d.ts.map +0 -1
- package/src/avif/codec/enc/avif_enc.js +0 -6144
- package/src/avif/codec/enc/avif_enc.wasm +0 -0
- package/src/avif/codec/enc/avif_enc_mt.d.ts +0 -3
- package/src/avif/codec/enc/avif_enc_mt.d.ts.map +0 -1
- package/src/avif/codec/enc/avif_enc_mt.js +0 -6811
- package/src/avif/codec/enc/avif_enc_mt.wasm +0 -0
- package/src/avif/codec/enc/avif_enc_mt.worker.d.mts +0 -2
- package/src/avif/codec/enc/avif_enc_mt.worker.d.mts.map +0 -1
- package/src/avif/codec/enc/avif_enc_mt.worker.d.ts +0 -11
- package/src/avif/codec/enc/avif_enc_mt.worker.d.ts.map +0 -1
- package/src/avif/codec/enc/avif_enc_mt.worker.js +0 -171
- package/src/avif/codec/enc/avif_enc_mt.worker.mjs +0 -1
- package/src/avif/decode.d.ts +0 -3
- package/src/avif/decode.d.ts.map +0 -1
- package/src/avif/decode.js +0 -42
- package/src/avif/encode.d.ts +0 -3
- package/src/avif/encode.d.ts.map +0 -1
- package/src/avif/encode.js +0 -75
- package/src/avif/meta.d.ts +0 -24
- package/src/avif/meta.d.ts.map +0 -1
- package/src/avif/meta.js +0 -23
- package/src/avif/tsconfig.tsbuildinfo +0 -1
- package/src/avif/utils.d.ts +0 -17
- package/src/avif/utils.d.ts.map +0 -1
- package/src/avif/utils.js +0 -31
- package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts +0 -23
- package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.d.ts.map +0 -1
- package/src/engine/asset/loaders/image/jpeg/idct8x8_fixed.js +0 -214
- package/src/engine/asset/loaders/image/png/inflate.d.ts +0 -7
- package/src/engine/asset/loaders/image/png/inflate.d.ts.map +0 -1
- package/src/engine/asset/loaders/image/png/inflate.js +0 -20
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A decoded image, as the AV1 layer produces it and the colour layer consumes it.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately a description rather than an owner: the plane arrays belong to whoever allocated
|
|
5
|
+
* them, usually a frame context that reuses them across decodes. Nothing here copies samples, which
|
|
6
|
+
* is what lets a grid of tiles, an alpha channel and the colour conversion all talk about the same
|
|
7
|
+
* memory.
|
|
8
|
+
*
|
|
9
|
+
* @author Alex Goldring
|
|
10
|
+
* @copyright Company Named Limited (c) 2026
|
|
11
|
+
*/
|
|
12
|
+
export class YuvImage {
|
|
13
|
+
/** @type {Uint16Array[]} Y, Cb, Cr — or G, B, R when the matrix is the identity */
|
|
14
|
+
planes = [null, null, null];
|
|
15
|
+
|
|
16
|
+
/** @type {Int32Array} distance between rows of each plane, in samples */
|
|
17
|
+
stride = new Int32Array(3);
|
|
18
|
+
|
|
19
|
+
/** @type {number} */
|
|
20
|
+
width = 0;
|
|
21
|
+
|
|
22
|
+
/** @type {number} */
|
|
23
|
+
height = 0;
|
|
24
|
+
|
|
25
|
+
/** @type {number} `8`, `10` or `12` */
|
|
26
|
+
bit_depth = 8;
|
|
27
|
+
|
|
28
|
+
/** @type {number} */
|
|
29
|
+
subsampling_x = 0;
|
|
30
|
+
|
|
31
|
+
/** @type {number} */
|
|
32
|
+
subsampling_y = 0;
|
|
33
|
+
|
|
34
|
+
/** @type {number} `1` for monochrome */
|
|
35
|
+
num_planes = 1;
|
|
36
|
+
|
|
37
|
+
/** @type {number} a `CP_*` code */
|
|
38
|
+
color_primaries = 2;
|
|
39
|
+
|
|
40
|
+
/** @type {number} a `TC_*` code */
|
|
41
|
+
transfer_characteristics = 2;
|
|
42
|
+
|
|
43
|
+
/** @type {number} an `MC_*` code */
|
|
44
|
+
matrix_coefficients = 2;
|
|
45
|
+
|
|
46
|
+
/** @type {number} `1` when the samples use the full range of the bit depth */
|
|
47
|
+
color_range = 0;
|
|
48
|
+
|
|
49
|
+
/** @type {Uint16Array|null} the alpha plane, which AVIF codes as a separate monochrome image */
|
|
50
|
+
alpha = null;
|
|
51
|
+
|
|
52
|
+
/** @type {number} */
|
|
53
|
+
alpha_stride = 0;
|
|
54
|
+
|
|
55
|
+
/** @type {number} */
|
|
56
|
+
alpha_bit_depth = 8;
|
|
57
|
+
|
|
58
|
+
/** @type {number} */
|
|
59
|
+
alpha_range = 1;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @type {number} `1` when the colour channels have already been multiplied by alpha
|
|
63
|
+
* @see ISO/IEC 23000-22 `prem` item reference
|
|
64
|
+
*/
|
|
65
|
+
alpha_premultiplied = 0;
|
|
66
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round a value to the nearest integer sample and hold it inside `0 .. maximum`.
|
|
3
|
+
*
|
|
4
|
+
* The last step of every path that turns arithmetic back into coded samples, on both sides of the
|
|
5
|
+
* codec: chroma that was averaged across a subsampling window on the way in, and colour that came
|
|
6
|
+
* out of the transform on the way out. Lossy coding and floating point both produce values a little
|
|
7
|
+
* outside the range the depth can express, and a wrapped sample is a wrong pixel of the opposite
|
|
8
|
+
* brightness rather than a slightly clipped one.
|
|
9
|
+
*
|
|
10
|
+
* @param {number} value already in sample units, not normalised
|
|
11
|
+
* @param {number} maximum largest representable sample, `(1 << bit_depth) - 1`
|
|
12
|
+
* @returns {number}
|
|
13
|
+
*
|
|
14
|
+
* @author Alex Goldring
|
|
15
|
+
* @copyright Company Named Limited (c) 2026
|
|
16
|
+
*/
|
|
17
|
+
export function clamp_sample(value: number, maximum: number): number;
|
|
18
|
+
//# sourceMappingURL=clamp_sample.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clamp_sample.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/color/clamp_sample.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,oCAPW,MAAM,WACN,MAAM,GACJ,MAAM,CAalB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round a value to the nearest integer sample and hold it inside `0 .. maximum`.
|
|
3
|
+
*
|
|
4
|
+
* The last step of every path that turns arithmetic back into coded samples, on both sides of the
|
|
5
|
+
* codec: chroma that was averaged across a subsampling window on the way in, and colour that came
|
|
6
|
+
* out of the transform on the way out. Lossy coding and floating point both produce values a little
|
|
7
|
+
* outside the range the depth can express, and a wrapped sample is a wrong pixel of the opposite
|
|
8
|
+
* brightness rather than a slightly clipped one.
|
|
9
|
+
*
|
|
10
|
+
* @param {number} value already in sample units, not normalised
|
|
11
|
+
* @param {number} maximum largest representable sample, `(1 << bit_depth) - 1`
|
|
12
|
+
* @returns {number}
|
|
13
|
+
*
|
|
14
|
+
* @author Alex Goldring
|
|
15
|
+
* @copyright Company Named Limited (c) 2026
|
|
16
|
+
*/
|
|
17
|
+
export function clamp_sample(value, maximum) {
|
|
18
|
+
const rounded = Math.round(value);
|
|
19
|
+
|
|
20
|
+
if (rounded < 0) {
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return rounded > maximum ? maximum : rounded;
|
|
25
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encode linear light as a signal value.
|
|
3
|
+
*
|
|
4
|
+
* The inverse of {@link transfer_to_linear}, in the same normalisation: `1.0` of linear light is
|
|
5
|
+
* {@link LINEAR_REFERENCE_NITS}.
|
|
6
|
+
*
|
|
7
|
+
* @param {number} transfer_characteristics a `TC_*` code
|
|
8
|
+
* @param {number} value linear light
|
|
9
|
+
* @returns {number} signal, `0 .. 1`
|
|
10
|
+
* @see ITU-T H.273 table 3 "Transfer characteristics"
|
|
11
|
+
*
|
|
12
|
+
* @author Alex Goldring
|
|
13
|
+
* @copyright Company Named Limited (c) 2026
|
|
14
|
+
*/
|
|
15
|
+
export function linear_to_transfer(transfer_characteristics: number, value: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* Encode a row of interleaved linear RGB as signal values, in place.
|
|
18
|
+
*
|
|
19
|
+
* @param {number} transfer_characteristics
|
|
20
|
+
* @param {Float32Array} row interleaved, `width * 3` long
|
|
21
|
+
* @param {number} width
|
|
22
|
+
*/
|
|
23
|
+
export function transfer_row_from_linear(transfer_characteristics: number, row: Float32Array, width: number): void;
|
|
24
|
+
//# sourceMappingURL=linear_to_transfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear_to_transfer.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/color/linear_to_transfer.js"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;GAaG;AACH,6DARW,MAAM,SACN,MAAM,GACJ,MAAM,CA4ClB;AAED;;;;;;GAMG;AACH,mEAJW,MAAM,OACN,YAAY,SACZ,MAAM,QA0BhB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { HLG_PEAK_NITS, LINEAR_REFERENCE_NITS } from "./transfer_to_linear.js";
|
|
2
|
+
import { PQ_MAX_NITS } from "../../../core/color/PQ/PQ_constants.js";
|
|
3
|
+
import {
|
|
4
|
+
TC_BT_470_B_G,
|
|
5
|
+
TC_BT_470_M,
|
|
6
|
+
TC_HLG,
|
|
7
|
+
TC_IEC_61966,
|
|
8
|
+
TC_LINEAR,
|
|
9
|
+
TC_SMPTE_2084,
|
|
10
|
+
TC_SMPTE_240,
|
|
11
|
+
TC_SMPTE_428,
|
|
12
|
+
TC_SRGB
|
|
13
|
+
} from "../av1/tables/av1_symbols.js";
|
|
14
|
+
import { convert_channel_linear_to_sRGB } from "../../../core/color/sRGB/linear_to_sRGB.js";
|
|
15
|
+
import { linear_to_PQ } from "../../../core/color/PQ/linear_to_PQ.js";
|
|
16
|
+
|
|
17
|
+
/** @type {number} */
|
|
18
|
+
const HLG_A = 0.17883277;
|
|
19
|
+
|
|
20
|
+
/** @type {number} */
|
|
21
|
+
const HLG_B = 1 - 4 * HLG_A;
|
|
22
|
+
|
|
23
|
+
/** @type {number} */
|
|
24
|
+
const HLG_C = 0.5 - HLG_A * Math.log(4 * HLG_A);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Encode linear light as a signal value.
|
|
28
|
+
*
|
|
29
|
+
* The inverse of {@link transfer_to_linear}, in the same normalisation: `1.0` of linear light is
|
|
30
|
+
* {@link LINEAR_REFERENCE_NITS}.
|
|
31
|
+
*
|
|
32
|
+
* @param {number} transfer_characteristics a `TC_*` code
|
|
33
|
+
* @param {number} value linear light
|
|
34
|
+
* @returns {number} signal, `0 .. 1`
|
|
35
|
+
* @see ITU-T H.273 table 3 "Transfer characteristics"
|
|
36
|
+
*
|
|
37
|
+
* @author Alex Goldring
|
|
38
|
+
* @copyright Company Named Limited (c) 2026
|
|
39
|
+
*/
|
|
40
|
+
export function linear_to_transfer(transfer_characteristics, value) {
|
|
41
|
+
const light = value < 0 ? 0 : value;
|
|
42
|
+
|
|
43
|
+
switch (transfer_characteristics) {
|
|
44
|
+
case TC_SMPTE_2084:
|
|
45
|
+
return linear_to_PQ(Math.min(light * (LINEAR_REFERENCE_NITS / PQ_MAX_NITS), 1));
|
|
46
|
+
|
|
47
|
+
case TC_HLG:
|
|
48
|
+
return scene_linear_to_hlg(Math.min(light * (LINEAR_REFERENCE_NITS / HLG_PEAK_NITS), 1));
|
|
49
|
+
|
|
50
|
+
case TC_LINEAR:
|
|
51
|
+
return Math.min(light, 1);
|
|
52
|
+
|
|
53
|
+
case TC_SRGB:
|
|
54
|
+
case TC_IEC_61966:
|
|
55
|
+
return convert_channel_linear_to_sRGB(Math.min(light, 1));
|
|
56
|
+
|
|
57
|
+
case TC_BT_470_M:
|
|
58
|
+
return Math.pow(Math.min(light, 1), 1 / 2.2);
|
|
59
|
+
|
|
60
|
+
case TC_BT_470_B_G:
|
|
61
|
+
return Math.pow(Math.min(light, 1), 1 / 2.8);
|
|
62
|
+
|
|
63
|
+
case TC_SMPTE_428:
|
|
64
|
+
return Math.pow(Math.min(light * (48.0 / 52.37), 1), 1 / 2.6);
|
|
65
|
+
|
|
66
|
+
case TC_SMPTE_240: {
|
|
67
|
+
const clipped = Math.min(light, 1);
|
|
68
|
+
|
|
69
|
+
return clipped < 0.0228 ? clipped * 4.0 : 1.1115 * Math.pow(clipped, 0.45) - 0.1115;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
default: {
|
|
73
|
+
const clipped = Math.min(light, 1);
|
|
74
|
+
|
|
75
|
+
return clipped < 0.018 ? clipped * 4.5 : 1.099 * Math.pow(clipped, 0.45) - 0.099;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Encode a row of interleaved linear RGB as signal values, in place.
|
|
82
|
+
*
|
|
83
|
+
* @param {number} transfer_characteristics
|
|
84
|
+
* @param {Float32Array} row interleaved, `width * 3` long
|
|
85
|
+
* @param {number} width
|
|
86
|
+
*/
|
|
87
|
+
export function transfer_row_from_linear(transfer_characteristics, row, width) {
|
|
88
|
+
const count = width * 3;
|
|
89
|
+
|
|
90
|
+
if (transfer_characteristics === TC_HLG) {
|
|
91
|
+
// undo the opto-optical transfer function before the per channel curve, since it is what
|
|
92
|
+
// took the picture from scene to display referred in the first place
|
|
93
|
+
const scale = LINEAR_REFERENCE_NITS / HLG_PEAK_NITS;
|
|
94
|
+
|
|
95
|
+
for (let i = 0; i < count; i += 3) {
|
|
96
|
+
const luminance = (0.2627 * row[i] + 0.6780 * row[i + 1] + 0.0593 * row[i + 2]) * scale;
|
|
97
|
+
|
|
98
|
+
const gain = luminance <= 0 ? 0 : Math.pow(luminance, -0.2 / 1.2);
|
|
99
|
+
|
|
100
|
+
for (let c = 0; c < 3; c++) {
|
|
101
|
+
row[i + c] = scene_linear_to_hlg(Math.min(Math.max(row[i + c] * scale * gain, 0), 1));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
for (let i = 0; i < count; i++) {
|
|
109
|
+
row[i] = linear_to_transfer(transfer_characteristics, row[i]);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Hybrid log-gamma's opto-electronic transfer function.
|
|
115
|
+
*
|
|
116
|
+
* @param {number} scene scene linear, `0 .. 1`
|
|
117
|
+
* @returns {number}
|
|
118
|
+
* @see ITU-R BT.2100 table 5
|
|
119
|
+
*/
|
|
120
|
+
function scene_linear_to_hlg(scene) {
|
|
121
|
+
if (scene <= 1 / 12) {
|
|
122
|
+
return Math.sqrt(3 * scene);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return HLG_A * Math.log(12 * scene - HLG_B) + HLG_C;
|
|
126
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The chromaticities a primaries code stands for, or those of BT.709 when it names none.
|
|
3
|
+
*
|
|
4
|
+
* @param {number} color_primaries a `CP_*` code
|
|
5
|
+
* @returns {number[]} `[rx, ry, gx, gy, bx, by, wx, wy]`
|
|
6
|
+
*/
|
|
7
|
+
export function primaries_chromaticity(color_primaries: number): number[];
|
|
8
|
+
/**
|
|
9
|
+
* Derive the luma coefficients a set of primaries implies.
|
|
10
|
+
*
|
|
11
|
+
* This is what `MC_CHROMAT_NCL` means: rather than name a matrix, the bitstream says "the one these
|
|
12
|
+
* primaries imply", and the decoder works it out. The result is the relative luminance of each
|
|
13
|
+
* primary under the white point, which is the same quantity BT.709 and BT.2020 tabulate.
|
|
14
|
+
*
|
|
15
|
+
* @param {number} color_primaries
|
|
16
|
+
* @param {Float64Array} out `[kr, kg, kb]`
|
|
17
|
+
* @see ITU-T H.273 section 8.3, equations 38 to 43
|
|
18
|
+
*/
|
|
19
|
+
export function derive_luma_coefficients(color_primaries: number, out: Float64Array): void;
|
|
20
|
+
//# sourceMappingURL=primaries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primaries.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/color/primaries.js"],"names":[],"mappings":"AAwCA;;;;;GAKG;AACH,wDAHW,MAAM,GACJ,MAAM,EAAE,CAUpB;AAED;;;;;;;;;;GAUG;AACH,0DAJW,MAAM,OACN,YAAY,QA6BtB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CP_BT_2020,
|
|
3
|
+
CP_BT_470_B_G,
|
|
4
|
+
CP_BT_470_M,
|
|
5
|
+
CP_BT_601,
|
|
6
|
+
CP_BT_709,
|
|
7
|
+
CP_EBU_3213,
|
|
8
|
+
CP_GENERIC_FILM,
|
|
9
|
+
CP_SMPTE_240,
|
|
10
|
+
CP_SMPTE_431,
|
|
11
|
+
CP_SMPTE_432,
|
|
12
|
+
CP_XYZ
|
|
13
|
+
} from "../av1/tables/av1_symbols.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Chromaticities of every colour primaries code, as `[rx, ry, gx, gy, bx, by, wx, wy]`.
|
|
17
|
+
*
|
|
18
|
+
* Kept as one flat table rather than a map of objects: the lookup happens once per image, and a
|
|
19
|
+
* table is easier to check against the standard than eight named fields per entry.
|
|
20
|
+
*
|
|
21
|
+
* @type {Map<number, number[]>}
|
|
22
|
+
* @see ITU-T H.273 table 2 "Colour primaries"
|
|
23
|
+
*
|
|
24
|
+
* @author Alex Goldring
|
|
25
|
+
* @copyright Company Named Limited (c) 2026
|
|
26
|
+
*/
|
|
27
|
+
const CHROMATICITIES = new Map([
|
|
28
|
+
[CP_BT_709, [0.640, 0.330, 0.300, 0.600, 0.150, 0.060, 0.3127, 0.3290]],
|
|
29
|
+
[CP_BT_470_M, [0.670, 0.330, 0.210, 0.710, 0.140, 0.080, 0.3100, 0.3160]],
|
|
30
|
+
[CP_BT_470_B_G, [0.640, 0.330, 0.290, 0.600, 0.150, 0.060, 0.3127, 0.3290]],
|
|
31
|
+
[CP_BT_601, [0.630, 0.340, 0.310, 0.595, 0.155, 0.070, 0.3127, 0.3290]],
|
|
32
|
+
[CP_SMPTE_240, [0.630, 0.340, 0.310, 0.595, 0.155, 0.070, 0.3127, 0.3290]],
|
|
33
|
+
[CP_GENERIC_FILM, [0.681, 0.319, 0.243, 0.692, 0.145, 0.049, 0.3100, 0.3160]],
|
|
34
|
+
[CP_BT_2020, [0.708, 0.292, 0.170, 0.797, 0.131, 0.046, 0.3127, 0.3290]],
|
|
35
|
+
[CP_XYZ, [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1 / 3, 1 / 3]],
|
|
36
|
+
[CP_SMPTE_431, [0.680, 0.320, 0.265, 0.690, 0.150, 0.060, 0.3140, 0.3510]],
|
|
37
|
+
[CP_SMPTE_432, [0.680, 0.320, 0.265, 0.690, 0.150, 0.060, 0.3127, 0.3290]],
|
|
38
|
+
[CP_EBU_3213, [0.630, 0.340, 0.295, 0.605, 0.155, 0.077, 0.3127, 0.3290]]
|
|
39
|
+
]);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The chromaticities a primaries code stands for, or those of BT.709 when it names none.
|
|
43
|
+
*
|
|
44
|
+
* @param {number} color_primaries a `CP_*` code
|
|
45
|
+
* @returns {number[]} `[rx, ry, gx, gy, bx, by, wx, wy]`
|
|
46
|
+
*/
|
|
47
|
+
export function primaries_chromaticity(color_primaries) {
|
|
48
|
+
const found = CHROMATICITIES.get(color_primaries);
|
|
49
|
+
|
|
50
|
+
if (found !== undefined) {
|
|
51
|
+
return found;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return CHROMATICITIES.get(CP_BT_709);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Derive the luma coefficients a set of primaries implies.
|
|
59
|
+
*
|
|
60
|
+
* This is what `MC_CHROMAT_NCL` means: rather than name a matrix, the bitstream says "the one these
|
|
61
|
+
* primaries imply", and the decoder works it out. The result is the relative luminance of each
|
|
62
|
+
* primary under the white point, which is the same quantity BT.709 and BT.2020 tabulate.
|
|
63
|
+
*
|
|
64
|
+
* @param {number} color_primaries
|
|
65
|
+
* @param {Float64Array} out `[kr, kg, kb]`
|
|
66
|
+
* @see ITU-T H.273 section 8.3, equations 38 to 43
|
|
67
|
+
*/
|
|
68
|
+
export function derive_luma_coefficients(color_primaries, out) {
|
|
69
|
+
const c = primaries_chromaticity(color_primaries);
|
|
70
|
+
|
|
71
|
+
const rx = c[0];
|
|
72
|
+
const ry = c[1];
|
|
73
|
+
const gx = c[2];
|
|
74
|
+
const gy = c[3];
|
|
75
|
+
const bx = c[4];
|
|
76
|
+
const by = c[5];
|
|
77
|
+
const wx = c[6];
|
|
78
|
+
const wy = c[7];
|
|
79
|
+
|
|
80
|
+
const rz = 1 - rx - ry;
|
|
81
|
+
const gz = 1 - gx - gy;
|
|
82
|
+
const bz = 1 - bx - by;
|
|
83
|
+
const wz = 1 - wx - wy;
|
|
84
|
+
|
|
85
|
+
const kr = (ry * (wx * (gy * bz - by * gz) + wy * (bx * gz - gx * bz) + wz * (gx * by - bx * gy)))
|
|
86
|
+
/ (wy * (rx * (gy * bz - by * gz) + ry * (bx * gz - gx * bz) + rz * (gx * by - bx * gy)));
|
|
87
|
+
|
|
88
|
+
const kb = (by * (wx * (ry * gz - gy * rz) + wy * (gx * rz - rx * gz) + wz * (rx * gy - gx * ry)))
|
|
89
|
+
/ (wy * (bx * (ry * gz - gy * rz) + by * (gx * rz - rx * gz) + bz * (rx * gy - gx * ry)));
|
|
90
|
+
|
|
91
|
+
out[0] = kr;
|
|
92
|
+
out[1] = 1 - kr - kb;
|
|
93
|
+
out[2] = kb;
|
|
94
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert one row of normalised R, G and B to coded samples.
|
|
3
|
+
*
|
|
4
|
+
* The inverse of {@link ycbcr_row_to_rgb}, and derived from the same transform struct — the forward
|
|
5
|
+
* matrix is recovered from the inverse's coefficients rather than tabulated a second time, so the
|
|
6
|
+
* two cannot disagree about what a matrix is.
|
|
7
|
+
*
|
|
8
|
+
* @param {ColourTransform} transform
|
|
9
|
+
* @param {Float32Array} rgb interleaved, `width * 3` long, `0 .. 1`
|
|
10
|
+
* @param {number} width
|
|
11
|
+
* @param {Uint16Array} luma
|
|
12
|
+
* @param {number} luma_offset
|
|
13
|
+
* @param {Float32Array} cb full width, in sample units
|
|
14
|
+
* @param {Float32Array} cr
|
|
15
|
+
*
|
|
16
|
+
* @author Alex Goldring
|
|
17
|
+
* @copyright Company Named Limited (c) 2026
|
|
18
|
+
*/
|
|
19
|
+
export function rgb_row_to_ycbcr(transform: ColourTransform, rgb: Float32Array, width: number, luma: Uint16Array, luma_offset: number, cb: Float32Array, cr: Float32Array): void;
|
|
20
|
+
//# sourceMappingURL=rgb_row_to_ycbcr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgb_row_to_ycbcr.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/color/rgb_row_to_ycbcr.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,kEAVW,YAAY,SACZ,MAAM,QACN,WAAW,eACX,MAAM,MACN,YAAY,MACZ,YAAY,QA8DtB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { CONVERSION_IDENTITY, CONVERSION_YCGCO } from "./ColourTransform.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Convert one row of normalised R, G and B to coded samples.
|
|
5
|
+
*
|
|
6
|
+
* The inverse of {@link ycbcr_row_to_rgb}, and derived from the same transform struct — the forward
|
|
7
|
+
* matrix is recovered from the inverse's coefficients rather than tabulated a second time, so the
|
|
8
|
+
* two cannot disagree about what a matrix is.
|
|
9
|
+
*
|
|
10
|
+
* @param {ColourTransform} transform
|
|
11
|
+
* @param {Float32Array} rgb interleaved, `width * 3` long, `0 .. 1`
|
|
12
|
+
* @param {number} width
|
|
13
|
+
* @param {Uint16Array} luma
|
|
14
|
+
* @param {number} luma_offset
|
|
15
|
+
* @param {Float32Array} cb full width, in sample units
|
|
16
|
+
* @param {Float32Array} cr
|
|
17
|
+
*
|
|
18
|
+
* @author Alex Goldring
|
|
19
|
+
* @copyright Company Named Limited (c) 2026
|
|
20
|
+
*/
|
|
21
|
+
export function rgb_row_to_ycbcr(transform, rgb, width, luma, luma_offset, cb, cr) {
|
|
22
|
+
const y_offset = transform.y_offset;
|
|
23
|
+
const c_offset = transform.c_offset;
|
|
24
|
+
|
|
25
|
+
const y_range = 1 / transform.y_scale;
|
|
26
|
+
const c_range = 1 / transform.c_scale;
|
|
27
|
+
|
|
28
|
+
if (transform.kind === CONVERSION_IDENTITY) {
|
|
29
|
+
for (let x = 0; x < width; x++) {
|
|
30
|
+
const i = x * 3;
|
|
31
|
+
|
|
32
|
+
luma[luma_offset + x] = Math.round(rgb[i + 1] * y_range + y_offset);
|
|
33
|
+
cb[x] = Math.round(rgb[i + 2] * y_range + y_offset);
|
|
34
|
+
cr[x] = Math.round(rgb[i] * y_range + y_offset);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (transform.kind === CONVERSION_YCGCO) {
|
|
41
|
+
for (let x = 0; x < width; x++) {
|
|
42
|
+
const i = x * 3;
|
|
43
|
+
|
|
44
|
+
const r = rgb[i];
|
|
45
|
+
const g = rgb[i + 1];
|
|
46
|
+
const b = rgb[i + 2];
|
|
47
|
+
|
|
48
|
+
luma[luma_offset + x] = Math.round((0.25 * r + 0.5 * g + 0.25 * b) * y_range + y_offset);
|
|
49
|
+
cb[x] = Math.round((-0.25 * r + 0.5 * g - 0.25 * b) * c_range + c_offset);
|
|
50
|
+
cr[x] = Math.round((0.5 * r - 0.5 * b) * c_range + c_offset);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// the inverse applies R = Y + a*Cr and B = Y + b*Cb, so the luma coefficients are recoverable
|
|
57
|
+
// from a and b alone: kr = 1 - a/2, kb = 1 - b/2
|
|
58
|
+
const kr = 1 - transform.cr_to_r / 2;
|
|
59
|
+
const kb = 1 - transform.cb_to_b / 2;
|
|
60
|
+
const kg = 1 - kr - kb;
|
|
61
|
+
|
|
62
|
+
const to_cb = 1 / transform.cb_to_b;
|
|
63
|
+
const to_cr = 1 / transform.cr_to_r;
|
|
64
|
+
|
|
65
|
+
for (let x = 0; x < width; x++) {
|
|
66
|
+
const i = x * 3;
|
|
67
|
+
|
|
68
|
+
const r = rgb[i];
|
|
69
|
+
const g = rgb[i + 1];
|
|
70
|
+
const b = rgb[i + 2];
|
|
71
|
+
|
|
72
|
+
const y = kr * r + kg * g + kb * b;
|
|
73
|
+
|
|
74
|
+
luma[luma_offset + x] = Math.round(y * y_range + y_offset);
|
|
75
|
+
cb[x] = Math.round((b - y) * to_cb * c_range + c_offset);
|
|
76
|
+
cr[x] = Math.round((r - y) * to_cr * c_range + c_offset);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decode one signal value to linear light.
|
|
3
|
+
*
|
|
4
|
+
* HLG is the exception: what comes back is *scene* linear, because its opto-optical transfer
|
|
5
|
+
* function is a function of the picture's luminance rather than of one channel. Completing it is
|
|
6
|
+
* {@link transfer_row_to_linear}'s job, which is why nothing should call this directly for HLG.
|
|
7
|
+
*
|
|
8
|
+
* @param {number} transfer_characteristics a `TC_*` code
|
|
9
|
+
* @param {number} value signal, `0 .. 1`
|
|
10
|
+
* @returns {number} linear light, `1.0` being {@link LINEAR_REFERENCE_NITS}
|
|
11
|
+
* @see ITU-T H.273 table 3 "Transfer characteristics"
|
|
12
|
+
*
|
|
13
|
+
* @author Alex Goldring
|
|
14
|
+
* @copyright Company Named Limited (c) 2026
|
|
15
|
+
*/
|
|
16
|
+
export function transfer_to_linear(transfer_characteristics: number, value: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Decode a row of interleaved RGB to linear light, in place.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} transfer_characteristics a `TC_*` code
|
|
21
|
+
* @param {Float32Array} row interleaved, `width * 3` long
|
|
22
|
+
* @param {number} width
|
|
23
|
+
*/
|
|
24
|
+
export function transfer_row_to_linear(transfer_characteristics: number, row: Float32Array, width: number): void;
|
|
25
|
+
/**
|
|
26
|
+
* Luminance that a linear value of `1.0` stands for, in nits.
|
|
27
|
+
*
|
|
28
|
+
* Every transfer function here decodes to this normalisation, so that SDR content lands at `1.0`
|
|
29
|
+
* whatever curve carried it and HDR content simply goes above it.
|
|
30
|
+
*
|
|
31
|
+
* A hundred rather than the engine's 203 deliberately, and it is not a renderer setting. The SDR
|
|
32
|
+
* curves in H.273 table 3 — BT.709, sRGB, gamma 2.2, gamma 2.8 — are defined against a hundred nit
|
|
33
|
+
* reference display, so signal `1.0` decoding to linear `1.0` is their own fixed point rather than
|
|
34
|
+
* a convention this file picks. Setting it to `SDR_WHITE_NITS` would land sRGB white at 0.4926 and
|
|
35
|
+
* make this module a statement about meep instead of a statement about the standard.
|
|
36
|
+
*
|
|
37
|
+
* 203 nits is a rendering convention (BT.2408 graphics white on an HDR display), so it lives on the
|
|
38
|
+
* renderer's side of the boundary: `sampler2d_to_avif` and `avif_to_sampler2d` each name their
|
|
39
|
+
* white to the codec through `linear_reference_nits`, and that is where the two meet.
|
|
40
|
+
* @type {number}
|
|
41
|
+
*/
|
|
42
|
+
export const LINEAR_REFERENCE_NITS: number;
|
|
43
|
+
/**
|
|
44
|
+
* Peak luminance an HLG signal is decoded against, in nits. The curve carries no absolute luminance
|
|
45
|
+
* of its own, and this is the reference display ITU-R BT.2100 defines its system gamma on.
|
|
46
|
+
* @type {number}
|
|
47
|
+
*/
|
|
48
|
+
export const HLG_PEAK_NITS: number;
|
|
49
|
+
//# sourceMappingURL=transfer_to_linear.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer_to_linear.d.ts","sourceRoot":"","sources":["../../../../../src/avif/native/color/transfer_to_linear.js"],"names":[],"mappings":"AAyDA;;;;;;;;;;;;;;GAcG;AACH,6DARW,MAAM,SACN,MAAM,GACJ,MAAM,CAmDlB;AAED;;;;;;GAMG;AACH,iEAJW,MAAM,OACN,YAAY,SACZ,MAAM,QA+BhB;AArID;;;;;;;;;;;;;;;;GAgBG;AACH,oCAFU,MAAM,CAEyB;AAEzC;;;;GAIG;AACH,4BAFU,MAAM,CAEkB"}
|