diff --git a/package/Shaders/ISHDR.hlsl b/package/Shaders/ISHDR.hlsl index f61cd82c02..52b80ab175 100644 --- a/package/Shaders/ISHDR.hlsl +++ b/package/Shaders/ISHDR.hlsl @@ -116,7 +116,9 @@ PS_OUTPUT main(PS_INPUT input) hdrColor += DisplayMapping::RangeCompress(max(0, Param.x - hdrColor)) * bloomColor; - hdrColor = pow(abs(hdrColor) / avgValue.x, Cinematic.z) * avgValue.x * sign(hdrColor); + float3 contrastOriginal = lerp(avgValue.x, hdrColor, Cinematic.z); + float3 contrastShadows = pow(abs(hdrColor) / avgValue.x, Cinematic.z) * avgValue.x * sign(hdrColor); + hdrColor = contrastOriginal < hdrColor ? contrastShadows : contrastOriginal; float hdrLuminance = Color::RGBToLuminance(hdrColor); hdrColor = Cinematic.w * lerp(lerp(hdrLuminance, hdrColor, Cinematic.x), lerp(hdrColor, hdrLuminance, saturate(hdrLuminance)) * Tint.xyz, Tint.w).xyz;