Feature image copywright by
Purpose:
This course will be given to the art department flexibility.
We will try to add parameters to Neutral Tone-mapping and use editor mode.
Depending on the nature of the project, try adding Fast Tone mapping, which focuses on faster operation, to the Post Process.
Let’s try porting Unreal Engine’s Aces tone mapping to Unity.
Exploring this course will give us a better understanding of Unity’s post-processing rendering architecture.
Adding parameters to Neutral Tone mapping.
The desired results are as below.
Eventually, as shown in the figure below, it is to change what is fixed as a constant inside the function to a parameter and to allow the artist to modify the value in this way to reach the desired result.

The above parameters are not exposed in the original Neutral Tonemapping.
Since the segment could not be modified, additional color adjustments or color curves are often added.
Unlike Unreal Engine, ACES does not expose any parameters.
Let’s add various tone mapping and expose related parameters to meet the learning purpose.
Neutral Tone mapping function.
This tone mapping method has minimal impact on color hue and saturation.
– But in my opinion that this is some impact on gamma.
Filmic Tonemapping Operators – Filmic Worlds
Neutral function is based on Uncharted 2 operator of JOHN HABLE.
Take a look Uncharted 2 operator function curve.

Location.
At first, let’s find the tone mapping code function that needs to be modified.
Packages/com.unity.postprocessing@3.1.1/PostProcessing/Shaders/Colors.hlsl
float3 NeutralCurve(float3 x, float a, float b, float c, float d, float e, float f)
{
return ((x * (a * x + c * b) + d * e) / (x * (a * x + b) + d * f)) - e / f;
}
float3 NeutralTonemap(float3 x)
{
// Tonemap
float a = 0.2;
float b = 0.29;
float c = 0.24;
float d = 0.272;
float e = 0.02;
float f = 0.3;
float whiteLevel = 5.3;
float whiteClip = 1.0;
float3 whiteScale = (1.0).xxx / NeutralCurve(whiteLevel, a, b, c, d, e, f);
x = NeutralCurve(x * whiteScale, a, b, c, d, e, f);
x *= whiteScale;
// Post-curve white point adjustment
x /= whiteClip.xxx;
return x;
}
Neutral Tone mapping Original function code.
We will add parameters to the above code.
float3 NeutralTonemap(float3 x) Add parameters to the head of this function.
float3 NeutralTonemap(float3 x, float A, float B, float C, float D, float E,
float F, float WL, float WC)
Want to know more?
Try to becomming my patreon members.