Geiler Titel, langweiliges Thema!
Zumindest für die meisten... wahrscheinlich...
Einige, wenige Filme sind ja leider etwas zu dunkel gemastert. Ich habe daher diesen Belichtungsshader nach HLSL portiert, so dass man ihn in MPC-HC einbinden kann. Er führt ein inverses Tone-Mapping durch, passt die Werte an und tonemappt dann wieder zurück. Es gibt also kein Clipping oder Schwarzwertanhebung und insgesamt ist das Ergebnis besser als bei einer simplen Gammaanpassung.
Code: exposure.hlsl
#define exposure 1.0
sampler s0 : register(s0);
// linear to tonemapped
float3 Tonemap(float3 x) {
return x*(2.51*x + 0.03) / (x*(2.43*x + 0.59) + 0.14); // https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/
}
// tonemapped to linear
float3 InvertTonemap(float3 x) {
return (sqrt(-10127.*x*x + 13702.*x + 9.0) + 59.0*x - 3.0) / (502.0 - 486.0*x); // thanks to https://www.wolframalpha.com/input?i=2.51y%5E2%2B.03y%3Dx%282.43y%5E2%2B.59y%2B.14%29+solve+for+y
}
float3 ChangeExposure(float3 col, float3 b) {
b *= col;
return b/(b-col+1.0);
}
float4 main(float2 tex : TEXCOORD0) : COLOR
{
float3 col = tex2D(s0, tex).xyz;
float3 colOrig = col;
col = pow(col, float3(2.2, 2.2, 2.2));
col = InvertTonemap(col); // to linear
col *= exposure;
col = pow(Tonemap(col.rgb), float3(1./2.2, 1./2.2, 1./2.2)); // tonemap again
col = ChangeExposure(colOrig, float3(exposure, exposure, exposure)); // simple exposure change formula
return float4(col, 0);
}
Alles anzeigen
Beispiel "Planet der Affen" (2001), Blu-ray:
Original:
150 % Belichtung:
Original:
150 % Belichtung:
Man kann das Verfahren sicher noch optimieren, z.B. in anderen Farbräumen als RGB. Aber letztendlich ist das ja nur eine Hilfe für ganz wenige Filme. Und dafür reicht das.