-
GEBIET DER
TECHNIK
-
Die
vorliegende Erfindung betrifft Bildverarbeitungstechnologien im
Allgemeinen und im Besonderen Rendering-Technologien in einem Grafiksystem.
-
STAND DER
TECHNIK
-
Im
Zuge der andauernd schnellen Weiterentwicklung der Computertechnologien
verlangen Computeranwender verbesserte Bildqualitäten, sowohl
in Bezug auf die Bildverarbeitungsgeschwindigkeit als auch auf die
Bildwiedergabetreue. Die Kosten für die Erzeugung wahrhaft interaktiver
und realistischer visueller Effekte bleiben weiterhin übermäßig hoch. Folglich
werden verschiedene Bildverarbeitungstechniken und Designs bzw.
Bauweisen entwickelt, um zu versuchen, dieser Anforderung der Benutzer
nachzukommen und den gewünschten
niedrigen Kosten Rechnung zu tragen.
-
Im
Besonderen konzentrierten sich die Anstrengungen auf eine verbesserte
Rendering-Technik, wobei versucht wird, kleinere Arbeitsspeicher
zu verwenden als bei einer traditionellen Rendering-Technik. Eine
derartige verbesserte Technik ist das Bucket-Rendering. Bei einer
traditionellen Rendering-Technik ist ein wahlfreier Zugriff auf
Frame-Pufferdaten und/oder einen Tiefenpuffer für einen ganzen Bildschirm erforderlich.
Ein Frame-Puffer bezieht sich auf einen Speicherabschnitt, der zum
Speichern des vollständigen
Bitmap-Bilds reserviert ist, und ein Tiefenpuffer (in der Literatur
teilweise auch als Z-Puffer
bezeichnet) bezieht sich auf einen Speicherabschnitt, der zum Speichern
von Tiefeninformationen des Bitmap-Bilds reserviert ist. Zur Verarbeitung
der Informationsmenge in einem derartigen Bitmap-Bild und um weiterhin
einen gewissen interaktiven visuellen Effekt zu erzielen, verwendet
ein Grafiksystem, das die traditionelle Rendering-Technik einsetzt,
häufig
ein gleichzeitig großes
wie schnelles Speicherteilsystem als Frame- und Tiefenpuffer. Zu
einigen Beispielen für
schnelle Speicher zählen
unter anderem, ohne darauf beschränkt zu sein, Video Random Access
Memory (VRAM) und Dynamical Random Access Memory (DRAM). Noch bedeutender
ist es, dass die in einem derartigen schnellen Speicherteilsystem
gespeicherten Daten als extern sichtbar gelten, da die in Verbindung
mit dem traditionellen Grafiksystem arbeitenden Grafikanwendungen
direkt nach Belieben auf die Daten zugreifen können.
-
Andererseits
erfordert das Bucket-Rendering-Verfahren den wahlfreien bzw. zufälligen Zugriff auf
nur eine Kachel oder einen Abschnitt des ganzen Bildschirms, wie
dazu das U.S. Patent US-A-5.999.189. Das erforderliche Speicherteilsystem
zum Speichern von Informationen aus dieser einzelnen Kachel ist
mit hoher Wahrscheinlichkeit kleiner, schneller und preisgünstiger
als das vorstehend genannte Speicherteilsystem des traditionellen
Grafiksystems. In einem Ausführungsbeispiel
des Bucket-Rendering-Grafiksystems werden die Daten somit nicht
in extern sichtbaren Frame- und/oder Tiefenpuffern gespeichert,
sondern in dem System selbst, wobei bei diesem System das vorstehend
beschriebene kleinere Speicherteilsystem zum Einsatz kommt.
-
Obgleich
ein derartiges Bucket-Rendering-Grafiksystem im Vergleich zu dem
traditionellen Grafiksystem eine günstigere Leistung zu niedrigeren
Kosten vorstehen kann, weist das Bucket-Rendering-Grafiksystem eine
begrenzte Unterstützung
bestimmter bestehender Grafikanwendungen und Application Programming
Interfaces (APIs) bzw. Programmierschnittstellen auf, die auf den
gespeicherten Daten basieren, die extern sichtbar sind. In der vorliegenden
Offenbarung betrifft eine „bereits
bestehende Grafikanwendung" eine
Grafikanwendung, die so gestaltet ist, dass sie in jedem bereits
vor dem beschriebenen Bucket-Rendering-Grafiksystem bestehenden
Grafiksystem funktionsfähig
ist und korrekt ausgeführt
werden kann. Das folgende Beispiel veranschaulicht ferner das Problem
der Inkompatibilität. Im
Besonderen kann eine bereits bestehende Grafikanwendung eine Anforderung
zur Verriegelung des Frame-Puffers und/oder des Tiefenpuffers über eine API
ausgeben, die so gestaltet ist, dass sie den direkten Zugriff auf
den Frame-Puffer und/oder den Tiefenpuffer annimmt. Da das beschriebene
Bucket-Rendering-Grafiksystem keine extern sichtbaren Frame-Puffer
unterstützt,
schlägt
die Verriegelungsanforderung fehl und bewirkt mit hoher Wahrscheinlichkeit
Fehler in folgenden Operationen der Anwendung. Wie dies gezeigt
werden konnte, existiert die potenzielle Inkompatibilität zwischen
den bereits bestehenden Grafikanwendungen und dem beschriebenen
Bucket-Rendering-Grafiksystem,
sofern die bereits bestehenden Grafikanwendungen nicht neu gestaltet
werden, um derartige Verriegelungs- bzw. Sperroperationen auf bestimmte
Weise zu verhindern, oder die API wird so modifiziert, dass eine neue
Architektur möglich
gemacht wird.
-
Obwohl
die Bucket-Rendering-Technik häufig
Leistungsverbesserungen gegenüber
einer traditionellen Rendering-Technik vorsieht, gilt der Umkehrschluss
darüber
hinaus für
Situationen, in denen eine Grafikanwendung sich dafür entscheidet,
sich auf den Zugriff auf extern sichtbare Puffer zu verlassen. Eine
derartige Situation entsteht, wenn mehrere Anforderungen der Sperr-
bzw. Verriegelungsoperation innerhalb eines Frames auftreten.
-
Um
eine Unterstützung
bereits bestehender Grafikanwendungen fortzuführen und um die beschriebene
Bucket-Rendering-Technik zu verbessern, werden ein Verfahren und
eine Vorrichtung benötigt,
wie dies vorstehend gezeigt werden konnte.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Offenbart
werden ein Verfahren und eine Vorrichtung zum Rendern eines Bilds.
Die vorliegende Erfindung ist dem anhängigen Anspruch 1 als System,
in Anspruch 5 als Verfahren und in Anspruch 8 als Datenträger ausgeführt.
-
In
einem Ausführungsbeispiel
weist ein Grafiksystem einen Schaltdetektor auf, der einen Schaltzustand
in dem Grafiksystem detektiert. Das Grafiksystem weist ferner einen
Rendering-Block auf, der eine Mehrzahl von Ebenen gemäß dem detektierten Schaltzustand
rendert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird beispielhaft veranschaulicht und ist
durch die Abbildungen der beigefügten
Zeichnungen nicht beschränkt,
wobei die gleichen Elemente in den Zeichnungen mit den gleichen
Bezugsziffern bezeichnet sind. In den Zeichnungen zeigen:
-
1 die
kennzeichnenden Operationen eines Grafiksystems;
-
2(a) ein Blockdiagramm eines Ausführungsbeispiels
eines Rendering-Systems;
-
2(b) ein Blockdiagramm eines Ausführungsbeispiels
eines Rendering-Blocks in einem Rendering-System;
-
2(c) ein Blockdiagramm eines Ausführungsbeispiels
eines Renderers in einem Rendering-Block;
-
3 eine
Systemarchitektur eines Universalrechners;
-
4 ein
Beispiel der Abstraktionsebenen in einem Grafiksystem;
-
5 die
Ablauffolge der Ausführung
des Bucket-Rendering;
-
6 ein
Beispiel für
die Ausführung
des Bucket-Rendering an einer Szene;
-
7 das
Konzept der Ebenen in einer Ebene; und
-
8 eine
beispielhafte Ebene, die aus mehreren Ebenen besteht.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Beschrieben
werden ein Verfahren und eine Vorrichtung zum Erzeugen eines gerenderten
Bilds. In der folgenden Beschreibung wurde auf die genaue Beschreibung
allgemein bekannter Elemente und Theorien verzichtet, um die vorliegende
Erfindung nicht unnötig
zu verschleiern. Beispiele dafür
sind die Bildverarbeitung, Grafiksysteme, Pixel, Frame-Puffer, Tiefenpuffer,
Rendering, geometrische Primitive, Bounding Box Bucket-Sortierung,
die exakte Bucket-Sortierung, etc.
-
Wie
dies bereits in dem Abschnitt zum Stand der Technik vorstehend beschrieben
worden ist, bezeichnet ein Frame-Puffer einen Speicherabschnitt, der
zum Speichern eines ganzen auf einer Anzeigevorrichtung dargestellten
Bitmap-Bilds reserviert ist, und ein Tiefenspeicher speichert Tiefeninformationen für jedes
Pixel bzw. Bildelement des Bilds. Ferner werden die Begriffe „Bucket-Rendering", „Bucket-Rendering-Technik" und „Bucket-Rendering-Methode" in der vorliegenden
Beschreibung austauschbar für
eine Art von Rendering-Verfahren verwendet. „Geometrische Primitive" und „Primitive" werden ebenfalls
austauschbar verwendet, und die Begriffe beziehen sich auf einfache
geometrische Formen wie Punkte, Linien, Polygone (Beispiele dafür sind Dreiecke
und Vierecke), etc. Schließlich
bezieht sich der Begriff „Synchronisierungsereignisse" auf durch eine Grafikanwendung
eingeleitete Ereignisse, um ein Rendering-System anzuweisen, dessen
Daten mit aktuellen Betriebszuständen
bzw. Betriebsbedingungen der Grafikanwendung zu synchronisieren.
-
Ein
Grafiksystem verarbeitet die in das System eingegebenen Daten für gewöhnlich in
zwei Hauptstufen, der geometrischen Stufe und der Rendering-Stufe.
Die geometrische Stufe bzw. Phase ist für die Verwaltung geometrischer
Beschreibungen von anzuzeigenden Objekten verantwortlich. Die geometrische
Beschreibung kann unter anderem, ohne darauf beschränkt zu sein,
gekrümmte
Oberflächen, Polygone,
Linien, Punkte oder eine Mischung der vorstehenden Optionen beschreiben.
Die geometrische Stufe ist ferner für die Vorbereitung entsprechender
Rendering-Attribute für
die Rendering-Stufe zuständig.
Die Rendering-Stufe wiederum ist für die Speicherverwaltung und
die Umwandlung der vorstehend genannten geometrischen Beschreibung
und deren Rendering-Attribute in Pixel zuständig, die auf einer Anzeigevorrichtung
des Grafiksystems angezeigt werden. Die Abbildung aus 1 veranschaulicht
bestimmte Schritte in jeder der genannten Stufen bzw. Phasen. In
Bezug auf die Geometriestufe handelt es sich bei den Schritten um
den Transformationsschritt 100, den Beleuchtungsschritt 102 und den
Einrichtungsschritt 104.
-
Im
Besonderen verändert
der Transformationsschritt 100 die geometrische Beschreibung
eines mehrdimensionalen Modells oder eines Objekts aus dessen nativen
Koordinatensystem in ein Anzeigekoordinatensystem (teilweise auch
als Bildschirmraum bezeichnet) und synchronisiert die transformierte
geometrische Beschreibung als Reaktion auf externe Eingaben. Zum
Beispiel kann in einem dreidimensionalen (nachstehend 3D) interaktiven
Spiel ein Benutzer bzw. Anwender, der eine Eingabevorrichtung wie zum
Beispiel eine Maus bedient, eine Bewegung oder Rotation bestimmter
Objekte bewirken. Der Transformationsschritt 100 ist unter
anderem und ohne einzuschränken
dafür zuständig, diese
Objekte in verschiedene Richtungen zu bewegen, sie im Verhältnis zu
der Ansicht des Benutzers zu drehen oder sie zu skalieren, so dass
sie ihre Größen verändern.
-
Da
die Beleuchtung das Erscheinungsbild von Objekten in einer Szene
beeinflusst, nähert
sich der Beleuchtungsschritt 102 an die Effekte verschiedener
Lichtquellen an, welche mit diesen Objekten interagieren, und der
Schritt bestimmt die entsprechenden Farben für diese Objekte, um ein realistisches Erscheinungsbild
zu vermitteln. Schließlich
berechnet der Einrichtungsschritt 104 die Rendering-Attribute,
wie etwa die Diffusionsfarbe, die Spekularfarbe und Texturkoordinaten
der transformierten geometrischen Beschreibung. Optional kann der
Einrichtungsschritt 106 die transformierte geometrische
Beschreibung in ein anderes Format umwandeln, das sich für ein Rendering-Teilsystem
eignet. Der Einrichtungsschritt 104 kann zum Beispiel eine
Beschreibung einer gekrümmten
Oberfläche
in eine polygonale Beschreibung umwandeln, bevor die Rendering-Attribute berechnet
werden. Danach bereitet der Einrichtungsschritt 104 entsprechende
Daten vor und übergibt
diese an den Rasterungsschritt 106.
-
Der
Rasterungsschritt 106 der Rendering-Stufe fährt danach
damit fort, die Informationen zusammenzustellen, die in eine zweidimensionale (nachstehend
2D) Anzeige übernommen
werden. Zum Beispiel berechnet der Rasterungsschritt 106 die
finalen Farbpixel, die durch die vorstehend beschriebenen transformierten
geometrischen Beschreibungen abgedeckt sind. Ferner verwendet der Rasterungsschritt 106 eine
gewisse Texturabbildung, Alpha-Misch- oder Antialiasing-Techniken
zur weiteren Verbesserung der visuellen Effekte. Die Ausgabe des
Schritts 106 sind Pixelwerte, die für den Schritt 108 des
Pixel Drawing bereit stehen.
-
Die
Abbildungen der 2(a), 2(b) und 2(c) veranschaulichen Blockdiagramme eines
Ausführungsbeispiels
eines Rendering-Systems, das die Aspekte der Kompatibilität und der
Leistung adressiert, die in dem Abschnitt Stand der Technik beschrieben
worden sind. Ein Datenumsetzer 200 führt die vorstehend im Text
beschriebenen Operationen in der Geometriestufe an Eingabedaten 220 aus
und übermittelt
die umgesetzte bzw. konvertierte Ausgabe 210 zur weiteren
Verarbeitung an den Rendering-Block 204. Der Rendering-Block 204 wiederum führt Aufgaben
in der Rendering-Stufe aus. Gemäß der Rückkopplung 206 des
Rendering-Blocks 204 erzeugt der Schaltdetektor 202 ein
Schaltsignal 208, das eine Schaltbedingung aufweist, und
sendet diese zurück
zu dem Rendering-Block 204.
-
Ein
Ausführungsbeispiel
des Rendering-Blocks 204 umfasst eine Mehrzahl von Renderern,
wie etwa einen Renderer 1, 212 und 2, 214. Diese
Renderer können
unterschiedliche Rendering-Techniken
verwenden. Abhängig
von dem in dem Schaltsignal 208 angezeigten Schaltzustand wählt der
Rendering-Block 204 entweder den Renderer 1, 212 oder
den Renderer 2, 214 zur Verarbeitung der konvertierten
Ausgabe aus. Danach erzeugt der Multiplexor 216 dessen
Ausgabepixel 218 zur Anzeige auf der Basis des Schaltsignals 208 und
rendert Ausgabesignale.
-
Die
Abbildung aus 2(c) steht für ein Ausführungsbeispiel
des Renderers 2, 214. Der Renderer 2, 214 ist
ein skalierbares Rendering-System, das bis zu einer ganzen Zahl
n von Ebenen bearbeiten kann. Der Begriff „Ebene" bezeichnet ein Segment der Frame-Pufferdaten
und der Tiefenpufferdaten, wobei die Segmentierung der Daten eine
Folge bestimmter Anforderungen von Grafikanwendungen ist. Zum Beispiel
veranschaulicht die Abbildung aus 7 einen
Frame bzw. Rahmen von Szenendaten 700 (mit Frame-Pufferdaten
und Tiefenpufferdaten), die ein 3D-Grafikbild aus 8 darstellen.
Im Besonderen weisen die Szenendaten 700 relevante geometrische
Primitive, Texturzustandsdaten, etc. auf, und zwar zur Darstellung
einer Hintergrundwand 800, eines Gemäldes 802, das an der
Hintergrundwand 800 hängt,
und einen Stuhl 804 vor der Hintergrundwand 800.
-
Eine
Grafikanwendung unter Verwendung eines Renderers 2, 214 kann
verschiedene Anforderungen bzw. Anfragen an den Renderer ausgeben, wie
zum Beispiel eine Anforderung für
einen direkten Pufferzugriff und eine Wechselanforderung. Im Besonderen
veranschaulicht die Abbildung aus 7 zwei Verriegelungs- bzw. Sperrereignisse 708 und 710 als
Reaktion auf die genannten Anforderungen für einen direkten Pufferzugriff
und ein Wechselereignis 712 als Reaktion auf die genannte
Wechselanforderung. Die Wechselanforderung teilt dem Renderer 2, 214 mit,
eine andere Gruppe von Szenendaten zu bearbeiten, wobei das resultierende
Bitmap-Bild der Szenendaten 700 jedoch auf einer Anzeigevorrichtung
angezeigt werden soll. In dem Beispiel aus 7 sind drei „Ebenen" gegeben. Die erste
Ebene weist das Segment zwischen dem Beginn der Szenendaten 700 und
dem Sperrereignis 708 (einschließlich dem Sperrereignis 708)
auf. Die zweite Ebene besteht aus dem Segment zwischen dem Sperrereignis 708 und
dem Sperrereignis 710 (einschließlich dem Sperrereignis 710).
Die dritte Ebene besteht aus dem Segment zwischen dem Sperrereignis 710 und
dem Sperrereignis 712 (einschließlich dem Sperrereignis 712).
-
Unter
Berücksichtigung
des Ebenenkonzepts umfasst der Renderer 2, 214 ferner mehrere Sub-Renderer 220, 222 und 224,
wobei jeder Sub-Renderer eine Ebene verarbeitet. Der Kompositor 226 des
Renderers 2, 214 kombiniert danach die Ausgaben der Sub-Renderer und überträgt die kombinierte
Ausgabe zu dem Multiplexor 216.
-
Die
Blöcke
aus der Abbildung aus 2(a) können in
einem elektronischen System programmiert oder implementiert werden.
Zu einigen Beispielen eines elektronischen Systems zählen unter
anderem und ohne einzuschränken
Add-In-Leiterplatten, unabhängige
elektronische Vorrichtungen bzw. Bausteine und Universalrechnersysteme.
Ein Universalrechnersystem 300 ist in der Abbildung aus 3 dargestellt.
-
Die
Architektur des Universalrechnersystems umfasst den Mikroprozessor 302 und
den Cache-Speicher 304, die über den Prozessorbus 305 miteinander
gekoppelt sind. Das musterhafte Computersystem 300 weist
ferner den Hochleistungs-E/A-Bus 308 und den Standard-E/A-Bus 318 auf.
Der Prozessorbus 305 und der Hochleistungs-E/A-Bus 308 werden
durch die Host-Brücke 306 überbrückt, während der
Hochleistungs-E/A-Bus 308 und der Standard-E/A-Bus 318 durch
die E/A-Busbrücke 310 überbrückt werden.
Mit dem Hochleistungs-E/A-Bus 308 gekoppelt sind der Hauptspeicher 312 und
das Videoteilsystem 314. Das Videoteilsystem 314 umfasst
häufig
eine eigene Verarbeitungseinheit und Speichereinheit. Mit dem Videoteilsystem 314 gekoppelt
ist eine Videoanzeige 316. Alternativ können das Videoteilsystem 314 oder der
Hauptspeicher 312 auch mit der Host-Brücke 306 gekoppelt
sein, wie dies durch die gestrichelten Linien dargestellt ist. Mit
dem Standard-E/A-Bus 318 gekoppelt sind der Massenspeicher 320,
die Netzwerkschnittstelle 324 und eine alphanumerische
Eingabevorrichtung oder eine andere herkömmliche Eingabevorrichtung 322.
-
Diese
Elemente führen
ihre allgemein im Fach bekannten normalen Funktionen aus. Im Besonderen
kann der Massenspeicher 320 in einem Ausführungsbeispiel
als dauerhafter Speicher für
die ausführbaren
Anweisungen verwendet werden, während
der Hauptspeicher 312 zum temporären Speichern der ausführbaren
Anweisungen eines Ausführungsbeispiels
während
der Ausführung
durch den Mikroprozessor 302 verwendet werden kann.
-
Genaue Funktionsweise
eines Rendering-Blocks
-
Beschrieben
werden ein Verfahren und eine Vorrichtung zum Erzeugen eines gerenderten
Bilds. Im Besonderen treffen das Verfahren und die Vorrichtung in
einem Ausführungsbeispiel
ihre Auswahl aus einer Gruppe von Renderern zur Ausführung des Rendering
und zur Beibehaltung der in dem Frame-Puffer und dem Tiefenpuffer
der Vorrichtung gespeicherten Informationen.
-
Das
Ausführungsbeispiel
ist in einem elektronischen System oder im Besonderen in einem Universalrechner 300 einsetzbar.
Die Abbildung aus 4 zeigt Abstraktionsmodelle,
die gemäß einem Ausführungsbeispiel
möglich
sind. Die Anwendungsebene bzw. Anwendungsschicht 400 verweist
auf Grafikanwendungen. Ein solches Beispiel sind dreidimensionale
interaktive Spiele. Anweisungen dieser Grafikanwendungen werden
für gewöhnlich in
dem Massenspeicher 320 gespeichert und durch den Mikroprozessor 302 ausgeführt. Innerhalb
der Anwendungsschicht 400 können die Grafikanwendungen bestehende
Routinen der Anwendungs-Software aufrufen, um deren entsprechenden
Rendering-Aufgaben zu bearbeiten. Diese Routinen der Rendering-Software
stellen somit eine High-Level-API 402 für die Anwendungsschicht 400 bereit.
Ein Beispiel für
die High-Level-API 402 ist
der Modus Retained Mode Direct3D® der
Microsoft Corporation.
-
Die
High-Level-API 402 kann auch andere Low-Level-Routinen
aufrufen, die von dem Betriebssystem des Universalrechners 300 entwickelt
werden, wie zum Beispiel, ohne darauf beschränkt zu sein, der Direct3D® Modus
Immediate Mode oder OpenGL®. Diese Routinen sind
als Low-Level-API 404 klassifiziert und weisen auch eine
Schnittstellenverbindung mit dem Gerätetreiber 406 auf.
Der Gerätetreiber 406 wird
allgemein speziell für
die Hardware 408 entwickelt und steht in direkter Übertragungsverbindung
mit dieser. Die Hardware 408 betrifft für gewöhnlich das Videoteilsystem 314,
das in der Abbildung aus 3 dargestellt ist. Für den Fachmann auf
dem Gebiet ist es offensichtlich, dass die veranschaulichten Blöcke in der
Abbildung aus 2(a) in dem Gerätetreiber 406,
in Hardware 408 oder in einer Kombination aus beiden implementiert
werden.
-
Wie
dies bereits vorstehend im Text beschrieben worden ist, erzeugt
der Schaltdetektor 202 ein Schaltsignal 208 auf
der Basis der Rückkopplung 206 des
Rendering-Blocks 204. In einem Ausführungsbeispiel kann der Rendering-Block 204 Informationen
speichern bzw. führen,
die im Verhältnis
zu der Anzahl der Anforderungen für einen direkten Speicherzugriff
oder Synchronisierungsereignissen (nachstehend Quirks) pro Frame
stehen. Wenn die Anzahl einen bestimmten Schwellenwert übersteigt, kann
die Leistung bestimmter Rendering-Techniken, wie etwa des Bucket-Rendering,
weniger wünschenswert
werden als eine traditionelle Rendering-Methode. Wenn der Rendering-Block 204 dieses Ergebnis
in dessen Rückkopplung
bzw. Rückführung 206 anzeigt,
so setzt der Schaltdetektor 202 die Informationen in der
Rückkopplung 206 in
eine Schaltbedingung um und integriert die Schaltbedingung in das Schaltsignal 208.
Für den
Durchschnittsfachmann auf dem Gebiet sollte es offensichtlich sein,
den Rendering-Block 204 so zu gestalten, dass auch andere Informationen
als die genannten Sperroperationen verfolgt werden können, oder
das andere Schwellenwerte zum Auslösen der beschriebenen Schaltbedingungen
erzeugt werden können.
-
Zusätzlich zu
der Überwachung
der Leistungsinformationen und der Erzeugung der Rückkopplung 206 umfasst
der Rendering-Block 204 eine Gruppe von Renderern. In einem
Ausführungsbeispiel
verwendet der Renderer 1, 212 eine traditionelle Rendering-Methode, und die
Sub-Renderer 220, 222 und 224 in dem
Renderer 2, 214 setzen die vorstehend genannte Bucket-Rendering-Methode
ein. Das in der Abbildung aus 5 dargestellte
Flussdiagramm beschreibt in Verbindung mit einer beispielhaften
Szene aus 6 die Abläufe bzw. Operationen des Bucket-Rendering-Verfahrens.
Die Abbildung aus 6 zeigt eine Szene 600 mit
einem einfachen Objekt 602.
-
Wenn
das Schaltsignal 208 dem Renderer 2, 214 einen
Schaltzustand anzeigt und anzeigt, dass eine Ebene bzw. Schicht
existiert (d.h. die Anzahl der Quirks ist gleich 0), so beginnt
der Renderer 2, 214 mit der Verarbeitung der konvertierten
Ausgabe 210 der Szene 600 mit einem der Sub-Renderer auf der Basis
des Bucket-Rendering. Das Verfahren beginnt mit einer Unterteilung
der Szene 600 in die Bereiche 604, 606, 608 und 610 in
dem Block 500. In einem Ausführungsbeispiel entspricht ein
Ausblendungsrechteck 612 dem minimalen Rechteck, das Pixel
von Objekten in der Szene 600 wie etwa 602 in
jedem der unterteilten Bereiche abdecken kann. In diesem Fall fällt die
Größe des Ausblendungsrechtecks 612 somit
mit der Größe der unterteilten
Bereiche zusammen.
-
Da
die konvertierte Ausgabe 210 nach der Unterteilung bereits
die geometrische Stufe durchlaufen hat, stehen Informationen über die
Primitive der Szene 600 zur Verfügung und werden in 502 in die
entsprechenden Bereiche sortiert. Im Besonderen gehört das Primitiv 614 zu
dem Bereich 604, das Primitiv 616 zu dem Bereich 606,
das Primitiv 618 zu dem Bereich 608 und das Primitiv 620 zu
dem Bereich 610. Verschiedene Sortieralgorithmen können in 502 eingesetzt
werden, ohne den Umfang des beschriebenen Rendering-Blocks 204 zu überschreiten. Zu
den anwendbaren Algorithmen zählen
unter anderem, ohne dabei einschränkend zu sein, Bounding Box
Bucket Sorting und Exact Bucket Sorting. Ferner ist es wichtig festzustellen,
dass alle Zustandsveränderungen
oder Operationen der Primitive zugeordneten Befehle oder Anweisungen
auch organisiert und in ihren entsprechenden Bereichen platziert
werden.
-
Wenn
sich die Primitive und relevante Befehle in ihren entsprechenden
Bereichen befinden, entfernt das Ausblendungsrechteck 612 in 504 alle
Informationen außerhalb
der Bereiche. Für
den Durchschnittsfachmann auf dem Gebiet ist es offensichtlich,
dass entweder 504 mit 502 oder 504 mit 506 kombiniert
wird. Wenn das Ausblendungsrechteck 612 ferner mit der
Entfernung der Informationen außerhalb
des Bereichs 604 fertig ist, kann es zu einem anderen Bereich
wechseln, wie etwa dem Bereich 606, indem es einfach seine
Koordinaten ändert. Nach
der Sortierung und Ausblendung bzw. dem Zuschneiden werden die Primitive
in jedem Bereich in der Folge ihrer Einführung in ihre Bereiche in 506 gerendert.
-
Wenn
es mehrere Ebenen bzw. Schichten gibt, oder mit anderen Worten,
wenn die Anzahl der Quirks größer ist
als Null, und wenn das Schaltsignal 208 dem Renderer 2, 214 einen
Schaltzustand anzeigt, so fährt
ein Ausführungsbeispiel
des Renderers 2, 214 in der Folge mit der Zuweisung jeder
Ebene zu einem der Sub-Renderer (220, 222 und 224) auf
der Basis des Bucket-Rendering zu. Unter Verwendung der Abbildung
aus 8 kann die Ebene 1 zur Veranschaulichung einer
Hintergrundwand 800 entsprechen und sie ist dem Sub-Renderer 220 zugeordnet.
Die Ebene 2 kann einem Gemälde 802 entsprechen
und ist dem Sub-Renderer 222 zugeordnet. Die Ebene 3 kann
einem Stuhl 804 entsprechen und ist dem Sub-Renderer 224 zugeordnet.
Die durch diese Sub-Renderer ausgeführten Operationen entsprechen
im Wesentlichen den Operationen, die vorstehend in Verbindung mit
den Abbildungen der 5 und 6 beschrieben
worden sind. Der Kompositor 226 sammelt danach die gerenderten
Daten für
die Ebene 1, Ebene 2 und Ebene 3 und bestimmt relative Tiefeninformationen
in Bezug auf die Hintergrundwand 800, das Gemälde 802 und
den Stuhl 804. Auf der Basis dieser Bestimmung fährt der
Kompositor 226 damit fort, verschiedene Ebenen gerenderter
Daten zu organisieren und entsprechende Pixeldaten zur Anzeige zu
erzeugen.
-
Alternativ
kann ein anderes Ausführungsbeispiel
des Renderers 2, 214 einen Sub-Renderer aufweisen, wie
etwa den Sub-Renderer 220, wobei es weiteren mehrere Ebenen
verarbeiten kann. Zuerst stellt der Renderer 2, 214 sicher,
dass der vollständige
und extern sichtbare Frame-Puffer und/oder Tiefenpuffer existiert.
Als zweites beginnt der Sub-Renderer 220 mit dem Rendering
von Szenendaten in Ebene 1 (bis zu dem Punkt des Sperrereignisses 708).
Nach dem Detektieren des Sperrereignisses 708 leert der
Sub-Renderer 220 die Frame- und/oder Tiefenpufferdaten
in extern sichtbare Puffer. Die Daten werden für eine Kompatibilität mit bereits
bestehenden Grafikanwendungen oder zum Rendern folgender Ebenen
gespeichert. Drittens fährt
der Sub-Renderer 220 damit fort, Ebene 2 bis zu dem Sperrereignis 710 zu
rendern. In ähnlicher
Weise leert der Sub-Renderer 212 Frame- und/oder Tiefenpufferdaten
nach dem Auftreten des Sperrereignisses 710 in extern sichtbare
Puffer. Zuletzt rendert der Sub-Renderer 220 Ebene drei
bis zu dem Wechselereignis 712, und wiederum lehrt er die
Frame- und/oder Tiefenpufferdaten in extern sichtbare Puffer. Hiermit
wird festgestellt, dass die Zusammensetzung der Ebenen zum Erzeugen
einer Ausgabe für den
Multiplexor 216 implizit durch die drei vorstehend genannten
Entleerungsvorgänge
erreicht wird.
-
Offenbart
werden somit ein Verfahren und eine Vorrichtung zum Erzeugen eines
gerenderten Bilds. Das Verfahren und die Vorrichtung wurden zwar
im Besonderen in Bezug auf die Abbildungen beschrieben, wobei sie
in jeder Anzahl von Systemen auftreten können, die in der Lage sind,
ein gerendertes Bild zu erzeugen. Ferner sind durch den Durchschnittsfachmann
auf dem Gebiet zahlreiche Abänderungen
und Modifikationen möglich,
ohne dabei vom Umfang des beschriebenen Verfahrens und der beschriebenen
Vorrichtung abzuweichen.