@@ -265,37 +265,37 @@ Aus den Werten wird der Durchschnitt berechnet und zu dem Dreieck gespeichert.
Die Sichtbarkeit zwischen Reflektor und Retriever ist schwieriger zu bestimmen.
Zunächst werden während der Initialisierung 200 virtuelle Lichter in der Szene verteilt um zur Laufzeit Imperfect Shadow Maps \cite{ISM} zu berechnen. \todo{warum 200? Es können auch andere Werte sinnvoll sein}
Imperfect Shadow Maps sind Shadowmaps mit geringer Auflösung für jedes virtuelle Lichtquelle.
Imperfect Shadow Maps sind Shadow Maps mit geringer Auflösung für jede virtuelle Lichtquelle.
In den Knoten der Baumstruktur werden die drei nächsten Lichter gespeichert.
Bei der Berechnung der Sichtbarkeit wird der Mittelpunkt der Knoten, bzw des Dreiecks in die Ebene der drei Punktlichtquellen projiziert.
Bei der Berechnung der Sichtbarkeit wird der Mittelpunkt der Knoten, bzw. des Dreiecks in die Ebene der drei Punktlichtquellen projiziert.
Die Werte aus den zugehörigen ISM werden ausgelesen und mit Hilfe von baryzentrische Koordinaten linear gemittelt.
\section{Umsetztung des Algorithmus}
Zur Initialiserung muss die Szene geladen werden und die Baumstruktur errechnet werden.
Hier wird für jedes Mesh das mehr als 200 Dreiecke enthält der Binärbaum errechnet.
Zur Initialiesrung muss die Szene geladen und die Baumstruktur errechnet werden.
Hier wird für jedes Mesh, das mehr als 200 Dreiecke enthält, der Binärbaum errechnet.
Für kleinere Dreiecksnetze ist es effizienter die Reflexion von allen Dreiecken auszurechnen.
Während eines eigenen Renderdurchgangs wird zunächst die direkte Beleuchtung der Szene bestimmt.
Anschließend muss für jedem Pixel ein Schnitt durch den Baum bestimmt werden.
Dafür wird zunächst für jeden Vertex ein Schnitt bestimmt die dann für die Pixel gemittelt werden.
Im finalen Rendervorgang wird dann der Schnitt ausgewertet und für jeden Pixel die Reflexion berechnet und mit den Werten aus den Shadowmaps gewichtet.
Anschließend muss für jeden Pixel ein Schnitt durch den Baum bestimmt werden.
Dafür wird zunächst für jeden Vertex ein Schnitt bestimmt, die dann für die Pixel gemittelt werden. \todo{ist das Relatvpronomen ``die'' richtig? Ich denke, es muss ``der'' (der Schnitt)heißen.}
Im finalen Rendervorgang wird dann der Schnitt ausgewertet, für jeden Pixel die Reflexion berechnet und mit den Werten aus den Shadow Maps gewichtet.
Um die Performance zu verbessern kann die Schnitt Selektion in CUDA implementiert werden.
Jedoch gibt es noch keinen effizienten Prioritätenlisten für CUDA gibt wird diese durch 5 normale Warteschlangen mit unterschiedlichen Fehlern aufgeteilt.
Z.b. die erste Schlange speichert alle Knoten mit Fehlern größer als 16\% und nach dem Splitten werden die Kinder zu eine Liste mit Fehler größer 8\% hinzugefügt.
So erhält man eine nicht ganz akkurate Prioritätenliste, aber eine ausreichend Genaue für diesen Zweck.
Um die Performance zu verbessern, kann die Schnitt-Selektion in CUDA implementiert werden.
Jedoch gibt es noch keine effizienten Prioritätenlisten für CUDA. Die Schnitt-Selektion wird in 5 normale Warteschlangen mit unterschiedlichen Fehlern aufgeteilt. \todo{Stimmt das nach meiner Änderung noch?}
Die erste Schlange speichert z.B alle Knoten mit Fehlern größer als 16\% und nach dem Splitten werden die Kinder zu einer Liste mit Fehler größer als 8\% hinzugefügt. \todo{immer beide Kinder? Ein Kind könnte doch genauer sein}
So erhält man eine nicht ganz akkurate Prioritätenliste, aber eine ausreichend genaue für diesen Zweck.
%% ==============
\chapter{Ergebnisse und Vergleiche}
\label{ch:Content6}
%% ==============
Soll ich sowas überhaupt behandeln?
Soll ich sowas überhaupt behandeln?\todo{unbedingt ;-)}
\caption{Einige Beispielbilder. a) Kaustiken mit unterschiedlichen Ring BRDFs, b) indirekte Highlights c) diffuse Reflektion d) golssy Reflektionen e) eine Punktlichtquelle f) Umgebungslicht \cite{Wang09asia}}
\caption{Einige Beispielbilder: a) Kaustiken mit unterschiedlichen Ring-BRDFs, b) indirekte Highlights c) diffuse Reflexion d) glossy Reflexionen e) eine Punktlichtquelle f) Umgebungslicht \cite{Wang09asia}}
\end{center}
\end{figure}
...
...
@@ -304,7 +304,8 @@ Soll ich sowas überhaupt behandeln?