Equalizer logo
Collage logo
GPU-SD logo

Pixel Compounds

Author: [email protected]
State: Implemented in 0.5

Overview

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 x;
        uint32_t y;
        uint32_t w;
        uint32_t h;
    };
    const Pixel& Channel::getPixel() const;

File Format

    compound
    {
        pixel    [ int int int int ]  // pixel decomposition (x y width height)
    }

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.

2151376: Irregular Pixel kernels do not work