Is Krita ready for HDR painting?
Thursday, 27 April 2023
Right this minute, you can open up Krita and start a new document in linear ACEScg with either 16fp or 32fp encoding. And it works! You can open floating-point OpenEXR files or use the color picker to choose colors like RGB[3.5, 3.0, 1.5] where normally you would be limited to 0.0–1.0. You can paint in a sun with a value of 60.0 if you want, or erase the sun, or whatever! Mostly!
There are still plenty of parts in Krita that do not understand color values above 1.0. For example, I absolutely need to be able to adjust my view “exposure” when working in HDR. Krita has a LUT Management dockable which theoretically uses OCIO to be able to choose a look, exposure, etc. but at least on my recent master build doesn’t seem to do anything. Adding a Slope/Offset/Power filter layer works in a pinch, but unfortunately makes the color picker useless.
Speaking of color pickers, most of them do not speak HDR. The value field in the dual-color picker is capped at 100%, and if you choose a color with a value beyond 100%, the value input will clip the original colors.
There is a color picker with explicit HDR support—the “small color selector”—that has a brightness slider that goes above 100:
But it’s only shown on Windows?? And it seems to map a value of 1.0 to 100 nits, which is not consistently reflected in the rest of the UI.
Finally, the Krita docs say this:
When you are done, you will want to apply the view transform you have been using to the image (at the least, if you want to post the end result on the Internet)… This is called LUT baking and not possible yet in Krita. Therefore you will have to save out your image in EXR and open it in either Blender or Natron. Then, in Blender it is enough to just use the same OCIO config, select the right values and save the result as a PNG.
Krita documentation: Scene Linear Painting
Maybe all artists working in linear color have Blender already!
All the fundamentals are there. For general work (editing, painting), it should work all right especially if the >1 regions are limited. But I think it’ll be a bit hard to work across a large dynamic range without working exposure controls. ALSO, I only tried this out on Linux. Who knows, maybe it’s amazing on Windows with an HDR display, but I think the target market is simply too small right now.
No. 1 — July 25th, 2024 at 17:51
I do a lot of HDR painting in Krita, and have been for a while. You’re right that setting Krita up for HDR is unintuitive, but it IS possible. First thing you’ll want to do is go to the LUT management, set the Color Engine to OCIO and set the Configuration to an .ocio profile (Blender comes with their filmic/AgX profile, or you can download various .ocio profiles such as ACES for free).
An OCIO profile tells Krita how it ought to handle colors that are outside of the display’s capabilities.
Once you point Krita to an OCIO profile, it will then unlock the rest of the LUT docker and, depending on things like the view, will display your image in accordance to the tonemapping of the OCIO profile. You can then edit within this tonemapped canvas, changing the exposure settings to gain brighter or darker views of your image.
Changing the exposure slider also affects how colors are chosen in color wheels and color selectors. The range of colors you can pick are dependent on the slider, and range from 0 to “display white”. So if you decrease the exposure slider of your image by 3 stops, you will increase the range of the color wheel by 3 stops. Doing this lets you paint in HDR without needing an HDR monitor, and has been the method I have used for my art.
If you have any questions, feel free to reach out to me.