© Square Enix © Goodbye Kansas


Table of Contents

This page provides information about the proper ACEScg color space workflow with V-Ray for Houdini.



Overview


ACES is the Academy Color Encoding System and developed by the Academy of Motion Picture Arts and Sciences. ACEScg is the version of the ACES encoding system for computer graphics, widely adopted in the industry. It has become the industry standard, because compared to sRGB, ACEScg works with a lot more color information, illustrated in this gamut graph.

Starting with version 5, V-Ray comes with implementation of ACEScg out of the box and in this tutorial we explain the rendering setup in V-Ray for Houdini in this color space. There are two ways of setting up ACEScg for rendering and display: manually and by using an OCIO configuration. 

V-Ray supports only ACEScg as the primary color space of choice in CGI and not other ACES color spaces such as ACEScc or ACEScct.

 

The V-Ray ACEScg workflow does not require an active OCIO configuration. The relevant ACEScg transformations are part of the V-Ray core. However, if you do decide to use an OCIO configuration, the OCIO environment variable needs to be set and pointed to a suitable OCIO configuration. See the OCIO configuration section below for more information.

 



Manual Setup


You need to specify ACEScg as the rendering color space in Houdini.

Go to Renderer node > Renderer > Color Mapping and set the RGB Color Space to ACEScg. Alternatively, use the VFH_RGB_COLOR_SPACE environment variable. Set its value to 1 to force the export to ACEScg.

Textures that provide 'color' information (i.e. textures that are not grayscale) should be converted from sRGB Texture to ACES, while grayscale textures should be kept Linear.

Textures for bump mapping, normal mapping, displacement, etc. are usually encoded in linear sRGB and they need to use the Raw color space. If assigned with sRGB or any other color space for them, they produce wrong results.

It is recommended to assign a Raw color space for such textures.

 In all cases, in addition to bitmaps, V-Ray converts the light’s temperature settings, the V-Ray Sun & Sky, the V-Ray Temperature texture, and the V-Ray Material dispersion to the rendering color space.





If you have some files that are exceptions to the rule-based system, you can override the color space of a specific file node from its parameters.

For example, in the Image File texture, go to Bitmap tab > RGB Primaries and select the color space, in which the texture is encoded.





VFB provides a filmic tonemap correction in AMPAS mode that emulates the OCIO display transformation, which can be used instead of an OCIO configuration.


OCIO configuration


An automated OCIO configuration can be set with the OCIO environment variable.
 

There are few steps you need to follow to set this up:

 
  1. Download the Open Color IO configuration package from GitHub: https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/releases

  2. Set the OCIO environment variable and point it to the config.ocio file.
    For example, to set up the OCIO configuration with aces_1.3:

    Windows: set OCIO=C:\OpenColorIO-Configs\cg-config-v1.0.0_aces-v1.3_ocio-v2.0ocio
     
    Linux: export OCIO=/home/user/OpenColorIO-Configs/cg-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio
    
    macOS: export OCIO=/home/user/OpenColorIO-Configs/cg-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio

    The existence of this environment variable controls whether Houdini automatically uses OCIO in various places.


  3. You can then use the OCIO Input Color Space Rules or define custom rules within Houdini.

For more information, see the Getting Started with Environment Variables page.





4. When the VFB Display Correction is switched to OCIO, V-Ray reads the OCIO variable and loads the configuration there as well.





The automated OCIO configuration can be further adjusted with the following OCIO environment variables:

VRAY_VFB_OCIO_INPUT_COLORSPACE – Specifies default OCIO input color space.

VRAY_VFB_OCIO_DISPLAY_DEVICE – Specifies default OCIO display device.

VRAY_VFB_OCIO_VIEW_TRANSFORM – Specifies default OCIO view transform.

For example, set a default OCIO input color space, display device, and view transform:


set OCIO=C:\OpenColorIO-Configs\cg-config-v1.0.0_aces-v1.3_ocio-v2.0ocio
set VRAY_VFB_OCIO_INPUT_COLORSPACE=ACEScg
set VRAY_VFB_OCIO_DISPLAY_DEVICE=sRGB
set VRAY_VFB_OCIO_VIEW_TRANSFORM=ACES 1.0 - SDR Video
export OCIO=/home/user/OpenColorIO-Configs/cg-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio
export VRAY_VFB_OCIO_INPUT_COLORSPACE=ACEScg
export VRAY_VFB_OCIO_DISPLAY_DEVICE=sRGB
export VRAY_VFB_OCIO_VIEW_TRANSFORM=ACES 1.0 - SDR Video
export OCIO=/home/user/OpenColorIO-Configs/cg-config-v1.0.0_aces-v1.3_ocio-v2.0.ocio
export VRAY_VFB_OCIO_INPUT_COLORSPACE=ACEScg
export VRAY_VFB_OCIO_DISPLAY_DEVICE=sRGB
export VRAY_VFB_OCIO_VIEW_TRANSFORM=ACES 1.0 - SDR Video

This setup requires using all of the variables, including the OCIO variable pointed to an OCIO configuration file.

The values for the input color space, display device, and view transform variables need to match the settings available in the configuration file. This example may not work with OCIO configurations other than the one used in the example. For example, VRAY_VFB_OCIO_VIEW_TRANSFORM needs to match a "ACES 1.0 - SDR Video" view transform from the configuration file.

When rendering with V-Ray Standalone or using distributed rendering, the OCIO environment variables must be set accordingly on all machines used for rendering. 

The OCIO configuration files used in V-Ray VFB aren't automatically collected with the rest of the scene assets when sending a job for rendering to another machine. Use the OCIO configuration files from a shared location or copy the files manually to your render nodes to avoid mismatch in render output. 

For more information, see the Getting Started with Environment Variables page.