Verfahren zur korrekten Darstellung von Transparenz ohne Vorsortierung

Größe: px
Ab Seite anzeigen:

Download "Verfahren zur korrekten Darstellung von Transparenz ohne Vorsortierung"

Transkript

1 Fachhochschule Aachen, Campus Jülich Fachbereich 9, Medizintechnik und Technomathematik Seminararbeit Verfahren zur korrekten Darstellung von Transparenz ohne Vorsortierung im Studiengang Scientic Programming von Joachim Herber Mat.-Nr.: Prüfer: Prof. Dr. Andreas Terstegge Fachbereich 9, Medizintechnik und Technomathematik 2. Prüfer: Dipl.-Inform. Sebastian Pick Virtual Reality Group, RWTH Aachen Eingereicht am: 14. Dezember 2012

2

3

4

5 Inhaltsverzeichnis 1 Einleitung 1 2 Grundlagen Geometrie-Beschreibung Das Problem mit der Transparenz Painter's Algorithmus OpenGL Die OpenGL-Rendering-Pipline Alpha Blending BSP-Bäume OIT-Verfahren Depth Peeling Standard Depth Peeling Dual Depth Peeling Depth Peeling mit Bucket-Sort Stochastic Transparency A-Buer Adaptive Transparency Fazit 21 Literaturliste 22

6

7 1 Einleitung Die Darstellung transparenter(durchsichtiger) Objekte spielt in verschiedenen Bereichen der 3D-Computergrak eine wichtige Rolle. Das oensichtlichste Einsatzgebiet hierfür ist sicherlich die Darstellung von Objekten, die auch in der Realität transparent sind. Jedoch können in der Computergrak auch Objekte transparent dargestellt werden, die in der Realität nicht transparent sind. Oftmals wird dies eingesetzt um Verdeckungsprobleme aufzulösen. Dies wird z.b. dazu genutzt, einem Betrachter Einblicke in das Innere komplexer dreidimensionaler Strukturen zu ermöglichen, so dass dieser den Aufbau der Struktur besser verstehen kann. Ebenso werden oftmals Objekte transparent dargestellt, die sehr nahe am Betrachter sind und daher einen Groÿteil der darzustellenden Szene verdecken. Ein weiteres Einsatzgebiet ist die Darstellung von Eekten. So werden für Partikel- Eekte, wie z.b. Rauch oder Feuer, viele kleine Quadrate gezeichnet, die mit einer transparenten Textur versehen sind. Ein weiterer Eekt, für den die Darstellung transparenter Objekte benötigt wird, ist die Darstellung von Objekten die wesentlich kleiner sind als ein Pixel (Bildpunkt), wie z.b. Haare. Bei diesen Objekten ist meist die Transparenz abhängig von der Pixel-Abdeckung, also dem Anteil der Fläche eines Pixels auf den das Objekt abgebildet wird. Trotz all dieser Einsatzgebiete ist die Darstellung transparenter Objekte jedoch nicht trivial. Abb. 1: Zwei transparente Quadrate. Links: Das rote Quadrat verdeckt das grüne. Rechts: Das grüne Quadrat verdeckt das rote. Das Hauptproblem bei der Darstellung von transparenten Objekten ist, dass die Reihenfolge beachtet werden muss, in der sich die Objekte gegenseitig verdecken (siehe Abb. 1). Da für dieses Problem jedoch keine etablierte Lösung existiert, hat sich in der 3D-Computergrak noch kein einheitliches Verfahren zur Darstellung transparenter Objekte durchgesetzt. Des Weiteren ist die Zeit, die von einem Verfahren benötigt wird, um das fertige Bild zu berechnen, entscheidend dafür, ob es sich für den Einsatz in einer bestimmten Anwendung eignet. Zwar gibt es einige Verfahren, die die korrekte Darstellung von transparenten Objekten ermöglichen, jedoch eignen sich viele dieser Verfahren nicht für den Einsatz in interaktiven Anwendungen (Bildwiederholrate 30 Bilder/Sekunde), da sie zu lange brauchen um ein neues Bild zu berechnen. Andere Verfahren (z.b. Stochastic Transparency [4]) verursachen unter Umständen Bildfehler oder Bildrauschen und ermöglichen daher nur die annähernd korrekte Darstellung von transparenten Objekten. Des Weiteren gibt es Verfahren, die zur Darstellung von transparenten Objekten, komplexe Datenstrukturen benötigen, deren Berechnung zeitaufwändig ist (z.b BSP-Bäume [6]). Meist müssen diese Datenstrukturen erneuert werden, sobald 1

8 sich etwas an den darzustellenden Objekten ändert, weshalb sich diese Verfahren nicht unbedingt für die Darstellung sich verändernder Szenen eignen. In dieser Seminararbeit werden zunächst einige Grundlagen der 3D-Computergrak erklärt (Kapitel 2). Anschlieÿend werden verschiedenen Verfahren zur Darstellung transparenter Objekte vorgestellt, die in interaktiven Anwendungen eingesetzt werden können, in denen sich die Szene dynamisch ändern kann (Kapitel 3). Zum Schluss folgt dann ein Fazit zu den verschiedenen Verfahren ((Kapitel 4)). 2

9 2 Grundlagen Bevor die verschiedenen Verfahren zur Darstellung transparenter Objekte im Einzelnen vorgestellt werden, werden in diesem Kapitel zunächst einige Grundlagen der 3D- Computergrak erklärt. 2.1 Geometrie-Beschreibung Damit dreidimensionale Objekte gerendert (dargestellt) werden können, müssen diese zunächst in einer dem Computer verständlichen Form modelliert werden. Zu diesem Zweck werden meist Polygon-Gitter verwendet (siehe Abb. 2). Polygon-Gitter bestehen aus Polygonen (viel-eckigen Flächen), die die Oberäche des Objektes beschreiben. Ein Polygon wird durch eine Menge von Vertices (Punkten) deniert, die alle in einer Ebene liegen und die Eckpunkte des Polygons bilden. Ein Vertex enthält Informationen über einen Punkt auf der Oberäche des Objektes. Diese Informationen werden als Vertex-Attribute bezeichnet und zur Darstellung eines Objekts benötigt. Welche Attribute ein Vertex enthält, ist vom jeweiligen Anwendungsfall abhängig. Gebräuchliche Vertex-Attribute sind z.b. die Position des Vertex im dreidimensionalen Raum, der Normalen- Vektor, der senkrecht auf der Oberäche der Objektes steht, oder die Farbe des Objektes. Abb. 2: Das Polygon-Gitter einer Kugel. Vertices werden durch schwarze Punkte dargestellt. Farbwerte bestehen aus einem Wert für den Rot-, Grün- und Blau-Anteil der Farbe sowie einem Alpha-Wert, der die Deckkraft der Farbe angibt. Ein Alpha-Wert von 0% bedeutet, dass die Farbe komplett transparent ist, ein Alpha-Wert von 100% bedeutet, dass die Farbe nicht transparent ist. Um ein Polygon-Gitter zu speichern werden meist alle Vertices die zu den Polygonen des Polygon-Gitters gehören in einer Liste gespeichert. Für die einzelnen Polygone werden dann nur die Indices der Vertices, die die Eckpunkte des Polygons bilden, gespeichert. Ein Index gibt an, an welchen Stellen in der Liste der Vertices ein bestimmtes Vertex steht. 3

10 2.2 DAS PROBLEM MIT DER TRANSPARENZ 2.2 Das Problem mit der Transparenz Um aus mehreren dreidimensionalen Objekten ein Bild zu erzeugen, muss die Reihenfolge beachtet werden in der sich die Objekte verdecken. So verdeckt ein nicht transparentes Objekt die dahinter liegenden, wodurch nur das vorderste Objekt sichtbar ist. Für transparente Objekte ist dies sogar noch komplizierter, da man durch transparente Objekte auch die dahinter liegenden Objekte sehen kann. Bei transparenten Objekten ergibt sich die Farbe eines Pixels (C) aus der Farbe des transparenten Objekts (c 0 ), dessen Alpha-Wert (α 0 ) sowie der Farbe des Objekts, das von dem transparenten Objekt verdeckt wird (c 1 ), anhand der folgenden Formel: C = α 0 c 0 + (1 α 0 ) c 1 (I) Da das Objekt, das von einem transparenten Objekt verdeckt wird ebenfalls ein transparentes Objekt seien kann, müssen für die Berechnung der Farbe eines Pixels alle Objekte berücksichtigt werden die auf dieses Pixel abgebildet werden. Somit ergeben sich für die Berechnung der Farbe eines Pixels die folgenden Formeln: C = α 0 c 0 + (1 α 0 ) (α 1 c 1 + (1 α 1 ) (α 2 c )) (II) oder C = n j<i (vis(i)α i c i ) vis(i) = (1 α j ) (III) i=0 j=0 Bei diesen Formeln ist C die endgültige Farbe eines Pixels, α n ist der Alpha-Wert der Farbe eines Objektes und c n ist der Farb-Wert eines Objektes. Die Funktion vis(i) ist die Sichtbarkeitsfunktion und gibt an wie stark sichtbar ein Objekt ist. Der Index eines Objekts gibt dabei die Reihenfolge an, in der sich die Objekte verdecken. Alternativ kann die endgültige Farbe eines Pixels auch rekursiv berechnet werden. Dazu gibt es zwei Möglichkeiten. Sind die Objekte von vorne nach hinten sortiert, so kann folgende Formel zur rekursiven Berechnung der Farbe eines Pixels verwendet werden: C n = A n 1 C n 1 + (1 A n 1 )c n A n = A n 1 + (1 A n 1 )α n (IV) Bei dieser Formel ist C n RGB-Farbwert eines Pixels und A n der dazugehörende Alphawert. Sind die Objekte von hinten nach vorne sortiert, so kann folgende Formel verwendet werden: C n = α n c n + (1 α n )C n 1 A n = α n + (1 α n )A n 1 (V) 4

11 2.3 PAINTER S ALGORITHMUS 2.3 Painter s Algorithmus Dieses Verdeckungs-Problem kann mit Hilfe des Painter's Algorithmus gelöst werden. Der Painter's Algorithmus beschreibt die Übertragung der Vorgehensweisen aus der Malerei auf die Computergrak und besagt, dass die Objekte, die von Betrachter am weitesten entfernt sind als erstes gezeichnet werden sollen. Anschlieÿend werden Objekte, die näher am Betrachter sind über die bereits gezeichneten Objekte gemalt. Für transparente Objekte ergibt sich die Farbe rekursiv, aus der Farbe des neu Gezeichneten Objektes und der Farbe der bereits gezeichneten Objekte, anhand von Formel V. Für Polygon-Gitter ergibt sich jedoch das Problem, dass sich Polygone schneiden oder zyklisch verdecken können (siehe Abb. 3). Für diese Polygone kann man nicht entscheiden welches Polygon als erstes gezeichnet werden muss. Um dieses Problem zu lösen müssen in diesen Fällen einzelne Polygone in kleine Polygone aufgeteilt werden. Eine weitere Möglichkeit den Painter's Algorithmus zu implementieren ist es, für jedes Pixel die darauf abgebildeten Teile der Polygone zu sortieren. Verfahren bei denen dies geschieht werden in Kapitel 3 beschrieben. Abb. 3: Sich zyklisch verdeckende Polygone. 2.4 OpenGL OpenGL [2] ist neben DirectX [1] eine der am häugsten benutzten Bibliotheken zur Darstellung von 2D- und 3D-Computergrak. Gegenüber DirectX besitzt OpenGL den Vorteil, dass es für mehrere Betriebssysteme verfügbar ist Die OpenGL-Rendering-Pipline In OpenGL erfolgt das Erzeugen eines Bildes aus einem Polygon-Gitter in mehreren aufeinander folgenden Stufen, die zusammen die OpenGL-Rendering-Pipline bilden. Die einzelnen Stufen der Rendering-Pipline werden als Stages bezeichnet. Einige Stages der Rendering-Pipline können durch kleine Programme, sogenannte Shader, angepasst werden, um verschiedene Aufgaben zu erfüllen. Zum Programmieren dieser Shader-Programme wird die OpenGL-Shading-Language verwendet. 5

12 2.4 OPENGL Abbildung 4 zeigt die komplette OpenGL- Rendering-Pipeline. Programmierbare Shader-Stages sind in der Abbildung als blaue Boxen dargestellt. Boxen mit nicht durchgehender Umrandung repräsentieren optionale Stages der Rendering-Pipline. Zwei dieser optionalen Stages sind die Tessellierung und der Geomety-Shader. Diese Stages erfüllen spezielle Aufgaben, die im Allgemeinen jedoch nicht benötigt werden. Im Folgenden werden daher nur die für diese Ausarbeitung relevanten Stages der Rendering-Pipeline erklärt. Abb. 4: Diagramm der OpenGL- Rendering-Pipeline [3]. In der ersten Stage der Rendering-Pipline, dem Vertex-Shader, werden die eingehenden Vertex- Daten verarbeitet. Aufgabe des Vertex-Shaders ist es für jedes eingehende Vertex genau ein Ausgabe- Vertex zu erzeugen. Dazu wird im Vertex-Shader zunächst die Position des eingehenden Vertex durch Multiplikation mit der Model-View-Matrix in das Koordinatensystem des Betrachters umgerechnet. Durch anschlieÿende Multiplikation mit der Projektions-Matrix wird die Position in das Koordinatensystem des Sichtbereichs des Betrachters umgerechnet. Des Weiteren werden im Vertex-Shader alle Attribute festgelegt die an die darauf folgenden Stages weiter gegeben werden. Welche Attribute vom Vertex-Shader an die darauf folgenden Stages weitergegeben werden bleibt dem Programmierer des Vertex-Shader überlassen. Es muss jedoch mindesten die Position des Vertex weitergegeben werden. In der Clipping-Stage werden alle Polygone verworfen die auÿerhalb des sichtbaren Bereichs liegen. Des Weiteren können in dieser Stage alle Polygone verworfen werden, die nicht zum Benutzer ausgerichtet sind. Dies kann z.b. genutzt werden um Polygone zu verwerfen die zur Rückseit eines Objekts gehören. In der Rasterisierungs-Stage werden für alle Polygone die Pixel berechnet, auf die diese abgebildet werden. Der Teil eines Polygons, der auf ein Pixel abgebildet wird, wird in OpenGL als Fragment bezeichnet. Die bei der Rasterisierung erzeugten Fragmente werden in der nächsten Stage der Rendering- Pipline, dem Fragment-Shader, verarbeitet. Der Fragment-Shader erhält die interpolierten Vertex-Attribute aller Vertices, die zu einem Polygon gehören. Diese Eingabedaten können im Fragment-Shader z.b. genutzt werden, um Beleuchtungs-Eekte zu berechnen. Als Resultat liefert der Fragment-Shader einen Farbwert und einen Tiefenwert. Der Tie- 6

13 2.4 OPENGL fenwert eines Fragmentes errechnet sich aus dessen Abstand zur Bildebene und ist auf eine Wert zwischen 0 und 1 normalisiert, wenn das Fragment im sichtbaren Bereich liegt. Nachdem im Fragment-Shader für die Fragmente der Farb- und Tiefenwert bestimmt wurde, erfolgt der Tiefen-Test. Bei diesem Test wird überprüft, ob ein Fragment einen höheren Tiefen-Wert hat als ein zuvor gerendertes Fragment. Hat ein Fragment einen höheren Tiefen-Wert, so ist dieses weiter vom Betrachter entfernt, als das zuvor gezeichnete und wird verworfen. Für Fragmente die nicht verworfen wurden, kann anschlieÿend die Farbe des Fragmentes mit der, bereits im Bildspeicher stehenden, gemischt werden. Dieses Mischen wird als Blending bezeichnet. Zum Schluss werden dann der Farb- und Tiefenwert des neu gerenderten Fragmentes in den Bildspeicher geschrieben. Alternativ können die Farb- und Tiefenwerte auch in einer Textur gespeichert werden Alpha Blending Für das Blenden der Farbe eines Fragmentes mit dem gespeicherten Farbwert eines Pixels wird in OpenGL die Formel C = C src A + C dest B verwendet. Wobei C src die Farbe des neuen Fragmentes und C dest der gespeicherten Farbwert ist. Für die Variablen A und B können in OpenGL verschiedene Werte verwendet werden. Zum Beispiel wird bei Additivem-Blending den Variablen A und B der Wert 1 zugewiesen, wodurch die Farbwerte addiert werden. Bei Multiplikativem-Blending hingegen wird A = C dest und B = 0 gesetzt wodurch die Farbwerte multipliziert werden. Für die Darstellung transparenter Objekte wird hingegen A = α src und B = 1 α src gesetzt, wodurch man die Formel C = C src α src + C dest (1 α src ) erhält. Diese Formel entspricht der in Kapitel 2.2 vorgestellten Formel zur rekursiven Berechnung der korrekten Farbe (Formel V). Da das Blending bei dieser Formel anhand des Alpha-Wertes der neuen Farbe geschieht, bezeichnet man dies als Alpha Blending. Das rekursive Berechnen der korrekten Farbe funktioniert jedoch nur solange, wie die Fragmente in der richtigen Reihenfolge gezeichnet werden (siehe Kapitel 2.2). Wird ein Fragment gerendert das weiter vom Betrachter entfernt ist als ein zuvor gerendertes transparentes Fragment, kann dessen Einuss auf die endgültige Farbe des Pixels nicht mehr berechnet werden und das Fragment wird verworfen. Dies wiederum führt zu Bild- Fehlern (siehe Abb. 5.). 7

14 2.5 BSP-BÄUME Abb. 5: Im Vergleich: Ein ohne Beachtung der Reihenfolge gerendertes Bild (links) und ein korrekt gerendertes Bild (rechts). 2.5 BSP-Bäume Eine Möglichkeit um sicher zu stellen, dass alle Fragmente in der richtigen Reihenfolge gerendert werden, ist die Verwendung von Binary Space Partitioning (BSP). Bei BSP wird der dreidimensionale Raum in mehrere Bereiche aufgeteilt, wobei jeder Bereich einen Teil der darzustellenden Szene enthält. Die Teilbereiche des dreidimensionale Raum können dann in der korrekten Reihenfolge gerendert werden. Dazu wird ein Binärer-Baum genutzt bei dem jeder Knoten einen Bereich des dreidimensionalen Raumes repräsentiert. Des Weiteren speichert jeder Knoten eine Ebene, die den von ihm repräsentierten Raum in zwei Bereiche unterteilt. Diese Bereiche werden von den beiden Kinder-Knoten des Knotens repräsentiert. Die Blatt-Knoten des Baumes enthalten die zu zeichnende Geometrie, die sich in dem Teil des Raum bendet, den der Knoten repräsentiert. Damit alle Fragmente in der richtigen Reihenfolge gerendert werden können, muss beim Erstellen des BSP-Baum sichergestellt werden, dass sich innerhalb eines Knotens keine Polygone verdecken können. Dies kann erreicht werden, indem jeder Knoten nur ein Polygon enthält. Des Weiteren ist bei der Erstellung von BSP-Bäumen zu beachten, dass die Ebenen, die genutzt werden um den dreidimensionalen Raum zu unterteilen, auch Polygone schneiden können. Diese Polygone müssen anhand der Ebene geteilt werden, so dass für jedes Polygon, das die Ebenes schneidet, zwei neue Polygone erzeugt werden. Um eine Szene zu rendern, die von einem BSP-Baum repräsentiert wird, muss der Baum durchlaufen werden. Dazu wird für jeden Knoten überprüft, auf welcher Seite der vom Knoten repräsentierten Ebene sich der Betrachter bendet. Anschlieÿend wird der Teilbaum durchlaufen der auf der dem Betrachter abgewandten Seite der Ebene liegt. Enthält 8

15 2.5 BSP-BÄUME der Knoten ein Polygon, so wird dieses gerendert nachdem der erste Teilbaum durchlaufen wurde. Zum Schluss wird der Teilbaum durchlaufen, der die dem Betrachter zugewandte Seite der Ebene repräsentiert. Abb. 6: Beispiel für die Erstellung eines BSP-Baums. Abbildung 6 zeigt die Polygonen A, B, C und D (links) und einen BSP-Baum (rechts) der aus diesen erstellt wurde. Des Weiteren zeigt die Abbildung wie Polygone, die eine Ebene schneiden, aufgeteilt werden (mittig). Auf Grund des hohen Aufwands bei der Erstellung eines BSP-Baums, eignet sich deren Einsatz nicht für Szenen die sich verändern können. Für statische Szenen kann jedoch der Einsatz von BSP-Bäumen sinnvoll sein. Zudem können weitere Optimierungen auf dem BSP-Baum durchgeführt werden. So können z.b. Teilbäume, die auÿerhalb des sichtbaren Bereichs liegen, beim Rendern ignoriert werden. 9

16 3 OIT-Verfahren In diesem Kapitel werden Verfahren vorgestellt, die unabhängig von der Reihenfolge, in der die einzelnen Polygone/Fragmente gerendert werden, die Darstellung transparenter Objekte ermöglichen. Diese Verfahren gehören zur Gruppe der sogenannten Order- Independent-Transparency (OIT ) Verfahren. 3.1 Depth Peeling Bei Depth Peeling (DP) handelt ein sich um ein iteratives Verfahren zur Darstellung transparenter Objekten. Dazu werden bei DP in mehreren Schritten verschiedene Schichten der darzustellenden Szene getrennt voneinander gerendert und anschlieÿend zu einem fertigen Bild kombiniert. Eine Schicht der Szene besteht auf maximal einem Fragment für jedes Pixel des zu erzeugenden Bildes. So enthält z.b. die erste Schicht für jedes Pixel, nur das Fragment, das den geringsten Tiefenwert aufweist. Entsprechend enthält die zweite Schicht nur die Fragmente mit den zweit geringsten Tiefenwerten und so weiter (siehe Abb. 7). In den folgenden Unterkapiteln werden nun einige Möglichkeiten zur Implementierung von DP vorgestellt. Abb. 7: Die vorderste (blau) und die zweit vorderste (schwarz) Schicht einer Szene Standard Depth Peeling Bei der naiven Implementierung vom DP wird in jedem Schritt genau eine Schicht der Szene gerendert. Dazu muss in jedem Schritt die komplette Szene gerendert werden, um das Bild einer Schicht zu generieren. Die in den einzelnen Schritten entstandenen Bilder werden jeweils in einer Textur gespeichert. Um Speicherplatz zu sparen kann man die in einem Schritt erzeugte Textur direkt mit der im vorherigen Schritt erzeugten Textur blenden. Auf diese Weise werden immer nur zwei Texturen benötigt. Des Weiteren enthält die auf diese Weise in einem Schritt erzeugte Textur bereits die korrekt geblendeten Farbwerte aller bereits gerenderten Schichten (siehe Abb. 8). 10

17 3.1 D EPTH P EELING Von links nach rechts die nach dem ersten, zweiten und dritten Schritt mit DP erzeugten Texturen [5]. Abb. 8: Um gezielt eine bestimmte Schicht rendern zu können, werden die Tiefenwerte der davor liegenden Schicht benötigt. Aus diesem Grund werden in einem Schritt nicht nur die Farbwerte der Fragmente in eine Textur gerendert, sondern es werden auch noch deren Tiefenwerte in eine zweite Textur gerendert. Diese Textur wird dann beim Rendern der nächsten Schicht im Fragment-Shader ausgelesen und der für ein Pixel gespeicherte Tiefenwert wird mit den Tiefenwerten der auf dieses Pixel abgebildeten Fragmente verglichen. Ist der Tiefenwert eines Fragments kleiner oder genau so groÿ wie der gespeicherte Tiefenwert, so gehört dieses Fragment zu einer Schicht die bereits gerendert wurde und wird daher verworfen. Von allen Fragmenten, die im Fragment-Shader nicht verworfen worden sind, werden anschlieÿend nur die Farb- und Tiefenwerte der Fragmente die den geringsten Tiefenwert haben in die Texturen geschrieben, pro Pixel also genau ein Fragment. Das Blenden der Farbwerte erfolgt bei DP ebenfalls im Fragment-Shader. Dazu wird zunächst der Farbwert des Pixels, aus der im vorherigen Schritt erzeugten Textur, ausgelesen und anschlieÿend mit der Farbe des zu rendernden Fragments geblendet. Da bei DP neue Schichten hinter die vorherigen Schichten gerendert werden, muss zum Blenden der Farb-Werte folgende Funktion verwendet werden (siehe Formel IV): C = αneu cneu + (1 αneu )Calt A = αneu + (1 αneu ) Aalt Diese Abbildung zeigt die in den verschiedenen Schritten gerenderten Schichten der Szene. Schichten die im jeweiligen Schritt gerendert werden sind Blau dargestellt. Schichten die in vorherigen Schritten gerendert wurden sind Türkis dargestellt. Abb. 9: 11

18 3.1 DEPTH PEELING Abbildung 9 zeigt wie bei DP nach und nach die einzelnen Schichten der Szene gerendert werden. Wie viele Schritte benötigt werden um ein Szene korrekt zu rendern ist immer von der Tiefenkomplexität der Szene abhängig. Die Tiefenkomplexität einer Szene entspricht der maximalen Anzahl transparenter Fragmente, die auf ein Pixel abgebildet werden. Da bei DP für jeden Schritt die komplette Szene gerendert werden muss, ist dieses Verfahren für komplexe Szenen sehr langsam. Aus diesem Grund ist das Hauptziel bei der Optimierung von DP das Verringern der Anzahl der benötigten Schritte ist. So kann z.b. DP nach einer festgelegten Anzahl von Schritten abgebrochen werden, wodurch jedoch nicht mehr die korrekte Darstellung der transparenten Objekte erreicht wird Dual Depth Peeling Eine mögliche Erweiterung von DP ist Dual Depth Peeling (DDP) [9]. Bei DDP wird DP in zwei Richtungen gleichzeitig durchgeführt, wodurch nur halb so viele Schritte notwendig sind um alle Schichten zu rendern. Dazu müssen jedoch in jedem Schritt zwei Schichten der Szene gerendert werden, wofür wiederum zwei Texturen benötigt werden (siehe Abb. 10). Die erste Textur (Front- Textur) wird verwendet, um von vorne nach hinten die vordersten Schichten des Bildes zu blenden (siehe Kapitel 2.2 Formel IV). Die zweite Textur (Back-Textur) wird verwendet, um von hinten nach vorne die hintersten Schichten des Bilden zu blenden (siehe Kapitel 2.2 Formel V). Zum Schluss werden dann die beiden Texturen übereinander geblendet um das Fertige Bild zu erzeugen. Abb. 10: Diese Abbildung zeigt die in den verschiedenen Schritten gerenderten Schichten der Szene. Schichten die im jeweiligen Schritten in die Front/Back-Textur gerendert werden sind Blau/Rot dargestellt. Schichten die in vorherigen Schritten in die Front/Back- Textur gerendert wurden sind Türkis/Lila dargestellt. Da in jedem Schritt zwei Schichten gerendert werden müssen, die unterschiedliche Tiefenwerte besitzen, muss zum Speichern der Tiefenwerte eine zusätzliche Textur verwendet werden. Diese Textur wird dazu genutzt die Tiefenwerte der Fragmente zu speichern, die im nächsten Schritt gerendert werden sollen. Zu diesem Zweck wird zunächst, in einem initialen Schritt, die komplette Szene gerendert, wobei jedoch nur die minimalen und maximalen Tiefenwerte der Fragmente in die Tiefen-Textur gerendert werden. Dadurch enthält die Tiefen-Textur die Tiefenwerte der Fragment, die im nächsten Schritt in die 12

19 3.1 DEPTH PEELING Front-/Back-Textur gerendert werden sollen. In den darauf folgenden Schritten wird im Fragment-Shader für jedes Fragment der Tiefenwert des Fragments mit dem minimalen und maximalen Tiefenwert verglichen. Ist der Tiefenwert eines Fragments gleich dem minimalen Tiefenwert, so wird das Fragment in die Front-Textur gerendert. Ist der Tiefenwert eines Fragments gleich dem maximalen Tiefenwert, so wird dieses in die Back-Textur gerendert. Ist der Tiefenwert eines Fragments kleiner als der minimalen Tiefenwert oder gröÿer als der maximale Tiefenwert, so wurde das Fragment bereits in einem früheren Schritt gerendert und wird verworfen. Aus allen anderen Fragmenten werden wieder der minimale und maximale Tiefenwert der Fragmente bestimmt die auf ein Pixel abgebildet werden. Die so bestimmten minimalen und maximalen Tiefenwerte legen wiederum fest, welche Fragmente im nächsten Schritt gerendert werden. Genau wie bei DP werden auch bei DDP die Farben der Fragmente, die in einem Schritt gerendert werden, direkt im Fragment-Shader mit den zuvor gerenderten Schichten geblendet Depth Peeling mit Bucket-Sort Bei Depth Peeling mit Bucket-Sort (DPBS) nutzt man aus, dass man auf modernen Gra- kkarten eine Szene gleichzeitig in bis zu 32 Texturen rendern kann. Dies wird bei DPBS genutzt um DP für bis zu 32 Schichten gleichzeitig auszuführen. Zu diesem Zweck werden die zu zeichnenden Fragmente mit Hilfe von Bucket-Sort, anhand ihres Tiefenwerts auf die verschiedenen Texturen verteilt. Für alle Fragmente, die in dieselbe Textur gerendert werden sollen, wird dann DP durchgeführt. Damit man jedoch Bucket-Sort nutzen kann, um die Fragmente auf die verschiedenen Texturen zu verteilen, benötigt man Informationen darüber, wie die Fragmente in der Tiefe verteilt sind. Um die für Bucket-Sort benötigten Informationen über die Tiefenverteilung der Fragmente zu berechnen, werden bei DP mit Bucket-Sort zusätzliche Schritte benötigt. Abbildung 11 zeigt diese Schritte. Ähnlich wie bei DDP wird auch bei DPBS zunächst eine Textur erzeugt, in der für jedes Pixel der minimale und maximale Tiefenwert, der auf dieses Pixel abgebildeten Fragmenten, gespeichert werden. Da diese Informationen lediglich dazu verwendet Abb. 11: Diese Bild zeigt die Funktionsweise von Depth Peeling mit Bucket-Sort [8]. 13

20 3.2 STOCHASTIC TRANSPARENCY werden den Bereich in dem sich die Fragmente benden einzuschränken, reicht es für die Berechnung der minimalen und maximalen Tiefenwerte aus, diese auf Basis der Bounding-Boxen 1 der darzustellenden Objekte zu berechnen. In Abbildung 11 werden die minimalen/maximalen Tiefenwerte als zn ear und zf ar bezeichnet. In nächsten Schritt wird anschlieÿend ein Tiefen-Histogramm der Szene erstellt. Zu diesem Zweck wird die gesamte Szene in eine Textur gerendert, in der für jedes Pixel ein Tiefen-Histogramm in Form einer n-bit Variable gespeichert wird. Jedes Bit dieser Variable repräsentiert einen Tiefenwertbereich zwischen dem minimalen und maximalen Tiefenwert und gibt an ob sich Fragmente innerhalb dieses Bereichs benden. Um das Tiefen-Histogramm zu erstellen, wird im Fragment-Shader zunächst überprüft in welchem der Tiefenwert-Bereich sich das Fragment bendet. Anschlieÿend wird dann das entsprechende Bit des Tiefen-Histogramms gesetzt. Die in diesen beiden Schritten berechneten Informationen werden anschlieÿend verwendet, um für ein Fragment zu entscheiden in welche der 32 Texturen dieses gerendert werden muss. Werden für ein Pixel mehrere Fragmente in dieselbe Textur gerendert, so wird zu nächst nur das vorderste Fragment in die Textur geschrieben. Anschlieÿend werden in weiteren Schritten die anderen Fragmente gerendert und mit den zuvor gerenderten Fragmenten geblendet. 3.2 Stochastic Transparency Bei Stochastic Transparency (ST ) [4] nutzt man den Alpha-Wert eines Fragmentes um zufällig zu entscheiden, ob ein Fragment gerendert oder verworfen wird. Fragmente, die nicht verworfen wurden, werden wie nicht transparente Fragmente behandelt. Sie werden also nicht mit dahinter liegenden Fragmenten geblendet, sondern sie verdecken diese komplett. Die Wahrscheinlichkeit, dass ein Fragment ein dahinter liegendes Fragment verdeckt, liegt bei p = α. Die Wahrscheinlichkeit, dass ein Fragment sichtbar ist, obwohl es von einem andern Fragment verdeckt wird, beträgt p = p n (1 p n 1 ), wobei p n die Wahrscheinlichkeit dafür ist, dass das Fragment gezeichnet wird und p n 1 die Wahrscheinlichkeit dafür ist, dass das verdeckende Fragment gezeichnet wird. Für die Farbe eines Pixels ergibt sich somit ein Erwartungswert von C = p 0 c 0 + (1 p 0 ) (p 1 c 1 + (1 p 1 ) (p 2 c )). Da bei ST die Wahrscheinlichkeit, dass ein Fragment nicht verworfen wird, gleich dessen Alphawert ist, entspricht der Erwartungswert für die Farbe eines Pixels der korrekt geblendeten Farbe aller Fragmente (Vergleich Formel II). 1 Eine Bounding-Box ist eine Box, die ein Objekt komplett umschlieÿt 14

21 3.2 S TOCHASTIC T RANSPARENCY Da ST jedoch auf Wahrscheinlichkeiten beruht, weicht die resultierende Farbe eines Pixels unter Umständen stark vom Erwartungswert ab, da für jedes Pixel nur die Farbe ein Fragtet gespeichert wird. Um diese Abweichungen vom Erwartungswert zu verringern, wird ST in Verbindung mit Mutisampling verwendet. Bei Mutisampling werden für jedes Pixel des Bildes mehrere Samples berechnet, aus denen dann der Durchschnitt berechnet wird. Anstatt jedoch für jedes Sample eines Fragmentes einzeln zu entscheiden, ob das Fragment gerendert oder verworfen wird, werden bei ST aus den n Samples zufällig bα nc Samples ausgewählt, für die das Fragment gerendert wird. Für die restlichen d(1 α) ne Samples wird das Fragment verworfen. Bei einem einzigen transparenten Fragment erhält man auf diese Weise einen nahezu korrekten Farbwert. Eine mit ST gerenderte Szene [4]. Links: 8-faches Mutisampling. Mitte: 16faches Mutisampling. Rechts: 64-faches Mutisampling Abb. 12: In Abbildung 12 ist gut zu erkennen wie durch eine höhere Anzahl an Samples die Abweichung der Farbe eines Pixels von dessen Erwartungswert verringert werden kann. Die Erhöhung der Anzahl an Spamples ist jedoch nicht die einzige Möglichkeit diese Abweichung zu verringern. Eine weitere Möglichkeit ist es für jedes Pixel zunächst Q den korrekten Alpha-Wert vorauszuberechnen. Dieser ergibt sich durch αtotal = 1 (1 αi ), wobei die Reihenfolge in der die Fragmente gerendert werden keine Rolle spielt. Der korrekte Alpha-Wert kann dann als Korrekturfaktor verwendet werden um die Abweichung der Farbe eines Pixels vom Erwartungswert zu verringern. Dazu wird für jedes Fragment die Farbe des Fragments mit αtotal /(r/n) multipliziert, wobei r die Anzahl an Samples ist für die das Fragment gerendert wird. Eine weitere Möglichkeit die Abweichung der Farbe eines Pixels von dessen Erwartungswert zu verringern ist es ST zu verwenden um für jedes Pixel die Sichtbarkeitsfunktion der Szene zu bestimmen. Dazu wird in einen Schritt zunächst ST durchgeführt, wobei jedoch für jedes Sample nur der Tiefenwerte gespeichert wird. In einem weiteren Schritt 15

22 3.3 A-BUFFER wird dann die komplette Szene erneut gerendert, wobei im Fragment-Shader die Tiefen- Werte der Fragmente mit den zuvor gesampelten Tiefenwerten verglichen werden. Durch vis = 1 k/n kann man dann für ein Fragment abschätzen, wie stark dieses von davor liegenden Fragmenten verdeckt wird, wobei vis die Sichtbarkeit des Fragments, k die Anzahl des Tiefenwert-Samples die kleiner als der Tiefen-Wert der Fragments sind und n die Anzahl an Tiefenwert-Samples ist. Diese Abschätzung der Sichtbarkeit eines Fragments kann dazu verwendet werden die Farbe eines Pixels zu berechnen (siehe Formel III in Kapitel 2.2). Dazu wird im Fragment-Shader die Farbe eines Fragmentes mit dessen Sichtbarkeit und dessen Alpha-Wert multipliziert. Durch additives Blending werden anschlieÿend alle Fragmente die auf ein Pixel abgebildet werden aufsummiert. Abbildung 13 zeigt, wie durch diese beiden Vorgehensweisen die Bildqualität verbessert werden kann. Abb. 13: Eine mit ST gerenderte Szene [4]. Links: 8-faches Mutisampling. Mitte: 8- faches Mutisampling + Alpha Korrektur. Rechts: 8-faches Mutisampling + Tiefen-Wert Korrektur. 3.3 A-Buffer Als A-Buer bezeichnet man in der Computergrak einen Speicher in dem für jeden Pixel mehrere Fragmente gespeichert werden können. Ursprünglich war der A-Buer für die Verwendung in Anti-Aliasing-Techniken gedacht, er kann jedoch auch für die Darstellung transparenter Objekte verwendet werden. Dazu werden zunächst alle Fragmente eines Pixels in den A-Buer geschrieben. Anschlieÿend werden sie wieder ausgelesen, sortiert und geblendet. Für die Implementierung des A-Buers auf einer Grakkarte muss im Fragment-Shader sowohl lesend als auch schreibend auf den Speicher der Grakkarte zugegrien werden. Da dies in DirectX erst seit Version 11 und in OpenGL seit Version 4.0 möglich ist, ist 16

23 3.3 A-BUFFER die Implementierung des A-Buers nur auf Grakkarten möglich, die eine entsprechende DirectX/OpenGL Version unterstützten. Das Rendern transparenter Szenen mit Hilfe des A-Buer geschieht in drei Schritten. Im ersten Schritt wird der A-Buer geleert. Das heiÿt, es werden alle Fragmente die beim Rendern des vorherigen Bildes in den A-Buer geschrieben wurden aus dem A- Buer gelöscht. Im zweiten Schritt wird die Szene gerendert, wobei der Fragment-Shader genutzt wird um die einzelnen Fragmente in den A-Buer zu schreiben. Im dritten Schritt wird dann das fertige Bild erstellt. Dazu wird ein Rechteck über die komplette Bildebene gerendert, so dass für jedes Pixel ein Fragment generiert wird. Dies ist nötig damit für jedes Pixel der Fragment-Shader aufgerufen wird, in dem dann die Farbe des Pixels berechnet wird. Zu diesem Zweck werden im Fragment-Shader alle Fragmente, die auf das jeweilige Pixel abgebildet werden, aus dem A-Buer ausgelesen. Anschlieÿend werden diese anhand ihres Tiefenwertes sortiert und danach geblendet. Zum Schluss wird dann der durch das Blenden der Fragmente entstandene Farbwert in den Bildspeicher geschrieben. Eine Möglichkeit den A-Buer auf der Grakkarte zu implementieren, ist es alle Fragmente, die auf dasselbe Pixel abgebildet werden, in einer verketteten Liste zu speichern. Dazu wird ein Speicherbereich benötigt in dem alle Elemente der verketteten Listen gespeichert werden können. Für jedes Listenelement müssen der Farb- und Tiefenwert des darin gespeicherten Fragments, sowie ein Verweis auf das nächste Element der Liste gespeichert werden. Dieser Speicherbereich wird im Folgenden als Node-Buer bezeichnet. Da für jedes Pixel eine Liste gespeichert wird, muss auch für jedes Pixel ein Verweis auf das erste Element der zu diesem Pixel gehörenden Liste gespeichert werden. Dieser Verweis wird im Folgenden als Head-Pointer bezeichnet. Auÿerdem wird noch ein Verweis auf das nächste noch freie Element im Node-Buer benötigt. Dieser Verweis wird im Folgenden als Counter bezeichnet. Abb. 14: Einfügen eines neuen Elements in die verkettete Liste des A-Buers [7]. 17

24 3.4 ADAPTIVE TRANSPARENCY Abbildung 14 zeigt wie ein neues Fragment in die Liste der auf ein Pixel abgebildeten Fragmente, eingefügt wird. Beim Einfügen eines Fragments in den A-Buer wird zunächst der Counter ausgelesen und inkrementiert (siehe Abb ). Da der Fragment-Shader für mehrere Fragmente parallel ausgeführt wird, muss zum Auslesen und Inkrementieren des Counters eine atomare Operation verwendet werden, um Race Conditions zu vermeiden. Anschlieÿend wird der Head-Pointer des Pixels, auf den das zu zeichnende Fragment abgebildet wird, ausgelesen und durch den zuvor aus dem Counter ausgelesenen Wert ersetzt (siehe Abb ). Auch für diesen Vorgang muss eine atomare Operation verwendet werden, um Race Conditions zu vermeiden. Zum Schluss wird an der durch den aus dem Counter ausgelesenen Wert angegebenen Stelle im Node-Buer ein neues Element eingefügt (siehe Abb ). Das neu eingefügte Element enthält den Farbund den Tiefen-Wert des zu zeichnenden Fragments, sowie den aus dem Head-Pointer ausgelesenen Verweis auf das nächst Element der Liste. Um alle Fragmente, die zu einem bestimmten Pixel gehören aus dem A-Buer auszulesen, wird über die zu diesem Pixel gehörende Liste iteriert. Dazu wird zunächst der Head- Pointer des Pixels ausgelesen. Anschlieÿend wird das durch den Head-Pointer angegebene Elemente aus dem Node-Buer gelesen. In der nächsten Iteration wird dann das Element aus dem Node-Buer gelesen, auf das das zuvor gelesene Element verweist. Verweist ein Element auf kein weiteres Element so ist das Ende der Liste erreicht. Neben der Implementierung des A-Buer als verkettete Liste gibt es noch weitere Möglichkeiten diesen auf der Grakkarte zu implementieren, wie z.b. die Implementierung des A-Buer als Array. Das Grundprinzip bleibt jedoch das Selbe. 3.4 Adaptive Transparency Bei Adaptive Transparency (AT ) [11]werden ähnliche Datenstrukturen verwendet wie beim A-Buer. Jedoch werden diese bei AT nicht dazu verwendet die Fragmente zu speichern, die auf ein Pixel abgebildet werden. Stattdessen werden sie dazu verwendet für jedes Pixel die Sichtbarkeitsfunktion der darzustellenden Szene zu speichern. Zur Speicherung der Sichtbarkeitsfunktion wird bei AT für jedes Pixel eine Liste aus Paaren von Tiefen- und Alphawerten gespeichert. Diese Paare aus Tiefen- und Alphawerten werden im Folgenden als Knoten bezeichnet. Um die Sichtbarkeitsfunktion auszuwerten verwendet man die folgende Formel: vis(z) = z i <z (1 αi ) (VI) Wobei z i und α i der Tiefen- bzw. Alphawert eines Knotens sind. 18

25 3.4 ADAPTIVE TRANSPARENCY Das Rendern einer Szene mit AT geschieht in zwei Schritten. Im ersten Schritt wird für jeden Pixel die Sichtbarkeitsfunktion der Szene berechnet. Im zweiten Schritt erfolgt dann das eigentliche Rendern der Szene. Dazu wird im Fragment- Shader die Sichtbarkeits-Funktion für jedes Fragment ausgewertet. Anschlieÿend wird der von der Sichtbarkeits-Funktion zurückgelieferte Wert mit dem Alpha-Wert und der Farbe des Fragments multipliziert. Durch additives Blending aller Fragmente erhält man schlieÿlich für jedes Pixel den korrekten Farbwert (siehe Formel III in Kapitel 2.2). Zum Erstellen der Sichtbarkeitsfunktion wird zunächst die komplette Szene gerendert, wobei jedoch keine Farb- oder Tiefenwerte in den Bildspeicher geschrieben werden. Stattdessen werden im Fragment-Shader, die Tiefen- und Alpha-Werte der Fragmente in die zu dem jeweiligen Pixel, gehörenden Liste eingefügt. Ein weiteres Ziel von AT ist es, mit einer begrenzten Speichermenge auszukommen. Zu diesem Zweck wird für die Listen, die zum Speichern der Sichtbarkeitsfunktionen verwendet werden, eine maximale Länge festgelegt. Dadurch wiederum kann es beim Einfügen eines neuen Knotens vorkommen, dass für diesen kein Platz mehr in der Liste ist. In einem solchen Fall müssen zwei Knoten zusammengefasst werden. Beim Zusammenfassen von zwei Knoten muss jedoch darauf geachtet werden, dass sich das Integral der Sichtbarkeitsfunktion so wenig wie möglich ändert. Zu diesem Zweck werden die einzelnen Konten nach ihren Tiefenwerten sortiert gespeichert. Um zu entscheiden welche Knoten zusammengefasst werden, werden die beiden benachbarten Knoten gesucht, durch deren Zusammenfassen sich das Integral der Sichtbarkeitsfunktion am wenigsten ändert. Abb. 15: Die Sichtbarkeitsfunktion einer Szene (rot) im Vergleich mit der bei AT verwendeten Sichtbarkeitsfunktion (blau) und der durch Sampling von Tiefenwerten mit ST erzeugten Sichtbarkeitsfunktion (gelb) [11]. Abbildung 15 zeigt die bei AT mit acht Knoten pro Pixel erzeugte Sichtbarkeitsfunktion im Vergleich mit der korrekten Sichtbarkeitfunktion der Szene. Des Weiteren wird in Abbildung 15 die Sichtbarkeitsfunktion die bei ST durch Berechnen von 16-Tiefenwert- Samples entstanden ist angezeigt. Ein Nachteil dieser Vorgehensweise ist jedoch, dass zur Vermeidung von Race Conditions die Verwendung von atomaren Operationen nicht ausreicht. Stattdessen müssen Critical- 19

26 3.4 ADAPTIVE TRANSPARENCY Sections verwendet werden um Race Conditions auszuschlieÿen. In den aktuellen Versionen von DirectX und OpenGL gibt es jedoch noch keine Funktionen für Critical-Sections in Shadern, weshalb man diese selbst programmieren muss. 20

27 4 Fazit In den Vorherigen Kapiteln wurde bereits erklärt wie in der Computergrak aus 3D- Modellen Bilder generiert werden und worin genau das Problem bei der Darstellung transparenter Objekte besteht. Anschlieÿend wurden verschiedenen Verfahrenen zur Darstellung transparenter Objekte vorgestellt, die alle unterschiedliche Vor- und Nachteile haben und sich daher für unterschiedliche Anwendungsfälle eignen. Depth Peeling läst sich z.b. relativ einfach implementieren. Da bei DP die darzustellende Szene jedoch mehrfach gerendert werden muss, eignet sich dieses Verfahren nur zur Darstellung einfacher Szenen (Szenen mit geringer Tiefenkomplexität und wenigen Polygonen). Erweiterungen für DP wie z.b. DDP oder DP mit Bucket-Sort sind schwieriger zu implementieren als DP, dafür muss die darzustellende Szene jedoch nicht so oft gerendert werden wie bei DP. Diese Verfahren eignen sich daher auch für komplexere Szenen als DP. Der A-Buer hat gegenüber auf DP basierenden Verfahren den Vorteil, dass die darzustellende Szene nur einmal gerendert werden muss. Die Nachteile des A-Buers bestehen jedoch darin, dass sein Implementierung nur auf modernen Grakkarten (Grakkarten die DirectX 11 oder OpenGL 4.0 unterstützen) möglich ist. Des Weiteren benötigt der A-Buer zum Abspeichern der darzustellenden Fragmente viel Speicherplatz. Aus diesen Gründen eignet er sich zur Darstellung komplexer Szenen, jedoch sollte, um Speicherplatz zu sparen, die Tiefenkomplexität der Szene nicht zu hoch sein. Für Szenen mit hoher Tiefenkomplexität kann Adaptive Transparency verwendet werden. Da bei AT eine komprimierte Version der Sichtbarkeitsfunktion verwendet wird, benötigt AT weniger Speicher als der A-Buer. Da es in den aktuellen Versionen von DirectX und OpenGL jedoch noch keine Funktionen zum Erstellen von Critical-Sections in Shadern gibt, gestaltet sich die Implementierung von AT schwieriger als die des A-Buers. Alternativ zu AT kann auch Stochastic Transparency verwendet werden. ST hat gegenüber AT den Vorteil, dass es auch auf Grakkarten eingesetzt werden kann die kein DirectX 11 oder OpenGL 4.0 unterstützen. Jedoch ist die Qualität des erzeugten Bildes bei ST schlechter als bei AT, da sich bei ST das Bildrauschen nicht komplett vermeiden lässt. Auf modernen Grakkarten eignet sich meiner Meinung nach der A-Buer am besten für die Darstellung transparenter Objekte, da bei Verfahren die darzustellende Szene nur einmal gerendert werden muss um ein vollkommen korrektes Bild zu generieren. Des Weiteren können die für den A-Buer verwendeten Dartenstruckuren auch für andere Aufgaben verwendet werden. So ist es z.b. mit Hilfe des A-Buers möglich die Transparenz eines Objekts abhängig von dessen Dicke zu bestimmen. 21

28 LITERATUR Literatur [1] msdn.microsoft.com/en-us/library/windows/apps/ee aspx. [2] [3] [4] E. Enderton, E. Sintorn, P. Shirley, and D. Luebke, Stochastic transparency, Visualization and Computer Graphics, IEEE Transactions on, 17 (2011), pp [5] C. Everitt et al., Interactive order-independent transparency, White paper, nvi- DIA, 2 (2001), p. 7. [6] D. Gordon and S. Chen, Front-to-back display of bsp trees, Computer Graphics and Applications, IEEE, 11 (1991), pp [7] H. G. N. T. Jason C. Yang, Justin Hensley, Real-time concurrent linked list construction on the gpu, Computer Graphics Forum, 29 (2010), pp [8] F. Liu, M.-C. Huang, X.-H. Liu, and E.-H. Wu, Ecient depth peeling via bucket sort, in Proceedings of the Conference on High Performance Graphics 2009, HPG '09, New York, NY, USA, 2009, ACM, pp [9] K. M. Louis Bavoil, Order independent transparency with dual depth peeling, tech. report, NVIDIA, [10] M. Paterson and F. Yao, Ecient binary space partitions for hidden-surface removal and solid modeling, Discrete & Computational Geometry, 5 (1990), pp [11] M. Salvi, J. Montgomery, and A. Lefohn, Adaptive transparency, in Proceedings of the ACM SIGGRAPH Symposium on High Performance Graphics, HPG '11, New York, NY, USA, 2011, pp

Texture Based Direct Volume Rendering

Texture Based Direct Volume Rendering Texture Based Direct Volume Rendering Vorlesung: "Advanced Topics in Computer Graphics" cbrak@upb.de 1 Agenda 1. Einleitung Volume Rendering 1.1. Volumendatensatz 1.2. Volumenintegral 1.3. Image order

Mehr

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen 3D-Rendering Ulf Döring, Markus Färber 07.03.2011 1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen Anzeigefläche (a) Worin besteht das Sichtbarkeitsproblem?

Mehr

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

rendern = ein abstraktes geometrisches Modell sichtbar machen 3. Grundlagen des Rendering "rendern" = ein abstraktes geometrisches Modell sichtbar machen Mehrere Schritte: Sichtbarkeitsberechnung Beleuchtungsrechnung Projektion Clipping (Abschneiden am Bildrand)

Mehr

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de Überblick Echtzeit-Rendering Uwe Domaratius dou@hrz.tu-chemnitz.de Gliederung 1. Einleitung 2. geometriebasierende Verbesserungen 3. Level-of-Detail 4. Culling 5. Texturen 6. bildbasiertes Rendering Was

Mehr

Binary Space Partitioning Trees: Konzepte und Anwendungen

Binary Space Partitioning Trees: Konzepte und Anwendungen Binary Space Partitioning Trees: Konzepte und Anwendungen Bastian Rieck Gliederung 1 Motivation 2 BSP Trees: Der klassische Ansatz Grundlagen Maleralgorithmus Probleme und Erweiterungen 3 BSP Trees: Anwendungen

Mehr

Terrain-Rendering mit Geometry Clipmaps

Terrain-Rendering mit Geometry Clipmaps Vorarbeiten & Grundlagen Basiskomponenten Der Clipmap-Algorithmus Terrain-Rendering mit Seminar Computergrak 2010 Vorarbeiten & Grundlagen Basiskomponenten Der Clipmap-Algorithmus Worum geht's? Algorithmus

Mehr

computer graphics & visualization

computer graphics & visualization Entwicklung und Implementierung echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs Motivation

Mehr

Billboard Clouds for Extreme Model Simplification

Billboard Clouds for Extreme Model Simplification Fakultät für Elektrotechnik, Informatik und Mathematik Arbeitsgruppe Algorithmen und Komplexität Prof. Friedhelm Meyer auf der Heide Billboard Clouds for Extreme Model Simplification Seminararbeit im Rahmen

Mehr

Graphische Datenverarbeitung und Bildverarbeitung

Graphische Datenverarbeitung und Bildverarbeitung Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Clippen in 2D und 3D Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 1 Einordnung in die Inhalte der Vorlesung Einführung

Mehr

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese Geometrisches Modell bestehend aus Datenstrukturen zur Verknüpfung geometrischer Primitive, welche eine Gesamtszene beschreiben Bildsynthese := Modellabbildung Pixelbasiertes Modell zur Darstellung eines

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

OpenGL. (Open Graphic Library)

OpenGL. (Open Graphic Library) OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation

Mehr

Seminar Game Development Game Computer Graphics. Einleitung

Seminar Game Development Game Computer Graphics. Einleitung Einleitung Gliederung OpenGL Realismus Material Beleuchtung Schatten Echtzeit Daten verringern Grafik Hardware Beispiel CryEngine 2 Kristian Keßler OpenGL Was ist OpenGL? Grafik API plattform- und programmiersprachenunabhängig

Mehr

Rendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de

Rendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de Rendering Grundlagen Version 1.0-2009-04-08 Allgemeine Unterschiede bei Renderern Scanline Rendering Raytrace Rendering Renderlayer Einsatz von Renderlayern Overrides Material Overrides Layer Presets Batch

Mehr

Volumen Visualisierung

Volumen Visualisierung Volumen Visualisierung Seminar Interaktive Visualisierung (WS 06/07) Fabian Spiegel und Christian Meß Fabian Spiegel und Christian Meß 1 Übersicht Anwendungsbeispiele Volumendaten Entstehung Repräsentation

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Asteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann

Asteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann Asteroids3D Seminar: Game Programming Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann Gliederung 2 1. Live-Demo und Spielidee 2. Softwarearchitektur und Szenengraph Übersicht

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

Algorithmen und Datenstrukturen Bereichsbäume

Algorithmen und Datenstrukturen Bereichsbäume Algorithmen und Datenstrukturen Bereichsbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung k-d Baum BSP Baum R Baum Motivation

Mehr

Vgl. Oestereich Kap 2.7 Seiten 134-147

Vgl. Oestereich Kap 2.7 Seiten 134-147 Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte

Mehr

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Assistenten Brian Amberg Andreas Forster Tutoren Simon Andermatt Lukas Beck Webseite http://informatik.unibas.ch/lehre/hs10/cs101/index.html

Mehr

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit Direct 3D-Output für ein Rendering Framework von Benjamin Betting unter der Betreuung von Daniel Schiffner 1 Gliederung Kapitel I und II: Motivation,Einführung,Grundlagen

Mehr

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte] UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Bernoullistrasse 16 CH 4056 Basel Assistenten Bernhard Egger Andreas Forster Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha

Mehr

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete Kapitel 0 Einführung 0.1 Was ist Computergrafik? Software, die einen Computer dazu bringt, eine grafische Ausgabe (oder kurz gesagt: Bilder) zu produzieren. Bilder können sein: Fotos, Schaltpläne, Veranschaulichung

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von.

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von. HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG Fakultät Informatik Das Luzifer-Rätsel Prof. Dr. Hartmut Plesske Wintersemester 2008/09 von Max Nagl nagl@fh-konstanz.de Inhaltsverzeichnis Inhaltsverzeichnis

Mehr

RTT DeltaGen Suite. Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination. Copyright 2010 by Realtime Technology AG

RTT DeltaGen Suite. Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination. Copyright 2010 by Realtime Technology AG RTT DeltaGen Suite Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination Copyright 2010 by Realtime Technology AG Look Editor Der Look Editor zeigt die Eigenschaften des Looks des selektierten

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

AquaZIS. Zeitreihenkorrektur

AquaZIS. Zeitreihenkorrektur AquaZIS Zeitreihenkorrektur Aachen, Juli 2013 aqua_plan Ingenieurgesellschaft für Problemlösungen in Hydrologie und Umweltschutz mbh Amyastr. 126, 52066 Aachen Tel.: 0241 40070-0, Fax: 0241 40070-99 Geschäftsführer:

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

GPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit

GPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit GPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit Ingrid Scholl 1, Nicole Schubert 1, Pascal Ziener 1, Uwe Pietrzyk 2 1 Fachbereich für Elektrotechnik und Informationstechnik,

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen

Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen MASTER THESIS zur Erlangung des akademischen Grades Master of Science in Engineering im Studiengang 585 Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen Ausgeführt

Mehr

Kompakte Graphmodelle handgezeichneter Bilder. Einbeziehung in Autentizierung und Bilderkennung

Kompakte Graphmodelle handgezeichneter Bilder. Einbeziehung in Autentizierung und Bilderkennung Kompakte Graphmodelle handgezeichneter Bilder Einbeziehung in Autentizierung und Bilderkennung Inhaltsverzeichnis 1 Einleitung Das graphische Model.1 Image Thinning................................. 3.

Mehr

Computer-Graphik 2 Visibility Computations II Culling

Computer-Graphik 2 Visibility Computations II Culling lausthal omputer-raphik 2 Visibility omputations II ulling lausthal University, ermany zach@in.tu-clausthal.de Klassifikation (Erinnerung) Problemklassen innerhalb des Bereichs "Visibility omputations":

Mehr

Non-Photorealistic Rendering

Non-Photorealistic Rendering Übersicht 1. Motivation und Anwendungen 2. Techniken - Cel Shading - Konturlinien - Hatching Einführung Traditionelle Computergraphik Ziel: Fotorealismus Einführung Motivation Bewusste Vermeidung von

Mehr

Kompakte Graphmodelle handgezeichneter Bilder

Kompakte Graphmodelle handgezeichneter Bilder Kompakte Graphmodelle handgezeichneter Bilder Einbeziehung in Authentizierung und Bilderkennung Inhaltsverzeichnis Seminar Mustererkennung WS 006/07 Autor: Stefan Lohs 1 Einleitung 1 Das graphische Modell.1

Mehr

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar Workshop: Einführung in die 3D-Computergrafik Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar 1 Organisatorisches Tagesablauf: Vormittags: Theoretische Grundlagen Nachmittags: Bearbeitung

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de Wiederholung: Anfragegraph Anfragen dieses Typs können als Graph dargestellt werden: Der

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 ZPL Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Agenda 1. ZPL Überblick 2. Konzepte von ZPL Regionen, Region Specifiers

Mehr

Martin Fiedler. Occlusion Culling

Martin Fiedler. Occlusion Culling Martin Fiedler Occlusion Culling Seminar Computergrafik Professur Grafische Datenverarbeitung und Visualisierung Fakultät für Informatik Technische Universität Chemnitz Inhalt Übersicht 2 Teil 1: Übersicht

Mehr

Jörn Loviscach Hochschule Bremen

Jörn Loviscach Hochschule Bremen Programmierbare Hardware-Shader Jörn Loviscach Hochschule Bremen Überblick Vertex- und Pixel-Shader Anwendungsbeispiele fx-dateien Anwendungsbeispiele Zusammenfassung Puffer Vertex- und Pixel-Shader Hardware-Renderpipeline

Mehr

Die Polygone im Vordergrund werden zuletzt wiedergegeben und überdecken möglicherweise weiter hinten liegende Polygone ganz oder teilweise.

Die Polygone im Vordergrund werden zuletzt wiedergegeben und überdecken möglicherweise weiter hinten liegende Polygone ganz oder teilweise. Dreidimensionale Schattierungsverfahren Umwandlung von 3D-Senen in 2D-Rasterbilder Objekte sind durch Polygone in Euklidschen bw. homogenen Vektorräumen definiert. Sie werden mit einer Kamera (i.a. Zentralprojektion)

Mehr

DIGITALE VIDEO KOMPRESSION AM BEISPIEL DES JPEG-VERFAHRENS

DIGITALE VIDEO KOMPRESSION AM BEISPIEL DES JPEG-VERFAHRENS 1 DIGITALE VIDEO KOMPRESSION AM BEISPIEL DES JPEG-VERFAHRENS Um das digitale Schneiden von digitalisierten Bildern zu ermöglichen, ist es notwendig, die drastisch hohe Datenmenge, die für jedes Bild gespeichert

Mehr

Visualisierung und Volumenrendering I

Visualisierung und Volumenrendering I Institut für Computervisualistik Universität Koblenz 05.07.2012 Inhaltsverzeichnis 1 Motivation 2 Volumendaten 3 Pipeline 4 Transferfunktionen 5 Gradienten 6 Volumenvisualisierung 7 IVR 8 DVR Wissenschaftliche

Mehr

2.1 CorelDRAW 8 Das Allround-Programm

2.1 CorelDRAW 8 Das Allround-Programm 2 CorelDRAW 8 Ziele dieses Kapitels: $ Sie lernen verschiedene Anwendungsgebiete von CorelDRAW 8 kennen. $ Sie verstehen den Unterschied zwischen Vektor-, Pixel- und Rendergrafiken. 2.1 CorelDRAW 8 Das

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Eine Einführung Computergrafik SS14 Timo Bourdon

Eine Einführung Computergrafik SS14 Timo Bourdon Eine Einführung Computergrafik SS14 Timo Bourdon Organisatorisches Übung am Freitag den 11. Juli entfällt! Zum OpenGL-Übungsblatt OpenGL 3.0 oder höher notwendig (Shading Language 1.50 oder höher) CIP

Mehr

Computer Graphik (CS231) - Installation der Software

Computer Graphik (CS231) - Installation der Software UNIVERSITÄT BASEL Prof. Dr. Thomas Vetter Departement Mathematik und Informatik Spiegelgasse 1 CH 4051 Basel Tobias Maier (tobias.maier@unibas.ch) Jasenko Zivanov (jasenko.zivanov@unibas.ch) Marc Schmidlin

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

Tag 9: Datenstrukturen

Tag 9: Datenstrukturen Tag 9: Datenstrukturen A) Datenstrukturen B) Cell Arrays C) Anwendungsbeispiel: Stimulation in einem psychophysikalischen Experiment A) Datenstrukturen Wenn man komplizierte Datenmengen verwalten möchte,

Mehr

Oracle-Statistiken im Data Warehouse effizient nutzen

Oracle-Statistiken im Data Warehouse effizient nutzen Oracle-Statistiken im Data Warehouse effizient nutzen Reinhard Mense ARETO Consulting Köln Schlüsselworte: DWH, Data Warehouse, Statistiken, Optimizer, Performance, Laufzeiten Einleitung Für die performante

Mehr

Zeichnen von Graphen. graph drawing

Zeichnen von Graphen. graph drawing Zeichnen von Graphen graph drawing WS 2006 / 2007 Gruppe: D_rot_Ala0607 Christian Becker 11042315 Eugen Plischke 11042351 Vadim Filippov 11042026 Gegeben sei ein Graph G = (V; E) Problemstellung V E =

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

3 GRAFIKEN, BILDER, ZEICHNUNGSOBJEKTE

3 GRAFIKEN, BILDER, ZEICHNUNGSOBJEKTE 3 GRAFIKEN, BILDER, ZEICHNUNGSOBJEKTE Grafiken, Bilder und Zeichnungsobjekte können in einer Präsentation mehrere Funktionen haben: Sie können eine Präsentation anschaulicher machen, können das Vorgeführte

Mehr

Wärmestrom in Hohlräumen

Wärmestrom in Hohlräumen Fakultät für Holztechnik und Bau Wärmestrom in Hohlräumen Studienarbeit im Modul Fachliche Vertiefung Wärme & Feuchte - Wärmebrücken im Master-Studiengang Holztechnik der Hochschule für angewandte Wissenschaften,

Mehr

4. Mensch-Maschine Schnittstellen

4. Mensch-Maschine Schnittstellen 4. Mensch-Maschine Schnittstellen 4.1 Geräte zur Visualisierung Farbmodelle e TFT-Displays 4.2 Grafikkarten Standards für Grafikkarten Aufbau von Grafikkarten VGA 4.3 Grafik-Beschleuniger Grafik-Beschleunigung

Mehr

Photon Mapping. Proseminar How to make a P I X A R movie. Inhaltsverzeichnis. Andreas Schmidt 2011

Photon Mapping. Proseminar How to make a P I X A R movie. Inhaltsverzeichnis. Andreas Schmidt 2011 Photon Mapping Proseminar How to make a P I X A R movie Andreas Schmidt 2011 Inhaltsverzeichnis Zusammenfassung...2 Motivation...2 Photon Tracing Pass...3 Aussenden der Photonen...3 Russisches Roulette...3

Mehr

4. Kapitel 3D Engine Geometry

4. Kapitel 3D Engine Geometry 15.11.2007 Mathematics for 3D Game Programming & Computer Graphics 4. Kapitel 3D Engine Geometry Anne Adams & Katharina Schmitt Universität Trier Fachbereich IV Proseminar Numerik Wintersemester 2007/08

Mehr

Spline-artige Kurven auf Subdivision Surfaces. Jörn Loviscach Hochschule Bremen, Germany

Spline-artige Kurven auf Subdivision Surfaces. Jörn Loviscach Hochschule Bremen, Germany Spline-artige Kurven auf Subdivision Surfaces Jörn Loviscach Hochschule Bremen, Germany Überblick Spline-artige Kurven auf Spline-Flächen Kurven auf SDS: Problem, Anwendung Verwandte Arbeiten Spline-artige

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Wasserfall-Ansätze zur Bildsegmentierung

Wasserfall-Ansätze zur Bildsegmentierung Wasserfall-Ansätze zur Bildsegmentierung von Philipp Jester Seminar: Bildsegmentierung und Computer Vision 16.01.2006 Überblick 1. Problemstellung 2. Wiederholung: Wasserscheiden-Ansätze 3. Der Wasserfall-Ansatz

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013 Aufgabenblatt 3 18. November

Mehr

Handbuch Datenpunktliste - Auswerte - Tools

Handbuch Datenpunktliste - Auswerte - Tools Handbuch Datenpunktliste - Auswerte - Tools zur Bearbeitung von Excel Datenpunktlisten nach VDI Norm 3814 für Saia PCD Systeme alle Rechte bei: SBC Deutschland GmbH Siemensstr. 3, 63263 Neu-Isenburg nachfolgend

Mehr

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind. Unterschiede von DBMS und files Speichern von Daten! DBMS unterstützt viele Benutzer, die gleichzeitig auf dieselben Daten zugreifen concurrency control.! DBMS speichert mehr Daten als in den Hauptspeicher

Mehr

Computer-Graphik 2 SS 10 Real-time rendering

Computer-Graphik 2 SS 10 Real-time rendering lausthal omputer-raphik 2 Real-time Rendering by Advanced Visibility omputations lausthal University, ermany zach@in.tu-clausthal.de Klassifikation (Erinnerung) Problemklassen innerhalb des Bereichs "Visibility

Mehr

GIMP Objekte frei stellen

GIMP Objekte frei stellen GIMP Objekte frei stellen Tutorial Teil 2 Aller Anfang ist eine Auswahl Gimp bietet dir eine Reihe von Werkzeugen, die dir dabei helfen können, ein Objekt frei zu stellen. Welches Werkzeug das Beste ist,

Mehr

Non-Photorealistic Rendering

Non-Photorealistic Rendering Non-Photorealistic Rendering Inhalt 1.Begriffserklärung 2.Warum NPR? 3.Beispiele 4.Feature Edges 5.Cool to Warm Shading 6.Toon Shading 7.Real Time Hatching Non-Photorealistic Rendering Using a term like

Mehr

Programmieren mit DirectX

Programmieren mit DirectX 2D 3D Programmieren mit DirectX Teil 3: Malte Ried Fachhochschule Gießen-Friedberg 30. Oktober 2005 Inhalt 2D 3D 1 2D 2 3D 3 2D 3D Bis jetzt Windows-Fenster, das man schließen kann initialisiertes Direct3D

Mehr

Grundlagen der Spieleprogrammierung

Grundlagen der Spieleprogrammierung Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 9: Engines, Cg und anderes Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch

Mehr

Wie erstellt man dynamische Elemente mit JSXGraph?

Wie erstellt man dynamische Elemente mit JSXGraph? Wie erstellt man dynamische Elemente mit JSXGraph? 1. Kurzinformation zu JSXGraph Was ist JSXGraph? Eine freie dynamische Mathematiksoftware, die vollständig in Javascript programmiert ist. Daher benötigt

Mehr

Computergraphik I. Scan Conversion: Lines & Co. Einordnung in die Pipeline. G. Zachmann Clausthal University, Germany zach@tu-clausthal.

Computergraphik I. Scan Conversion: Lines & Co. Einordnung in die Pipeline. G. Zachmann Clausthal University, Germany zach@tu-clausthal. 11/4/10 lausthal omputergraphik I Scan onversion of Lines. Zachmann lausthal University, ermany zach@tu-clausthal.de Einordnung in die Pipeline Rasterisierung der Objekte in Pixel Ecken-Werte interpolieren

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

Mehr

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3 Ludwig-Maximilians-Universität München Institut für Informatik Lehrstuhl für Mobile und Verteilte Systeme Prof. Dr. Claudia Linnhoff-Popien Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt

Mehr

Farbdarstellung. aber mit einem ausgeprägten Empfindlichkeitsmaximum im roten, grünen bzw. blauen Bereich.

Farbdarstellung. aber mit einem ausgeprägten Empfindlichkeitsmaximum im roten, grünen bzw. blauen Bereich. Erinnerung aus dem Biologieunterricht: Das menschliche Auge hat Stäbchen zur Unterscheidung von Helligkeiten drei verschiedene Arten von Zäpfchen, die für rot, grün und blau empfindlich sind. Genauer:

Mehr

Modellierung von Geodaten

Modellierung von Geodaten Modellierung von Geodaten Universität Augsburg Fachbereich Informatik Seminar: Datenbankunterstützung für mobile GIS Sommersemester 2011 Zeev Turevsky Betreuer: Dipl.-Informatiker Florian Wenzel Gliederung

Mehr

Dateisysteme mit Plugin-Funktion

Dateisysteme mit Plugin-Funktion Dateisysteme mit Plugin-Funktion Basierend auf Reiser 4 unter Linux http://llugb.amsee.de/logo.gif Ausgearbeitet und vorgetragen von Michael Berger 1/23 Agenda Die Idee Dateisysteme mit Plugin-Funktion

Mehr

Bricsys NV und Vondle NV sind Niederlassungen und gehören vollständig der Menhirs NV. Copyright 2001-2011 Menhirs NV. Alle Rechte vorbehalten.

Bricsys NV und Vondle NV sind Niederlassungen und gehören vollständig der Menhirs NV. Copyright 2001-2011 Menhirs NV. Alle Rechte vorbehalten. Bricscad V11 Bricsys NV und Vondle NV sind Niederlassungen und gehören vollständig der Menhirs NV. Copyright 2001-2011 Menhirs NV. Alle Rechte vorbehalten. Bricscad ist mittlerweile die Nummer EINS.DWG

Mehr

Kartographische Darstellung semantisch strukturierter 2D-Daten in einer 3D-Szene

Kartographische Darstellung semantisch strukturierter 2D-Daten in einer 3D-Szene Kartographische Darstellung semantisch strukturierter 2D-Daten in einer 3D-Szene STEFFEN HEMPEL 1, JOACHIM BENNER 2, KARL-HEINZ HÄFELE 3, ANDREAS GEIGER 4 Es wird eine allgemeine Methode zur kartographischen

Mehr

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum 18.01.2005

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum 18.01.2005 Hochschule Bremen Rechnerstrukturen Labor I7I Thema: Grafikkarten Laborbericht Datum 18.01.2005 Carsten Eckert(83912) (72497) Fazit Für unseren Praxisteil zum Vortrag Grafikkarten haben wir uns entschieden,

Mehr

Digital Forensics. Slackspace. 2011 DI Robert Jankovics DI Martin Mulazzani

Digital Forensics. Slackspace. 2011 DI Robert Jankovics DI Martin Mulazzani Digital Forensics Slackspace Slackspace Übersicht: Slack allgemein NTFS Slack FAT Slack mit Steganographie Slack allgemein Slack Space: Bezeichnet den Speicherplatz zwischen Ende der Datei und Ende des

Mehr

Digitale Bilddateien

Digitale Bilddateien ARBEITSBLATT 1 Digitale Bilddateien Gängige Bildformate und deren Speicherbedarf Unkomprimierte Bilddateien Öffnen Sie in Photopaint die Datei beauty.tga! Beauty.tga ein virtueller Männertraum, generiert

Mehr

6. Algorithmen der Computer-Geometrie

6. Algorithmen der Computer-Geometrie 6. Algorithmen der Computer-Geometrie 1. Einführung 2. Schnitt von zwei Strecken 3. Punkt-in-Polygon-Test 4. Schnitt orthogonaler Strecken 5. Punkteinschlussproblem Geo-Informationssysteme 146 6.1 Computer-Geometrie

Mehr

Sculpting und Painting in Maya. Fabian Wilpert 1

Sculpting und Painting in Maya. Fabian Wilpert 1 Fabian Wilpert 1 Fabian Wilpert 2 Inhaltsangabe 1. Allgemein 2. Sculpting 3. Painting 4. Vorführung Fabian Wilpert 3 1. Allgemein sehr mächtige Tools zum Erstellen von Landschaften, Hintergründen... auch

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

Verbessern Sie Ihre Webinare

Verbessern Sie Ihre Webinare Verbessern Sie Ihre Webinare Auswertung von Informationen über Ihre Teilnehmer auf edudip zur Verbesserung Ihrer Webinare Dies ist die downloadbare CSV Datei, nur für edudip. Pro Mitglieder verfügbar Heutzutage

Mehr

Wie modelliere ich einen Bilderrahmen?

Wie modelliere ich einen Bilderrahmen? Wie modelliere ich einen Bilderrahmen? Hallo, dieses Tutorial sollte Anfängern zeigen wie man in Blender einen Schnitt durch verschiedenste Profile erstellen kann und diese dann auch anordnet und miteinander

Mehr

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert.

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert. 1 Einführung In diesem Kapitel wird die moderne Programmiersprache Python vorgestellt. Nach einigen Bemerkungen zur Installation dieser Sprache wird gezeigt, wie Python interaktiv ausgeführt werden kann.

Mehr

GDV III - Geometric Computing detaillierterer Überblick 20.10.08 Dr. Dietmar Hildenbrand

GDV III - Geometric Computing detaillierterer Überblick 20.10.08 Dr. Dietmar Hildenbrand GDV III - Geometric Computing detaillierterer Überblick 20.10.08 Dr. Dietmar Hildenbrand Interactive Graphics Systems Group (GRIS) Technische Universität Darmstadt Heutige Themen Überblick über Ray-Tracer

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Visualisierung mit TurboCAD

Visualisierung mit TurboCAD Frank Sattler Visualisierung mit TurboCAD ab Version 10 Professional Erste Schritte / Überblick Inhalt Kriterien für Visualisierung Anforderungen an die 3D-Modellierung Eigenschaften der 3D-Objekte Gegenüberstellung

Mehr

Dies ist eine Arbeit für das Hauptseminar "3D Modellierung und Virtuelle Präsenz" an der Universität Ulm im Sommersemester 2007 zu dem Thema

Dies ist eine Arbeit für das Hauptseminar 3D Modellierung und Virtuelle Präsenz an der Universität Ulm im Sommersemester 2007 zu dem Thema Dies ist eine Arbeit für das Hauptseminar "3D Modellierung und Virtuelle Präsenz" an der Universität Ulm im Sommersemester 2007 zu dem Thema Modellierung, weitergehende Schwerpunkte von Wolfgang Holoch

Mehr