mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-14 19:26:51 -04:00
* EXR: Cryptomatte layers list, decode and hash to the specification Cryptomatte (specification 1.2) carries per-pixel object and material IDs with coverage in <layer>NN.red/.green channel pairs, announced by cryptomatte/<key>/name|hash|conversion|manifest header attributes - the ID channels Arnold, V-Ray, Redshift, Mantra/Karma and Cycles write next to the beauty pass. cryptomatte_layers lists every layer from the headers alone (name, key, channels, the embedded manifest parsed and capped at 16 MiB, a sidecar pointer); decode_cryptomatte returns the per-pixel (ID, coverage) pairs above zero, sorted by descending coverage; cryptomatte_id hashes names the reference way (MurmurHash3 x86-32, the exponent fixed away from denormals/inf/NaN, read as f32 bits) - verified against the official test vectors - and cryptomatte_key/cryptomatte_preview_color expose the metadata key and preview colour. Files with deep parts are refused, like the other flat part decoders. * chore(ui): format prefs_ui (the workspace fmt gate is red on main until #2417 lands) * codecs: Cryptomatte decode checks the layer size without truncating casts Count each pixel's pair list in the allocation check too. Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Brandon Thomas <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]>