photocraft/crates/compose
Shehan Kavishka 96ec16ed7d
fix(compose, gpu): round dithered gradient fills to the document depth (#2755) (#2781)
A live gradient's dither adds a fraction of a level of noise, but gradient
fill layers kept it in float. Color Dodge divides by 1 - cs, so under a
bright dodge layer that sub-level noise came out as speckle several levels
high, and channels at 0 were lifted off black (coloured fringes).

Dithered gradient pixels are now rounded to the document depth's levels
(8/16-bit; float documents unchanged), as a painted gradient stores them.
Same rounding in the GPU shader. Regression tests in compose and a GPU
parity case for stacked dithered gradients under Color Dodge.


Claude-Session: https://claude.ai/code/session_01Qpa5z8GksXAFiDavFkmh4R

Co-authored-by: Leel Wasanatha <260480244+kavishkashehan726-sudo@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 17:11:46 -04:00
..
benches more algorithms, progress 2026-10-01 08:25:06 -04:00
examples Skip distant TSL-off stroke layers during composition (#2473) 2026-10-10 13:58:04 -04:00
src fix(compose, gpu): round dithered gradient fills to the document depth (#2755) (#2781) 2026-10-10 17:11:46 -04:00
tests fix(compose): scale artboard bounds in proxy documents (#131) 2026-10-05 01:25:06 -04:00
Cargo.toml continued wip 2026-09-30 09:37:18 -04:00