Equalizer logo
Collage logo
GPU-SD logo

Dynamic Frame Resolution

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