Our studio is looking to adopt an ACES workflow. Currently we are using 3ds Max and VRay 3.6 (yes we need to upgrade)
I have a couple of questions on workflow and theory when it comes to using an ACES workflow vs Linear sRGB. I may be incorrect in some of my information and assumptions so please feel free to correct me.
My understanding so far is:
ACEScg is a linear color working space that specifies a wider gamut of colors than the sRGB linear gamut and can be encoded into a 16 bit floating exr. The benefits of using ACEScg is that it can allow for a greater range of color transformations in post (comp and color grading) and since its color gamut envelopes not only sRGB, but also P3, Rec709, and Rec2020 converting it into those color spaces should allow for the maximum use of those color spaces for delivery. Also archiving assets in ACEScg color space should allow them to not have to be “remastered” if future standards/better displays come along (future proofing)
To work in it properly all textures, matte paintings, etc should either be converted or best case scenario created in the ACEScg gamut.
If I am correct VRay does its light calculations in linear sRGB space (this might be wrong) and if I save out an EXR from the VRay raw image dialog, I get an EXR that is encoded in linear sRGB. So even if I pre-convert my textures to ACEScg or use the OCIO map to convert them on the fly (not preferable) I’m still getting an image that is clamped into the sRGB color gamut.
If this is correct is there a way to save out the EXR in anything other than linear sRGB or does this even matter if VRay is doing its calculations in the sRGB color gamut and therefore wouldn’t be able to output a wide color gamut image.
If all of that is correct what would the best workflow be for implementing VRay and Max as part of an ACES workflow?
There is currently no UI option for the change, but you can type this into the maxScript listener:
renderers.current.options_rgbColorSpace = 2
And the whole V-Ray pipeline will turn into AcesCG, without the need to use custom maps and descriptors.
renderers.current.options_rgbColorSpace = 1
Will return V-Ray to sRGB.
Notice this is a render setting, so resetting the V-Ray settings, or opening a new scene, will have it return to its sRGB default.
It will however save correctly with a scene, so no need to change it after the first time.
No, this is not correct. If you specify all input colors in ACEScg, the output EXR will be in ACEScg as well (i.e. what you put in, is what you get out).
The only problems might be colors specified as “temperature” values and the V-Ray sun and sky. For V-Ray Next Update 2, we will have a way to deal with this as well.
For one approach to handle ACEScg, please look here (it’s for Maya, but the approach is the same in 3ds Max):
THANKS ^Lele^ and Vlado. I’m going to do some tests! I’ll make sure I keep an eye out on the V-Ray sun and sky though I think this won’t cause us any type of significant issue currently. You guys are the best as always.
So i have now done some initial testing and I am still getting exr’s that have an SRGB color profile assigned to the exr. For quick testing I just have a sphere with a bitmap running through an OCIO map onto a vraymaterial, a vrayplane with a vray color also going through an ocio map, and vray color going through an ocio map feeding gi environment. Rendering it using the vray raw output as an exr. I have also tried with both vanilla settings and doing the **“**renderers.current.options_rgbColorSpace = 2”
that have an SRGB color profile assigned to the exrHow are you checking this? V-Ray doesn’t generally write any specific color profile information in the EXR files.
I have also tried with both vanilla settings and doing the **"**renderers.current.options_rgbColorSpace = 2"This option is only available in V-Ray Next unfortunately.
I’ve opened it in both photoshop 2019, and Krita. However thanks to you posting this I figured out that both krita and photoshop were being “helpful” and assigning the color profile to it. It appears that photoshop is setup by default that if a document has no color profile assigned it will assign one for you (same with krita it appears). My bad and, thanks so very much. Everything is right as rain now!!!
I’m quite interested in a correct workflow for this in max/next. I’ve done some testing and for instance with a hdri in a vraylightdome, and using acescg (input colorspace : utility-linear-srgb, display : aces, viewtransform : srgb), with the srgb button unchecked.
Result is a very nice smooth lighting, good contrast, and woow, what a lot of nice detailing in the highlights ! woow !
my only problem is to manage to save it as a JPG keeping what i see in the VFB, because saved result is not the same…
edited : saved a couple is screen captures (linear, aces, and problem with aces not saved correctly in jpg),
the lens flare is the vray lens on top of the hdri
I would suggest outputting as an exr and try using fusion (or any other compositing software) to save it down to jpg. Not to be cryptic but there are some “things” that I’ve found that I don’t like about using ACES currently that I’m workshopping.
From my understanding OCIO translations don’t get baked into the images which is why you were getting the incorrect results with your .jpg
I am unclear on the step by steps on this, but you might be able to create a .cube LUT file for translating ACEScg to the RRT/ODT sRGB Output and then use the LUT and bake that in since the vray frame buffer does allow for saving the LUT into the image.
Yeah, well, for now did enabled the srgb curve button (makes it very whitish), and applied a manual curve corresponding to the srgb curve… (edit : works in screen but not saved in jpg)
It should be noted that the the script that Lele posted earlier will not work if Vray GPU is set as your current renderer. It is possible that Vray GPU isn’t capable of having the pipeline switch over to ACEScg. Vlado or Lele will hopefully chime in on that
The option for GPU is subtly different, but it exists (as most other V-Ray cpu options. they all live under “V_Ray_settings”) renderers.current.V_Ray_settings.options_rgbColorSpace=2
I have however no idea if it works or not.
Here are the settings that seems to work fine…so if someone can get that translated to a good working .cube file to use with the vfb…he gets a beer (even a default vraysky looks so much nicer and subtle…)