Parallel rendering: Difference between revisions

Content deleted Content added
wikified
Line 2:
 
== Subdivision of work ==
Parallel rendering divides the work to be done and processes it in parallel. For example, if we have a non-parallel ray-casting application, we would send rays one by one to all the pixels in the [[Viewing frustum|view frustum]]. Instead, we can divide the whole frustum into some x number of parts and then run that many threads or processes to send rays in parallel to those x tiles. We can use a cluster of machines to do such a thing and then composite the results. This is parallel rendering.
 
==Non-interactive parallel rendering==
Line 15:
Rendering.” IEEE Computer Graphics and Algorithms, pages 23-32, July 1994.</ref> This mode has a limited scalability due to the parallel overhead caused by objects rendered on multiple tiles.
 
The image to the right {{fix
The image to the right shows an example of sort-first rendering on a [[video wall]]. Each computer in the video wall renders a portion of the viewing volume, or [[viewing frustum]], and the final image is the summation of the images on the monitors that make up the video wall. The [[speedup]] comes from the fact that graphics libraries ([[OpenGL]] for example) will [[Clipping (computer graphics)|clip]] away pixels that would appear outside of the viewing volume. This happens very early in the [[graphics pipeline]], which accelerates the rendering process by eliminating the unneeded [[rasterization]] and post-processing on primitives that will not appear anyway.
|text=image missing
The image to the right}} shows an example of sort-first rendering on a [[video wall]]. Each computer in the video wall renders a portion of the viewing volume, or [[viewing frustum]], and the final image is the summation of the images on the monitors that make up the video wall. The [[speedup]] comes from the fact that graphics libraries ([[OpenGL]] for example) will [[Clipping (computer graphics)|clip]] away pixels that would appear outside of the viewing volume. This happens very early in the [[graphics pipeline]], which accelerates the rendering process by eliminating the unneeded [[rasterization]] and post-processing on primitives that will not appear anyway.
 
===Sort-last===
Line 21 ⟶ 23:
Sort-last rendering on the other hand decomposes the rendered database across all rendering units, and recombines the partially rendered frames. This modes scales the rendering very well, but the recomposition step is expensive due to the amount of pixel data processed during recomposition.
 
The image to the right {{fix
The image to the right shows an example of sort-last rendering. The computer in the top left corner is the [[Master-slave (computers)|master]] computer. This means it is responsible for receiving the images created by the other computers, and then compositing them into the final image, which it displays on its own monitor.
|text=image missing
The image to the right}} shows an example of sort-last rendering. The computer in the top left corner is the [[Master-slave (computers)|master]] computer. This means it is responsible for receiving the images created by the other computers, and then compositing them into the final image, which it displays on its own monitor.
 
===Pixel Decompositions===
Line 37 ⟶ 41:
The open source software package Chromium (http://chromium.sourceforge.net) provides a parallel rendering mechanism for existing applications. It intercepts the [[OpenGL]] calls and processed them, typically to send them to multiple rendering units driving a [[video wall|display wall]].
 
Equalizer (http://www.equalizergraphics.com) is an open source rendering [[Software framework|framework]] and resource management system for multipipe applications. Equalizer provides an [[Application programming interface|API]] to write parallel, scalable visualization applications which are configured at run-time by a resource server.
 
[[OpenSG]] (http://opensg.vrsource.org/trac) is an open source [[Scene graph|scenegraph]] system that provides parallel rendering capabilities, especially on clusters. It hides the complexity of parallel [[Thread (computer science)|multi-threaded]] and clustered applications and supports sort-first as well as sort-last rendering.
 
==See also==