Bug 467837

Summary: Changing HDR colors in the HSV editor does not roundtrip correctly
Product: [Applications] krita Reporter: erjiang <erjiang>
Component: Color SelectorsAssignee: Krita Bugs <krita-bugs-null>
Status: CONFIRMED ---    
Severity: normal CC: halla
Priority: NOR    
Version: nightly build (please specify the git hash!)   
Target Milestone: ---   
Platform: Appimage   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Screen capture of buggy color dialog

Description erjiang 2023-03-27 00:48:27 UTC
Created attachment 157613 [details]
Screen capture of buggy color dialog

SUMMARY

Color picker dialog does not allow Value > 100%.


STEPS TO REPRODUCE
1. Create new document using ACEScg color profile (linear), 16-bit float
2. In the Brushes and Stuff toolbar, double-click on the foreground color swatch to select a color
3. Enter the values R: 3.5, G: 3.0, B: 1.5
4. Switch to HSV, see that value=100%. Click down arrow for value to lower to 99%, then click up to go back to 100%.

OBSERVED RESULT

Value selector is limited to 100% maximum. Switch back to RGB, see that original RGB values are lost.

EXPECTED RESULT

Value selector should have shown 350% and not be limited to 100% (if image format allows it).

SOFTWARE/OS VERSIONS

Using krita-5.2.0-prealpha-8550960a23-x86_64.appimage
Comment 1 Halla Rempt 2023-03-30 14:02:43 UTC
Well, nothing can ever be more than 100%. Given that, I'm not sure that an accurate roundtrip between a real unbounded colorspace (floating point RGB) and HSV (which is a fake colorspace) is actually possible. Maybe for the HDR colorspaces we should disable the HSV tab or make the entry fields read-only.
Comment 2 erjiang 2023-03-31 02:09:40 UTC
> Well, nothing can ever be more than 100%.

For example, RGB(1.0, 1.0, 1.0) has value=1.0. Is RGB(2.0, 2.0, 2.0) not value=2.0? I found some demo code demonstrating HSV controls where V can be greater than 1: http://phrogz.net/tmp/hdrhsv.html

There is a straightforward use case, which is to sample the color of an emissive object, adjust the value higher, and then paint it in. For example, color picking a light, bumping up value to 500%, then painting it back in to brighten the light.

Also, I was playing around with Krita today and somehow my dual-color picker decided that RGB(2.10, 2.10, 2.10) is equivalent to value 50% and RGB(9.65, 9.65, 9.65) is value 100%. If I figure out how to reproduce I'll file another bug for that.