High-bit image pipeline, WYSIWYG editor, and editor UX #47
Loading…
Reference in a new issue
No description provided.
Delete branch "high-bit-image-pipeline"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reworks Garnet's image stack to preserve precision, fixes the editor's saved-output-vs-preview mismatch, makes dev-build saves fast, and adds editor input shortcuts + a save lock.
32-bit float pipeline (high-bit workflows)
The shared image stack was 8-bit internally — every editor adjust op and texturing op called
to_rgba8(), so a 16-bit source truncated at the first step and the existingpng16export just re-inflated 8-bit data. The pipeline now works in a normalizedRgba32FImageend-to-end and quantizes only on save:editor/{adjust,transform,pipeline}.rs) and the 3D Texturing plugin (texturing/{channel_pack,normal_map}.rs) + Automations FlipGreen/Normalize steps all process in f32;png16export is now real.image_io:load_exr/save_exrcarry true f32 (EXR was tone-mapped to 8-bit on load);save_imagegains a realtiff16.WYSIWYG color fix
Saved files didn't match the editor preview (pre-existing on main) — hue/saturation edits especially could come out magenta/cyan. The preview is a CSS/SVG
filter:chain but the commit used different math (HSL hue/saturation, additive brightness) in a different order. The commit now replicates the W3C Filter Effects math the browser uses (hue/saturation color matrices,brightnessmultiply) and canonicalizes op order to color → curve → white-balance → geometry. What you see is what you save.Dev-build save perf
A 30 MP JPEG save hung the editor ~10s in
make dev(vs ~1.3s release) — purely unoptimized debug codegen of the image codecs. TwoCargo.tomlprofile fixes: optimize every dependency in dev (catch-allpackage."*", fixing decode), and bump our own crate to opt-level 1 (the JPEG encoder + f32→u8 conversions are generic, so their hot loops monomorphize into our crate and weren't covered). ~12s → ~1.5s in dev, near release.Editor UX
\original-image peek already existed.Notes
bench_commit/repro_commit_realharness lives ineditor/pipeline.rsfor profiling.Verification
make lint typecheck testgreen (130 Rust tests, 13 frontend tests, clippy, tsc). Precision round-trip and EXR f32 round-trip covered by tests; WYSIWYG output verified by rendering a hue+warm edit on a real 30 MP photo.