콘텐츠로 건너뛰기

Post Process Tone Mapping Editor Tweak.

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.

Desmos | 그래핑 계산기 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.

Post Process Tone Mapping Editor Tweak. | JP Lee on Patreon

댓글 남기기

MY NAME IS JP에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

Continue reading