Algorithmische Optimierungen shaderbasierten Ray Castings für Volumendatensätze
Bachelorarbeit von Stephan Arens
Motivation
Da es die einzelnen Schritte der Rendering Pipeline einer klassischen Grafikkarte optimal ausnutzt, ist die Volumen Rendering Methode des Texture Slicings schnell und hat sich als Standardmethode durchgesetzt. Dessen ungeachtet hat das Texture Slicing entscheidende Nachteile. Das Verfahren ist ein Objektraumverfahren, die Bildqualität leidet unter variierenden Samplingabständen und das Rendering wird über einen großen Umweg erreicht, weshalb optische Eigenschaften, wie z.B. Schatten, Reflexion oder Lichtbrechung über eben diesen sehr umständlichen Umweg angenähert werden müssen und teils gar nicht umsetzbar sind.
In dieser Studienarbeit wird deswegen das Prinzip des Ray Castings näher betrachtet, dass dem physikalischen Lichtmodell weitaus mehr ähnelt als das Texture Slicing und dadurch sowohl weniger Fehler produziert als auch leichter mit speziellen optischen Eigenschaften erweiterbar ist. Beim Ray Casting wird durch jeden Bildpunkt ein Strahl geschossen. Durchstreift der Strahl den Volumendatensatz, so werden in bestimmten Abständen Samples genommen, um aus ihren Werten die resultierende Farbe des Pixels zu bestimmen. Mit der Weiterentwicklung der Hardware und der Shaderprogramme zum Shader Model 3, das Schleifen und Dynamic Branching bietet, kann auch Ray Casting effizient auf der Grafikkarte durchgeführt werden.
Zielsetzung
Es sollen CPU- sowie auch auch GPU-basierte Algorithmen und Optimierungen untersucht und deren Übertragbarkeit und Kombinierbarkeit ermittelt werden, um mit den Ergebnissen den Performanznachteil gegenüber dem Texture Slicing möglichst ausgleichen zu können. Dabei sollen Algorithmen zur Verbesserungen der Bildqualität von solchen zur Verkürzung der Renderdauer unterschieden werden. Vielversprechende Algorithmen sollen in das Projekt Volume Studio integriert werden und auf ihre tatsächliche Performanz getestet werden.
Realisierung
Es wurde ein Ray Casting Algorithmus für Direct Volume Rendering entwickelt, der Interleaved Sampling, Early Ray Termination, beta-Acceleration und Homogeneity Acceleration verwenden kann, um sowohl die Performanz als auch die Bildqualität zu steigern. Die Performanzoptimierungen reduzieren dabei die Samplehäufigkeit an nicht relevanten Stellen, so dass der entwickelte Ray Casting Algorithmus trotz besserer Bildqualität in vielen Situationen mit Texture Slicing mithalten kann. Darüber hinaus werden einige Parameter zur Verfügung gestellt, welche die Renderzeit auf Kosten der Bildqualität verringern. Deren dosierter Einsatz erlaubt insbesondere durch eine Unterscheidung zwischen bewegter Kamera und Standbild eine außerordentliche Performanzsteigerung.