Author: eilemann@gmail.com
State: Implemented in 0.5
Overview
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