Details
-
User Story
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.9
-
None
Description
Qt currently lacks the ability to display HDR content (such as images) in the Qt Quick scenegraph. Qt Multimedia does implement support for HDR content, but in an ad-hoc manner and the scenegraph is still implicitly operating with 24-bit sRGB colors.
Example image with 16-bit color channels:
On a wide-gamut display that supports e.g. 10 bits per color channel instead of 8, such images displayed using an Image element in Qt will look different than in a compliant (native) app since Qt will compress the color channels.
There are several things to explore with regards to this:
1. First of all a Qt Quick window needs to support HDR content. There is already some code to enable this, but enabled using environment variables and private APIs. We should have public API to control this.
2. Support HDR content in Image component as a proof of concept (other components can be ported later). Basically, make sure the image displayed in a Qt app (when the window is HDR-enabled) looks the same as in other compliant applications.
3. Find a way to deal with non-HDR-compliant content. A majority of content in Qt will still operate in sRGB and the same is true for user-created materials. For instance, one idea is to automatically modify the shader code before compiling it to make it support different color formats. There may be some manual porting needed for users for this, or it's possible we can automate the process so that existing shaders will still work in a HDR context while still outputting colors in the sRGB gamut, as long as they are compiled using the cmake commands we provide. This will involve some trial and error, experimentation to find out where the pain points are.
Attachments
Issue Links
- mentioned in
-
Page Loading...
Gerrit Reviews
For Gerrit Dashboard: QTBUG-126035 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
568353,16 | Add 16-bit/32-bit floating point support for QSGPlainTexture | dev | qt/qtdeclarative | Status: NEW | +1 | 0 |
569058,51 | WIP: Add support for new HDR capable rewrite shader | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
570208,21 | WIP: Add HDR capable fragment shader rewriting support | dev | qt/qtshadertools | Status: NEW | -2 | 0 |
570210,8 | WIP: Add additional shader variant for HDR support | dev | qt/qtbase | Status: NEW | -2 | 0 |
581612,6 | WIP: EXR support | dev | qt/qtimageformats | Status: NEW | -2 | 0 |
583763,14 | WIP: Add a isHdrCapable property to QSGTexture | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
583764,21 | WIP: Basic support for choosing between HDR/SDR formats | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
584519,16 | WIP: Experiment with HDR10 | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
586784,20 | WIP: Add QQuickHDRSettings | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
587028,6 | WIP: Enablers for querying HDR swapchain | dev | qt/qtbase | Status: NEW | -2 | 0 |
587418,23 | WIP: Fall back to Gray AA if HDR | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
591732,18 | WIP: Add DynamicRange enum property | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
592778,24 | WIP: Automatically recreate swapchain at runtime | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |
592939,5 | WIP: Experiment with HDR10 | dev | qt/qtshadertools | Status: NEW | -2 | 0 |
596766,4 | WIP: Add exposure and gamma | dev | qt/qtshadertools | Status: NEW | -2 | 0 |