Main objective of the following projects is to propose and develop a Generic Rendering Framework, an object-oriented graphics system that is sufficiently general to treat wide variety of rendering strategies, from local illumination to photorealistic algorithms. The rendering architecture can be particularized according to the common features of energy distribution techniques. During development we use modern techniques of object-oriented design, including design patterns principles and UML.

Goals

The current computer graphics uses various rendering techniques for the illumination of a virtual scenes. These techniques range from fast low-quality rendering to slow photorealistic rendering. Although these algorithms are based on the very different principles, the discovery of their features and thorough analysis of architectural aspects may lead to the proposal of universal and generic rendering architecture. The well-known pipeline rendering architecture is not very suitable for global illumination due to its vertex base. Our goal is therefore to propose new model which has not drawbacks of the pipeline architecture.

Different rendering strategies have different demands on virtual objects and scene graph arrangement. Second aim is therefore to propose efficient but easily extensible implementation of scene, maximally employing existing design patterns principles.

Projects Overview

Project deatils

Extensible Scene Graph - ESG

[ESG] In most existing graphics libraries and languages, e.g. Java 3D and VRML, the nodes of a scene graph are associated with their bounding volumes. The spatial ordering of the scene can thus take the form of a bounding volume hierarchy. However, the arrangement with a bounding volume hierarchy is convenient for a limited class of graphics tasks only. The addition of a new spatial ordering to the traditional scene graph is very difficult and the maintenance of a hybrid solution is complicated. Contrary, our implementation is easily extensible with various spatial data structures.

Many of the existing scene graphs are also primarily proposed for local illumination. Therefore they suppose that the geometry of virtual objects is described by polygonal meshes. But the strict polygonal representation is very restrictive, particularly for global illumination algorithms. In addition, different graphics architectures require different scene graph features. For example, photorealistic rendering techniques could require the description of participating media (fog, smoke, flame etc.), and haptic applications could demand descriptions of forces in the scene etc. Besides the possibility of extending a scene graph by spatial data structures, the second requirement is to support its extensibility by new virtual objects which have variable nature and interfaces.

In order to support the extensibility and flexibility of graphics solutions, we employ an object-oriented approach with patterns. The notation is based on the Unified Modeling Language (UML), which is the industrial standard enabling software designers to specify, visualize and construct complex systems as well as to create their documentation.

ESG library actually implements basic geometries, (e.g. cube, sphere etc.) and several light sources and BRDFs. Shapes can be ordered in bounding volume hierarchies with either spheres, axis-aligned bounding boxes or k-DOPs. Spatial data structures use iterators for their inspection, properties of shapes (e.g. geometry, material, etc.) are searched by system of visitors. It is also possible to search the whole scene graph by several explorers, for instance we have implemented explorer looking for objects hit by a ray, explorer finding out objects from given 3D area etc. The library also includes several simple parsers for importing models in various 3D formats. In addition, the scene graph is prepared for collision detection using a "home-made" code based on the k-DOP bounding volumes hierarchies.

Generic Rendering Architecture - GRA

[GRA]

In spite of the low quality of rendered images, the local illumination strategies based on Phong and Gouraud shading are still very popular. The reason is the existence of a simple but efficient scenario for processing the primitives with local illumination in a 3D graphics pipeline. Invention and widespread acceptance of unified 3D interface represented by, for example, the OpenGL API, has lead to the evolution of hardware accelerators.

When we require a photorealistic picture of a virtual scene, more advanced rendering strategies have to be employed. Unfortunately, the existing photorealistic rendering strategies differ significantly in the conception of energy distribution. Moreover, global illumination tasks have much greater demands on storing and tracing objects efficiently. These features make it hard to find a unified software model that comprehends the wide scale of existing rendering algorithms. Unification would support the exchange of rendering algorithms as well as the extensibility of existing techniques by new features. Thorough analysis of the energy evaluation in virtual scenes is necessary to determine those subparts of generic architecture that are common to many illumination strategies and suitable for hardware acceleration.

While the ESG library contains tools necessary for virtual scene maintenance, the GRA library is an illumination library that implements our novel concept of generic architecture with different rendering strategies. The library actually implements local reflection model with various BRDFs and ray tracing reflection models, including Monte Carlo ray tracing and photon mapping.

Generic Testbed Application

[GRF]

The Generic Testbed Application, GTA, is an application that covers the libraries above. It allows to test and compare illumination strategies of the generic rendering architecture, switch the strategies easily and show various statistics. It also supports basic manipulation with 3D scene. The application is based on the Qt library.

Actually, the GTA is in the early stage of development.