Color Management

Hello All, I have a series of queries concerning color management in Blender, and as part of a pipeline including 3DS Max.

Where I work I am one of only a few Blender users among a sea of 3DS Max users. The 3DS Max users are using VRay, and proposing an sRGB Raw Color Profile as the final output.

The Problem:

  1. I use sRGB (the color profile) with the AgX view transform in Blender, this is not available in 3DS Max.

  2. 3DS Max/VRay can utilize the sRGB ACEScg color profile (which is a color profile not a view transform, correct me if I’m wrong please), which for all its shortcomings, is what they have.

  3. As I currently understand it, my colleague/s want to use sRGB Raw/Linear, with no view transform or other colour profile like ACEScg. The justification being that clients, who shouldn’t be getting unprocessed imagery anyway, may not have access to the ACEScg profile. Which I don’t quite understand, as I was of the understanding that the colour profile is embedded in the image. This requires clarification please.

  4. sRGB Raw/Linear is sub-optimal as far as I can see, as per my examples below:

Note: Filmic sRGB example not shown below, its irrelevant mostly.


The settings for converting sRGB to the various color profiles/view transforms. This method is required for ACEScg, as it isn’t available in the Color Management panel.


Now we can get into the crux of the issue: Above we see an emissive sphere (red 255,0,0 light) in a white room. The AgX view transform (fairly) accurately interprets the path to white, with some nice gradual falloff to the light. The light source is white(ish) as it should be (think lightsabers: White core, colored light falloff).


ACEScg exhibits some crunching of the colors (these jpgs are 8-bit but are a fair representation of the higher bit-depth imagery) and there is some hue shifting with the yellow bounces on the ground, which as far as I am aware, is inaccurate. But otherwise, this image is usable. Unlike sRGB Raw below:


This is an unusable image. While the majority of the works I’m involved with doesn’t include bright lights, in a worse case scenario this has no use. Please correct me if there is a method of obtaining a more desirable outcome with this color profile please.

Questions

  1. Am I correct in saying that the ACEScg color profile is embedded in the file when saved from Blender/3DS Max etc? Opening it in any other application (Photoshop, After Effects etc) won’t affect this, it is not possible for someone else to not have the color profile on their PC and run in to issues.

  2. AgX is a View Transform, effectively a ‘S’ shaped RGB curve on top of the sRGB Raw image. If so, how is it doing this? Why can I not apply my own S-curve in Photoshop or the Blender compositor to the sRGB Raw image and get a similar result as the AgX output?

  3. Am I missing anything here? I don’t feel 100% confident voicing my opinion on this but I know something isn’t right about using the sRGB Raw image.

I found this video useful on this subject, but does not answer all of my questions: https://youtu.be/GfhPjeZFNVo?si=flFlXqhR2aeQZ7QF

Any guidance anybody can have on this matter will be greatly appreciated, thank you.

Note: I have recreated this scene in 3DS Max and besides the lack of AgX transform, the results are 99% the same.

It looks like you’re comparing blender to itself (with different output varieties), rather than comparing blender outputs to what the 3DSmax users (whom you have to match with) are outputting. Don’t understand why you’re doing that.

I have recreated this scene in 3DS Max with comparable settings and achieved a very similar output. You wouldn’t know the difference between the sRGB Raw Blender render vs the 3DS Max sRGB Raw render. I just can’t share those results here, as I’m not at my work PC.

The viability of Blender has been questioned at my workplace, so if I can prove that a comparable output is possible, I’d be pretty happy.

However, the main question of the color settings is my main issue, I could have (and may well) post this on a 3DS Max/VRay/colorist forum and the questions still stand.

Edit: The use of Blender or another program to make the comparison is almost irrelevant, I need someone to explain or confirm my understanding of the use of an sRGB color profile.

blenders working space is rec 709/srb linear so rendering an exr would give you what you need and if you want to render to another format like tiff, just set blender colormanagement to raw. I would also light and my scenes under standard instead of agx or filmic .

  • standard is srgb non linear and raw would give you the working space which is rec709/srgb linear

depending on your position in the pipeline and understanding of the color pipeline you can make diff choices but untill then stick to the constraints they gave you.

2 Likes

ACEScg is a color gamut just like sRGB. AgX is a view transform and by default Blender renders to ‘AgX base sRGB’. All this means is that it takes the unbound render data (in the linear rec709 gamut) and transforms it with AgX to non-linear rec709 data, aka sRGB to view on your common monitor.

If you want to export the unbound data (linear rec709), you’ll have to either just export in exr, as Blender ignores the view transform when you do that. Or set the view transform to raw and export to any floating point image format such as png or tiff. Ideally in 32-bit for full retention of data, but the difference between it and 16 bit is negligible.

it doesn’t make much sense without more clarification about your situation. What is you and your colleagues’ deliverable to your client?

In your compositor example, the render data is in linear rec709 so you should be converting from that - not from sRGB. The linear data itself is useless to people, you always need to transform it for viewing.

Oh and don’t use standard when you need photorealistic imagery, unless you like to make your life hard.

3 Likes

In your compositor example, the render data is in linear rec709 so you should be converting from that - not from sRGB.

Noted, thank you, I will amend (see below).

What is you and your colleagues’ deliverable to your client?

Client is only going to receive basic compressed video and images (mp4, jpg etc.) for screen based media as far as I am aware. Colleague has stated that ACEScg cannot be used as it may be a color profile that the client might not have access to. This confuses me, as they won’t be getting working files and I was under the impression that color profiles are embedded into the file anyway, so the client ‘not having the profile’ isn’t a thing? Please correct me if I’m wrong.

Oh and don’t use standard when you need photorealistic imagery, unless you like to make your life hard.

Agreed and understood. I used to use Filmic, now I use AgX and this is all part of the point I wish to make about not using an sRGB raw/linear output, unless I have misunderstood your response.

Updated images:
Is this correct now? (Assume Display Device is set to sRGB and View Transform set to Raw).

Linear Rec.709 to sRGB (looks even worse than before)

Linear Rec.709 to ACEScg (much better)

Linear Rec.709 to AgX

Shame I can’t share the 3DS Max imagery at this point, but I need to educate myself on the color profile technicalities anyway.

Some points that I hope can help:

  • ACEScg is a working colorspace, like Linear Rec. 709. It is meant for you and your colleagues to use when you’re passing to each other renders on which you want to further work. It is not meant for final visualization by your client. The client will want a file encoded in the colorspace their screen is or their target audience uses. Very likely, that’ll be sRGB, as most screens are.
  • Most screens are sRGB, so let’s say that the client will want that. AgX, Filmic, and ACES’ output transform are three different ways of encoding an image to sRGB. ACES is confusing because it consists in many things, including ACEScg (the linear color space that can be used as a working color space) and an output transforms (plus a lot more stuff). ACEScg, which you’re using above, is not the output transform, so it does not make sense to give that to the customer! ACES the output transform does the same job that AgX and Filmic do: turning an image into an sRGB image.
  • You and your colleagues should agree on a pipeline to follow for exchanging files. Ideally, you should use EXR, which will encode the files “as they are” (raw), which is to say, in the working color space that the renderer is using. For example, Blender internally uses Linear Rec. 709. If you export a render to an EXR file, it’ll be encoded in that colorspace. I think 3DS Max uses ACEScg by default. Whatever you decide to use, you must agree on it.
  • Better, you can set up OCIO across all workstations and use the same config. OCIO is a color management tool that works in most 3d apps. Blender and 3DS Max support it natively and use it by default. You can just choose a certain OCIO config and then you’re sure that everywhere things will be consistent, as you’ll be working using the same color spaces. I like this config because it includes most existing options an artist might want. 3DS Max allows you to choose a config from the settings. With Blender, you can pass the config from the command line or, better, you can set up a system environment variable “OCIO” pointing to the path of the OCIO config in Win/Mac/Linux and then every application, including 3DS Max, will automatically pick it up and use the same config. Then your colleagues can send you the files in EXR and you can work on them.
  • The final file will be encoded to sRGB using the view transform you prefer, like for example AgX, as you’re doing above.

I hope I have not been too imprecise and this can help with setting up a workflow that… works.

P.S. I think something is wrong with the images above. Can you share the blend file you’re using to generate them?

7 Likes

So yeah basically what Matteo said.

Which just makes me think they don’t know what they’re talking about if all you have to do is send your client mp4s and jpgs.

Chances are slim but you should ask if they need the files for gamuts other than sRGB such as Display- or DCI-P3. Cause then you’d have to find a new view transform if I’m not mistaken.

1 Like

ColorManagement-Tests-V1.blend (1.2 MB)
Blender file for you to review, thanks.

Thank you very much for your feedback and advice. Some of what you said confirmed my thoughts and some gave me new insight :slight_smile:

Whatever you decide to use, you must agree on it.

Agreed, that’s why I’m trying to get a better understanding before I put my thoughts in to the mix.

you can set up OCIO across all workstations and use the same config

Unfortunately security is very tight on our workstations, I only recently got upgraded to Blender 4.2, and now I can’t access the online extensions. Downloading from Github and most websites is not allowed :frowning:

I have more thoughts on the matter but it is late here so will have a rethink for tomorrow. Please let me know if anything unusual is in my Blender file.

Which just makes me think they don’t know what they’re talking about

Either that is true, or I have misunderstood what they’ve told me. It has made me question some of the things I thought I understood, some of which I was wrong about, some of which I did have nailed down. They’re doing a write-up on color management that I will be part of a review for, so I need to know all this before that comes around.

Prior to this, I just made pretty pictures for a living, now I work as part of a team and it’s all a bit more organised. Thank you for your input, it is much appreciated.

If you want to grade the render layer,then make the setup like this.


Works for exported linear rec709 exr as input too

You have to convert to Agx log,otherwise some grading nodes produce artifacts.This is because they calc in numbers 0-1 which the log conversion does to the image range.After the grading you make a cst from AgX log to AgX base sRGB this is the final AgX image transform for Display.

You can ofc place other grading nodes as contrast ect between the cst nodes to your needs.

3 Likes

This a great setup, thank you. However I am bound by the rules of age-old industry standards and must use Adobe apps for this sort of thing.

Although post-processing workflow is another aspect that needs addressing at my workplace. I have always post-processed my work in some way, whether it be basic color correction, grading, effects etc. but some of my colleagues simply just don’t do it at all.

If the app supports OCIO (Adobe’s do), you can convert to AgX Log everywhere, though! That’s the beauty of it :smiley:
I think in general making a proper pipeline is essential to collaborate in a workplace, so convincing them to set it up could be worth a try. You’d have so many less headaches, as at that point every application will work the same.

1 Like

That’s why I’m here.

1 Like

Color management is one kind of a beast…

To my own surprise i often “see” users fighting about the “correct” way to manage color. And this thread has some interesting remarks which may even help me who totally ignored almost any CM.

I learnt something about color perception especially human color vision years ago (and not via Wikipedia) and also that this doesn’t really help if someone uses uncalibrated monitors… and in the end the “viewing user” every time complains that on “his/her” monitor everything is bad (also when “adjusting” the seetings when not really knowing why and what).

This also depends on the surounding light situation (time of day, changing light sources, bad light (neon) ) and “position in the actual circadian rhythm” over the day. So it’s… not easy.

And then comes the color grading expert and changes everything…

In fact it seems some start the grading process when not even looking at the image… sometimes i think one should think more about the lighting of the scene to get some wanted “mood”/ effect like photographers had to do before the digital age… and there are some fantasic photos made :star_struck: before humankind praised the digital god… or more precise: the social media :unamused:

So this always turns into some religious dispute…

:stuck_out_tongue_winking_eye: :smile_cat:

Thats why God invented the raw files. :wink: If you work in a pipeline together with other people using other software you should avoid using color profiles. Let the person who combines all this pictures and films do the work. Its good that you can do a lot of things in Blender like coloring and compositing, but in such a situation its better to work with raw files. Just my two calibrated cents. :face_with_monocle:

2 Likes

Ok, so what does mean in the context of my initial question/s?

@Okidoki’s anecdote is lovely to read and does bear a flavor of truth, but all I want to know is:

  1. What is the best file format to work in? We are a large corporation, but we aren’t making Pixar movies, so using 4K, 32-bit EXR files on less-than-great workstation laptops isn’t really the best idea. Editing them as a sequence in After Effects/Premiere would be a nightmare.

  2. Referencing my example images above, which showcase a worst case scenario of a bright colored light in a white room, how do we get around the sRGB Raw profile creating such a poor image if sRGB Raw is what my colleague is suggesting to use? Blender, 3DS Max, it doesn’t matter the result is the same: An unusable blown-out sea of red.

Are you suggesting that simply saving the Rec709 image out of Blender as 32-bit EXR will give me all the color information I need? (Then I need to figure out the equivalent for 3DS Max)

Thats what i am refering to. You should load these both sequences, the Blender one and the Max one, into AE/Premiere and then convert them to a smaller format before you work with them. Or better, get a faster computer for comp work.

1 Like

If you save out a raw EXR file from Blender (or in theory any software), without any transform/LUT, etc applied/encoded in it, then it doesn’t matter what it looks like, since its just the full raw data.

You can then take that file and using whichever software (Blender, Photoshop, Resolve, etc) and apply AGX or Filmic or ACES, etc and you will get the exact same result compared to applying that same LUT from the start.

You may still ‘preview’ the renders , etc as AGX, etc in Blender and if multiple people are working on the same project, then EVERYONE needs to be creating and previewing using the same LUT. So that ones person red sign doesn’t appear pink on another persons.

The reason for still rendering to raw EXR, is so that after its all put together, a final colour grade can be done, which just doesn’t work if everything is a mix of hard encoded LUTs (which are different) into PNG files.

As for file size, etc, it may not have to be bigger.

5 Likes

So this is an interesting tidbit I have seen mentioned before but haven’t given much thought.

Sorry @JWakerley If this goes too off topic.

@pixelgrip in photography, it’s very rare to shoot log pictures and edit those. I always assumed because the benefits of raw are far greater and the reason video footage is captured in log is due to digital storage constraints.

Do we have a list of nodes that work on 0-1 and nodes that work on 0-inf?

When I look at Render Raw by CGCookie, they also just use O/P/S and the Glare node (though with a bunch of math nodes) on the linear rec709 data and then just AgX it to sRGB (and then a bunch of grading nodes after that)

1 Like