Transparent distributed processing for rendering

Rendering, in particular the computation of global illumination, uses computationally very demanding algorithms. As a consequence many researchers have looked into speeding up the computation by distributing it over a number of computational units. However, in almost all cases did they completely redesign the relevant algorithms in order to achieve high efficiency for the particular distributed or parallel environment. At the same time global illumination algorithms have gotten more and more sophisticated and complex. Often several basic algorithms are combined in multi-pass arrangements to achieve the desired lighting effects. As a result, it is becoming increasingly difficult to analyze and adapt the algorithms for optimal parallel execution at the lower levels. Furthermore, these bottom-up approaches destroy the basic design of an algorithm by polluting it with distribution logic and thus easily make it unmaintainable. In this paper we present a top-down approach for designing distributed applications based on their existing object-oriented decomposition. Distribution logic, in our case based on the CORBA mid-dleware standard, is introduced transparently to the existing application logic. The design approach is demonstrated using several examples of multi-pass global illumination computation and ray-tracing. The results show that a good speedup can usually be obtained even with minimal intervention into existing applications.

[1]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[2]  Hans-Peter Seidel,et al.  Composite Lighting Simulations with Lighting Networks , 1998, IEEE Computer Graphics and Applications.

[3]  Jean-Marc Jézéquel,et al.  EPEE: an Eiffel Environment to Program Distributed Memory Parallel Computers , 1992, ECOOP.

[4]  A. Heirich Parallel Rendering with an Actor ModelAlan Heirich ? , 1997 .

[5]  Jack Dongarra,et al.  PVM: Parallel virtual machine: a users' guide and tutorial for networked parallel computing , 1995 .

[6]  Henrik Wann Jensen,et al.  Global Illumination using Photon Maps , 1996, Rendering Techniques.

[7]  Ian T. Foster,et al.  Globus: a Metacomputing Infrastructure Toolkit , 1997, Int. J. High Perform. Comput. Appl..

[8]  Douglas C. Schmidt,et al.  The ADAPTIVE Communication Environment An Object-Oriented Network Programming Toolkit for Developing Communication Software , 1993 .

[9]  Douglas C. Schmidt,et al.  Active object: an object behavioral pattern for concurrent programming , 1996 .

[10]  Holly E. Rushmeier,et al.  A progressive multi-pass method for global illumination , 1991, SIGGRAPH.

[11]  John F. Karpovich,et al.  Architectural Support for Extensibility and Autonomy in Wide-Area Distributed Object Systems , 1998 .

[12]  Erik Reinhard,et al.  Overview of Parallel Photo-realistic Graphics , 1998, Eurographics.

[13]  Erik Reinhard,et al.  Parallel and Distributed Photo-Realistic Rendering , 1998 .

[14]  Kadi Bouatouch,et al.  Parallel Hierarchical Radiosity for Complex Building Interiors , 1998 .

[15]  Hans-Peter Seidel,et al.  Lighting Networks - A New Approach for Designing Lighting Algorithms , 1998, Graphics Interface.

[16]  Douglas C. Schmidt,et al.  Thread-specific storage for C/C++ , 2000 .

[17]  Stéphane Longelin Université des Sciences et Technologies de Lille , 2004 .

[18]  Hans-Peter Seidel,et al.  Vision - An Architecture for Global Illumination Calculations , 1995, IEEE Trans. Vis. Comput. Graph..

[19]  David H. Laidlaw,et al.  The application visualization system: a computational environment for scientific visualization , 1989, IEEE Computer Graphics and Applications.

[20]  Thomas W. Crockett,et al.  PARALLEL RENDERING , 1995 .

[21]  Paul S. Heckbert,et al.  Irradiance gradients , 2008, SIGGRAPH '08.

[22]  Paul E. Mckenney Sequent Selecting Locking Primitives for Parallel Programs , 1996 .

[23]  Hans-Peter Seidel,et al.  Composite lighting simulations with lighting networks , 1997, SIGGRAPH '97.

[24]  Douglas C. Schmidt,et al.  External Polymorphism An Object Structural Pattern for Transparently Extending C++ Concrete Data Types , 1998 .