Details
-
Technical task
-
Resolution: Done
-
P1: Critical
-
None
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?