#define S_DOCUMENTATION #define S_DOCUMENTATION_DEVELOPER #define PAGE Documentation #define SUBPAGE Developer #define TITLE Pixel Compounds #include "header.shtml"

Author: eilemann@gmail.com
State: Implemented in 0.5

Overview

Pixel Compound
Detailed View of a Pixel Compound

This features adds support for a new type of decomposition and recomposition, whereby each contributing channel renders each n'th pixel of the destination channel.

The frustum for the source channels gets distorted so that the channel only renders 1/nth of the pixels in one dimension. Afterwards the frustum is moved slightly to select the 'starting' point of the channel.

Application

Pixel compounds are ideal for purely fill-limited applications such as volume rendering and raytracing. The load is equally distributed, thus allowing to scale the fill-rate linearly.

Pixel compounds do not reduce the amount of data per frame, since the view frustum on the source channels is almost the same as the destination's channel frustum.

API

    class Pixel 
    {
    public:
        [...]
        uint32_t index;
        uint32_t size;
    };

    const Pixel& Channel::getPixel() const;

File Format

    compound
    {
        pixel    [ int int ]             // pixel decomposition (index size)
    }

Open Issues

OpenGL functionality which is influenced by the raster position will not work correctly with pixel compounds, or needs at least special attention. Among them are: lines, points, sprites, glDrawPixels, glBitmap, glPolygonStipple.

Multi-level database/pixel compounds do not work correctly.

#include "footer.shtml"