Graphics Systems and Toolkits
by Darrell and Mike
Key Considerations for Large Display Graphics
Performance
Portability
Scalability
Cost
Bandwidth
Architectures for Distributed Graphics
Client-server
Pros
Can achieve excellent performance in some cases
Cons
High bandwidth requirements
Master-slave
Pros
Low bandwidth
Performance should be equivalent to single display
Cons
Synchronization can be difficult
Existing Tools for Distributed Graphics
Chromium
Pros
Extreme portability. Can theoretically run any OpenGL application.
Extreme flexibility. Can write custom stream processing units (SPUs) to maximize performance.
Fast startup for applications
Cons
Performance issues as display size increases
Writing SPUs to maximize performance is difficult and sacrifices portability
OpenSG
Pros
Built directly on top of OpenGL
Can be run on any system with OpenSG libraries installed
Excellent performance
Cons
Must learn a new API
Only useful if you need to use a scene graph
Slow startup
VRJuggler
Pros
Can use different underlying graphics toolkits
Good performance, depending on the choice of toolkit
Input framework included
Cons
Synchronization issues (master-slave architecture)
Slow startup
SAGE
Pros
Good performance (?)
Reasonable portability
Reasonable scalability
Multi-user
Cons
Not much has been implemented yet
Graphics Supercomputers (e.g. SGI Onyx)
Pros
Excellent performance
Relatively easy to program (no networking/synchronization issues)
Can use sort-middle approach
Good portability
Good scalability
Cons
Very, very expensive
Performance vs. Portability
In general, for a tiled display, the higher the performance you desire, the more portability you must sacrifice, and vice versa.
Bandwidth
This will be the major bottleneck as display size increases. It is estimated it will take as much as 45 years for computer-to-display wiring to achieve the bandwidth necessary to support a gigapixel display. Is it time for a different rendering paradigm (e.g. adaptive frameless rendering)?
Parallel vs. serial
Where is the pipeline divided?
Sort-First
Sort-Last
Sort-Middle (Supercomputers only!)
Hardware Requirements
Cluster
Single Machine
Shared-memory