-
GEBIET DER
ERFINDUNG
-
Diese
Erfindung betrifft allgemein Strahlverfolgung und spezieller kohärente Strahlverfolgung.
-
HINTERGRUND
DER ERFINDUNG
-
Systeme
zur Visualisierung müssen
mit vielen grafischen Komponenten umgehen, um komplexe Szenen genau
darzustellen. Die Szene müsste segmentiert
werden, um es dem Betrachter zu erlauben, sich auf interessierende
Bereiche zu konzentrieren. Programmierbares Shading und Texture-Maps sind
für komplexe
Oberflächen
erforderlich, und es wird wirklichkeitsnahe Beleuchtung benötigt, um
eine realistische Illumination zu gestalten. Es wurde eine Anzahl
von Verfahren nach bisherigem Stand der Technik entwickelt, um die
Menge Zeit zu reduzieren, die zum Wiedergeben von komplexen Szenen
in Qualität
benötigt
wird. Diese Verfahren umfassen das Culling, die verzögerte Auswertung,
das Umordnen und das Caching.
-
In
der Regel können
die Verfahren in Abhängigkeit
von der vorliegenden speziellen Visualisierungsaufgabe Hardware-
oder Software-Lösungen verwenden.
Software-Lösungen
sind lenkbar, eignen sich jedoch nicht für Visualisierungsaufgaben in
Echtzeit. Das Entwerfen von effizienten Hardware-Architekturen zum
Ausführen
von Visualisierungsaufgaben mit programmierbarem Inhalt ist wegen
der damit verbundenen Komplexitäten äußerst schwierig.
Deshalb sind die meisten Hardware-Lösungen anwendungsspezifisch.
-
Zum
Beispiel wurde für
umfassende Beleuchtungsverfahren weit verbreitet Strahlverfolgung genutzt,
um auf dem Gebiet der Computergrafik realistische Bilder zu erzeugen.
Bei dem Strahlverfolgungsverfahren werden von einem einzelnen Ansichtspunkt
Strahlen erzeugt. Die Strahlen werden durch die Szene verfolgt.
Wenn die Strahlen auf Szenenkomponenten treffen, werden die Strahlen
wirklichkeitsgetreu reflektiert und gebrochen. Reflektierte und
gebrochene Strahlen können
weiter reflektiert und gebrochen werden, und so weiter. Selbstverständlich erhöht sich
selbst in einfachen Szenen die Anzahl von zu verarbeitenden Strahlen
exponentiell. Aus diesem Grund wurde Strahlverfolgung auf Szenen
begrenzt, die nur durch Geometrie, z. B. Polygone, definiert und
parametrisch geändert
sind. Strahlverfolgung bei räumlichen
Daten wurde allgemein als ein schwieriges Problem erkannt.
-
Zur
Volumen-Visualisierung wird im Allgemeinen einfacheres Raycasting
verwendet. Das Raycasting ist Strahlverfolgung ohne reflektierte
oder gebrochene Strahlen. Beim Raycasting wird die Wirkung reflektierter
und gebrochener Strahlen ignoriert und Versuche, eine wirklichkeitsgetreue
Beleuchtung zu erzeugen, werden durch andere Verfahren behandelt.
Trotzdem ist zur Visualisierung von Volumendaten das relativ einfache
Raycasting rechentechnisch noch immer kostspielig. Aus diesem Grund
wurde in Lösungen
nach dem Stand der Technik allgemein Architekturen der Volumen-Bildberechnung
für spezielle
Zwecke vorgeschlagen.
-
Kürzlich wurde
eine Hardware-Beschleunigung von geometrischen Strahlverfolgungs-Modellen vorgeschlagen,
siehe ART auf www.artrender.com/technology/ar250.html. Der ART-Entwurf umfasste
parallele Ray-Tracing-Engines, die Strahlenbündel die gesamte Strecke bis
zur Beendigung verfolgen, bevor sich zum nächsten Strahlenbündel weiter
bewegt wird. Die eingegebenen Szenendaten wurden im Hauptspeicher
des Zentralrechners gespeichert und an die Prozessorelemente gesendet. Während das
Shading-Subsystem einen programmierbaren Coprozessor enthielt, waren
die Ray-Tracing-Engines praktische Ausführungen anwendungsspezifischer
integrierter Schaltungen (ASIC).
-
Gunther
et al. haben in „VIRIM:
A Massively Parallel Processor for Real-Time Volume Visualization
in Medicine" („Virtuelle
Realität
in der Medizin: Massiv parallele Rechner für Volumen-Visualisierung in Echtzeit in der Medizin"), Sitzungsberichte
des 9. Eurographics Workshop für
Grafik-Hardware, S. 103–108,
1994, Parallel-Hardware beschrieben. Ihre VIRIM-Architektur war
eine Hardware-Realisierung des Heidelburg-Algorithmus für Raycasting.
Die Volumendaten wurden in jedem Modul genau nachgebildet. Das VIRIM-System
konnte 10 Hz für
ein Volumen von 256·256·128 mit
vier Modulen erreichen. Jedes Modul verwendete jedoch drei Boards
bei einer Gesamtmenge von zwölf
Boards.
-
Doggett
et al. haben in „A
Low-Cost Memory Architecture for PCI-based Interactive Volume Rendering" ("Preisgünstige Speicherarchitektur
für PCI-basiertes
interaktives Volumen-Rendering"), Sitzungsberichte
des Eurographics Workshop für
Grafik-Hardware der SIGGRAPH, S. 7–14, 1999 eine Architektur
beschrieben, die Volumen-Rendering in Bildreihenfolge durchführte. Das
Volumen wurde in DIMM-Speichermodulen auf dem Rendering-Board gespeichert.
Jeder Abtastwert hat die für
diesen Abtastwert benötigte
Voxel-Umgebung erneut gelesen. Es trat keine Pufferung von Daten
auf. Während
das System zur Strahlenerzeugung einen digitalen Signalprozessor
(DSP) enthielt, war der Rest der Pipeline ein frei programmierbares
Verknüpfungsfeld
(FPGA) oder eine anwendungsspezifische integrierte Schaltung (ASIC).
-
Pfister
et al. haben in „The
VolumePro Real-Time Ray-Casting System" ("Das
Raycasting-System VolumePro in Echtzeit") in Sitzungsberichte der SIGGRAPH 99,
S. 251–260
ein mit Pipelineverarbeitung versehenes Bildberechnungsverfahren
beschrieben, das Volumen-Rendering in Echtzeit erreichte unter Verwendung
von ASIC-Pipelines, die Abtastwerte entlang von Strahlen verarbeitet
haben, die durch das Volumen angeordnet waren. Cube-4 nutzte ein
neuartiges Speicherversatzschema zur Bereitstellung von unstrittigem
Zugang zu benachbarten Voxel. Die Volumendaten wurden zur späteren Wiederverwendung
in FIFO-Warteschlangen
auf dem Chip zwischengespeichert.
-
In
allen diesen Entwürfen
wurden ASIC-Pipelines verwendet, um die große Anzahl von zum Rendern bei
hohen Bildfolgefrequenzen benötigten
Volumen-Abtastwerten zu verarbeiten. Das Kosten-Leistungs-Verhältnis dieser Systeme übertraf das
Volumen-Rendering
im Stand der Technik auf Supercomputern, Grafiksystemen für spezielle
Zwecke und Grafik-Datenstationen für allgemeine Zwecke.
-
Ein
anderes Visualisierungsproblem befasst sich mit Segmentierung. In
einer medizinischen Anwendung wurde jeder Datenanteil per Hand segmentiert
und anschließend
zu einem 3D-Modell des Objekts rekonstruiert. Aktuelle handelsübliche Software stellt
Tools und Schnittstellen zum Segmentieren von Anteilen jedoch nur
in 2D bereit. Das Prüfen
von dreidimensionalen Ergebnissen erfordert einen Modellaufbauschritt,
der gegenwärtig
einige Minuten zur Fertigstellung benötigt. Deutlich ist, dass dies
zur Bildberechnung in Echtzeit nicht brauchbar ist. Um diese Zeit
zu reduzieren, sollte Segmentierung und Bildberechnung unter Verwendung
von direkten 3D Segmentierungsfunktionen und direktem Volumen-Rendering
(DVR) an den Volumendaten direkt und nicht per Hand durchgeführt werden.
-
Jedoch
ist eine dreidimensionale Segmentierung noch zu komplex und dynamisch,
um völlig
automatisiert zu werden und benötigt
somit einen gewissen Grad der Benutzereingabe. Die Vorstellung wäre, den
Computer für
die rechnerisch kostspielige Aufgabe von Segmentierungsbearbeitung
und Bildberechnung zu nutzen, während
die natürlichen
und komplexen kognitiven Fertigkeiten des Menschen erschlossen werden,
indem dem Benutzer ermöglicht wird,
die Segmentierung zu steuern, um schließlich die gewünschten
Objekte herauszuziehen.
-
Einige
Segmentierungsverfahren im Stand der Technik nutzen komplexe Objekterkennungsverfahren,
andere stellen schwache morphologische 3D-Funktionen bereit, die
zu einer Sequenz verknüpft
werden können,
um die gewünschte
Segmentierung zu erreichen. Diese Sequenz von schwachen Funktionen
wird Segmentierungsprozess genannt. Diese schwachen Funktionen umfassten
gewöhnlich morphologische
Operationen wie Schwellwert bilden, Erodieren, Ausweiten und Überfluten.
Es wurde gezeigt, dass dieses Verfahren für die typischen Benutzer medizinischer
Segmentierungssysteme intuitiv und einfach zu verwenden ist. Dem
Benutzer wird ein Gefühl
von Vertrauen über
das Ergebnis gegeben, weil der Benutzer die Kontrolle über den
Prozess hat.
-
In
einem anderen System wird der Benutzer beim Segmentieren mit einem
interaktiven Feedback versehen. Nachdem schwache Funktionen angewandt
wurden, wurde dem Benutzer das sich ergebende segmentierte Volumen
angezeigt, und der Benutzer konnte wählen, welche Funktion als nächstes durchzuführen ist.
Die Ergebnisse von einer Operation unterstützten den Benutzer beim Wählen der nächsten Funktion.
Darum wurde die Interaktivität
jeweils auf eine schwache Funktion begrenzt. Wenn der Benutzer zur
Durchführung
eines bestimmten Segmentierungsproblems eine lange Sequenz von Schritten
erzeugt hatte und die Auswirkung der Änderung eines Parameters an
einer der schwachen Funktionen in der Mitte der Sequenz sehen wollte, dann
würde das
Feedback nicht dreidimensional interaktiv sein. Stattdessen wurde
der Benutzer gezwungen, wiederholt jede Stufe im Prozess zu durchschreiten
und jedes Mal den Parameter zu ändern. Außerdem betrug
die zur Ausführung
der Funktionen benötigte
Zeit auf Grund der Verwendung von Prozessoren für allgemeine Zwecke zwischen
5 und 90 Sekunden, zusätzlich
bis zu 10 Sekunden, um die Ergebnisse wiederzugeben.
-
Bei
einem alternativen System konnte Segmentierung nur auf den drei
orthogonalen Anteilen des Volumens, die zurzeit angezeigt wurden,
durchgeführt
werden. Weil die Segmentierung auf drei 2D-Anteile beschränkt war,
konnte der gesamte Segmentierungsprozess jedes Mal vom Start durchgeführt werden.
Auf diese Weise konnte der Benutzer während gleitender Kontrollen
interaktives Feedback erreichen, um Parameter für Funktionen in der Mitte des
Prozesses einzustellen. Leider konnte es bis zu einigen Minuten
brauchen, um das Erzeugen einer 3D-Projektion des Volumens fertig zu stellen.
Außerdem
gab es keine analoge Lösung,
um eine mit 2D verbundene Komponentenverarbeitung durchzuführen, da
Bereiche in der dritten Dimension wachsen und zum ursprünglichen
Anteil zurückkehren
konnten. Darum wurde verbundene Komponentenbearbeitung auf langsames
Feedback beschränkt.
-
Kürzlich wurde
eine verteilte Verarbeitungsumgebung zur Durchführung von Sequenzen der gleichen
schwachen Funktionen vorgeschlagen. Diese Lösung erkannte den hohen Grad
von Datenparallelismus in Volumensegmentierung und nutzte dies aus
durch Verwendung eines massiv parallelen Rechners DECmpp 12000 (Digitalreihe).
Der DECmpp ist eine Ausführung
des MasPar SIMD Computers mit Gittererzeugung von Prozessorelementen.
Die Leistung mit diesem Rechner wurde für ein sehr kleines 963 Volumen von Abtastwerten gemessen. Die
Extrapolation der Leistung für
ein 2563 Volumen und schnellere Taktfrequenzen
von heutiger Technologie nach dem Gesetz von Moore würde 1,14 Sekunden
benötigen.
-
In
jüngerer
Zeit wurde vorgeschlagen, schwache Segmentierungsoperationen auf
einem massiv parallelen Rechner CM-200 SIMD durchzuführen. Durch
Nutzung eines Gitters von 1282 Prozessorelementen
war es möglich,
jede schwache Operation zwischen 0,6 und 1,3 Sekunden pro Operation
auf einem 2563 Volumen durchzuführen. Selbst mit
der heutigen schnelleren Technologie konnten die 0,3 bis 0,65 Sekunden
je Operation schnell zu nicht interaktiven Bildfolgefrequenzen auch
für eine
kleine Anzahl von schwachen Tasks summieren.
-
Die
Ausnutzung von Datenkohärenz
durch Caching ist eine andere bekannte Technik zur Erhöhung der
Effizienz in Computergrafik, siehe Sutherland et al. in „A characterization
of ten hidden surface algorithms" („Charakterisierung
von zehn verborgenen Oberflächenalgorithmen"), Computing Surveys, 6(1),
S. 1–55,
März 1974.
Das Erhöhen
der Kohärenz einer
Berechnung kann den verwendeten Speicherumfang, die Zeit, die sie
benötigt
oder beides reduzieren. In Systemen, die Strahlverfolgung nutzen, kann
die Kohärenz
von eine Szene durchlaufenden Strahlen durch traversierte Strahlenbäume erhöht werden,
um Strahlen zu kohärenten
Bündeln
zu verarbeiten.
-
Ähnlich können Strahlen
mit gemeinsamen Ausgangspunkten zu Kegelstümpfen entwickelt werden. Dies
verringert die Zeit, sich schneidende Objekte zu finden. Strahlen
können
umgeordnet werden, indem Raum füllende
Kurven über
der Bildebene genutzt werden, um die Kohärenz von hervorgebrachten Strahlen
in einem tiefenorientierten Raytracer zu verbessern. Monte-Carlo-Strahlverfolgungsverfahren
sind ausgelegt, um Kohärenz über allen Pegeln
der Speicherhierarchie von Zwischenspeichern des Prozessors bis
zur Plattenspeicherung zu verbessern.
-
Pharr
et al. haben in „Rendering
complex scenes with Memory-Coherent
Ray Tracing" ("Bildberechnung komplexer
Szenen mit speicherkohärentem
Strahlverfolgungsverfahren")
Sitzungs berichte der SIGGRAPH 97 S. 101–108 ein mit Caching versehenes
Strahlverfolgungsverfahren beschrieben. Dort wurden auf einer Speicherplatte
Strukturkacheln, Szenengeometrie, Warteschlangen-Strahlen und Bildabtastwerte
gespeichert. von einer Kamera erzeugte Strahlen wurden in Gruppen
unterteilt. Gruppen von Strahlen wurden abhängig davon, welche Teile der
Szene im Hauptspeicher gespeichert wurden und dem Grad, wie das
Verarbeiten der Strahlen die Bildberechnung vorwärts bringen würde, zur
Verarbeitung aufgezeichnet. Aufgezeichnete Strahlen wurden in Warteschlangen
im Hauptspeicher gespeichert. Je nach Bedarf kam Szenengeometrie
zum Hauptspeicher hinzu. Alle neuen Strahlen, die während der
Strahlverfolgung erzeugt wurden, wurden zu den Warteschlangen wartender Strahlen
hinzugefügt.
Im Wesentlichen kann dieses System als eine Speicherhierarchie mit
zwei Zwischenspeicherpegeln, Speicherplatte und Hauptspeicher und
einem einzelnen Prozessor gekennzeichnet werden. Dies ist im Grunde
eine Softwarelösung
für ein
Caching-Problem.
Außerdem
teilt Pharr zum Zeitpunkt nur ein einzelnes Bild zu, und sein Kohärenz-Algorithmus
betrifft nur die räumliche örtliche Lage.
-
Um
bestimmte Vorteile zu verstärken,
wurde das System so ausgelegt, dass nur eine einzelne Art von geometrischen
Darstellungselementen verarbeitet wird. „Ein Unterscheidungsmerkmal
unseres Raytracer ist, dass wir einen einzelnen Typ geometrischer
Darstellungselemente zwischenspeichern: Dreiecke. Dies hat mehrere
Vorteile. Strahlendurchdringungstests können für einen einzelnen Fall optimiert
werden, wobei Speichermanagement für den geometrischen Zwischenspeicher
leichter ist, weil es weniger Änderung
in der zum Speichern unterschiedlicher Typen von Darstellungselementen
benötigten Raummenge
gibt. Es ist außerdem
möglich,
viele andere Teile des Bildberechnungsprogramms zu optimieren, wenn
nur ein Typ von Darstellungselementen unterstützt wird. Der REYES Algorithmus
nutzt entsprechend ein einzelnes internes Darstellungselement – Mikropolygone – um Shading
und Sampling effizienter zu machen. Im Gegensatz zu REYES optimieren
wir das System zur Handhabung großer Datenbanken von Dreiecken,
wobei dies ermöglicht, dass
unser System eine breite Vielfalt von gemeinsamen geometrischen
Ursprüngen,
einschließlich
gescannter Daten, wissenschaftlicher Daten und mosaikartigen Flecken
handhabt. Ein potenzieller Nachteil dieser einzelnen Darstellung
ist, dass andere Typen von Darstellungselementen wie Kugeln, mehr Raum
zum Speichern benötigen,
nachdem sie mosaikartig gemacht wurden. Wir haben herausgefunden,
dass die Vorteile einer einzelnen Darstellung diesen Nachteil aufwiegen", ebenda auf S. 102.
-
Ihr
geometrischer Zwischenspeicher wurde damit organisiert, was sie „Voxel" oder geometrische Gitter
zum Umschließen
von Dreiecken nannten. Es ist anzumerken, dass beim Raytracing der
Begriff „Voxel" eine völlig andere
Bedeutung als beim Volumen-Rendering
hat. Beim Volumen-Rendering ist Voxel ein einzelner Abtastwert in
einer dreidimensionalen (Volumen-) Datenmenge. Um diese ganz anderen
Bedeutungen zu unterscheiden, bedeutet in der nachstehenden Beschreibung
der Begriff „Voxel" immer ein Volumen-Rbtastwert,
und der Begriff „Block" bezieht sich auf
die Körnung
des Zwischenspeichers. Pharr et al. haben Dreiecke als Mengen in
Blockgröße in den
Cache eingespeichert. Einige wenige tausend Dreiecke pro Block ergaben
ein gutes Niveau von Körnung
für Caching.
Sie verwendeten jedoch auch ein Beschleunigungsgitter, das wenige
hundert Dreiecke für
feinere Körnung
enthält.
-
Zum
Zweck der Ablaufplanung von zu verarbeitenden Blöcken ordneten sie jedem Block
einen Kostenwert und einen Nutzenwert zu. Die Kosten basierten auf
der Berechnungskomplexität
der Verarbeitung des Blockes und des Nutzens, der beurteilte wie
viel Fortschritt hin zur Beendigung der Berechnung gemacht werden
würde.
Ihr Scheduler nutzte diese Werte zum Wählen von Blöcken, um durch Auswählen des
Blocks mit dem höchsten
Kosten-Nutzen-Verhältnis
weiter zu arbeiten.
-
WILLIAMS
PL: „Visibility
ordering meshed polyhedra" („Topologische
Tiefensortierung")
ACM Transactions on Graphics Bd. 11, Nr. 2, 1. April 1992 (1.4.1992),
Seiten 103–126,
XP000287421 USA beschreibt einen einfachen und effizienten Algorithmus zur
Sichtbarkeitsordnung der Zellen einer beliebigen unzyklischen konvexen
Menge vernetzter konvexer Polyeder. Dieser „Topologische Tiefensortierung" (MPVO Algorithmus)
genannte Algorithmus ordnet die Zellen eines Netzes in linearer
Zeit durch lineare Speicherung. Es werden Vorverarbeitungstechniken und/oder
Modifizierungen für
den MPVO Algorithmus beschrieben, die es erlauben, nicht konvexe
Zellen, nicht konvexe Netze (Netze mit Hohlräumen und/oder Leerräumen), Netze
mit Zyklen und Anordnungen unterbrochener Netze zu sortieren. Der MPVO
Algorithmus kann außerdem
zur Domänenzerlegung
finiter Elemente-Netze für
parallele Verarbeitung verwendet werden. Die Datenstrukturen für den MPVO
Algorithmus können
genutzt werden, um das Problem der Örtlichkeit räumlicher
Punkte zu lösen.
-
Der
MPVO Algorithmus ist wie folgt. Zuerst wird für die Zellen eines gegebenen
konvexen Netzes der Adjazenzgraph konstruiert. Anschließend kann
für einen
beliebigen speziell festgelegten Betrachtungspunkt eine Sichtbarkeitsordnung
berechnet werden, indem einfach eine Richtung zu jeder Kante im
Adjazenzgraph berechnet und anschließend eine topologische Sortierung
des Graph durchgeführt
wird. Der Adjazenzgraph kann für
jeden neuen Betrachtungspunkt und für jede auf dem gleichen statischen
Netz definierte neue Datenmenge wieder verwendet werden. Die jeder
Kante zugeordnete Richtung wird bestimmt durch Berechnung einer Nach-Hinten-Beziehung
für die
durch die Kante verbundenen zwei Zellen. Die Nach-Hinten-Beziehung wird
zwanglos wie folgt berechnet. Jede Kante entspricht einer von zwei
Zellen geteilten Fläche.
Diese Fläche
bildet eine Ebene, die wiederum zwei Halbräume definiert, von denen jeder
eine der Zellen enthält.
Um diese zu implementieren, kann die Ebenengleichung für die geteilte
Fläche
am Betrachtungspunkt bewertet werden. Der Adjazenzgraph und die Koeffizienten
der Ebenengleichung können
in einem Vorverarbeitungsschritt berechnet und gespeichert werden.
Der MPVO Algorithmus kann erweitert werden, um viele nicht konvexe
Netze zu ordnen.
-
Es
ist erwünscht,
Szenen mit Raytracing zu rendern, die in mehr als einem einzigen
grafischen Darstellungselement wie Dreiecke ausgedrückt werden.
Außerdem
ist es erwünscht,
zusätzliche
Leistungsverbesserungen zu erreichen, indem ein Zwischenspeicher
für Hardware
und Software verwendet wird. Zusätzlich
ist es erwünscht,
die Block-Ablaufplanung über
einen einfachen Kosten-Nutzen-Algorithmus hinaus zu verbessern.
Es ist auch erwünscht, eine
Folge von Bildern oder Einzelbildern zu rendern und zeitliche Kohärenz zusätzlich zu
räumlicher
Kohärenz
zu erzeugen. Ferner ist es erwünscht,
eine programmierbare Hardware-Architektur zur Verfügung zu
stellen, um komplexe Visualisierungsaufgaben auszuführen.
-
ABRISS DER
ERFINDUNG
-
Eine
Aufgabe der Erfindung, auf die Anspruch erhoben wird, ist die Bereitstellung
einer verbesserten Strahlverfolgungs-Architektur sowohl für abgetastete als auch für geometrische
Daten. Die abgetasteten Daten können
zweidimensionale, dreidimensionale oder abgetastete Daten und geometrische
Flächen
oder analytisch definierte Daten sein. Eine andere Aufgabe ist es,
einen hierarchischen Speicher mit integrierter DRAM-Technologie
zur Verfügung
zu stellen, um Rendering-Raten in Echtzeit zu erzielen. Eine weitere
Aufgabe ist es, die Leistung durch eine Größenordnung zu verbessern, indem mehrere
Pegel von Speicherkohärenz
verwendet werden. Es ist auch eine Aufgabe, eine programmierbare
Visualisierungskarte zur Verfügung
zu stellen, die Segmentierung, Raytracing-Bildberechnung und andere grafische
Prozesse unterstützt.
-
Diese
erfindungsgemäßen Aufgaben
werden durch ein Verfahren gelöst,
das die Merkmale von Anspruch 1 umfasst. Bevorzugte Ausführungen
dieses Verfahrens sind in den Unteransprüchen definiert.
-
Spezieller
verfolgt ein Verfahren Strahlen durch grafische Daten. Die grafischen
Daten enthalten abgetastete und geometrische Daten. Das Verfahren
unterteilt die grafischen Daten in eine Vielzahl von Blöcken entsprechend
einem Gitter. Für
jeden Block wird eine Strahlenwarteschlange erzeugt. Jeder Eintrag
in der Strahlenwarteschlange stellt einen durch den Block zu verfolgenden
Strahl dar. Die Strahlenwarteschlangen werden zeitlich geordnet,
indem ein Abhängigkeitsgraph
genutzt wird. Die Strahlen werden durch die Blöcke entsprechend der geordneten
Liste verfolgt. Der Abhängigkeitsgraph
wird für
jedes Einzelbild erzeugt und zeigt an, welche Blöcke Strahlen zu welchen anderen
Blöcken
senden, indem die Interframe-Kohärenz über die
Zeit durch Nutzung des Abhängigkeitsgraph
verwendet wird, der aus dem vorherigen Einzelbild als Führung verwendet
wird, um zu approximieren, welche Blöcke vor welchen anderen Blöcken approximiert
werden sollten. Im Fall, dass der Abhängigkeitsgraph Zyklen aufweist,
die durch reflektierte Strahlen verursacht werden, werden primäre Strahlen
vor reflektierten Strahlen verarbeitet.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
das Blockdiagramm einer logischen Darstellung des programmierbaren
Visualisierungssystems nach der Erfindung;
-
2 ist
das Blockdiagramm einer physikalischen Darstellung des erfindungsgemäßen physikalischen
Visualisierungssystems;
-
3 ist
das Blockdiagramm eines Ablaufplanungsgitters, das einer zu rendernden
Szene überlagert
ist;
-
4 ist
das Ablaufdiagramm eines erfindungsgemäßen kohärenten Ablaufplanungsverfahrens;
-
5a ist
das Blockdiagramm von Strahlen, die ein Ablaufplanungsgitter traversieren;
-
5b ist
ein Abhängigkeitsgraph
für die zeitlich
geordnete Verarbeitung von Blöcken;
-
5c ist
ein umgeordneter Abhängigkeitsgraph;
-
6a ist
das Blockdiagramm von Strahlen, die ein Ablaufplanungsgitter traversieren,
mit reflektierten Strahlen; und
-
7a und 7b sind
Blockdiagramme von über
die Zeit verfolgten Strahlen.
-
Ausführliche
Beschreibung der bevorzugten Ausführungen
-
Logische Architektur
-
1 zeigt
ein System 100 zur Visualisierung von abgetasteten Daten
(Volumen oder Bilder) und geometrischen Daten (Polygone und Flächen) nach
der vorliegenden Erfindung. Logisch ist, dass das System 100 eine
Speicher- und Bandbreitenhierarchie nutzt, um den Effekt einer Erhöhung der
Größe der Daten über das
hinaus zu reduzieren, was in einen chipintegrierten oder einen integrierten
Speicher passen kann.
-
Das
System enthält
eine Vielzahl von Prozessorelementen (PE) 101–103,
erste Pegel-Zwischenspeicher 110, zweite Pegel-Zwischenspeicher 120 und
dritte Pegel-Zwischenspeicher 130. Die Zwischenspeicher
und Prozessorelemente sind durch Busse 140 miteinander
verbunden.
-
In 1 nimmt
die Speicherhierarchie von oben nach unten ab, während die Bandbreite zunimmt.
Auf diese Weise ist jeder Pegel wie ein Zwischenspeicher des nächsthöheren Pegels
wirksam. Es ist nicht notwendig, dass die gesamte Datenmenge in
den untersten oder auch mittleren Pegel der Speicherhierarchie passt.
Wenn jedoch ein Teil der Datenmenge, die zu dem endgültigen Bild
beiträgt,
in einen vorgegebenen Pegel passt, dann können die Prozessorelemente
von Einzelbild zu Einzelbild, das heißt über die Zeit, den Vorteil höherer Bandbreite ausnutzen,
während
auf die Datenmenge zugegriffen wird.
-
Physikalische
Architektur
-
2 zeigt
eine physikalische Darstellung 200 des erfindungsgemäßen Visualisierungssystems.
Das System enthält
eine zentrale Prozessoreinheit 210, einen Hauptspeicher 220 und
ein durch den Bus 240 verbundenes Visualisierungs-Subsystem.
Das System kann außerdem
eine Brücke 250 umfassen,
die die CPU, den Hauptspeicher und den Bus untereinander verbindet.
-
Erfindungsgemäß ist das
Subsystem als ein steckbares PC-Board ausgeführt. Das Visualisierungs-Subsystem 230 enthält eine
anwendungsspezifische integrierte Schaltung (ASIC) 205,
die durch einen Speicherbus 207 mit dem DRAM 206 verbunden
ist. Die ASIC 205 umfasst Prozessorelemente (PE) 201–204,
einen integrierten DRAM-Baustein (EDRAM) 260, eine PC-Schnittstelle
(PC/IF) 270, einen Speicherregler 280 und einen
Dispatcher 290, die durch Busse 290 verbunden
sind. In einer Ausführung
führt die
ASIC kohärentes
Raytracing durch. Andere Anwendungen können Segmentierung und Modellierung
beinhalten.
-
Die
zentrale Prozessoreinheit 210 kann ein beliebiger normaler
Mikroprozessor sein, zum Beispiel ein Intel PentiumTM Chip.
Der Hauptspeicher 220 kann ein SIMM-Modul oder DIMM-Modul
sein. Das Board 230 kann in den PC-Systembus 240 eingesteckt
werden, der zum Beispiel PCI (programmierbare Kommunikationsschnittstelle),
AGP (Computerinterface zur verbesserten Anzeige von dreidimensionalen
Grafiken mit hoher Geschwindigkeit) oder eine IVC-Architektur von
SGI sein kann. Der DRAM 206 kann ein SDRAM (synchroner
Arbeitsspeicher mit vollem Bustakt) oder direkter RAM-Bus sein.
Die ASIC 205 kann eine oder mehrere Verarbeitungseinheiten
sowie einen Speicher mit integriertem DRAM-Baustein enthalten, die
in einer oder mehreren Reihenanordnungen organisiert sind. Es können zum
Beispiel M32-Chips von Mitsubishi verwendet werden. Der M32 enthält ein einzelnes
Prozessorelement. Die ASIC mit der neuesten Technologie integrierter
DRAM-Bausteine ermöglichen
mehrere Prozessorelemente und besitzen eine viel größere chipinterne
Speicherung. Die Prozessorelemente weisen eine sehr hohe Bandbreite
für den
lokalen integrierten Speicher im Inneren des Chips auf. Mehrere ASIC
mit mehreren Prozessorelementen je ASIC werden für das Board auch eine größere Leistung
liefern. Die Systemarchitektur nutzt diese Bandbreite aus, um die
in dem integrierten DRAM-Baustein momentan gespeicherten Daten schnell
zu den Prozessorelementen zu übertragen.
-
Datenmengen
in normaler Größe werden
in dem integrierten DRAM-Baustein
nicht passen. Deshalb können
die externen DRAM-Speicher 206 genutzt
werden, um die Daten zu speichern, bis die Prozessorelemente innerhalb
der ASIC bereit sind, die Daten zu nutzen. Für sehr große Datenmengen, die auch nicht
in den DRAM-Bausteinen passen, wird der Hauptspeicher genutzt, bis
das Subsystem bereit ist, die Daten zu verarbeiten. Dies bildet
aus der logischen Ausführung
eine dreifach gestufte Speicherhierarchie zum Optimieren der Lokalität von Datenreferenzen.
-
Speicher-Kohärenz
-
Bei
einer Anwendung von Raytracing optimiert das Subsystem Speicherkohärenz der
zu verarbeitenden Daten. Dies wird ausgeführt, indem auf Speicherbereiche
in Blöcken
zugegriffen wird und so viel wie möglich Verarbeitung an jedem
Block durchgeführt
wird, bevor zu einem anderen Block gegangen wird. Die erfindungsgemäße Verarbeitung
ordnet die Blöcke,
so dass Blöcke,
die eine zur Verarbeitung bereite große Arbeitsmenge aufweisen,
vor den Blöcken
verarbeitet werden, die eine kleinere Menge durchzuführender
Arbeit aufweisen. Außerdem
werden Blöcke,
die für
frühere
Einzelbilder verwendet werden, vor Blöcken sortiert, die für spätere Einzelbilder
genutzt werden, auch wenn die früheren
Blöcke weniger
auszuführende
Arbeit aufweisen.
-
Jedoch
folgt das erfindungsgemäße Raytracing-Subsystem
nicht einer strengen Reihenfolge der Verarbeitung wie es in normalen
Beschleunigerkarten für
Volumen-Rendering genutzt wird. Stattdessen wird die auszuführende Arbeit
zu dreidimensionalen Blöcken
angeordnet. Blöcke
werden verarbeitet, z. B. werden Strahlen angeordnet oder verfolgt
oder eine Segmentierung wird nach einer Ordnung durchgeführt, bei
der der Block, der die meisten Ergebnisse zur Verfügung stellen
wird, als nächstes
verarbeitet wird, während
er dem Speicher mit integriertem DRAM-Baustein am nächsten sein
wird. Eine nachstehend beschriebene heuristische Metrik entscheidet
die Reihenfolge, in der Blöcke
verarbeitet werden.
-
Für Anwendungen
der Bildberechnung, bei denen es eine Mischung von volumetrischen
und integrierten polygonalen Objekten gibt, nutzt das System „Strahlenwarteschlangen". Für Anwendungen der
Volumenverarbeitung wie Segmentierung wird eine andere Metrik verwendet,
um die Blöcke
sowohl im räumlichen
Bereich als auch im zeitlichen Bereich kohärent zu ordnen.
-
3 zeigt
eine zweidimensionale Abwärtsdarstellung
davon, wie eine zu rendernde dreidimensionale Szene 300 entsprechend
einem Ablaufplanungsnetz 302 in Blöcke 301 geteilt wird.
Alle abgetasteten und geometrischen Daten 310 werden unter den
Blöcken
des Ablaufplanungsnetzes, die sie schneiden, verteilt. Von einem
Betrachtungspunkt 340 gehen Strahlen 330 aus.
Die Strahlen können auf
herkömmliche
Weise erzeugt werden. Jedem Block 301 ist eine Strahlenwarteschlange 320 zugeordnet.
Jeder Eintrag 321 in der Strahlenwarteschlange bestimmt
einen der Strahlen 330, der im Moment diesen Block schneidet
und der darauf wartet, mit den Daten verarbeitet zu werden, die
in diesem Block 302 des Ablaufplanungsnetzes gespeichert
sind.
-
Die
den Strahl bestimmenden Daten enthalten seine (x, y, z) Position,
den Zuwachs (.x, .y, .z) für die
Position der nächsten
Verfolgungsstufe und den gegenwärtigen
akkumulierten RGB Wert des Strahls.
-
4 zeigt
den Ablauf der Verarbeitung und Daten entsprechend dem erfindungsgemäßen Verfahren
der Strahlverfolgung. Im Inneren des Systems befindet sich ein Scheduler 410 und
ein Dispatcher 420, die über einen FIFO-Speicher 415 Daten
austauschen. Der Scheduler besitzt Kenntnis von Besonderheiten der
Anwendung, zum Beispiel das Ablaufplanungsgitter 302 und
eine Strahlenliste 401. Jeder Eintrag 402 in der
Liste 410 weist auf eine der Strahlenwarteschlangen 320 hin.
-
Der
Scheduler nutzt nachstehend beschriebene heuristische Prozesse,
um zu bestimmen, welche Blöcke
zu verarbeiten sind und in welcher Reihenfolge. Die heuristischen
Prozesse sind für
Visualisierungsanwendung bestimmt. Der Scheduler speichert eine
Liste von durch den Dispatcher zu verarbeitenden Blöcken im
FIFO-Speicher 415. Der Dispatcher überträgt Blöcke zu einzelnen Prozessorelementen 201–204.
Der Dispatcher steuert außerdem die
Bewegung abgetasteter und geometrischer Daten 310 unter
den drei Pegeln (110, 120, 130) der Speicherhierarchie.
Auf diese Weise wird gewährleistet,
dass die genauen Daten für
jedes der Prozessorelemente 201–204 verfügbar sind,
wenn der Scheduler einen zu verarbeitenden Block zuweist. Nachdem
die Blöcke
in den FIFO-Speicher gelegt worden sind, versucht der Scheduler,
von der speziellen Anwendung der Visualisierung unabhängig, die
Blöcke so
nahe wie möglich
an die Prozessorelemente zu bewegen.
-
Die
Daten bewegen sich durch den Speicherpegel in von dem Pegel abhängigen Datensegmenten
unterschiedlicher Größe. Zum
Beispiel können
volumetrische Daten für
ein spezifisches Einzelbild in eine hierarchische räumliche
Unterteilung geteilt werden. Folglich wird, wenn durch ein Prozessorelement
volumetrische Daten benötigt
werden und die Daten nur im höchsten
Speicherpegel der Speicherhierarchie vorhanden sind, ein großes Datenelement
des Volumens in den nächst
niedrigeren Pegel bewegt werden, und selbst ein kleineres Datensegment
wird direkt in den dem Prozessorelement am nächsten befindlichen, niedrigsten
Pegel bewegt werden.
-
Zuerst
werden die Daten im Hauptspeicher 220 gespeichert. Die
zentrale Prozessoreinheit 210 erzeugt anfängliche
Strahleninformationen und gibt die Strahlenwarteschlangen 320 ein.
Der Dispatcher startet die Übertragung
von Daten zu dem DRAM-Baustein 206 auf
dem Board 230, wenn der erste Block bereit ist, verarbeitet
zu werden. Blöcke können auch
direkt in den integrierten DRAM 260 geladen werden. In
der gegenwärtigen
Praxis kann dies mit einzelnem Lesen vom Hauptspeicher und gleichzeitigem
Schreiben sowohl in den eingebauten DRAM als auch den integrierten
DRAM der ASIC erzielt werden.
-
Wenn
die Blöcke
verarbeitet werden, werden die Strahlenwarteschlangen für den aktuellen
Block gelesen, um zu bestimmen, wie der Strahl die abgetasteten
und geometrischen Daten in dem Block durchschneidet. Wenn ein Strahl
aus dem Block austritt und in den nächsten Block des Ablaufplanungsgitters
eintritt, wird diese Information auf eine passende Strahlenwarteschlange
für den
nächsten
Block gelegt. Wenn der Strahl zur Strahlverfolgung volle Opazität erreicht
hat, dann werden keine Informationen zurück in die Strahlenwarteschlangen
gelegt.
-
Wenn
ein Prozessorelement das Verarbeiten des aktuellen Blocks beendet,
d. h. in der Warteschlange des aktuellen Blocks sind Strahlen nicht mehr
vorhanden), signalisiert das Prozessorelement dem Scheduler, einen
neuen Block für
das Prozessorelement zum Verarbeiten auszuwählen. Der Scheduler wählt basierend
auf dem aktuellen Zustand der Strahlenwarteschlangen und dem aktuellen
Zustand der Speicher entsprechend der heuristischen Metrik den besten
Block aus. Wenn alle Strahlenwarteschlangen (zur Strahlverfolgung)
leer sind, wird die Verarbeitung beendet, und es können Bildabtastwerte
zur Anzeige oder zum Drucken gesammelt werden.
-
Ablaufplanungsalgorithmus
-
Der
folgende Ablaufplanungsalgorithmus, der einen Abhängigkeitsgraph
nutzt, wird verwendet, um eine Reihenfolge zum Verarbeiten der Blöcke auszuwählen.
-
Dieses
Verfahren verwendet einen Abhängigkeitsgraph
als Maßnahme
zum Verarbeiten des besten Blockes. Es nutzt Interframe-Kohärenz über die
Zeit aus. Für
jedes Einzelbild wird ein Abhängigkeitsgraph
erzeugt. Der Abhängigkeitsgraph
zeigt an, welche Blöcke
Strahlen zu welchen anderen Blöcken senden.
Für ein
späteres
Einzelbild hat sich der Ansichtspunkt (oder Kamerawinkel) wahrscheinlich
nur um einen kleinen Betrag bewegt. So wird der für das vorherige
Einzelbild am meisten verwendete Block auch für das nächste Einzelbild gültig sein.
Deshalb ist es möglich,
den aus dem vorherigen Einzelbild aufgebauten Graph als eine Führung nutzbar
zu machen, um zu approximieren, welche Blöcke vor welchen anderen Blöcken verarbeitet
werden sollten.
-
5a zeigt
ein Beispiel von Strahlen 501, die von einem Ansichtspunkt 502 durch
ein Ablaufplanungsgitter 503 gebildet sind. Wenn keine
frühe Strahlenbeendigung
vorhanden ist, dann ist es möglich,
dass einige Strahlen nicht weniger als fünf Blöcke traversieren. 5b zeigt
einen Abhängigkeitsgraph 510.
Im Graph sind die Knoten 511 Blöcke, und die gerichteten Kanten
geben Strahlen an, die einen Block verlassen und in den nächsten eintreten.
In 5b ist es schwierig, den Strahlendurchgang von Block
zu Block zu sehen. 5c zeigt den gleichen Abhängigkeitsgraph
wie 5b, wobei die Knoten jedoch umgeordnet sind, so
dass alle gerichteten Kanten von oben nach unten fließen. Hierbei
wird die optimale Ordnung zur Verarbeitung der Blöcke deutlich.
-
Für ein einfaches
zweidimensionales Ablaufplanungsgitter von 3 × 3 mit Strahlverfolgung ist
es leicht, auf einen Abhängigkeitsgraph
zu zeichnen und ihn umzuordnen, damit die optimale Verarbeitungsreihenfolge
der Blöcke
bestimmt wird. Jedoch können
die Ablaufplanungsgitter für
das System 100 abgetastete dreidimensionale Daten beträchtlicher Größe sein.
Während
es dies erschwert, eine manuelle Analyse vorzunehmen, ist es dennoch
möglich, die
optimale Reihenfolge rechnerisch zu lösen.
-
Außerdem unterstützt das
erfindungsgemäße Verfahren auch die Strahlverfolgung. 6a zeigt das
gleiche einfache Ablaufplanungsgitter 503 von 3 × 3 für einen
Fall von Strahlverfolgung, bei dem sich ein Objekt 600 im
Mittelpunkt des Gitters befindet und die Strahlen reflektierte Strahlen 601 enthalten. 6c zeigt, dass der entsprechende Abhängigkeitsgraph 610 beim
Anzeigen der Reihenfolge von Verarbeitungsblöcken weniger deutlich ist.
Die gestrichelten Kanten 611 zeigen Abhängigkeiten aufgrund der sekundären reflektierten
Strahlen 601 an, was Zyklen in dem Graph verursacht. In
einer Ordnung werden primäre
Strahlen vor reflektierten Strahlen verarbeitet.
-
7a und 7b zeigen,
wie zeitliche Kohärenz
erreicht wird. In 7a ist ein Gitter 700 einem
grafischen Objekt 701, z. B. einer Kugel, überlagert.
Zur Strahlverfolgung benötigte
Blöcke 702 sind in
Schwarz angegeben. Die Strahlen 702 für ein Einzelbild zum Zeitpunkt
t0 werden von einer Kameraposition 704 erzeugt.
Zum Zeitpunkt t1 hat sich die Kameraposition 705 verschoben.
Für das
nächste
Einzelbild kann eine große
Anzahl von Blöcken
erneut verwendet werden, und diese sollten in dem niedrigsten Zwischenspeicherpegel
bleiben. Nur die neuen (karierten) Blöcke 707 müssen identifiziert
werden.
-
Ersetzungs-Algorithmus
-
Wenn
der Dispatcher einen Block in einen speziellen Speicher laden muss
und der Speicherbereich voll ist, muss ein vorher gespeicherter
Block wieder in Besitz genommen werden. Der folgende Ersetzungs-Algorithmus
kann genutzt werden, um einen Block zur erneuten Inbesitznahme auszuwählen.
-
Er
nutzt Interframe-Kohärenz
und den aus dem vorherigen Einzelbild aufgebauten Abhängigkeitsgraph
in einer dem Ablaufplanungs-Algorithmus ähnlichen Art und Weise.
-
Obwohl
die Erfindung durch Beispiele bevorzugter Ausführungen beschrieben wurde,
soll verständlich
werden, dass verschiedene andere Anpassungen und Modifizierungen
innerhalb des Umfangs der angefügten
Patentansprüche
vorgenommen werden können.