Difference between revisions of "Krita/Manual/ColorManagement"

Jump to: navigation, search
(Filters and blending modes.)
m (Copy edits)
 
(85 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Construction}}
+
You may have heard that Krita has something called color-management. Or maybe you just wondered what all these 'color model' and 'color profile' things you can find in the menus mean. Color management is pretty useful for people who work in digital imaging professionally, and hopefully this page will explain why.
{{Info|This manual is a rewrite of the 1.6 manual. It is not complete.}}
+
__NOTOC__
+
  
==Color and Color Management==
+
==Basic info==
  
You may have understood that Krita has something called color-management. Or maybe you just wondered what all these 'color model' and 'color profile' things you can find in the menus mean. Color management is pretty useful for people who work in digital imaging proffesionaly, and hopefully this page will explain why.
+
If you've never worked with color management before, and have no clue what it is, then know that you've probably been working in the 8bit RGB color space with the sRGB profile. This means you can choose for ''sRGB built-in'' or ''sRGB-elle-v2-srgbtrc.icc''. With the new color space browser this profile is marked with (default) when using 8bit.
  
===Basic default info===
+
We'll go into what these terms mean in the theory, but if you're here only for trying to figure out which is the default, you now know it. Maybe, after reading this, you may feel like changing the default, to get new and interesting results from filters, blending modes, or just the color smudge brush.
So, before we dive into the theory, let's first go over a few practical points.
+
  
*If you've never worked with color management before, and have no clue what it is, then know that you've probably been working in the ''8bit RGB colour space with the sRGB profile''. We'll go into what these terms mean in the theory, but if you're here only for trying to figure out which is the default, you now know it.
+
==What is the problem?==
  
===So, what exactly are color spaces?===
+
To explain the point of color management, you'd first need to learn which problem color management tries to solve.
  
You know those images of really old computers? The ones that could only display black and green?
+
Let us imagine a kindergarten:
Or perhaps you may have noticed that really expensive screens in the shops have much better color than cheap screens.
+
  
This has to do with color spaces.
+
The class of 28 children is subdivided in groups of 7. Each group has their own table.
  
The really old computer screens could only display two colors physically.
+
The teacher gives them a painting assignment: They need to paint a red triangle, a blue square, a green circle and put a yellow border around the three.
Newer computer screens became able to display more colors by having a set of tiny lights for each pixel that could have different amount of brightness. By combining lights of different brightnesses, they can 'mix' the colors.
+
The kids are very experienced with painting already, so the teacher can confidently leave the smarter ones to their own devices, and spent more time on those who need help.
To have the most efficient amount of mixable colors from the least amount of physical colors(called a gamut), screen manufacturers chose to have a red, green and blue light per pixel.
+
Modern screens have 256(8bit) values of brightness for red, green and blue per pixel. This is called the 8bit RGB color space.
+
  
So, a color space is a method for describing colour by coordinates. In the RGB color space, the color red is described as R=1, G=0, B=0. Similarly, if you mix red and green, you get yellow. And thus the coordinate of Yellow is R=1, G=1, B=0.
+
The following results come from painting:
  
Thus, you computer, which can't actually see color, can store a coordinate of which exact color is on the screen.
+
Even though all groups had the same assignment, each group's result looks different.
This matters because the coordinate system of the screen(RGB) is different from the coordinate system of the printer(CMYK), which are both different from optimal human perception(XYZ).
+
  
Krita's Color Management main focus is to allow you to switch these coordinate systems, the color spaces, with as little amount of hassle as possible.
+
[[File:Krita 2 9 colormanagement group1.png|500px|center]]
  
Furthermore, Krita's Color Management allows you to use ICC profiles.
+
Group 1 had vermillion red, citron yellow and ultramarine blue to their disposal. This means their triangle looks nice and red, but their circle's green is muddy. This is because ultramarine is too dark of a blue to create nice greens with.
ICC profiles are, plainly put, descriptions of how much your screen or printer deviates from the ideal color space. Using them to your advantage can allow you to have less hassle with color varieties, like printed images turning out too dark or with a yellowish cast.
+
{{Note| No amount of color management in the world can make the image on your screen and the image out of the printer have 100% the same color.}}
+
  
===Different colour spaces and models===
+
[[File:Krita 2 9 colormanagement group2.png|500px|center]]
Krita has many different color spaces and models. Following here is a brief explaination of each, and their use-cases.
+
====RGB====
+
Red, Green, Blue.
+
  
These are the most efficient primaries for light-based color mixing, like computer screens. Adding Red, Green and Blue light together results in White, and is thus named the adative color wheel.
+
Group 2 had magenta red, citron yellow and cerulean blue. Magenta is a type of red that is closer to pink, opossed to vermillion, which is closer to orange. However, their green looks nice because cerulean is a much lighter blue.
  
RGB is used for two purposes:
+
[[File:Krita 2.9 colormanagement group3.png|500px|center]]
  
Images that are meant for viewing on a screen:
+
Group 3 had vermillion red, citron yellow, edmerald green and cerulean blue. They didn't mix their green, and thus ended up with a purer color.
So that could be images for the web, buttons, avatars, or just portefolio images.
+
Or for Video games, both sprites and textures are best in RGB there.
+
Or for 3d rendering, visual effects and cg animation.
+
  
And for the working space. A working space is a RGB gamut that is really large and predictable, meaning it's good for image manipulation. You use this next to a profiled monitor. This way you can have precise colours while also being able to view them correctly on multiple screens.
+
[[File:Krita 2.9 colormanagement group4.png|500px|center]]
  
====RGB models: HSV, HSL, HSI and HSY====
+
Finally, group 4 has Vermillion red, citron yellow and cerulean blue. Their colors probably look like what you imagined.
These are not included as their own color spaces in Krita. However, they do show up in the blending modes and color selectors, so a brief overview:
+
  
--Images of relationship rgb-hsv etc.
+
Now, these are kindergarteners, so this isn't the largest problem in the world. However, imagine that something like this happened at a printing company? Imagine four printers printing the same magazine with wildly different results? That would be disastrous!
 +
 
 +
For this purpose, we invented color management.
 +
 
 +
==What is color management?==
 +
 
 +
Color management is, dryly put, a set of systems that tries to have the same color translate properly between color devices.
 +
 
 +
It usually works by attempting to covert a color to the reference color space XYZ. XYZ is a coordinate system that has a spot for all colors that the average human eye can see.
 +
 
 +
From XYZ it can then be translated back into another device space, such as RGB(for screens), or CMYK(for printers).
 +
 
 +
Krita has two systems dedicated to color management. On one hand we have '''lcms2''', which deal with Icc-profiles, and on the other we have '''OCIO''', which deal with LUT color management.
 +
 
 +
To give a crude estimate, ICC profiles deal with keeping colors consistent over many interpretations of devices(screens, printers) by using a reference space, and OCIO deals with manipulating the interpretation of said colors.
 +
 
 +
Within both we can identify the following color spaces:
 +
 
 +
;Device spaces
 +
:Device spaces are those describing your monitor, and have to be made using a little device that is called "colorimeter". This device, in combination with the right software, measures the strongest red, green and blue your screen can produce, as well as the white, black and grey it produces. Using these and several other measurements it creates an icc profile unique to your screen. You set these in Krita's color management tab.
 +
:By default we assume sRGB for screens, but it's very likely that your screen isn't exactly fitting sRGB, especially if you have a high quality screen, where it may be a bigger space instead. Device spaces are also why you should first consult with your printer what profile they expect. Many printing houses have their own device profiles for their printers, or may prefer doing color conversion themselves.
 +
:You can read more about colorimeter usage [[Special:myLanguage/Krita/Manual/ColorManagement/ProfilingandCalibration|here]].
 +
 
 +
;Working spaces
 +
:These are delivered alongside Krita for ICC, and downloadable from the OCIO website for OCIO. Working spaces are particularly nice to do color calculations in, which programs like Krita do often. It's therefore recommended to have a working space profile for your image.
 +
 
 +
;Aesthetic or Look spaces
 +
:These are special spaces that have been deformed to give a certain look to an image. Krita doesn't deliver Look profiles for ICC, nor does it yet support Look spaces for OCIO.
 +
 
 +
===Color managed workflow===
 +
Knowing this about these spaces of course doesn't give you an idea how to use them, but it does make it easier to explain how to use them. So let us look at a typical color management workflow:
 +
 
 +
[[File:Krita-colormanaged-workflow text.svg|thumb|800px|center|A typical example of a color managed workflow. We have input from scanners and cameras, which we convert to a working space that can be used between different editing software, and is converted to an output space for viewing on screen or printing.]]
 +
 
 +
In a traditional color managed workflow, we usually think in terms of real world colors being converted to computer colors and the other way around. So, for example photos from a camera or scanned in images. If you have a device space of such a device, we first assign said device space to the image, and then convert it to a working space.
 +
 
 +
We then do all our editing in the working space, and use the working space to communicate between editing programs. In Krita's case, due to it having two color management systems, we use ICC profiles between programs like Gimp 2.9+, Inkscape, Digikam and Scribus, and OCIO configuration between Blender and Natron.
 +
 
 +
You also store your working files in the working space, just like how you have the layers unmerged in the working file, or have it at a very high resolution.
 +
 
 +
Sometimes, we apply aesthetic or 'look' spaces to an image as part of the editing process. This is rather advanced, and probably not something to worry about in Krita's case.
 +
 
 +
Then, when we're done editing, we try to convert to an output space, which is another device space. This can be CMYK for printers or a special screen RGB profile. When you are dealing with professional printing houses, it is best to ask them about this step. They have a lot of experience with doing the best conversion, and may prefer to do the conversion from your working space to the device space of their printers.
 +
 
 +
Another form of output is the way your screen displays the color. Unlike regular output, this one is done all the time during editing: After all, you need to be able to see what you are doing, but your screen is still a device with a device space, so it does distort how the image looks. In this manner, you can see your screen as a set of binoculars you have to look through to see your image at all.
 +
 
 +
Therefore, without a profiled monitor, you actually don't know what the actual colors you are working with are like, because the computer doesn't know the relevant properties of your screen. So if you profiled your monitor, give Krita the profile in the settings, and select the sRGB space to draw in, you are for the first time seeing the actual colors of the sRGB space.
 +
 
 +
===So what does this mean?===
 +
[[File:Krita-colormanaged-workflow krita text.svg|thumb|300px|right|When we paint from scratch, we can see our screen profile as the input space, because we use it to determine what colors to pick. This somewhat simplifies the workflow, but makes the screen profile and viewing conditions more important.]]
 +
Now, photographers and people who do a tricky discipline of VFX called 'color grading' will go completely mad over trying to get the colors they put in to come out 100% correctly, and will even count in factors like the time of day and the color they painted their walls. For example, if the wall behind your computer is pure red, your eyes will adjust to be less sensitive to red, which means that the colors they pick in the program could come out redder. We call these the ''viewing conditions''.
 +
 
 +
Thankfully, artists have to worry a slight bit less about this. As illustrations are fully handmade, we are able to identify the important bits and make appropriate contrasts between colors. This means that even if our images turn out to be slightly redder than intended, it is less likely the whole image is ruined. If we look back at the kindergarten example above, we still understand what the image was supposed to look like, despite there being different colors on each image. Furthermore, because the colors in illustrations are deliberately picked, we can correct them more easily on a later date. Yet, at the same time, it is of course a big drag to do this, and we might have had much more flexibility had we taken viewing conditions under consideration.
 +
 
 +
That said, for artists it is also very useful to understand the working spaces. Different working spaces give different results with filters and mixing, and only some working spaces can be used for advanced technology like HDR.
 +
 
 +
Similarly, Krita, as a program intended to make images from scratch, doesn't really worry about assigning workspaces after having made the image. But because you are using the screen as a binocular to look at your image, and to pick colors, you can see your screen's device space as an input space to the image. Hence why profiling your monitor and giving the profile to Krita in the settings can help with preparing your work for print and future ventures in the long run.
 +
 
 +
Overall, it is kinda useful to keep things like viewing conditions in the back of your mind. Many professional artists use a mid-grey color as their default canvas background because they find they create much more dynamic images due to having improved their viewing conditions. It is also why a lot of graphics programs, including Krita, come with a dark theme nowadays. (Though, of course this might also be because dark themes can be considered cool, who knows.)
 +
 
 +
We go over the type of pitfalls that are specific to artists painting from scratch in the viewing conditions section, but let's first take a look at our color management systems.
 +
 
 +
==Icc profiles==
 +
An Icc profile is a set of coordinates describing the extremities of the device space within XYZ, and it is the color management data you use to communicate your working space to printers and applications that are designed for the print industry, such as GIMP, Scribus, Photoshop, Illustrator, Inkscape, Digikam, RawTheraphee, etc. You have two types of icc profiles:
 +
[[ File:Kiki matrix profile.png |500px|thumb|center|Matrix shaper profiles have a few parameters that describe the color space which are then interpolated between, this requires a lot of maths.]]
 +
;Matrix Shaper profiles.
 +
:These are delivered alongside Krita. Matrix shaper profiles are made by setting parameters and interpolating between these to get the exact size of the color space. Due to this, Krita's color space browser can give you a lot of information on these profiles. Such profiles are also preferable as working space.
 +
[[ File:Kiki cLUTprofiles.png |500px|thumb|center|cLUT profiles work by holding tables of each color in a colorspace and their respective coordinates in a reference space. For CMYK this is typically L*A*B* and for the rest XYZ. These tables are tricky to make, which means these profiles are a lot rarer.]]
 +
;cLUT profiles
 +
:These are fairly rare, and primarily used to describe printer profiles, such as CMYK. cLUT, or Color Look-up Table profiles store far more data than Matrix shaper profiles, so they can hold data of little particularities caused by, for example, unexpected results from mixing pigments. This is a far more organic approach to describing a color space, hence why a lot of programs that don't care for color management much don't support these.
 +
 
 +
The interesting thing about icc profiles is that your working space can be larger than your device space. This is generally not bad. However, when converting, you do end up with the question of how to translate the working space values.
 +
 
 +
;Perceptual
 +
:This just squishes the values of the working space into the space it's converted to. It's a nice method to see all possible values in this, but not so good if you want accurate color reproduction. Use this if you want to see all colors in an image, or want to express all possible contrasts. Doesn't work with Matrix Shaper profiles, defaults to relative colorimetric.
 +
 
 +
;Absolute Colorimetric
 +
:The opposite to Perceptual, Absolute colorimetric will attempt to retain all the correct colors at whatever cost, which may result in awful looking colors. Recommended only for reproduction work. Doesn't work with Matrix Shaper profiles in Krita due to ICC v4 workflow standards.
 +
 
 +
;Relative Colorimetric
 +
:An in between solution between perceptual and absolute, relative will try to fit whatever colors it can match between color spaces. It does this by aligning the white and black points. It cuts off the rest to their respective borders. This is what all matrix shaper profiles default to during conversion, because the ICC v4 workflow specifies to only use Relative Colorimetric for matrix shaper profiles.
  
;Hue
 
:The tint of a color, or, whether it's red, yellow, green, etc. Krita's Hue is measured in 360 degrees, with 0 being red, 120 being green and 240 being blue.
 
 
;Saturation
 
;Saturation
:How vibrant a color is. Saturation is slightly different between HSV and the others. In HSV it's a measurement of the difference between two base colors being used and three base colors being used. In the others it's a measurement of how close a color is to grey, and sometimes this value is called '''Chroma'''. Saturation ranges from 0(grey) to 100(pure color).
+
:Does anything to retain colorfulness, even hue will be sacrificed. Used in infographics. Doesn't work with Matrix Shaper profiles, defaults to relative colorimetric.
;Value
+
:Sometimes known as Brightness. Measurement of how much the pixel needs to light up. Also measured from 0 to 100.
+
;Lightness
+
:Where a color aligns between white and black. This value is non-linear, and puts all the most saturated possible colors at 50. Ranges from 0 to 100.
+
;Intensity
+
:Similar to lightness, except it acknowledges that yellow (1,1,0) is lighter than blue (0,0,1). Ranges from 0 to 100.
+
;Luma(Y')
+
:Similar to lightness and Intensity, except it weights the red, green and blue components based real-life measurements of how much light a color reflects to determine it's lightness. Ranges from 0 to 100. Luma is welknown for being used in film-colour spaces.
+
  
====Grayscale====
+
''ICC profile version'' is the last thing to keep in mind when dealing with ICC profiles. Krita delivers both Version 2 and Version 4 profiles, with the later giving better results in doing color maths, but the former being more widely supported (as seen below in 'interoperability with other programs'). This is also why Krita defaults to V2, and we recommend using V2 when you aren't certain if the other programs you are using support V4.
This color space only registers grey-values.
+
This is useful, because by only registering grey values, it only needs one channel of information, which in turn means the image becomes much lighter in memory consumption!
+
  
This is useful for textures, but also anything else that needs to stay grayscale, like Black and White comics.
+
==LUT docker and hdr imaging==
  
====CMYK====
+
[[File:LUT Management Docker.png|thumb|300px|center]]
Cyan, Magenta, Yellow, Key
+
  
This is the color space of printers. Unlike computers, printers have these four colors, and adding them all adds up to black instead of white. This is thus also called a 'subtractive' color space.
+
The [[Special:mylanguage/Krita/Manual/Dockers/LUTManagement|LUT Docker]] is the second important bit of color management in Krita that is shared between Krita and programs like Blender, Natron and Nuke, and only uses Look Up Tables that are configured via a config file.
  
While CMYK has a smaller 'gamut' than RGB, however, it's still recommended to use a RGB working space profile to do your editing in. Afterwards, you can convert it to your printer's CMYK profile using either perceptual or relative colorimetric intend.
+
You can set the workingspace of the image under input color space, and the display to sRGB or your own LUT if you have added it to the config. View in this case is for proofing transforms to a certain display device.
Or you can just give the workspace rgb image to your printer and let them handle the work.
+
  
====YCrCb====
+
Component, exposure, gamma, whitepoint and blackpoint are knobs which allows you to modify the display filter.
Luminosity, Red-chroma, Blue-chroma
+
  
YCrCb stands for
+
[[File:Krita HDR 1.svg|thumb|800px|center]]
;Y'/Y
+
:Luma/Luminosity, thus, the amount of light a color reflects.
+
;Cr
+
:Red Chroma. This value measures how red a color is versus how green it is.
+
;Cb
+
:Blue Chroma. This value measures how blue a color is versus how yellow it is.
+
  
This color space is often used in photography and in (correct) implementations of JPEG. As humans you're much more sensitive to the lightness of colors, and thus JPEG tries to compress the Cr and Cb channels, and leave the Y channel in full quality.
+
As explained before, we can see our monitor as a telescope or binocular into the world of our picture. Which means it distorts our view of the image a little. But we can modify this binocular, or display filter to see our image in a different way. For example, to allow us to see the white in an image that are whiter than the white of our screen. To explain what that means, we need to think about what white is.
  
{{Warning|Krita doesn't bundle a ICC profile for YCrCb on the basis of there being no open source ICC profiles for this color space. It's unusable without one, and also probably very untested.}}
+
For example, white, on our monitor is full red, full green and full blue. But it's certainly different from white on our paper, or the color of milk, white from the sun, or even the white of our cell-phone displays.
  
====XYZ====
+
Black similarly, is brighter on a LCD display than a LED one, and incomparable with the black of a carefully sealed room.
  
Back in 1931, the CIE(Institute of Color and Light), was studying human color perception.
+
This means that there's potentially blacker blacks than screen black, and white whites than screen white. However, for simplicity's sake we still assign the black-point and the white-point to certain values. From there, we can determine whether a white is whiter than the white point, or a black black than the black-point.
In doing so, they made the first color spaces, with XYZ being the one best at approximating human vision.
+
  
It's almost impossible to really explain what XYZ is.
+
The LUT docker allows us to control this display-filter and modify the distortion. This is useful when we start modifying images that are made with scene referred values, such as HDR photos, or images coming out of a render engine.
Y is in this case supossed to be the luminosity.
+
Z is almost equal to human cone-response to blue.
+
X is supossed to be the rest.
+
  
XYZ is used as a baseline reference for all other profiles and models. All color conversions are done in XYZ, and all profiles coordinates match XYZ.
+
[[File:Krita HDR2.svg|thumb|800px|center]]
  
====L*a*b*====
+
So, for example, we can chose to scale whiter-than-screen-white to our screen-white so we can see the contrasts there.
Stands for:
+
;L*
+
:Lightness, similar to luminosity in this case.
+
;a*
+
:a* in this case is the measurement of how magenta a color is versus how green it is.
+
;b*
+
:b* in this case is a measurement of how yellow a color is versus how blue a color is.
+
  
L*a*b* is supossed to be a more comprehensible variety of XYZ and the most 'complete' of all color spaces. It's often used as an in between colour space in conversion, but even more as the correct color space to do color-balancing in. It's far easier to adjust the contrast and color tone in L*a*b*.
+
The point of this is that you can take advantage of more lightness detail in an image. While you can't see the difference between screen white and whiter-than-screen-white(because you screen can't show the difference), graphics programs can certainly use it.
  
L*a*b* is technically the same as Photoshop's LAB. Photoshop specifically uses CIELAB d50.
+
A common example is matching the lighting between a 3d model and a real world scene. Others are advanced photo retouching, with much more contrast information available to the user. In painting itself, this allows you to create an image where you can be flippant with the contrast, and allow yourself to go as bright as you'd like.
  
{{Warning|L*a*b* is a little broken. Many Blending modes don't work as expected, pure grey is off, exporting doesn't work right, and 32bit float gives black bars}}
+
LUT docker manipulations are per view, so you can create a new view and set it to luminosity. This way you can see the image in both color as well as grayscale and keep a good eye on your values.
  
===Color depth and HDR(High Dynamic Range)===
+
Another example is to carefully watch the gradients in a certain section.
  
====Indexed color====
+
Like Icc, the LUT Docker allows you to create a profile of sorts for your device. In this case it's the 'lut', which stands for 'Look Up Table', and which can be added to OCIO by modifying the config file.
Indexed color is not supported by Krita, but mentioned here for extensiveness.
+
Indexed color is a limited amount of colors per an image. These images often have a palette which tells the computer which index related to which color.
+
;1bit
+
:Only two colours in total, usually black and white.
+
;4bit(16 colors)
+
:16 colors in total, these are famous as many early games were presented in this color palette.
+
;8bit
+
:256 colors in total. 8bit images are commonly used in games to save on memory for textures and sprites.
+
  
====Direct color====
+
==Linear and Gamma corrected colors==
Direct color makes use of a more proper coordinate system and color models. It's measured these days in bits per channel.
+
  
;4bit per channel(not supported by Krita)
+
Now, the situation we talked about above is what we would call 'linear'. Each step of brightness is the same value.
:Also known as Hi-color, or 16bit color total. A bit of an old system, and not used outside of specific displays.
+
Our eyes do not perceive linearly. Rather, we find it more easy to distinguish between darker greys than we do between lighter greys.
;8bit per channel
+
:Also known as "True Color", "Millions of colors" or "24bit/32bit". The standard for many screens, and the lowest bit-depth Krita can handle.
+
;16bit per channel.
+
:One step up from 8bit, 16bit per channel allows for colors that can't be displayed by the screen. However, due to this, you are more likely to have smoother gradients. Sometimes known as "Deep Color".
+
;16bit float
+
:Similar to 16bit, but with more precision. Where 16bit only allows coordinates like [1, 4, 3], 16bit float has coordinates like [0.15, 0.70, 0.3759] . Required for HDR images.
+
;32bit float
+
:similar to 16bit float but with even higher precision. The native color depth of OpenColor IO, and thus faster than 16bit float in HDR images, if not heavier.
+
  
====HDR====
+
As humans are the ones using computers, we have made it so that computers will give more room to darker values in the coordinate system of the image. We call this 'gamma-encoding', because it is applying a gamma function to the TRC or transfer function of an image. The TRC in this case being the Tone Response Curve or Tone Reproduction Curve or Transfer function (because color management specialists hate themselves), which tells your computer or printer how much color corresponds to a certain value.
HDR stands for High Dynamic Range.
+
HDR images are images that acknowledge that your screen's white is not the whitest white possible. For example, an HDR image of a sunny day with clouds in the sky can see that the areas around the sun has many more whites than the areas around the shadows. Where a normal image would say that those whites around the sun are the same color, HDR images try to define it as different colors, which is invaluable for Photographers and Computer graphics artists.
+
  
Krita supports HDR images through OpencolorIO and the LUT docker.
+
[[File:Pepper tonecurves.png|thumb|center|800px|One of the most common issues people have with Krita's color management is the assigning of the right colorspace to the encoded TRC. Above, the center Pepper is the right one, where the encoded and assigned TRC are the same. To the left we have a Pepper encoded in sRGB, but assigned a linear profile, and to the right we have a Pepper encoded with a linear TRC and assigned a sRGB TRC. Image from [http://www.peppercarrot.com/ Pepper & Carrot] ]]
You'll need to use the scRGB working space in either 16bit float or 32bit float to work with HDR imaging.
+
  
===Color profiles===
+
The following table shows how there's a lot of space being used by lighter values in a linear space compared to the default sRGB trc of our modern computers and other TRCs available in our delivered profiles:
So to make it simple, a color profile is just a file defining a set of colors inside a pure XYZ color cube.
+
This "color set" can be used to define different things:
+
  
-the colors inside an image
+
{| style="text-align:right;" cellpadding="10"
 +
| Linear TRC
 +
| style="background-color:#000000;"|
 +
| style="background-color:#494949;"|
 +
| style="background-color:#666666;"|
 +
| style="background-color:#7c7c7c;"|
 +
| style="background-color:#8d8d8d;"|
 +
| style="background-color:#9c9c9c;"|
 +
| style="background-color:#aaaaaa;"|
 +
| style="background-color:#b6b6b6;"|
 +
| style="background-color:#c1c1c1;"|
 +
| style="background-color:#cbcbcb;"|
 +
| style="background-color:#d5d5d5;"|
 +
| style="background-color:#dedede;"|
 +
| style="background-color:#e7e7e7;"|
 +
| style="background-color:#efefef;"|
 +
| style="background-color:#f7f7f7;"|
 +
| style="background-color:#ffffff;"| 
 +
|-
 +
| sRGB TRC
 +
| style="background-color:#000000;"|
 +
| style="background-color:#111111;"|
 +
| style="background-color:#222222;"|
 +
| style="background-color:#333333;"|
 +
| style="background-color:#444444;"|
 +
| style="background-color:#555555;"|
 +
| style="background-color:#666666;"|
 +
| style="background-color:#777777;"|
 +
| style="background-color:#888888;"|
 +
| style="background-color:#999999;"|
 +
| style="background-color:#aaaaaa;"|
 +
| style="background-color:#bbbbbb;"|
 +
| style="background-color:#cccccc;"|
 +
| style="background-color:#dddddd;"|
 +
| style="background-color:#eeeeee;"|
 +
| style="background-color:#ffffff;"| 
 +
|-
 +
| Lab L* TRC
 +
| style="background-color:#000000;"|
 +
| style="background-color:#151515;"|
 +
| style="background-color:#222222;"|
 +
| style="background-color:#303030;"|
 +
| style="background-color:#3f3f3f;"|
 +
| style="background-color:#4e4e4e;"|
 +
| style="background-color:#5e5e5e;"|
 +
| style="background-color:#6f6f6f;"|
 +
| style="background-color:#7f7f7f;"|
 +
| style="background-color:#919191;"|
 +
| style="background-color:#a2a2a2;"|
 +
| style="background-color:#b4b4b4;"|
 +
| style="background-color:#c6c6c6;"|
 +
| style="background-color:#d9d9d9;"|
 +
| style="background-color:#ececec;"|
 +
| style="background-color:#ffffff;"| 
 +
|-
 +
| Rec 709 TRC
 +
| style="background-color:#000000;"|
 +
| style="background-color:#212121;"|
 +
| style="background-color:#323232;"|
 +
| style="background-color:#434343;"|
 +
| style="background-color:#535353;"|
 +
| style="background-color:#636363;"|
 +
| style="background-color:#737373;"|
 +
| style="background-color:#838383;"|
 +
| style="background-color:#939393;"|
 +
| style="background-color:#a3a3a3;"|
 +
| style="background-color:#b2b2b2;"|
 +
| style="background-color:#c2c2c2;"|
 +
| style="background-color:#d1d1d1;"|
 +
| style="background-color:#e1e1e1;"|
 +
| style="background-color:#f0f0f0;"|
 +
| style="background-color:#ffffff;"| 
 +
|-
 +
| Gamma 1.8 TRC
 +
| style="background-color:#000000;"|
 +
| style="background-color:#151515;"|
 +
| style="background-color:#2d2d2d;"|
 +
| style="background-color:#424242;"|
 +
| style="background-color:#565656;"|
 +
| style="background-color:#686868;"|
 +
| style="background-color:#797979;"|
 +
| style="background-color:#8a8a8a;"|
 +
| style="background-color:#9a9a9a;"|
 +
| style="background-color:#a9a9a9;"|
 +
| style="background-color:#b8b8b8;"|
 +
| style="background-color:#c7c7c7;"|
 +
| style="background-color:#d6d6d6;"|
 +
| style="background-color:#e4e4e4;"|
 +
| style="background-color:#f1f1f1;"|
 +
| style="background-color:#ffffff;"| 
 +
|-
 +
| Gamma 2.2 TRC
 +
| style="background-color:#000000;"|
 +
| style="background-color:#090909;"|
 +
| style="background-color:#1c1c1c;"|
 +
| style="background-color:#303030;"|
 +
| style="background-color:#424242;"|
 +
| style="background-color:#565656;"|
 +
| style="background-color:#666666;"|
 +
| style="background-color:#787878;"|
 +
| style="background-color:#898989;"|
 +
| style="background-color:#9a9a9a;"|
 +
| style="background-color:#acacac;"|
 +
| style="background-color:#bcbcbc;"|
 +
| style="background-color:#cdcdcd;"|
 +
| style="background-color:#dedede;"|
 +
| style="background-color:#efefef;"|
 +
| style="background-color:#ffffff;"| 
 +
|}
  
-the colors a device can output
+
If you look at linear of rec 709 TRCs, you can see there's quite a jump between the darker shades and the lighter shades, while if we look at the Lab L* TRC or the sRGB TRC, which seem more evenly spaced.
 +
This is due to our eyes' sensitivity to darker values. This also means that if you do not have enough bit depth, an image in a linear space will look as if it has ugly banding. Hence why, when we make images for viewing on a screen, we always use something like the LAB L*, sRGB or Gamma 2.2 TRCs to encode the image with.
  
Choosing the right workspace profile to use depends on how much colors you need and on the bit depth you plan to use.
+
However, this modification to give more space to darker values does lead to wonky color maths when mixing the colors.
Imagine a line with the whole color spectrum from pure black (0,0,0) to pure blue (0,0,1) in a pure XYZ color cube.
+
If you divide it choosing steps at a regular interval, you get what is called a linear profile, with a gamma=1 curve represented as a straight line from 0 to 1.
+
With 8bit/channel bit depth, we have only 256 values to store this whole line.
+
If we use a linear profile as described above to define those color values, we will miss some important visible color change steps and have a big number of values looking the same (leading to posterization effect).
+
This is why was created the sRGB profile to fit more different colors in this limited amount of values, in a perceptually regular grading, by applying a custom gamma curve (see picture here: http://en.wikipedia.org/wiki/SRGB) to emulate the standard response curve of old CRT screens.
+
So sRGB profile is optimised to fit all colors that most common screen can reproduce in those 256 values per R/G/B channels.
+
Some other profiles like Adobe RGB are optimised to fit more printable colors in this limited range, primarily extending cyan-green hues. Working with such profile can be useful to improve print results, but is dangerous if not used with a properly profiled and/or calibrated good display.
+
Most common CMYK workspace profile can usually fit all their colors within 8bit/channel depth, but they are all so different and specific that it's usually better to work with a regular RGB workspace first and then convert the output to the appropriate CMYK profile.
+
  
Starting with 16bit/channel, we already have 65536 values instead of 256, so we can use workspace profiles with higher gamut range like Wide-gamut RGB or Pro-photo RGB, or even unlimited gamut like scRGB.
+
We can see this with the following experiment:
  
But sRGB being a generic profile (even more as it comes from old CRT specifications..) , there is big chances that your monitor have actually a different color response curve, and so color profile.
+
[[File:Krita 2 9 colormanagement blending 1.png|500px|center]]
So when you are using sRGB workspace and have a proper screen profile loaded (see next point), Krita knows that the colors the file contains are within the sRGB color space, and converts those sRGB values to corresponding color values from your monitor profile to display the canvas.
+
  
Note that when you export your file and view it in another software, this software has to do two things:
+
Red circle and blue circle over grey, half blurred. In a gamma-corrected environment, this gives an odd black border. In a linear environment, this gives us a nice gradation.
-read the embed profile to know the "good" color values from the file (which most software do nowadays; when they don't they usually default to sRGB, so in the case described here we're safe )
+
-and then convert it to the profile associted to the monitor (which very few software actually does, and just output to sRGB.. so this can explain some viewing differences most of the time).
+
  
Krita uses profiles extensively, and comes bundled with many.
+
This also counts for Krita's color smudge brush:
  
The most important one is the one of your own screen. It doesn't come bundled, and you have to make it with a color profiling device.
+
[[File:Krita 2 9 colormanagement blending 2.png ||Thumb||500px|center||That's right, the 'muddying' of colors as is a common complaint by digital painters everywhere, is in fact, a gamma-corrected colorspace mucking up your colors. If you had been working in LAB to avoid this, be sure to try out a linear rgb color space.]]
In case you don't have access to such a device, you can't make use of Krita's color management as intended. However, Krita does allow the luxury of picking any of the other bundled profiles as working spaces.
+
  
====Profiling devices====
+
===What is happening under the hood===
Profiling devices, called Colorimeters, are tiny little cameras of a kind that you connect to your computer via an usb, and then you run a profiling software(often delivered alongside of the device).
+
Imagine we want to mix red and green.
  
{{Note|If you don't have software packaged with your colorimeter, or are unhappy with the results, we recommend [http://www.argyllcms.com/ Argyllcms] }}
+
First, we would need the color coordinates of red and green inside our color space's color model. So, that'd be...
  
The little camera then measures what the brightest red, green, blue, white and black are like on your screen using a predefined white as base. It also measures how grey the color grey is.
+
{| class="wikitable" |-
 +
!Color || Red || Green || Blue
 +
|-
 +
|style="text-align:right;"| Red||style="color:#f00;"| 1.0||0.0||0.0
 +
|-
 +
|style="text-align:right;"| Green||0.0||style="color:#0f0;"|1.0||0.0
 +
|}
  
It then puts all this information into an ICC profile, which can be used by the computer to correct your colors.
+
We then average these coordinates over three mixes:
  
It's recommended not to change the "calibration"(contrast, brightness, you know the menu) of your screen after profiling. Doing so makes the profile useless, as the qualities of the screen change significantly while calibrating.
+
{| class="wikitable" |-
 +
!  || Red || Mix1||Mix2||Mix3|| Green
 +
|-
 +
|style="text-align:right;"| Red||style="color:#f00;"| 1.0||style="color:#b00;"|0.75||style="color:#800;"|0.5||style="color:#400;"|0.25||0.0
 +
|-
 +
|style="text-align:right;"| Green||0.0||style="color:#040;"|0.25||style="color:#080;"|0.5||style="color:#0b0;"|0.75||style="color:#0f0;"|1.0
 +
|-
 +
|style="text-align:right;"| Blue||0.0||0.0||0.0||0.0||0.0
 +
|}
  
To make your screen display more accurate colors, you can do one or two things:
+
But to figure out how these colors look on screen, we first put the individual values through the TRC of the color-space we're working with:
profile your screen or calibrate and profile it.
+
  
Just profiling your screen means measuring the colors of your monitor with its native settings. and put those values in a color profile, which can be used by color-managed application to adapt source colors to the screen for optimal result.
+
[[File:Basicreading3trcsv2.svg  |thumb|800px|center]]
Calibrating and profiling means the same except that first you try to calibrate the screen colors to match a certain standard setting like sRGB or other more specific profiles.
+
Calibrating is done first with hardware controls (lightness, contrast, gamma curves), and then with software that creates a vcgt (video card gamma table) to load in the GPU.
+
  
So when or why should you do just one or both?
+
Then we fill in the values into the correct spot. Compare these to the values of the mixture table above!
+
Profiling only:
+
-with a good monitor:
+
you can get most of the sRGB colors and lot of extra colors not inside sRGB. So this can be good to have more visible colors.
+
-with a bad monitor:
+
you will get just a subset of actual sRGB, and miss lot of details, or even have hue shifts. Trying to calibrate it before profiling can help to get closer to full-sRGB colors.
+
  
Calibration+profiling:
+
<!-- [[File:Basic mix table2.svg ]] -->
-bad monitors, as explained just before.
+
-multi-monitor setup: when using several monitors, and specially in mirror mode where both monitor have the same content, you can't have this content color-managed for both screen profiles. In such case, calibrating both screens to match sRGB profile (or another standard for high-end monitors if they both support it) can be a good solution.
+
-soft-proofing: when you need to match an exact rendering context for soft-proofing, calibrating can help getting closer to the expected result. Though switching through several monitor calibration and profiles should be done extremely carefuly.
+
  
===Krita color management workflow===
+
{| style="font-family:mono;" cellpadding="5"
So how are you going to use this to your advantage?
+
First, it's best to try and get your screen profiled for this. It allows you to see the colors more accurately.
+
! colspan="3" | Linear TRC
After that, you'll want to pick your favourite working space profile to work in and set that in the preferences.
+
! colspan="3" | sRGB TRC
Once you finish your image, you'll consider how to export it.
+
! colspan="3" | Lab L* TRC
 +
! colspan="3" | Rec 709 TRC
 +
! colspan="3" | Gamma = 1.8 TRC
 +
! colspan="3" | Gamma = 2.2 TRC
 +
|- style="text-align:center;"
 +
|
 +
|R
 +
|G
 +
|B
 +
|R
 +
|G
 +
|B
 +
|R
 +
|G
 +
|B
 +
|R
 +
|G
 +
|B
 +
|R
 +
|G
 +
|B
 +
|R
 +
|G
 +
|B
 +
|-
 +
|style="text-align:right;"|Red
 +
| style="background-color:#ff0000;"|1.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|1.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|1.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|1.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|1.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|1.0
 +
| style="background-color:#ff0000;"|0.0
 +
| style="background-color:#ff0000;"|0.0
 +
|-
 +
|style="text-align:right;"|Mix1
 +
| style="background-color:#E18900;"|0.75
 +
| style="background-color:#E18900;"|0.25
 +
| style="background-color:#E18900;"|0.0
 +
| style="background-color:#BF3F00;"|0.52
 +
| style="background-color:#BF3F00;"|0.05
 +
| style="background-color:#BF3F00;"|0.0
 +
| style="background-color:#B93A00;"|0.48
 +
| style="background-color:#B93A00;"|0.04
 +
| style="background-color:#B93A00;"|0.0
 +
| style="background-color:#C64F00;"|0.56
 +
| style="background-color:#C64F00;"|0.08
 +
| style="background-color:#C64F00;"|0.0
 +
| style="background-color:#CB5100;"|0.60
 +
| style="background-color:#CB5100;"|0.08
 +
| style="background-color:#CB5100;"|0.0
 +
| style="background-color:#C13C00;"|0.53
 +
| style="background-color:#C13C00;"|0.05
 +
| style="background-color:#C13C00;"|0.0
 +
|-
 +
| style="text-align:right;"|Mix2
 +
| style="background-color:#BCBC00;"| 0.5
 +
| style="background-color:#BCBC00;"|0.5
 +
| style="background-color:#BCBC00;"|0.0
 +
| style="background-color:#7F7F00;"|0.21
 +
| style="background-color:#7F7F00;"|0.21
 +
| style="background-color:#7F7F00;"|0.0
 +
| style="background-color:#777700;"|0.18
 +
| style="background-color:#777700;"|0.18
 +
| style="background-color:#777700;"|0.0
 +
| style="background-color:#8b8b00;"|0.27
 +
| style="background-color:#8b8b00;"|0.27
 +
| style="background-color:#8b8b00;"|0.0
 +
| style="background-color:#929200;"|0.29
 +
| style="background-color:#929200;"|0.29
 +
| style="background-color:#929200;"|0.0
 +
| style="background-color:#818100;"|0.22
 +
| style="background-color:#818100;"|0.22
 +
| style="background-color:#818100;"|0.0
 +
|-
 +
| style="text-align:right;"|Mix3
 +
| style="background-color:#89E100;"|0.25
 +
| style="background-color:#89E100;"|0.75
 +
| style="background-color:#89E100;"|0.0
 +
| style="background-color:#3FBF00;"|0.05
 +
| style="background-color:#3FBF00;"|0.52
 +
| style="background-color:#3FBF00;"|0.0
 +
| style="background-color:#3AB900;"|0.04
 +
| style="background-color:#3AB900;"|0.48
 +
| style="background-color:#3AB900;"|0.0
 +
| style="background-color:#4FC600;"|0.08
 +
| style="background-color:#4FC600;"|0.56
 +
| style="background-color:#4FC600;"|0.0
 +
| style="background-color:#51CB00;"|0.08
 +
| style="background-color:#51CB00;"|0.60
 +
| style="background-color:#51CB00;"|0.0
 +
| style="background-color:#3CC100;"|0.05
 +
| style="background-color:#3CC100;"|0.53
 +
| style="background-color:#3CC100;"|0.0
 +
|-
 +
| style="text-align:right;"| Green
 +
| style="background-color:#00ff00;"| 0.0
 +
| style="background-color:#00ff00;"|1.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|1.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|1.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|1.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|1.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|0.0
 +
| style="background-color:#00ff00;"|1.0
 +
| style="background-color:#00ff00;"|0.0
 +
|}
  
But first let's explain what working profiles are.
 
 
====Screen Profiles vs Working Profiles====
 
If you have your screen profiled, it's not the best idea to work in said profile. This is because your screen shows red green and blue at different intensities. This means, that performing mathematics on the colours(which is done very often in image manipulation software) is difficult, and does not always have the expected result.
 
  
You're actually better off using a working space profile.
 
  
A working space profile is an icc profile that is well behaved. This means that the middle point of the three colour channels is a middle grey. This makes it easier to do image manipulation on them, and get the desired effect.
+
And this is why color mixtures are lighter and softer in linear space. Linear space is more physically correct, but sRGB is more efficient in terms of space, so hence why many images have an sRGB TRC encoded into them.
 +
In case this still doesn't make sense: ''sRGB gives largely '''darker''' values than linear space for the same coordinates.''
  
Examples of working spaces are:
+
So different TRCs give different mixes between colors, in the following example, every set of gradients is in order a mix using linear trc, a mix using srgb trc and a mix using lab L* trc.
*Adobe RGB or Adobe RGB 1998 compatible
+
*ProPhoto RGB
+
*Wide Gamut
+
*scRGB/sRGB. The former is intended for HDR imaging.
+
  
You can also consider to work in 16bit or higher. This allows for more precise gradations and color calculations, though it makes your files rather heavy.
+
[[File:3trcsresult.png |thumb|800px|center]]
  
====Preferences====
+
So, you might be asking, how do I tick this option? Is it in the settings somewhere? The answer is that we have several icc profiles that can be used for this kind of work:
You can change the color profile used by Krita in the preferences. You can pick the default color model, the color profile for correcting your screen and the color profile assumed when pasting images in from another application.
+
  
====Color model per layer or per image.====
+
* scRGB (linear)
You can decide upon a color profile per image, changing them using image-> convert color space.
+
* All 'elle'-profiles ending in 'g10', such as ''sRGB-elle-v2-g10.icc''.
However, you can also have different color profiles per layer, set in Layer ->Convert Layer Color Space.
+
  
====Converting color space====
+
In fact, in all the 'elle'-profiles, the last number indicates the gamma. 1.0 is linear, higher is gamma-corrected and 'srgbtrc' is a special gamma correction for the original sRGB profile.
Using '''Image->convert image color space''' or '''Layer->Convert Layer Color Space''', you can convert the color space of the whole image or a signle layer respectively.
+
  
The dialogue contains the following:
+
If you use the color space browser, you can tell the TRC from the 'estimated gamma' (if it's 1.0, it's linear), or from the TRC widget in Krita 3.0, which looks exactly like the curve graphs above.
  
;Model
+
Even if you do not paint much but, for example, you are making textures for a video game or rendering, using a linear space is very beneficial and will speed up the renderer a little, since it won't have to convert images on its own.
:Choose the color space that you want to convert to.
+
;Depth
+
:Choose the bit depth you wish to convert to.
+
;Profile
+
:Choose the profile you wish to convert to. Using the icon next to this drop down, you can browse your filesystem for an ICC profile not in the list. After selecting it, Krita will add it to the list for use in Krita.
+
  
'''Rendering Intent'''
+
The downside of linear space is of course that white seems very overpowered when mixing with black, because in a linear space, light grays get more room. In the end, while linear space is physically correct, and a boon to work in when you are dealing with physically correct renderers for videogames and raytracing, Krita is a tool and no-one will hunt you down for preferring the dark mixing of the sRGB trc.
How the colors should be converted.
+
;Perceptual(Recommended in most cases)
+
:Will try to convert the colors in such a manner that their relative contrast to each other is maintained.
+
;Relative Colorimetric(Recommended as well)
+
:Will maintain all the colors where the new and old color-space intersect. However, colors in the old colorspace that are outside the new color space will be pushed to the closest 'edge' of the new color space. This method is recomended if you need to have some colors absolutely accurate at the cost of others.
+
;Saturation
+
:Here the 'saturation' of the color will be maintained at all costs, even if the hue has to be shifted. Useful for images where saturation is more important than hue, like infographics.
+
;Absolute Colorimetric
+
:This one tries to reproduce the exact colors of the original image. However, it can fail badly, leading to awful looking results. Recommended only for reproduction work, like scans.
+
;Black-point compensation
+
:This adjusts the whites and black to match up between the old color-space and the new color space.
+
;Allow Little-cms optimisations
+
:Allows optimisations. May not always be beneficial.
+
  
For more info on the subject, please do visit this [http://ninedegreesbelow.com/photography/conversion-intent-settings.html website].
+
==Space size==
 +
Using Krita's color space browser, you can see that there's many different space sizes.
  
====Exporting====
+
[[ File:Basiccolormanagement compare4spaces.png |thumb|800px|center]]
when you finished you image and are ready to export it, you can modify the color space to optimise it:
+
 
 +
How do these affect you image, and why would you use them?
 +
 
 +
The three primary reasons to use a large space:
 +
# Even though you can't see the colors, the computer program does understand them and can do color calculations with it.
 +
# For exchanging between programs and devices: most CMYK profiles are a little bigger than our default sRGB in places, while in other places, it's smaller. To get the best conversion, have your image in a space that encompasses both you screen profile and your printer profile.
 +
# For archival purposes. In other words, maybe monitors of the future will have larger amounts of colors they can show (spoiler: they already do), and this allows you to be prepared for that.
 +
 
 +
Let's compare the following gradients in different spaces:
 +
 
 +
[[ File:Basiccolormanagement gradientsin4spaces v2.jpg ]][[ File:Basiccolormanagement gradientsin4spaces v2.png ]]
 +
 
 +
On the left we have an artifact-ridden color managed jpeg file with an ACES sRGBtrc v2 profile attached (or not, depending on mediawiki's mood, if not then you can see the exact different between the colors more clearly). This should give an approximation of the actual colors. On the right, we have a sRGB png that was converted in Krita from the base file.
 +
 
 +
Each of the gradients are gradients from the max of a given channel. As you can see, the mid-tone of the ACES color space is much brighter than the mid-tone of the RGB colorspace, and this is because the primaries are further apart.
 +
 
 +
What this means for us is that when we start mixing or applying filters, Krita can output values higher than visible, but also generate more correct mixes and gradients. In particular, when color correcting, the bigger space can help with giving more precise information.
 +
 
 +
If you have a display profile that uses a LUT, then you can use perceptual to give an indication of how your image will look.
 +
 
 +
Bigger spaces do have the downside they require more precision if you do not want to see banding, so make sure to have at the least 16bit per channel when choosing a bigger space.
 +
 
 +
== Viewing conditions and White Points ==
 +
 
 +
We mentioned viewing conditions before, but what does this have to do with 'white points'?
 +
 
 +
A lot actually, rather, white points describe a type of viewing condition.
 +
 
 +
So, usually what we mean by viewing conditions is the lighting and decoration of the room that you are viewing the image in. Our eyes try to make sense of both the colors that you are looking at actively (the colors of the image) and the colors you aren't looking at actively (the colors of the room), which means that both sets of colors affect how the image looks.
 +
[[ File:Meisje met de parel viewing.png |thumb| 800px|center|'''Left''': Let's ruin Vermeer by putting a bright purple background that asks for more attention than the famous painting itself. '''Center''': a much more neutral backdrop that an interior decorator would hate but brings out the colors. '''Right''': The approximate color that this painting is displayed against in real life in the Maurits House, at the least, last time I was there. Original image from wikipedia commons.]]
 +
This is for example, the reason why museum exhibitors can get really angry at the interior decorators when the walls of the museum are painted bright red or blue, because this will drastically change the way how the painting's colors look. (Which, if we are talking about a painter known for their colors like Vermeer, could result in a really bad experience).
 +
 
 +
 
 +
[[ File:Krita example metamerism.png |thumb|500px|center]]
 +
Lighting is the other component of the viewing condition which can have dramatic effects. Lighting in particular affects the way all colors look. For example, if you were to paint an image of sunflowers and poppies, print that out, and shine a bright yellow light on it, the sunflowers would become indistinguishable from the white background, and the poppies would look orange. This is called [https://en.wikipedia.org/wiki/Metamerism_%28color%29 metamerism], and it's generally something you want to avoid in your color management pipeline.
 +
 
 +
Examples where metamerism could become a problem is when you start matching colors from different sources together.
 +
 
 +
[[ File:White point mix up ex1 01.svg |thumb|500px|center]]
 +
For example, if you are designing a print for a red t-shirt that's not bright red, but not super grayish red either. And you want to make sure the colors of the print match the color of the t-shirt, so you make a dummy background layer that is approximately that red, as correctly as you can observe it, and paint on layers above that dummy layer. When you are done, you hide this dummy layer and sent the image with a transparent background to the press.
 +
 
 +
[[ File:White point mixup ex1 02.png |thumb|300px|center]]
 +
 
 +
But when you get the t-shit from the printer, you notice that all your colors look off, mismatched, and maybe too yellowish (and when did that T-Shirt become purple?).
 +
 
 +
This is where white points come in.
 +
 
 +
You probably observed the t-shirt in a white room where there were incandescent lamps shining, because as a true artist, you started your work in the middle of the night, as that is when the best art is made.
 +
However, incandescent lamps have a black body temperature of roughly 2300-2800K, which makes them give a yellowish light, officially called White Point A.
 +
 
 +
Your computer screen on the other hand, has a black body temperature of 6500K, also known as D65. Which is a far more blueish color of light than the lamps you are hanging.
 +
 
 +
What's worse, Printers print on the basis of using a white point of D50, the color of white paper under direct sunlight.
 +
[[ File:White point mix up ex1 03.svg |thumb|500px|center]]
 +
 
 +
So, by eye-balling your t-shirt's color during the evening, you took it's red color as transformed by the yellowish light. Had you made your observation in diffuse sunlight of an overcast (which is also roughly D65), or made it in direct sunlight light and painted your picture with a profile set to D50, the color would have been much closer, and thus your design would not be as yellowish.
 +
[[ File:White point mixup ex1 03.png | thumb|500px|center|Applying a white balance filter will sort of match the colors to the tone as in the middle, but you would have had a much better design had you designed against the actual color to begin with]]
 +
Now, you could technically quickly fix this by using a white balancing filter, like the ones in G'MIC, but because this error is caught at the end of the production process, you basically limited your use of possible colors when you were designing, which is a pity.
 +
 
 +
Another example where metamerism messes things up is with screen projections.
 +
 
 +
We have a presentation where we mark one type of item with red, another with yellow and yet another with purple. On a computer the difference between the colors are very obvious.
 +
[[ File:Krita metamerism presentation.svg |thumb|800px|center]]
 +
However, when we start projecting, the lights of the room aren't dimmed, which means that the tone scale of the colors becomes crunched, and yellow becomes near indistinguishable from white. Furthermore, because the light in the room is slightly yellowish, the purple is transformed into red, making it indistinguishable from the red. Meaning that the graphic is difficult to read.
 +
 
 +
In both cases, you can use Krita's color management a little to help you, but mostly, you just need to be ''aware'' of it, as Krita can hardly fix that you are looking at colors at night, or the fact that the presentation hall owner refuses to turn off the lights.
 +
 
 +
That said, unless you have a display profile that uses LUTs, such as an OCIO lut or a cLUT icc profile, white point won't matter much when choosing a working space, due to weirdness in the icc v4 workflow which always converts matrix profiles with relative colorimetric, meaning the white points are matched up.
 +
 
 +
==Bit depth.==
 +
 
 +
Bit depth basically refers to the amount of working memory per pixel you reserve for an image.
 +
 
 +
Like how having a A2 paper in real life can allow for much more detail in the end drawing, it does take up more of your desk than a simple A4 paper.
 +
 
 +
However, this does not just refer to the size of the image, but also how much precision you need per color.
 +
 
 +
To illustrate this, I'll briefly talk about something that is not even available in Krita:
 +
 
 +
===Indexed Color===
 +
[[File:Kiki lowbit.png |thumb|453px|center]]
 +
;1 bit
 +
:Only two colors in total, usually black and white.
 +
;4 bit (16 colors)
 +
:16 colors in total, these are famous as many early games were presented in this color palette.
 +
;8 bit
 +
:256 colors in total. 8-bit images are commonly used in games to save on memory for textures and sprites.
 +
 
 +
However,  this is not available in Krita. Krita instead works with channels, and counts how many colors per channel you need. This is called 'real color'.
 +
 
 +
===Real Color===
 +
 
 +
;4 bit per channel (not supported by Krita)
 +
:Also known as Hi-color, or 16bit color total. A bit of an old system, and not used outside of specific displays.
 +
;8 bit per channel
 +
:Also known as "True Color", "Millions of colors" or "24 bit/32 bit". The standard for many screens, and the lowest bit-depth Krita can handle.
 +
;16 bit per channel.
 +
:One step up from 8 bit, 16 bit per channel allows for colors that can't be displayed by the screen. However, due to this, you are more likely to have smoother gradients. Sometimes known as "Deep Color".
 +
;16 bit float
 +
:Similar to 16 bit, but with more precision. Where 16 bit only allows coordinates like [1, 4, 3], 16 bit float has coordinates like [0.15, 0.70, 0.3759] . Required for HDR images.
 +
;32 bit float
 +
:similar to 16 bit float but with even higher precision. The native color depth of OpenColor IO, and thus faster than 16 bit float in HDR images, if not heavier.
 +
 
 +
 
 +
This is important if you have a working color space that is larger than your device space: At the least, if you do not want color banding.
 +
 
 +
And while you can attempt to create all your images a 32 bit float, this will quickly take up your RAM. Therefore, it's important to consider which bit depth you will use for what kind of image.
 +
 
 +
==In summary==
 +
 
 +
Krita has two modes of color management:
 +
* Icc works in terms of spaces relative to the CIEXYZ space, and requires an icc profile.
 +
* OCIO works in terms of interpretation, and makes use of luts.
 +
* both can be made with a colorimeter.
 +
* If you want to have a properly color managed workflow, you custom-make one for the input device (your screen) and the output devices (your printer, or target screen). For web the output is always sRGB.
 +
* Set up your screen profiles under settings->configure Krita->color management.
 +
* Do NOT use screen profiles or other device profiles to draw in. Use a working space profile such as any of the elle profiles for this, as the color calculations will be much more predictable and pleasant. Krita will convert between your screen and working space on the fly, allowing you to pick the correct colors. This turns your screen into binoculars to view the image.
 +
* Use the appropriate color management for the appropriate workflow. If you are working with Blender, you will be better off using OCIO, than ICC. If you are working with Scribus or Photoshop, use ICC.
 +
 
 +
Krita does a lot of color calculations, often concerning the blending of colors. These color calculations works best in linear color space, and linear color space requires a bit depth of at the least 16 bit to work correctly. The disadvantage is that linear space can be confusing to work in.
 +
 
 +
If you like painting, have a decent amount of RAM, and are looking to start your baby-steps in taking advantage of Krita's color management, try upgrading from having all your images in sRGB built-in to sRGB-v2-elle-g10.icc or rec2020-v2-elle-g10.icc at 16 bit float. This will give you better color blending while opening up the possibility for you to start working in hdr!
 +
 
 +
 
 +
{{Note|Some graphics cards, such as those of the Nvidia-brand actually have the best performance under 16bit float, because Nvidia cards convert to floating point internally. When it does not need to do that, it speeds up!}}
 +
 
 +
{{Note|No amount of color management in the world can make the image on your screen and the image out of the printer have 100% the same color.}}
 +
 
 +
==Exporting==
 +
When you finished you image and are ready to export it, you can modify the color space to optimize it:
  
 
If you are preparing an image for the web:
 
If you are preparing an image for the web:
*If you use 16bit color depth or higher, convert the image to 8bit color depth. This will make the image much much more smaller.
+
 
*If it's a grayscale image, convert it to grayscale.
+
*If you use 16 bit color depth or higher, convert the image to 8 bit color depth. This will make the image much much smaller.
*If it's a color image, keep it in the working space profile: Many web browsers these days support color profiles embedded into images. Firefox, for example, will try to convert your image to fit the color profile of the other's monitor(if they have one), that way, the image will look near exactly the same on your screen and other profiled monitors.
+
** Currently, Krita does not have built-in dithering. This means that 16- to 18-bit conversions can come out a bit banded. But you can simulate it by adding a fill layer with a pattern, set this fill layer to overlay, and to 5 percent opacity. Then flatten the whole image and convert it to 8 bit. The pattern will function as dithering giving a smoother look to gradients.
 +
*If it's a gray-scale image, convert it to gray-scale.
 +
*If it's a color image, keep it in the working space profile. Many web browsers these days support color profiles embedded into images. Firefox, for example, will try to convert your image to fit the color profile of the visitor's monitor (if they have one), that way, the image will look near exactly the same on your screen and other profiled monitors.
 +
 
 +
 
 +
{{Note|In some versions of Firefox, the colors actually look strange: This is a bug in Firefox, which is because it's [http://ninedegreesbelow.com/galleries/viewing-photographs-on-the-web.html color management system is incomplete], save your png, jpg or tiff without an embedded profile to work around this.}}
  
 
If you are preparing for print:
 
If you are preparing for print:
*You hopefully made the picture in a working space profile, if not convert it to something like adobe rgb.
 
*Check with the printer what kind of image they expect. Maybe they expect RGB color space, or perhaps they have their own profile.
 
  
====Filters and blending modes.====
+
*Hopefully you made the picture in a working space profile instead of the custom profile of your screen. If not, convert it to something like adobe rgb, sRGB or rec2020.
Maybe you have noticed that blending modes in LAB don't work like they do in RGB or CMYK. This is because the blending modes work by doing a bit of maths on the color coordinates, and because color coordinates are different per color space, the blending modes look different.
+
*Check with the printer what kind of image they expect. Maybe they expect sRGB color space, or perhaps they have their own profile.
 +
 
 +
==Interaction with other applications==
 +
 
 +
===Blender===
 +
If you wish to use Krita's OCIO functionality, and in particular in combination with Blender's color management, you can try to have it use Blender's OCIO config.
 +
 
 +
Blender's OCIO config is under <Blender-folder>/version number/datafiles/colormanagement.
 +
Set the LUT docker to use the OCIO engine, and select the config from the above path. This will give you Blender's input and screen spaces, but not the looks, as those aren't supported in Krita yet.
 +
 
 +
===Windows Photo Viewer===
 +
You might encounter some issues when using different applications together. One important thing to note is that the standard Windows Photo Viewer application does not handle modern ICC profiles. Krita uses version 4 profiles; Photo Viewer can only handle version 2 profiles. If you export to JPEG with an embedded profile, Photo Viewer will display your image much too dark.
 +
 
 +
==Example workflows==
 +
Here are some example workflows to get a feeling your color management workflow.
 +
 
 +
As mentioned before, input for your screen is set via settings->configure Krita->color management, or via the LUT docker's 'screen space'. Working space is set via new file per document, or in the LUT docker via 'input space'.
 +
 
 +
===Webcomic===
 +
[[File:Krita-colormanaged-workflow_webcomic.svg|800px|center]]
 +
;Input
 +
:Your screen profile. (You pick colors via your screen)
 +
;Workingspace
 +
:sRGB (the default screen profile) or any larger profile if you can spare the bit depth and like working in them.
 +
;Output
 +
:sRGB, icc version 2, sRGB trc for the internet, and a specialized CMYK profile from the printing house for the printed images.
 +
 
 +
Use the sRGB-elle-V2-srgbtrc.icc for going between inkscape, photoshop, painttool sai, illustrator, Gimp, mypaint, mangastudio, paintstorm studio, mypaint, artrage, scribus, etc. and Krita.
 +
 
 +
If you are using a larger space via ICC, you will only be able to interchange it between Krita, Photoshop, Illustrator, GIMP 2.9, Manga Studio and Scribus. All others assume sRGB for your space, no matter what, because they don't have color management.
 +
 
 +
If you are going between Krita and Blender, Nuke or Natron, use OCIO and set the input space to 'sRGB', but make sure to select the sRGB profile for icc when creating a new file.
 +
 
 +
For the final for the web, convert the image to sRGB 8 bit, srgbtrc, do not embed the icc profile. Then, if using png, put it through something like pngcrush or other png optimisers. sRGB in this case is chosen because you can assume the vast majority of your audience hasn't profiled their screen, nor do they have screens that are advanced enough for the wide gamut stuff. Hence we convert to the screen default for the internet, sRGB.
 +
 
 +
===Print===
 +
 
 +
[[ File:Krita-colormanaged-workflow print.svg |800px|center]]
 +
;Input
 +
:Your screen profile. (You pick colors via your screen)
 +
;Workingspace
 +
:sRGB or rec2020 if you can afford the bit-depth being 16 bit.
 +
;Output
 +
:specialised CMYK profile from the printing house for the printed images.
 +
 
 +
The CMYK profiles are different per printer, and even per paper or ink-type so don't be presumptuous and ask ahead for them, instead of doing something like trying to paint in any random CMYK profile. As mentioned in the viewing conditions section, you want to keep your options open.
 +
 
 +
You can set the advanced color selector to transform to a given profile via settings->configure Krita->advanced color selector settings. There, tick 'color selector uses a different color space than the image' and select the CMYK profile you are aiming for. This will limit your colors a little bit, but keep all the nice filter and blending options from RGB.
 +
 
 +
===Games===
 +
[[ File:Krita-colormanaged-workflow games.svg|800px|center ]]
 +
;Input
 +
:Your screen profile. (You pick colors via your screen)
 +
;Workingspace
 +
:sRGB or grayscale linear for roughness and specular maps.
 +
;Output
 +
:This one is tricky, but in the end it'll be sRGB for the regular player.
 +
 
 +
So this one is tricky. You can use OCIO and ICC between programs, but recommended is to have your images to the engine in sRGB or grayscale. Many physically based renderers these days allow you to set whether an image should be read as a linear or srgbtrc image, and this is even vital to have the images being considered properly in the physically based calculations of the game renderer.
 +
 
 +
While game engines need to have optimised content, and it's recommended to stay within 8 bit. Future screens may have higher bit-depths. When renderers start supporting higher bit-depths, it may be beneficial to develop a workflow where the working-space files are larger-than-currently-needed and you run some scripts to optimise them for your current render needs. The larger working-space files make updating the game in the future for fancier screens less of a drag.
 +
 
 +
Normal maps and heightmaps are officially supossed to be defined with a 'non-color data' working space, but you'll find that most engines will not care much for this.
 +
 
 +
Specular, glossiness, metalness and roughness maps are all based on linear calculations, and when you find that a certain material has a metalness of 0.3, this is 30% gray in a linear space. Therefore, make sure to select a linear space to work in, and to tell the renderer that this is a linear space image.
 +
 
 +
==External Links==
 +
 
 +
* [https://www.youtube.com/watch?v=x0-qoXOCOow Visualising the XYZ colorspace]
 +
* [http://www.cambridgeincolour.com/tutorials/gamma-correction.htm Basics of gamma correction]
 +
* [https://www.panda3d.org/blog/the-new-opengl-features-in-panda3d-1-9/ Panda3d example of how an image that has gamma encoded without the 3d renderer being notified of it having gamma-encoding can result in too dark images]
 +
* [http://ninedegreesbelow.com/photography/linear-gamma-blur-normal-blend.html 2d examples of the effect of gamma-encoding on color maths]
 +
* [http://www.argyllcms.com/doc/ColorManagement.html Basic overview colormanagement from argylcms manual]
  
 
{{Prevnext2
 
{{Prevnext2
| prevpage=Special:myLanguage/Krita/Manual/Basic_Concepts | nextpage=Special:myLanguage/Krita/Manual/WorkingWithImages
+
| prevpage=Special:MyLanguage/Krita/Manual/Interface | nextpage=Special:MyLanguage/Krita/Manual/ColorManagement/ColorModels| prevtext=Interface | nexttext=Color Models
| prevtext=Basic Concepts | nexttext=Working With Images
+
 
| index=Special:myLanguage/Krita/Manual | indextext=Back to Menu
 
| index=Special:myLanguage/Krita/Manual | indextext=Back to Menu
 
}}
 
}}

Latest revision as of 03:52, 25 July 2016

You may have heard that Krita has something called color-management. Or maybe you just wondered what all these 'color model' and 'color profile' things you can find in the menus mean. Color management is pretty useful for people who work in digital imaging professionally, and hopefully this page will explain why.

Basic info

If you've never worked with color management before, and have no clue what it is, then know that you've probably been working in the 8bit RGB color space with the sRGB profile. This means you can choose for sRGB built-in or sRGB-elle-v2-srgbtrc.icc. With the new color space browser this profile is marked with (default) when using 8bit.

We'll go into what these terms mean in the theory, but if you're here only for trying to figure out which is the default, you now know it. Maybe, after reading this, you may feel like changing the default, to get new and interesting results from filters, blending modes, or just the color smudge brush.

What is the problem?

To explain the point of color management, you'd first need to learn which problem color management tries to solve.

Let us imagine a kindergarten:

The class of 28 children is subdivided in groups of 7. Each group has their own table.

The teacher gives them a painting assignment: They need to paint a red triangle, a blue square, a green circle and put a yellow border around the three. The kids are very experienced with painting already, so the teacher can confidently leave the smarter ones to their own devices, and spent more time on those who need help.

The following results come from painting:

Even though all groups had the same assignment, each group's result looks different.

Krita 2 9 colormanagement group1.png

Group 1 had vermillion red, citron yellow and ultramarine blue to their disposal. This means their triangle looks nice and red, but their circle's green is muddy. This is because ultramarine is too dark of a blue to create nice greens with.

Krita 2 9 colormanagement group2.png

Group 2 had magenta red, citron yellow and cerulean blue. Magenta is a type of red that is closer to pink, opossed to vermillion, which is closer to orange. However, their green looks nice because cerulean is a much lighter blue.

Krita 2.9 colormanagement group3.png

Group 3 had vermillion red, citron yellow, edmerald green and cerulean blue. They didn't mix their green, and thus ended up with a purer color.

Krita 2.9 colormanagement group4.png

Finally, group 4 has Vermillion red, citron yellow and cerulean blue. Their colors probably look like what you imagined.

Now, these are kindergarteners, so this isn't the largest problem in the world. However, imagine that something like this happened at a printing company? Imagine four printers printing the same magazine with wildly different results? That would be disastrous!

For this purpose, we invented color management.

What is color management?

Color management is, dryly put, a set of systems that tries to have the same color translate properly between color devices.

It usually works by attempting to covert a color to the reference color space XYZ. XYZ is a coordinate system that has a spot for all colors that the average human eye can see.

From XYZ it can then be translated back into another device space, such as RGB(for screens), or CMYK(for printers).

Krita has two systems dedicated to color management. On one hand we have lcms2, which deal with Icc-profiles, and on the other we have OCIO, which deal with LUT color management.

To give a crude estimate, ICC profiles deal with keeping colors consistent over many interpretations of devices(screens, printers) by using a reference space, and OCIO deals with manipulating the interpretation of said colors.

Within both we can identify the following color spaces:

Device spaces
Device spaces are those describing your monitor, and have to be made using a little device that is called "colorimeter". This device, in combination with the right software, measures the strongest red, green and blue your screen can produce, as well as the white, black and grey it produces. Using these and several other measurements it creates an icc profile unique to your screen. You set these in Krita's color management tab.
By default we assume sRGB for screens, but it's very likely that your screen isn't exactly fitting sRGB, especially if you have a high quality screen, where it may be a bigger space instead. Device spaces are also why you should first consult with your printer what profile they expect. Many printing houses have their own device profiles for their printers, or may prefer doing color conversion themselves.
You can read more about colorimeter usage here.
Working spaces
These are delivered alongside Krita for ICC, and downloadable from the OCIO website for OCIO. Working spaces are particularly nice to do color calculations in, which programs like Krita do often. It's therefore recommended to have a working space profile for your image.
Aesthetic or Look spaces
These are special spaces that have been deformed to give a certain look to an image. Krita doesn't deliver Look profiles for ICC, nor does it yet support Look spaces for OCIO.

Color managed workflow

Knowing this about these spaces of course doesn't give you an idea how to use them, but it does make it easier to explain how to use them. So let us look at a typical color management workflow:

A typical example of a color managed workflow. We have input from scanners and cameras, which we convert to a working space that can be used between different editing software, and is converted to an output space for viewing on screen or printing.

In a traditional color managed workflow, we usually think in terms of real world colors being converted to computer colors and the other way around. So, for example photos from a camera or scanned in images. If you have a device space of such a device, we first assign said device space to the image, and then convert it to a working space.

We then do all our editing in the working space, and use the working space to communicate between editing programs. In Krita's case, due to it having two color management systems, we use ICC profiles between programs like Gimp 2.9+, Inkscape, Digikam and Scribus, and OCIO configuration between Blender and Natron.

You also store your working files in the working space, just like how you have the layers unmerged in the working file, or have it at a very high resolution.

Sometimes, we apply aesthetic or 'look' spaces to an image as part of the editing process. This is rather advanced, and probably not something to worry about in Krita's case.

Then, when we're done editing, we try to convert to an output space, which is another device space. This can be CMYK for printers or a special screen RGB profile. When you are dealing with professional printing houses, it is best to ask them about this step. They have a lot of experience with doing the best conversion, and may prefer to do the conversion from your working space to the device space of their printers.

Another form of output is the way your screen displays the color. Unlike regular output, this one is done all the time during editing: After all, you need to be able to see what you are doing, but your screen is still a device with a device space, so it does distort how the image looks. In this manner, you can see your screen as a set of binoculars you have to look through to see your image at all.

Therefore, without a profiled monitor, you actually don't know what the actual colors you are working with are like, because the computer doesn't know the relevant properties of your screen. So if you profiled your monitor, give Krita the profile in the settings, and select the sRGB space to draw in, you are for the first time seeing the actual colors of the sRGB space.

So what does this mean?

When we paint from scratch, we can see our screen profile as the input space, because we use it to determine what colors to pick. This somewhat simplifies the workflow, but makes the screen profile and viewing conditions more important.

Now, photographers and people who do a tricky discipline of VFX called 'color grading' will go completely mad over trying to get the colors they put in to come out 100% correctly, and will even count in factors like the time of day and the color they painted their walls. For example, if the wall behind your computer is pure red, your eyes will adjust to be less sensitive to red, which means that the colors they pick in the program could come out redder. We call these the viewing conditions.

Thankfully, artists have to worry a slight bit less about this. As illustrations are fully handmade, we are able to identify the important bits and make appropriate contrasts between colors. This means that even if our images turn out to be slightly redder than intended, it is less likely the whole image is ruined. If we look back at the kindergarten example above, we still understand what the image was supposed to look like, despite there being different colors on each image. Furthermore, because the colors in illustrations are deliberately picked, we can correct them more easily on a later date. Yet, at the same time, it is of course a big drag to do this, and we might have had much more flexibility had we taken viewing conditions under consideration.

That said, for artists it is also very useful to understand the working spaces. Different working spaces give different results with filters and mixing, and only some working spaces can be used for advanced technology like HDR.

Similarly, Krita, as a program intended to make images from scratch, doesn't really worry about assigning workspaces after having made the image. But because you are using the screen as a binocular to look at your image, and to pick colors, you can see your screen's device space as an input space to the image. Hence why profiling your monitor and giving the profile to Krita in the settings can help with preparing your work for print and future ventures in the long run.

Overall, it is kinda useful to keep things like viewing conditions in the back of your mind. Many professional artists use a mid-grey color as their default canvas background because they find they create much more dynamic images due to having improved their viewing conditions. It is also why a lot of graphics programs, including Krita, come with a dark theme nowadays. (Though, of course this might also be because dark themes can be considered cool, who knows.)

We go over the type of pitfalls that are specific to artists painting from scratch in the viewing conditions section, but let's first take a look at our color management systems.

Icc profiles

An Icc profile is a set of coordinates describing the extremities of the device space within XYZ, and it is the color management data you use to communicate your working space to printers and applications that are designed for the print industry, such as GIMP, Scribus, Photoshop, Illustrator, Inkscape, Digikam, RawTheraphee, etc. You have two types of icc profiles:

Matrix shaper profiles have a few parameters that describe the color space which are then interpolated between, this requires a lot of maths.
Matrix Shaper profiles.
These are delivered alongside Krita. Matrix shaper profiles are made by setting parameters and interpolating between these to get the exact size of the color space. Due to this, Krita's color space browser can give you a lot of information on these profiles. Such profiles are also preferable as working space.
cLUT profiles work by holding tables of each color in a colorspace and their respective coordinates in a reference space. For CMYK this is typically L*A*B* and for the rest XYZ. These tables are tricky to make, which means these profiles are a lot rarer.
cLUT profiles
These are fairly rare, and primarily used to describe printer profiles, such as CMYK. cLUT, or Color Look-up Table profiles store far more data than Matrix shaper profiles, so they can hold data of little particularities caused by, for example, unexpected results from mixing pigments. This is a far more organic approach to describing a color space, hence why a lot of programs that don't care for color management much don't support these.

The interesting thing about icc profiles is that your working space can be larger than your device space. This is generally not bad. However, when converting, you do end up with the question of how to translate the working space values.

Perceptual
This just squishes the values of the working space into the space it's converted to. It's a nice method to see all possible values in this, but not so good if you want accurate color reproduction. Use this if you want to see all colors in an image, or want to express all possible contrasts. Doesn't work with Matrix Shaper profiles, defaults to relative colorimetric.
Absolute Colorimetric
The opposite to Perceptual, Absolute colorimetric will attempt to retain all the correct colors at whatever cost, which may result in awful looking colors. Recommended only for reproduction work. Doesn't work with Matrix Shaper profiles in Krita due to ICC v4 workflow standards.
Relative Colorimetric
An in between solution between perceptual and absolute, relative will try to fit whatever colors it can match between color spaces. It does this by aligning the white and black points. It cuts off the rest to their respective borders. This is what all matrix shaper profiles default to during conversion, because the ICC v4 workflow specifies to only use Relative Colorimetric for matrix shaper profiles.
Saturation
Does anything to retain colorfulness, even hue will be sacrificed. Used in infographics. Doesn't work with Matrix Shaper profiles, defaults to relative colorimetric.

ICC profile version is the last thing to keep in mind when dealing with ICC profiles. Krita delivers both Version 2 and Version 4 profiles, with the later giving better results in doing color maths, but the former being more widely supported (as seen below in 'interoperability with other programs'). This is also why Krita defaults to V2, and we recommend using V2 when you aren't certain if the other programs you are using support V4.

LUT docker and hdr imaging

LUT Management Docker.png

The LUT Docker is the second important bit of color management in Krita that is shared between Krita and programs like Blender, Natron and Nuke, and only uses Look Up Tables that are configured via a config file.

You can set the workingspace of the image under input color space, and the display to sRGB or your own LUT if you have added it to the config. View in this case is for proofing transforms to a certain display device.

Component, exposure, gamma, whitepoint and blackpoint are knobs which allows you to modify the display filter.

Krita HDR 1.svg

As explained before, we can see our monitor as a telescope or binocular into the world of our picture. Which means it distorts our view of the image a little. But we can modify this binocular, or display filter to see our image in a different way. For example, to allow us to see the white in an image that are whiter than the white of our screen. To explain what that means, we need to think about what white is.

For example, white, on our monitor is full red, full green and full blue. But it's certainly different from white on our paper, or the color of milk, white from the sun, or even the white of our cell-phone displays.

Black similarly, is brighter on a LCD display than a LED one, and incomparable with the black of a carefully sealed room.

This means that there's potentially blacker blacks than screen black, and white whites than screen white. However, for simplicity's sake we still assign the black-point and the white-point to certain values. From there, we can determine whether a white is whiter than the white point, or a black black than the black-point.

The LUT docker allows us to control this display-filter and modify the distortion. This is useful when we start modifying images that are made with scene referred values, such as HDR photos, or images coming out of a render engine.

Krita HDR2.svg

So, for example, we can chose to scale whiter-than-screen-white to our screen-white so we can see the contrasts there.

The point of this is that you can take advantage of more lightness detail in an image. While you can't see the difference between screen white and whiter-than-screen-white(because you screen can't show the difference), graphics programs can certainly use it.

A common example is matching the lighting between a 3d model and a real world scene. Others are advanced photo retouching, with much more contrast information available to the user. In painting itself, this allows you to create an image where you can be flippant with the contrast, and allow yourself to go as bright as you'd like.

LUT docker manipulations are per view, so you can create a new view and set it to luminosity. This way you can see the image in both color as well as grayscale and keep a good eye on your values.

Another example is to carefully watch the gradients in a certain section.

Like Icc, the LUT Docker allows you to create a profile of sorts for your device. In this case it's the 'lut', which stands for 'Look Up Table', and which can be added to OCIO by modifying the config file.

Linear and Gamma corrected colors

Now, the situation we talked about above is what we would call 'linear'. Each step of brightness is the same value. Our eyes do not perceive linearly. Rather, we find it more easy to distinguish between darker greys than we do between lighter greys.

As humans are the ones using computers, we have made it so that computers will give more room to darker values in the coordinate system of the image. We call this 'gamma-encoding', because it is applying a gamma function to the TRC or transfer function of an image. The TRC in this case being the Tone Response Curve or Tone Reproduction Curve or Transfer function (because color management specialists hate themselves), which tells your computer or printer how much color corresponds to a certain value.

One of the most common issues people have with Krita's color management is the assigning of the right colorspace to the encoded TRC. Above, the center Pepper is the right one, where the encoded and assigned TRC are the same. To the left we have a Pepper encoded in sRGB, but assigned a linear profile, and to the right we have a Pepper encoded with a linear TRC and assigned a sRGB TRC. Image from Pepper & Carrot

The following table shows how there's a lot of space being used by lighter values in a linear space compared to the default sRGB trc of our modern computers and other TRCs available in our delivered profiles:

Linear TRC
sRGB TRC
Lab L* TRC
Rec 709 TRC
Gamma 1.8 TRC
Gamma 2.2 TRC

If you look at linear of rec 709 TRCs, you can see there's quite a jump between the darker shades and the lighter shades, while if we look at the Lab L* TRC or the sRGB TRC, which seem more evenly spaced. This is due to our eyes' sensitivity to darker values. This also means that if you do not have enough bit depth, an image in a linear space will look as if it has ugly banding. Hence why, when we make images for viewing on a screen, we always use something like the LAB L*, sRGB or Gamma 2.2 TRCs to encode the image with.

However, this modification to give more space to darker values does lead to wonky color maths when mixing the colors.

We can see this with the following experiment:

Krita 2 9 colormanagement blending 1.png

Red circle and blue circle over grey, half blurred. In a gamma-corrected environment, this gives an odd black border. In a linear environment, this gives us a nice gradation.

This also counts for Krita's color smudge brush:

That's right, the 'muddying' of colors as is a common complaint by digital painters everywhere, is in fact, a gamma-corrected colorspace mucking up your colors. If you had been working in LAB to avoid this, be sure to try out a linear rgb color space.

What is happening under the hood

Imagine we want to mix red and green.

First, we would need the color coordinates of red and green inside our color space's color model. So, that'd be...

Color Red Green Blue
Red 1.0 0.0 0.0
Green 0.0 1.0 0.0

We then average these coordinates over three mixes:

Red Mix1 Mix2 Mix3 Green
Red 1.0 0.75 0.5 0.25 0.0
Green 0.0 0.25 0.5 0.75 1.0
Blue 0.0 0.0 0.0 0.0 0.0

But to figure out how these colors look on screen, we first put the individual values through the TRC of the color-space we're working with:

Basicreading3trcsv2.svg

Then we fill in the values into the correct spot. Compare these to the values of the mixture table above!


Linear TRC sRGB TRC Lab L* TRC Rec 709 TRC Gamma = 1.8 TRC Gamma = 2.2 TRC
R G B R G B R G B R G B R G B R G B
Red 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0
Mix1 0.75 0.25 0.0 0.52 0.05 0.0 0.48 0.04 0.0 0.56 0.08 0.0 0.60 0.08 0.0 0.53 0.05 0.0
Mix2 0.5 0.5 0.0 0.21 0.21 0.0 0.18 0.18 0.0 0.27 0.27 0.0 0.29 0.29 0.0 0.22 0.22 0.0
Mix3 0.25 0.75 0.0 0.05 0.52 0.0 0.04 0.48 0.0 0.08 0.56 0.0 0.08 0.60 0.0 0.05 0.53 0.0
Green 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0


And this is why color mixtures are lighter and softer in linear space. Linear space is more physically correct, but sRGB is more efficient in terms of space, so hence why many images have an sRGB TRC encoded into them. In case this still doesn't make sense: sRGB gives largely darker values than linear space for the same coordinates.

So different TRCs give different mixes between colors, in the following example, every set of gradients is in order a mix using linear trc, a mix using srgb trc and a mix using lab L* trc.

3trcsresult.png

So, you might be asking, how do I tick this option? Is it in the settings somewhere? The answer is that we have several icc profiles that can be used for this kind of work:

  • scRGB (linear)
  • All 'elle'-profiles ending in 'g10', such as sRGB-elle-v2-g10.icc.

In fact, in all the 'elle'-profiles, the last number indicates the gamma. 1.0 is linear, higher is gamma-corrected and 'srgbtrc' is a special gamma correction for the original sRGB profile.

If you use the color space browser, you can tell the TRC from the 'estimated gamma' (if it's 1.0, it's linear), or from the TRC widget in Krita 3.0, which looks exactly like the curve graphs above.

Even if you do not paint much but, for example, you are making textures for a video game or rendering, using a linear space is very beneficial and will speed up the renderer a little, since it won't have to convert images on its own.

The downside of linear space is of course that white seems very overpowered when mixing with black, because in a linear space, light grays get more room. In the end, while linear space is physically correct, and a boon to work in when you are dealing with physically correct renderers for videogames and raytracing, Krita is a tool and no-one will hunt you down for preferring the dark mixing of the sRGB trc.

Space size

Using Krita's color space browser, you can see that there's many different space sizes.

Basiccolormanagement compare4spaces.png

How do these affect you image, and why would you use them?

The three primary reasons to use a large space:

  1. Even though you can't see the colors, the computer program does understand them and can do color calculations with it.
  2. For exchanging between programs and devices: most CMYK profiles are a little bigger than our default sRGB in places, while in other places, it's smaller. To get the best conversion, have your image in a space that encompasses both you screen profile and your printer profile.
  3. For archival purposes. In other words, maybe monitors of the future will have larger amounts of colors they can show (spoiler: they already do), and this allows you to be prepared for that.

Let's compare the following gradients in different spaces:

Basiccolormanagement gradientsin4spaces v2.jpgBasiccolormanagement gradientsin4spaces v2.png

On the left we have an artifact-ridden color managed jpeg file with an ACES sRGBtrc v2 profile attached (or not, depending on mediawiki's mood, if not then you can see the exact different between the colors more clearly). This should give an approximation of the actual colors. On the right, we have a sRGB png that was converted in Krita from the base file.

Each of the gradients are gradients from the max of a given channel. As you can see, the mid-tone of the ACES color space is much brighter than the mid-tone of the RGB colorspace, and this is because the primaries are further apart.

What this means for us is that when we start mixing or applying filters, Krita can output values higher than visible, but also generate more correct mixes and gradients. In particular, when color correcting, the bigger space can help with giving more precise information.

If you have a display profile that uses a LUT, then you can use perceptual to give an indication of how your image will look.

Bigger spaces do have the downside they require more precision if you do not want to see banding, so make sure to have at the least 16bit per channel when choosing a bigger space.

Viewing conditions and White Points

We mentioned viewing conditions before, but what does this have to do with 'white points'?

A lot actually, rather, white points describe a type of viewing condition.

So, usually what we mean by viewing conditions is the lighting and decoration of the room that you are viewing the image in. Our eyes try to make sense of both the colors that you are looking at actively (the colors of the image) and the colors you aren't looking at actively (the colors of the room), which means that both sets of colors affect how the image looks.

Left: Let's ruin Vermeer by putting a bright purple background that asks for more attention than the famous painting itself. Center: a much more neutral backdrop that an interior decorator would hate but brings out the colors. Right: The approximate color that this painting is displayed against in real life in the Maurits House, at the least, last time I was there. Original image from wikipedia commons.

This is for example, the reason why museum exhibitors can get really angry at the interior decorators when the walls of the museum are painted bright red or blue, because this will drastically change the way how the painting's colors look. (Which, if we are talking about a painter known for their colors like Vermeer, could result in a really bad experience).


Krita example metamerism.png

Lighting is the other component of the viewing condition which can have dramatic effects. Lighting in particular affects the way all colors look. For example, if you were to paint an image of sunflowers and poppies, print that out, and shine a bright yellow light on it, the sunflowers would become indistinguishable from the white background, and the poppies would look orange. This is called metamerism, and it's generally something you want to avoid in your color management pipeline.

Examples where metamerism could become a problem is when you start matching colors from different sources together.

White point mix up ex1 01.svg

For example, if you are designing a print for a red t-shirt that's not bright red, but not super grayish red either. And you want to make sure the colors of the print match the color of the t-shirt, so you make a dummy background layer that is approximately that red, as correctly as you can observe it, and paint on layers above that dummy layer. When you are done, you hide this dummy layer and sent the image with a transparent background to the press.

White point mixup ex1 02.png

But when you get the t-shit from the printer, you notice that all your colors look off, mismatched, and maybe too yellowish (and when did that T-Shirt become purple?).

This is where white points come in.

You probably observed the t-shirt in a white room where there were incandescent lamps shining, because as a true artist, you started your work in the middle of the night, as that is when the best art is made. However, incandescent lamps have a black body temperature of roughly 2300-2800K, which makes them give a yellowish light, officially called White Point A.

Your computer screen on the other hand, has a black body temperature of 6500K, also known as D65. Which is a far more blueish color of light than the lamps you are hanging.

What's worse, Printers print on the basis of using a white point of D50, the color of white paper under direct sunlight.

White point mix up ex1 03.svg

So, by eye-balling your t-shirt's color during the evening, you took it's red color as transformed by the yellowish light. Had you made your observation in diffuse sunlight of an overcast (which is also roughly D65), or made it in direct sunlight light and painted your picture with a profile set to D50, the color would have been much closer, and thus your design would not be as yellowish.

Applying a white balance filter will sort of match the colors to the tone as in the middle, but you would have had a much better design had you designed against the actual color to begin with

Now, you could technically quickly fix this by using a white balancing filter, like the ones in G'MIC, but because this error is caught at the end of the production process, you basically limited your use of possible colors when you were designing, which is a pity.

Another example where metamerism messes things up is with screen projections.

We have a presentation where we mark one type of item with red, another with yellow and yet another with purple. On a computer the difference between the colors are very obvious.

Krita metamerism presentation.svg

However, when we start projecting, the lights of the room aren't dimmed, which means that the tone scale of the colors becomes crunched, and yellow becomes near indistinguishable from white. Furthermore, because the light in the room is slightly yellowish, the purple is transformed into red, making it indistinguishable from the red. Meaning that the graphic is difficult to read.

In both cases, you can use Krita's color management a little to help you, but mostly, you just need to be aware of it, as Krita can hardly fix that you are looking at colors at night, or the fact that the presentation hall owner refuses to turn off the lights.

That said, unless you have a display profile that uses LUTs, such as an OCIO lut or a cLUT icc profile, white point won't matter much when choosing a working space, due to weirdness in the icc v4 workflow which always converts matrix profiles with relative colorimetric, meaning the white points are matched up.

Bit depth.

Bit depth basically refers to the amount of working memory per pixel you reserve for an image.

Like how having a A2 paper in real life can allow for much more detail in the end drawing, it does take up more of your desk than a simple A4 paper.

However, this does not just refer to the size of the image, but also how much precision you need per color.

To illustrate this, I'll briefly talk about something that is not even available in Krita:

Indexed Color

Kiki lowbit.png
1 bit
Only two colors in total, usually black and white.
4 bit (16 colors)
16 colors in total, these are famous as many early games were presented in this color palette.
8 bit
256 colors in total. 8-bit images are commonly used in games to save on memory for textures and sprites.

However, this is not available in Krita. Krita instead works with channels, and counts how many colors per channel you need. This is called 'real color'.

Real Color

4 bit per channel (not supported by Krita)
Also known as Hi-color, or 16bit color total. A bit of an old system, and not used outside of specific displays.
8 bit per channel
Also known as "True Color", "Millions of colors" or "24 bit/32 bit". The standard for many screens, and the lowest bit-depth Krita can handle.
16 bit per channel.
One step up from 8 bit, 16 bit per channel allows for colors that can't be displayed by the screen. However, due to this, you are more likely to have smoother gradients. Sometimes known as "Deep Color".
16 bit float
Similar to 16 bit, but with more precision. Where 16 bit only allows coordinates like [1, 4, 3], 16 bit float has coordinates like [0.15, 0.70, 0.3759] . Required for HDR images.
32 bit float
similar to 16 bit float but with even higher precision. The native color depth of OpenColor IO, and thus faster than 16 bit float in HDR images, if not heavier.


This is important if you have a working color space that is larger than your device space: At the least, if you do not want color banding.

And while you can attempt to create all your images a 32 bit float, this will quickly take up your RAM. Therefore, it's important to consider which bit depth you will use for what kind of image.

In summary

Krita has two modes of color management:

  • Icc works in terms of spaces relative to the CIEXYZ space, and requires an icc profile.
  • OCIO works in terms of interpretation, and makes use of luts.
  • both can be made with a colorimeter.
  • If you want to have a properly color managed workflow, you custom-make one for the input device (your screen) and the output devices (your printer, or target screen). For web the output is always sRGB.
  • Set up your screen profiles under settings->configure Krita->color management.
  • Do NOT use screen profiles or other device profiles to draw in. Use a working space profile such as any of the elle profiles for this, as the color calculations will be much more predictable and pleasant. Krita will convert between your screen and working space on the fly, allowing you to pick the correct colors. This turns your screen into binoculars to view the image.
  • Use the appropriate color management for the appropriate workflow. If you are working with Blender, you will be better off using OCIO, than ICC. If you are working with Scribus or Photoshop, use ICC.

Krita does a lot of color calculations, often concerning the blending of colors. These color calculations works best in linear color space, and linear color space requires a bit depth of at the least 16 bit to work correctly. The disadvantage is that linear space can be confusing to work in.

If you like painting, have a decent amount of RAM, and are looking to start your baby-steps in taking advantage of Krita's color management, try upgrading from having all your images in sRGB built-in to sRGB-v2-elle-g10.icc or rec2020-v2-elle-g10.icc at 16 bit float. This will give you better color blending while opening up the possibility for you to start working in hdr!


Note-box-icon.png
 
Note
Some graphics cards, such as those of the Nvidia-brand actually have the best performance under 16bit float, because Nvidia cards convert to floating point internally. When it does not need to do that, it speeds up!


Note-box-icon.png
 
Note
No amount of color management in the world can make the image on your screen and the image out of the printer have 100% the same color.


Exporting

When you finished you image and are ready to export it, you can modify the color space to optimize it:

If you are preparing an image for the web:

  • If you use 16 bit color depth or higher, convert the image to 8 bit color depth. This will make the image much much smaller.
    • Currently, Krita does not have built-in dithering. This means that 16- to 18-bit conversions can come out a bit banded. But you can simulate it by adding a fill layer with a pattern, set this fill layer to overlay, and to 5 percent opacity. Then flatten the whole image and convert it to 8 bit. The pattern will function as dithering giving a smoother look to gradients.
  • If it's a gray-scale image, convert it to gray-scale.
  • If it's a color image, keep it in the working space profile. Many web browsers these days support color profiles embedded into images. Firefox, for example, will try to convert your image to fit the color profile of the visitor's monitor (if they have one), that way, the image will look near exactly the same on your screen and other profiled monitors.


Note-box-icon.png
 
Note
In some versions of Firefox, the colors actually look strange: This is a bug in Firefox, which is because it's color management system is incomplete, save your png, jpg or tiff without an embedded profile to work around this.


If you are preparing for print:

  • Hopefully you made the picture in a working space profile instead of the custom profile of your screen. If not, convert it to something like adobe rgb, sRGB or rec2020.
  • Check with the printer what kind of image they expect. Maybe they expect sRGB color space, or perhaps they have their own profile.

Interaction with other applications

Blender

If you wish to use Krita's OCIO functionality, and in particular in combination with Blender's color management, you can try to have it use Blender's OCIO config.

Blender's OCIO config is under <Blender-folder>/version number/datafiles/colormanagement. Set the LUT docker to use the OCIO engine, and select the config from the above path. This will give you Blender's input and screen spaces, but not the looks, as those aren't supported in Krita yet.

Windows Photo Viewer

You might encounter some issues when using different applications together. One important thing to note is that the standard Windows Photo Viewer application does not handle modern ICC profiles. Krita uses version 4 profiles; Photo Viewer can only handle version 2 profiles. If you export to JPEG with an embedded profile, Photo Viewer will display your image much too dark.

Example workflows

Here are some example workflows to get a feeling your color management workflow.

As mentioned before, input for your screen is set via settings->configure Krita->color management, or via the LUT docker's 'screen space'. Working space is set via new file per document, or in the LUT docker via 'input space'.

Webcomic

Krita-colormanaged-workflow webcomic.svg
Input
Your screen profile. (You pick colors via your screen)
Workingspace
sRGB (the default screen profile) or any larger profile if you can spare the bit depth and like working in them.
Output
sRGB, icc version 2, sRGB trc for the internet, and a specialized CMYK profile from the printing house for the printed images.

Use the sRGB-elle-V2-srgbtrc.icc for going between inkscape, photoshop, painttool sai, illustrator, Gimp, mypaint, mangastudio, paintstorm studio, mypaint, artrage, scribus, etc. and Krita.

If you are using a larger space via ICC, you will only be able to interchange it between Krita, Photoshop, Illustrator, GIMP 2.9, Manga Studio and Scribus. All others assume sRGB for your space, no matter what, because they don't have color management.

If you are going between Krita and Blender, Nuke or Natron, use OCIO and set the input space to 'sRGB', but make sure to select the sRGB profile for icc when creating a new file.

For the final for the web, convert the image to sRGB 8 bit, srgbtrc, do not embed the icc profile. Then, if using png, put it through something like pngcrush or other png optimisers. sRGB in this case is chosen because you can assume the vast majority of your audience hasn't profiled their screen, nor do they have screens that are advanced enough for the wide gamut stuff. Hence we convert to the screen default for the internet, sRGB.

Print

Krita-colormanaged-workflow print.svg
Input
Your screen profile. (You pick colors via your screen)
Workingspace
sRGB or rec2020 if you can afford the bit-depth being 16 bit.
Output
specialised CMYK profile from the printing house for the printed images.

The CMYK profiles are different per printer, and even per paper or ink-type so don't be presumptuous and ask ahead for them, instead of doing something like trying to paint in any random CMYK profile. As mentioned in the viewing conditions section, you want to keep your options open.

You can set the advanced color selector to transform to a given profile via settings->configure Krita->advanced color selector settings. There, tick 'color selector uses a different color space than the image' and select the CMYK profile you are aiming for. This will limit your colors a little bit, but keep all the nice filter and blending options from RGB.

Games

Krita-colormanaged-workflow games.svg
Input
Your screen profile. (You pick colors via your screen)
Workingspace
sRGB or grayscale linear for roughness and specular maps.
Output
This one is tricky, but in the end it'll be sRGB for the regular player.

So this one is tricky. You can use OCIO and ICC between programs, but recommended is to have your images to the engine in sRGB or grayscale. Many physically based renderers these days allow you to set whether an image should be read as a linear or srgbtrc image, and this is even vital to have the images being considered properly in the physically based calculations of the game renderer.

While game engines need to have optimised content, and it's recommended to stay within 8 bit. Future screens may have higher bit-depths. When renderers start supporting higher bit-depths, it may be beneficial to develop a workflow where the working-space files are larger-than-currently-needed and you run some scripts to optimise them for your current render needs. The larger working-space files make updating the game in the future for fancier screens less of a drag.

Normal maps and heightmaps are officially supossed to be defined with a 'non-color data' working space, but you'll find that most engines will not care much for this.

Specular, glossiness, metalness and roughness maps are all based on linear calculations, and when you find that a certain material has a metalness of 0.3, this is 30% gray in a linear space. Therefore, make sure to select a linear space to work in, and to tell the renderer that this is a linear space image.

External Links


This page was last modified on 25 July 2016, at 03:52. Content is available under Creative Commons License SA 4.0 unless otherwise noted.