Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Parallel rendering
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Workload distribution == There are two, often competing, reasons for using parallel rendering. Performance scaling allows frames to be rendered more quickly while data scaling allows larger data sets to be visualized. Different methods of distributing the workload tend to favor one type of scaling over the other. There can also be other advantages and disadvantages such as [[Latency (engineering)|latency]] and [[load balancing (computing)|load balancing]] issues. The three main options for primitives to distribute are entire frames, pixels, or objects (e.g. [[triangle mesh]]es). === Frame distribution === Each processing unit can render an entire frame from a different point of view or moment in time. The frames rendered from different points of view can improve image quality with anti-aliasing or add effects like depth-of-field and [[three-dimensional display]] output. This approach allows for good performance scaling but no data scaling. When rendering sequential frames in parallel there will be a lag for interactive sessions. The lag between user input and the action being displayed is proportional to the number of sequential frames being rendered in parallel. === Pixel distribution === Sets of pixels in the screen space can be distributed among processing units in what is often referred to as sort first rendering.<ref>Molnar, S., M. Cox, D. Ellsworth, and H. Fuchs. β[http://www.cs.unc.edu/~fuchs/publications/SortClassify_ParalRend94.pdf A Sorting Classification of Parallel Rendering].β IEEE Computer Graphics and Algorithms, pages 23-32, July 1994.</ref> Distributing interlaced lines of pixels gives good load balancing but makes data scaling impossible. Distributing contiguous 2D tiles of pixels allows for data scaling by culling data with the [[view frustum]]. However, there is a data overhead from objects on frustum boundaries being replicated and data has to be loaded dynamically as the view point changes. Dynamic load balancing is also needed to maintain performance scaling. === Object distribution === Distributing objects among processing units is often referred to as sort last rendering.<ref>Molnar, S., M. Cox, D. Ellsworth, and H. Fuchs. β[http://www.cs.unc.edu/~fuchs/publications/SortClassify_ParalRend94.pdf A Sorting Classification of Parallel Rendering].β IEEE Computer Graphics and Algorithms, pages 23-32, July 1994.</ref> It provides good data scaling and can provide good performance scaling, but it requires the intermediate images from processing nodes to be [[alpha compositing|alpha composited]] to create the final image. As the image resolution grows, the alpha compositing overhead also grows. A load balancing scheme is also needed to maintain performance regardless of the viewing conditions. This can be achieved by over partitioning the object space and assigning multiple pieces to each processing unit in a random fashion, however this increases the number of alpha compositing stages required to create the final image. Another option is to assign a contiguous block to each processing unit and update it dynamically, but this requires dynamic data loading. === Hybrid distribution === The different types of distributions can be combined in a number of fashions. A couple of sequential frames can be rendered in parallel while also rendering each of those individual frames in parallel using a pixel or object distribution. Object distributions can try to minimize their overlap in screen space in order to reduce alpha compositing costs, or even use a pixel distribution to render portions of the object space.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)