Description

Color space conversion in the UI composition is incorrect on DX12 HDR.

In the main() function In CompositeUIPixelShader.usf, you can see the following color space transform.

	// sRGB -> RRT -> ODT
	UIColor.xyz = ColorLookupTable(UIColor.xyz);

But it seems that the input of ColorLookupTable() must be linear color space. So it makes UI color incorrect on HDR.
[Link Removed]
[Link Removed]

Adding sRGB->Linear transform before the function fix this problem.

	// sRGB -> Linear -> RRT -> ODT
	UIColor.xyz = sRGBToLinear(UIColor.xyz);
	UIColor.xyz = ColorLookupTable(UIColor.xyz);

[Link Removed]

Steps to Reproduce
  1. Open the attached repro project
  2. Play Standalone Game, you can see SDR result.
  3. set r.HDR.EnableHDROutput to 1 via console command.
  4. Play Standalone Game, you can see HDR result. and you can find the result slight brighter than SDR

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-117936 in the post.

5
Login to Vote

Fixed
ComponentUE - Graphics Features
Affects Versions4.264.275.0-early access5.0
Target Fix5.1
Fix Commit19918995
CreatedJun 11, 2021
ResolvedApr 26, 2022
UpdatedMay 6, 2022