Author: eilemann@gmail.com
State: Implemented in 0.9
Overview
This feature dynamically changes the resolution of a channel to match a certain quality requirement. The quality requirement is a function for the framerate and current resolution.
Implementation
Implement a new feature to set the rendering size of a compound. The compound's channel will use an FBO for its rendering operations (clear, draw, assemble). Before the readback, the FBO content will be copied to the framebuffer. The readback happens from the framebuffer.
The framerate is stored in the compound data. It is not inherited, that is, it applies only to the compound which specifies the framerate.
A DFR load-balancer takes care of the server-side calculations.
The DFR load-balancer computes each frame a new PVP used. The new PVP is a function of the old PVP and the last rendering time of the channel (frameFinish - frameStart).
- Channel renders, assembles and reads back using FBO and 'real' pixelviewport - At the end of the frame, channel copies FBO texture to its draw buffer
Internal API
File Format
compound { channel "destination" DFR_equalizer # adapt ZOOM to achieve constant framerate { framerate float # target framerate damping float # 0: no damping, 1: no changes } compound {} // further decomposition possible }
Open Issues
None