This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Basics
Rendering
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

Color Correction

This section describes settings for color correction of the scene.

Scene Color Settings

Local Tonemapper#

Local tone mapping uses a spatially varying mapping function determined by the neighborhood of a pixel, which allows an increase in the local contrast and the visibility of some details of an image. The local tonemapper enables the generation of a mask based on the entire image, providing more pleasing results because human vision is more sensitive to local contrast.

Local Tonemapper Settings
Local Tonemapper The value indicating if the local tonemapper is enabled. disabled by default.
Console access: render_local_tonemapper (API control)
Debug The the value indicating whether the debug mode for the local tonemapper is enabled. disabled by default.
Console access: render_local_tonemapper_debug (API control)
Blur Resolution The resolution of the blur applied during the tone mapping process.
Notice
It is recommended to use the Half resolution in conjunction with the Blur Upscale mode enabled.
One of the following values:
  • Quarter - quarter resolution
  • Half - half resolution
  • Full - full resolution (by default)

Console access: render_local_tonemapper_blur_resolution (API control)
Blur Upscale The value indicating whether upscaling the blurred image from the Quarter or Half resolution to the Full one is enabled. disabled by default.
Console access: render_local_tonemapper_blur_upscale (API control)
Blur Upscale Kernel Size The size of the kernel used for upscaling the blurred image. The higher the value the better the upscaling quality, but the lower the performance. It is recommended to set the kernel size as follows:
  • 3x3 for the Half resolution.
  • 5x5 for the Quarter resolution.
Option #1 is selected by default (see above).
Console access: render_local_tonemapper_blur_upscale_kernel_size (API control)
Blur Iterations The number of blur iterations applied to the screen texture, which is used to define bright and dark portions of the screen. A higher number of iterations increases the blur radius and reduces halo artifacts around objects, but may affect performance.
Range of values: [0, 10]. The default value is : 5.
Console access: render_local_tonemapper_num_blur_iterations (API control)
Tonemapping Intensity The intensity of the local tonemapping effect.
Range of values: [0.0f, 1.0f]. The default value is : 0.5f.
Console access: render_local_tonemapper_tonemapping_intensity (API control)
Effect On Dark Areas The the extent of applying the local tonemapping effect on dark areas.
Range of values: [0.0f, 1.0f]. The default value is : 0.1f.
Console access: render_local_tonemapper_effect_on_dark_areas (API control)
Effect On Dark Areas Gamma The gamma correction value for dark areas. Specifying values greater than 1 decreases the local tone mapping effect in extremely dark areas.
Range of values: [0.0f, inf]. The default value is : 5.0f.
Console access: render_local_tonemapper_effect_on_dark_areas_gamma (API control)
Target Middle Gray The the target middle gray value for tonemapping.
Range of values: [0.0f, 1.0f]. The default value is : 0.4f.
Console access: render_local_tonemapper_target_middle_gray (API control)
Luma Blurred Intensity The intensity of blurring the luma values. It is recommended to keep the default value for this setting. With the value set to 0, a regular screen texture is used instead of a blurred screen texture. This might be required in a rare case of reducing the halo effect and increasing the tonemapping effect for small details.
Range of values: [0.0f, 1.0f]. The default value is : 1.0f.
Console access: render_local_tonemapper_luma_blurred_intensity (API control)
Use Depth Difference The value indicating whether considering of the depth difference between objects in the scene is enabled. Enabling this feature allows reducing halo artifacts around objects. However, we recommend using it only in exceptional cases, as it is a performance-costly operation. disabled by default.
Console access: render_local_tonemapper_depth_difference_enabled (API control)
Depth Threshold The depth threshold value used to detect the areas affected by local tonemapping. A properly set value may help to reduce halo artifacts.
Range of values: [0.0f, 1.0f]. The default value is : 0.9f.
Console access: render_local_tonemapper_depth_threshold (API control)
Use Color Difference The value indicating whether considering of the image color rendered on the screen is enabled. Enabling this feature allows reducing halo artifacts on surfaces with sharp color transitions. For example, it can significantly improve the appearance of a distinct shadow from the sun on asphalt. disabled by default.
Console access: render_local_tonemapper_color_difference_enabled (API control)
Color Difference Threshold The threshold value that determines the extent to which color differences on the screen are considered. If you set the value to 1, the result will appear as if the Color Difference feature is turned off.
Range of values: [0.0f, 1.0f]. The default value is : 0.1f.
Console access: render_local_tonemapper_color_difference_threshold (API control)

Tonemapper#

The tone mapping provides better image quality by remapping high dynamic range (HDR) colors into a range suitable for mediums with low dynamic range (LDR), like LCD or CRT screens. Its most common purpose is to make an image with a low dynamic range appear to have a higher range of colors providing a more dynamic and realistic effect. It lightens the darkest image regions and makes the lightest regions darker.

When using an HDR camera, always apply tonemapping, otherwise color intensity values exceeding 1 will be clamped at 1, altering the luminance balance of the scene.

Tonemapper settings
Tonemapper The value indicating if tone mapping is enabled. enabled by default.
Console access: render_tonemapper (API control)
Tonemapper Mode The mode of tone mapping. One of the following values:
  • Filmic
  • ACES (by default)
  • ACES with Reinhard
  • Reinhard
  • Reinhard Luma-Based

Console access: render_tonemapper_mode (API control)

Filmic#

Parameters described below represent John Hable's artist-friendly tonemapping curve, which is constructed by using the following formula:

  • A — Shoulder Scale
  • B — Linear Scale
  • C — Linear Angle
  • D — Toe Scale
  • E — Toe Numerator
  • F — Toe Denominator

Tone Mapping Curve

For more details about tone mapping curve construction see the article on Filmic Tonemapping with Piecewise Power Curves.

Shoulder Scale The Shoulder Strength tonemapping parameter value that is used to change bright values.
Range of values: [0.0f, 1.0f]. The default value is : 0.2f.
Console access: render_filmic_shoulder_scale (API control)
Shoulder Scale = 0.2 (by default)
Shoulder Scale = 1
Linear Scale The Linear Strength tone mapping parameter value that is used to change gray values. The Linear Scale controls the length of the tone mapping curve linear part.
Range of values: [0.0f, 1.0f]. The default value is : 0.3f.
Console access: render_filmic_linear_scale (API control)
Linear Scale = 0.3 (by default)
Linear Scale = 1
Linear Angle The Linear Angle tone mapping parameter value. This parameter controls the slope of the linear part of the tone mapping curve.
Range of values: [0.0f, 1.0f]. The default value is : 1.0f.
Console access: render_filmic_linear_angle (API control)
Linear Angle = 0.10 (by default)
Linear Angle = 1
Toe Scale The Toe Scale tonemapping parameter value that is used to change dark values. The Toe Scale controls the slope of the tone mapping curve toe (the area of underexposure).
Range of values: [0.0f, 1.0f]. The default value is : 0.2f.
Console access: render_filmic_toe_scale (API control)
Toe Scale = 0.20 (by default)
Toe Scale = 1
Toe Numerator The Toe Numerator tonemapping parameter value.
Range of values: [0.0f, 1.0f]. The default value is : 0.01f.
Console access: render_filmic_toe_numerator (API control)
Toe Numerator = 0.01 (by default)
Toe Numerator = 0.08
Toe Denominator The Toe Denominator tonemapping parameter value.
Range of values: [0.0f, 1.0f]. The default value is : 0.3f.
Console access: render_filmic_toe_denominator (API control)
Toe Denominator = 0.3 (by default)
Toe Denominator = 1
White Level The Linear White Point tonemapping parameter value, which is mapped as pure white in the resulting image.
Range of values: [0.0f, inf]. The default value is : 1.0f.
Console access: render_filmic_white_level (API control)
White Level = 1.0 (by default)
White Level = 0.5
Saturation Recovery The color saturation recovery value for the filmic tonemapper. Filmic tonemapper desaturates image colors in bright areas making them look grayish. This parameter enables you to recover initial color saturation in such areas. Higher values make colors more saturated:
  • 0.0f - standard filmic tonemapping, no saturation recovery is performed.
  • 1.0f - color saturation is recovered to the full extent.
Notice
When the 1.0f value is set specular highlights appear too saturated, so the recommended value is 0.75f (default)

Range of values: [0.0f, 1.0f]. The default value is : 0.75f.
Console access: render_filmic_saturation_recovery (API control)
White Level = 1.0 (by default)
White Level = 0.5

ACES#

White Clip The white clip parameter for the ACES operator. Controls the cut-off point for white.
Range of values: [0.0f, 10.0f]. The default value is : 2.51f.
Console access: render_aces_white_clip (API control)
Toe The toe parameter for the ACES operator. Controls the dark color. Higher values result in darker colors.
Range of values: [0.0f, 10.0f]. The default value is : 0.03f.
Console access: render_aces_toe (API control)
Shoulder Angle The shoulder angle parameter for the ACES operator. Controls how much overshoot should be added to the curve's shoulder.
Range of values: [0.0f, 10.0f]. The default value is : 2.43f.
Console access: render_aces_shoulder_angle (API control)
Shoulder Strength The shoulder strength parameter for the ACES operator. Controls the strength of the transition between the curve's midsection and the curve's shoulder.
Range of values: [0.0f, 10.0f]. The default value is : 0.59f.
Console access: render_aces_shoulder_strength (API control)
Shoulder Length The shoulder length parameter for the ACES operator. Controls the amount of f-stops to add to the dynamic range of the curve. Defines how much of the highlights the curve takes into account.
Range of values: [0.0f, 1.0f]. The default value is : 0.59f.
Console access: render_aces_shoulder_length (API control)

Mix ACES With Reinhard#

Mix With Reinhard The ACES with Reinhard tonemapping operator contribution. If the value is closer to 0, then ACES prevails. Otherwise, when the value is closer to 1, the Reinhard has a grater impact.
Range of values: [0.0f, 1.0f]. The default value is : 0.5f.
Console access: render_aces_with_reinhard_mix (API control)

Reinhard#

Contribution The Reinhard tonemapping operator contribution.

The value is calculated according to the following formula: C / (1 + C) It controls the overall contribution that the Reinhard operator makes to the final color grading of the image. The higher values result in more tonemapping contribution to the final image.


Range of values: [0.0f, 1.0f]. The default value is : 1.0f.
Console access: render_reinhard_contribution (API control)

Reinhard Luma-Based#

Contribution The Reinhard Luma-Based tonemapping operator contribution. Controls the overall contribution that the Reinhard operator makes to the final color grading of the image. Higher values result in more tonemapping contribution to the final image.
Range of values: [0.0f, 1.0f]. The default value is : 1.0f.
Console access: render_reinhard_luma_based_contribution (API control)

Sharpness#

Sharpness The value indicating if the sharpening post-processing effect is enabled. disabled by default.
Console access: render_sharpen (API control)
Sharpen Intensity The intensity of the sharpening effect.intensity of the sharpening effect. To use this option, sharpening post-processing effect should be enabled (see the ).
Range of values: [0.0f, inf]. The default value is : 0.5f.
Console access: render_sharpen_intensity (API control)

Color Grading#

Brightness

Correction of the overall scene brightness:

  • Positive values lighten the colors up to white.
  • Negative values darken the colors up to black.
Contrast

Correction of the overall scene contrast:

  • Positive values increase the contrast.
  • Negative values decrease the contrast.
Gamma Correction of the overall scene gamma.
Fade Color The fade color for the scene on the screen. By gradually changing this value it is possible to create "fade in" and "fade out" effects depending on the w component of the given vector. For example, when the following vectors are passed the result will be:
  • vec4(1,1,1,1) - a fully white screen. Positive w results in additive blending.
  • vec4(0.5,0.5,0.5,1) - light colors on the screen.
  • vec4(1,0,0,1) - R channel for all screen colors is to its maximum; G and B without changes.
  • vec4(0,0,0,0) - there is no fading (no color alterations are done to the screen).
  • vec4(1,1,1,-1) - a fully black screen. Negative w results in scene colors * (1 - RGB), where RGB is the first three components of the passed vector.
  • vec4(0.5,0.5,0.5,-1) - dark colors on the screen.

vec4_zero - default value (white)
Console access: render_fade_color (API control)
White Level White level of the scene.
3D LUT Texture The loading, viewing, or clearing of the Lookup Table texture for color transformation.

Color Correction by Curves#

Color Correction

Tonal range and tone response of the final image. The horizontal input color values are mapped to the vertical output values based on curves for Red, Green and Blue channels. By adjusting all three channels at once, you control the luminance of the final image.

Color correction curves
Preserve Saturation Preserve initial scene color saturation after applying color correction.
Saturation Correction

Correction curve of the overall scene saturation. The input luminance values are mapped to the vertical saturation values:

  • The higher the value, the more saturated and vibrant the colors are.
  • The lower the value, the duller and more colorless the colors are.

Saturation curve
Control the saturation of shadows by adjusting the values on the left, highlights - on the right.

Saturation and Hue#

Saturation per Color

Saturation fine-adjustment for 12 major colors of the spectre.

Saturation adjustment
Hue per Color

Hue (color shift) fine-adjustment for 12 major colors of the spectre.

Hue adjustment

Color Correction LUT#

Color Correction LUT (Lookup Texture) is an optimized way of performing color grading in a post effect. Instead of tweaking individual color grading parameters, only a single texture is used to produce the corrected image. The lookup is performed by using the original image color as a vector to address the lookup texture.

One of the most common applications of lookup tables is to use them to see how images look in different media, such as TV/video or film, which have different color capabilities. Using a lookup table designed to mimic a certain display medium gives a much better idea what your current work will look like after it’s transferred to that medium.

Advantages of using a Color correction LUT include:

  • Better performance — realtime computation is replaced by a simple array indexing operation.
  • More professional workflow opportunities, where all color transforms can be defined using professional image editing software (such as Photoshop or GIMP), which provides a more precise result.

Simple scene with neutral color correction applied.

Same scene using the lookup texture with shadows, highlights and vibrance applied.
Notice
Various visual effects can be created by changing the color correction LUT dynamically in realtime.

Lookup Texture Requirements#

The 2D texture representation must be laid out in a way that it represents an unwrapped volume texture (as an image sequence of "depth slices").

A 1024 x 32 texture, representing a 32x32x32 color LUT.

Workflow Example#

  1. Generate a default lookup texture by clicking the button (Save texture) right to the LUT texture field and saving it as a TGA file (by selecting it in the Typefield).
  2. Take a screenshot of your scene.
  3. Import your screenshot into a graphics editor (e.g., Photoshop or GIMP) and perform all necessary image correction operations (brightness, contrast, etc.) to achieve a desired look.
  4. Import your generated default lookup texture into the graphics editor and perform the same operations as for the scene screenshot. Save the modified lookup texture as a new LUT.
  5. In Render Settings -> Color -> LUT texture, select you new texture.

Now your scene in UnigineEditor looks exactly as in the graphics editor!

Last update: 2024-12-13
Build: ()