Fraunhofer-Gesellschaft

Publica

Hier finden Sie wissenschaftliche Publikationen aus den Fraunhofer-Instituten.

Shading Languages for Scenegraph Systems: The OpenSG Shading Language Compiler

 
: Bergsträßer, S.
: Reiners, D.; Voss, G.

Darmstadt, 2001
Darmstadt, TU, Studienarbeit, 2001
English
Term paper
Fraunhofer IGD ()
scenegraph; Realtime Rendering; lighting

Abstract
Die Beschreibung von Oberflächeneigenschaften für das Computergraphik Rendering, kann eine schwierige Aufgabe sein. Um die Berechnung und die Integration in Graphikhardware zu vereinfachen, wurden eine Anzahl Beleuchtungsmodelle entwickelt. Diese Modelle machen es einfach und effizient Beleuchtung zu definieren und zu berechnen, limitieren jedoch die Ausdrucksstärke. Als eine Konsequenz daraus wurden andere Modelle entwickelt, die in high-end Animationen verwendet werden. Am flexibelsten ist die Benutzung einer Shading Language, die dem Designer einen großen Freiheitsgrad gibt kombiniert mit einer Abstraktion des unterliegenden Renderingsystems. Die am meisten bekannte und benutzte ist Pixar's RenderMan. Echtzeit rendering erreicht einen Punkt an dem die Ausdrucksmöglichkeiten, der standard Beleuchtungsmodelle nicht mehr ausreicht, um die gewünschten Oberflächeneffekte zu beschreiben. Einige Gruppen versuchen nun die Mächtigkeit einer Shading Language und die echtzeit Grafik zu kombinieren. Alle diese Systeme sind jedoch eigenständig und nicht Teil einer Visualisierungsumgebung. Diese Tatsache begrenzt ihre Nützlichkeit und verhindert, daß sie die bestmögliche Performance erreichen. Für diese Arbeit wurden die existierenden Shading Languages analysiert mit dem Ziel sie in einen modernen high level Scenengraphen, wie OpenSG, zu integrieren. Das Resultat dieser Analyse ist eine Shading Language, basierend auf der Stanford Real Time Shading Language. Um diese Sprache übersetzen zu können wurde ein Compiler implementiert. Der Compiler übersetzt mathematische Beschreibungen in Graphikprogrammierungsbefehle. Die Informationen, die in der Eingabedatei gegeben sind werden extrahiert und zu verschiedene Datenrepräsentationen weiterverarbeitet. Diese Repräsentationen werden danach zur Zwischendarstellung kombiniert, welche die Basis für die strukturelle Analyse und die Code Generierung bildet. Der Compiler kann mathematische Beschreibungen von Standard-OpenGL Materialeigenschaften und Lichtquellen in Programmcode, der in einen OpenSG Scenengraph eingefügt werden kann, abbilden. Er arbeitet mit mehren Texturen durch die Benutzung einer multi-pass Technik und unterstützt die dynamische Texturkoordinaten- erzeugung. Das System ist skalierbar gebaut, so daß weitere Funktionalitäten einfache hinzugefügt werden können.

 

Describing surface properties for computer graphics rendering can be a difficult task. A number of lighting models have been developed to simplify calculation and allow integration into graphics hardware. These models make it simple and efficient to define and calculate lighting, but severely limit the expressive power. As a consequence other methods have been developed and are used in high-end animations. The most flexible is using a shading language, which gives the designer a large amount of freedom combined with a useful abstraction of the underlying rendering system. The best known and most widely used is Pixar's Renderman. Real time rendering is reaching a point where the expressive power of the standard illumination models is not enough to describe the desired surface properties. Some groups are trying to bring the power of a shading language into the realm of real time graphics. But all of them build their systems stand-alone, not being integrated into a bigger framework. This limits their usefulness and can prevent them from reaching the best possible performance. For this work existing shading languages have been analyzed with a focus on the ability to integrate them into a modern, high-level scenegraph like OpenSG. Result of these analyses is a shading language, which based on the language developed for the Stanford Real Time Shading Project, has been specified. To translate this language a compiler has been implemented. The compiler translates mathematical descriptions into graphic programming instructions. Basically the information given in the input file is extracted and processed into different data representations. These representations are then combined into an intermediate representation, which is the base for the structural analysis and the code generation. The compiler can map mathematical descriptions of standard OpenGL material properties and light sources into program code, which can be included into an OpenSG scenegraph. It can handle multiple textures by using multi-pass technique and it supports dynamic texture coordinate generation. The system is build to be scalable so that further functionalities can be added easily.

: http://publica.fraunhofer.de/documents/N-8938.html