Direct Send Compositing for
Parallel Sort-Last Rendering
Latest version at http://www.equalizergraphics.com/documents/EGPGV07.pdf
Stefan Eilemann, Renato Pajarola
Visualization and MultiMedia Lab
University of Zurich
20. May 2007
Outline
• Parallel Sort-Last Rendering
• Compositing
• Direct-Send Compositing
• Binary-Swap Compositing
• Implementation
• Results
Parallel Sort-Last Rendering
• Run n rendering threads
• Each thread renders 1/n of the data
• Rendering performance scales nicely
channel "buffer3"
range [ 4th quarter ]
channel "buffer2"
range [ 3rd quarter ]
channel "buffer1"
range [ 2nd quarter ]
channel "destination"
wall { ... }
channel "destination"
range [ 1st quarter ]
Compositing
• Amount of pixel data is O(n)
• Polygonal data: color and depth
• Volume data: color and alpha
channel "buffer3"
range [ 4th quarter ]
outputframe "frame.b3"
channel "buffer2"
range [ 3rd quarter ]
outputframe "frame.b2"
channel "buffer1"
range [ 2nd quarter ]
outputframe "frame.b1"
channel "destination"
wall { ... }
inputframe "frame.b1"
inputframe "frame.b2"
inputframe "frame.b3"
channel "destination"
range [ 1st quarter ]
Direct-Send Compositing
• Use all nodes for compositing
• Amount of data per node is O(1)
1. Each node composites one tile
Direct-Send Compositing (2)
2. Gather composited tiles
• Color information only - like sort-first
• Destination channel’s tile is in-place
Direct-Send Compositing (3)
• Any number of nodes
• Two synchronization points
Direct-Send Compositing
Demo
Binary-Swap Compositing
1. Swap half of framebuffer with partner
2. Composite
Binary-Swap Compositing (2)
3. Swap half of ‘half’ with another partner
4. Repeat until tiles are complete
Binary-Swap Compositing (3)
5. Gather color tiles
• Power-of-two number of nodes
• Log2(n) synchronization points
Demo
Binary-Swap Compositing
Implementation
• Part of Equalizer, an open source
parallel rendering framework
• Application provides OpenGL code
• Configured using compound tree
• Compositing based on output and
input frames
• Compositing algo