Uploaded image for project: 'Qt 3D Studio'
  1. Qt 3D Studio
  2. QT3DS-363 Perf & mem optimizations in Runtime 2.x
  3. QT3DS-491

How not to re-render contents for layers that do not change

    XMLWordPrintable

Details

    Description

      3DS1 does not by default re-render layers the contents of which have not changed. (unless layer caching is disabled?)

      Qt 3D framegraphs do not seem to have any similar feature at the moment. On Demand rendering is useless in this respect since if anything changes anywhere, it will happily rerender everything, there is no special logic for framegraph subtrees targeting textures.

      Figure something out for this, we do know if something has changed in the 3DS scene graph (have a per layer dirty flag) so could act upon that in the frame action. But there is no good way to disable (block) framegraph subtrees in a sane way:

      • unparenting/reparenting does not seem like a good approach -> works though
      • messing with LayerFilters does not scale due to the complexity of per-layer framegraph subtrees.
      • Perhaps keeping track of the leaf nodes and doing setEnabled on them may be the most lightweight approach (assuming my reading of renderviewjobutils.cpp is correct) this was not correct, isEnabled() is confusing as always

      Also, could we avoid fbo when there's only one layer and no blend/effects/etc. are in use?

      Attachments

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

        Activity

          People

            lagocs Laszlo Agocs
            lagocs Laszlo Agocs
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes