Merge pull request #12176 from Filoppi/patch-22

Make AutoHDR work with color luminance instead of average
This commit is contained in:
Admiral H. Curtiss 2023-11-14 19:53:35 +01:00 committed by GitHub
commit 3975d5e923
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,6 +30,11 @@ DefaultValue = 2.5
[/configuration]
*/
float luminance(float3 color)
{
return dot(color, float3(0.2126f, 0.7152f, 0.0722f));
}
void main()
{
float4 color = Sample();
@ -46,8 +51,8 @@ void main()
// Restore the original SDR (0-1) brightness (we might or might not restore it later)
color.rgb /= hdr_paper_white;
// Find the color average
float sdr_ratio = (color.r + color.g + color.b) / 3.0;
// Find the color luminance (it works better than average)
float sdr_ratio = luminance(color.rgb);
const float auto_hdr_max_white = max(HDR_DISPLAY_MAX_NITS / (hdr_paper_white_nits / hdr_sdr_white_nits), hdr_sdr_white_nits) / hdr_sdr_white_nits;
if (sdr_ratio > AUTO_HDR_SHOULDER_START_ALPHA && AUTO_HDR_SHOULDER_START_ALPHA < 1.0)
@ -61,4 +66,4 @@ void main()
color.rgb *= hdr_paper_white;
SetOutput(color);
}
}