Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-134590

HDR-capable renderer for Qt Quick

    XMLWordPrintable

Details

    • User Story
    • Resolution: Unresolved
    • P2: Important
    • None
    • 6.10
    • Quick: SceneGraph
    • None
    • All

    Description

      Qt currently assumes colors are in non-linear sRGB color space. However, on many modern systems you will have both wide-gamut screens and user data such as images and videos that are stored in linear HDR formats. In addition, systems such as iOS and macOS provide system controls to adjust how the HDR content is presented. At the moment, any HDR image data shown by Qt will be compressed.

      Qt should seamlessly be able to show HDR content inline a Qt Quick scene on both HDR and normal screens, without affecting the existing (SDR) content.

      A pre-project has determined that this is not easily feasible on top of the existing batch renderer architecture. Since the SDR content and HDR content has to be blended in their respective color spaces and then combined in a final composition pass, it would involve significant changes to the renderer that would risk destabilizing or regressing its normal operation that is optimized to run fast on low-end devices.

      Instead, we should develop a new renderer that supports splitting the scenegraph into multiple such passes, rendering into an array of offscreen buffers and compositing them in the end.

      Since there is a cost involved and since it's hard to predict what types of content the application will consume, the HDR mode and renderer should be enabled automatically when needed at run-time, and not something the user should have to opt-in to manually on startup. However, it should probably be possible to opt-out of it, in case you would rather trade in favour of performance. (Note: Some POC code already exists for this.)

      Some limitations are to be expected: For instance, layers are by default in an 8-bit RGBA format, so anything drawn in a layer will by default be considered SDR. Users will have to manually set a floating point format for the layer to avoid compressing the HDR colors. We could consider having an "AutoFormat" if that is at all feasible. Similarly, the output from user-based shader effects will still be considered non-linear sRGB in a first iteration.

      Stretch goal: Since this is a renderer that will primarily be useful on high-end hardware, it's worth checking what kind of other improvements we can get by depending on more modern graphics features (at least OpenGL ES3-level).

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            janichol Andy Nichols
            esabraha Eskil Abrahamsen Blomfeldt
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes