-
1. Technisches Gebiet
der Erfindung
-
Diese Erfindung betrifft im allgemeinen
das Gebiet der Computergrafik und insbesondere Grafiksysteme mit
hoher Leistung.
-
2. Beschreibung des relevanten
Standes der Technik
-
Ein Computersystem verläßt sich
typischerweise auf sein Grafiksystem für das Produzieren einer visuellen
Ausgabe auf dem Computerschirm oder einem Anzeigegerät. Frühe Grafiksysteme
waren nur dafür verantwortlich,
das zu nehmen, was der Prozessor als Ausgang produziert, und dies
auf dem Schirm darzustellen. Im wesentlichen fungierten sie als
einfache Übersetzer
oder Schnittstellen. Moderne Grafiksysteme enthalten jedoch Grafikprozessoren
mit einer sehr hohen Verarbeitungsleistung. Sie fungieren nun eher
wie Coprozessoren anstelle von einfachen Übersetzern. Diese Veränderung
erfolgte aufgrund eines kürzlichen
Anstiegs sowohl in der Komplexität
als auch der Datenmenge, die zu der Anzeigevorrichtung gesendet
wird. Beispielsweise haben moderne Computeranzeigen viel mehr Pixel,
eine größere Farbtiefe
und sind in der Lage, komplexere Bilder mit höherer Bildwiederholfrequenz
darzustellen als frühere
Modelle. In gleicher Weise sind die angezeigten Bilder nun komplexer
und können
fortgeschrittene Techniken, wie z. B. das Anti-Aliasing und das
prozedurale Zeichnen von Textur (texture mapping) beinhalten.
-
Im Ergebnis würde die CPU ohne die beträchtliche
Verarbeitungsleistung in dem Grafiksystem eine lange Zeit damit
zubringen, die Grafikberechnungen durchzuführen. Dies könnte dem
Computersystem die Verarbeitungsleistung rauben, die für die Durchführung anderer
Aufgaben, die mit der Programmausführung verknüpft sind, benötigt wird,
und dadurch die Gesamtsystemleistung dramatisch reduzieren. Mit
einem leistungsfähigen
Grafiksystem wird jedoch, wenn die CPU instruiert wird, einen Kasten
auf dem Schirm darzustellen, diese davon entlastet, die Position
und Farbe jedes Pixels zu berechnen. Statt dessen kann die CPU eine Anforderung
an die Videokarte schicken, die besagt "zeichne eine Box bei diesen Koordinaten". Das Grafiksystem
zeichnet dann die Box, was den Prozessor entlastet, so daß er andere
Aufgaben leisten kann.
-
Im allgemeinen ist ein Grafiksystem
in einem Computer (ebenso als Grafiksystem bezeichnet) ein Typ eines
Videoadapters, der seinen eigenen Prozessor enthält, um das Leistungsniveau
zu verstärken.
Diese Prozessoren sind für
die Berechnung von graphischen Transformationen spezialisiert, so
daß sie
dazu tendieren, bessere Resultate zu erzielen als die Universal-CPU,
die von dem Computersystem verwendet wird. Zusätzlich entlasten sie die CPU
des Computers, um andere Befehle auszuführen, während das Grafiksystem die graphischen
Berechnungen handhabt. Die Popularität von graphischen Anwendungen
und insbesondere von Multimediaanwendungen hat dazu geführt, daß Grafiksysteme
mit hoher Leistung ein gemeinsames Merkmal von Computersystemen
sind. Die meisten Computerhersteller packen nun ein Grafiksystem
mit hoher Leistung in ihre Systeme.
-
Da Grafiksysteme typischerweise nur
einen begrenzten Satz von Funktionen durchführen, können sie angepaßt werden
und daher weit effizienter bei graphischen Operationen als der Universalprozessor
des Computers sein. Während
frühere
Grafiksysteme auf das Ausführen
von zweidimensionalen (2D-) Grafiken begrenzt waren, hat sich ihre
Funktionalität
erhöht,
so daß sie
dreidimensionale (3D-) Drahtmodellgrafiken, 3D-Volumenmodelle unterstützen und
nun die Unterstützung
für dreidimensionale
(3D-) Grafik beinhalten mit Textur und Spezialeffekten, wie z. B.
das fortgeschrittene Shading bzw. Schattieren, das Fogging bzw.
Schleiern, das Alpha-Blending bzw. das Alpha-Mischen und das spiegelartige
Hervorheben.
-
Die Verarbeitungsleistung von dreidimensionalen
Grafiksystemen hat sich mit einem halsbrecherischen Tempo verbessert.
Vor wenigen Jahren konnten schattierte Bilder von einfachen Objekten
nur mit wenigen Einzelbildern pro Sekunde wiedergegeben werden,
während
heutige Systeme die Wiedergabe von komplexen Objekten mit 60 Hz
oder mehr unterstützen.
Bei dieser Wachstumsrate ist es in nicht allzu ferner Zukunft möglich, daß Grafiksysteme
buchstäblich
in der Lage sind, mehr Pixel wiederzugeben als ein einzelnes menschliches
Sehsystem wahrnehmen kann. Während
diese zusätzliche
Leistung in Umgebungen mit mehreren Ansichten verwendet werden kann,
kann sie in gebräuchlicheren
Umgebungen mit hauptsächlich
einer Ansicht verschwendet sein. Somit ist ein graphisches System
wünschenswert,
das in der Lage ist, sich an die variable Natur des menschlichen
Auflösungssystems
anzupassen (das heißt,
in der Lage ist, die Qualität
dort zur Verfügung
zu stellen, wo sie benötigt
wird oder am meisten aufnehmbar ist).
-
Während
die Anzahl von Pixeln ein wichtiger Faktor bei der Bestimmung der
Leistung von graphischen Systemen ist, ist ein anderer Faktor von
gleicher Wichtigkeit die Qualität
des Bildes. Beispielsweise kann ein Bild mit hoher Pixeldichte immer
noch unrealistisch erscheinen, wenn Kanten innerhalb des Bildes
zu scharf oder zu zackig sind (ebenso als Alias-Effekt bezeichnet).
Eine gut bekannte Technik, diese Probleme zu überwinden, ist das Anti-Aliasing.
Anti-Aliasing beinhaltet das Glätten
der Kanten von Objekten durch Schattieren von Pixeln entlang der
Grenzen von graphischen Elementen. Genauer gesagt bringt das Anti-Aliasing
das Entfernen von höher
frequenten Komponenten von einem Bild mit sich, bevor sie störende visuelle
Artefakte verursachen. Beispielsweise kann Anti-Aliasing Kanten
mit hohem Kontrast in einem Bild dämpfen oder glätten durch
Einstellen von bestimmten Pixeln auf Zwischenwerte (z. B. um die
Silhouette eines hellen Objekts, das vor einem dunklen Hintergrund überlagert
wird).
-
Ein anderer visueller Effekt, der
verwendet wird, um den Realismus von Computerbildern zu erhöhen, ist
das Alpha-Blending. Alpha-Blending ist eine Technik, die die Transparenz
eines Objekts steuert, was die realistische Darstellung von durchsichtigen
bzw. durchscheinenden Oberflächen,
wie z. B. Wasser oder Glas, erlaubt. Ein anderer Effekt, der verwendet
wird, um den Realismus zu steigern, ist das Fogging. Das Fogging verdunkelt
ein Objekt, wenn es sich von dem Betrachter weg bewegt. Das einfache
Fogging ist ein Spezialfall des Alpha-Blendings, in dem sich der
Grad von alpha mit dem Abstand ändert,
so daß das
Objekt so erscheint, als ob es im Nebel bzw. im Dunst verschwindet,
wenn sich das Objekt von dem Betrachter weg bewegt. Dieses einfache
Fogging kann ebenso als "depth
cueing" bzw. Tiefeninformation
oder atmosphärische
Abschwächung bezeichnet werden,
das heißt,
das Verringern des Kontrastes eines Objekts, so daß es weniger
auffallend erscheint, wenn es in der Ferne verschwindet. Komplexere
Typen des Foggings gehen über
eine einfache lineare Funktion hinaus, um eine komplexere Verbindung
zwischen dem Grad der Transparenz und dem Abstand eines Objekts
von dem Betrachter bereitzustellen. Softwaresysteme des gegenwärtigen Standes
der Technik gehen sogar noch weiter durch Verwendung von atmosphärischen
Modellen, um tiefliegenden Nebel mit verbessertem Realismus bereitzustellen.
-
Während
die oben aufgelisteten Techniken das Erscheinungsbild von Computergrafikbildern
dramatisch verbessern können,
haben sie ebenso bestimmte Begrenzungen. Insbesondere können sie
ihre eigenen Aberrationen einfügen
und sind typischerweise von der Dichte der auf der Anzeigevorrichtung
angezeigten Pixel begrenzt.
-
Im Ergebnis ist daher ein Grafiksystem
wünschenswert,
das in der Lage ist, verbesserte Leistungsniveaus zu benutzen, um
nicht nur die Anzahl von dargestellten Pixeln zu erhöhen, sondern
ebenso die Qualität des
dargestellten Bildes. Darüber
hinaus ist ein Grafiksystem wünschenswert,
das in der Lage ist, Steigerungen in der Verarbeitungsleistung zu
benutzen, um die Ergebnisse der Grafikeffekte, wie z. B. des Anti-Aliasings,
zu verbessern.
-
Grafiksysteme des Standes der Technik
haben im allgemeinen diese Ziele nicht erreicht. Grafiksysteme des
Standes der Technik verwenden einen konventionellen Einzelbildpufferspeicher
für das
Aktualisieren der Pixel-Videodaten auf der Anzeige. Der Einzelbildpufferspeicher
speichert Zeilen und Spalten von Pixeln, die exakt den entsprechenden
Zeilen- und Spaltenorten auf der Anzeige entsprechen. Grafiksysteme
des Standes der Technik stellen 2D- und/oder 3D-Bilder oder Objekte
in dem Einzelbildpufferspeicher in der Pixelform dar und lesen dann
die Pixel von dem Einzelbildpufferspeicher während einer Bildwiederholung
ein, um die Anzeige zu aktualisieren. Somit speichert der Einzelbildpufferspeicher
die Ausgangspixel, die dem Display bzw. der Anzeige bereitgestellt
werden. Um visuelle Artefakte zu reduzieren, die durch Aktualisieren
des Schirms zu derselben Zeit, zu der der Einzelbildpufferspeicher
aktualisiert wird, erzeugt werden können, sind die meisten Einzelbildpufferspeicher
der Grafiksysteme doppelt puffergespeichert.
-
Um realistischere Bilder zu erzielen,
sind manche Grafiksysteme des Standes der Technik weitergegangen
durch Erzeugung von mehr als einer Abfrage bzw. einem Momentwert
pro Pixel. Der Begriff "Abfrage" bzw. "Momentwert", wie er hier verwendet
wird, bezieht sich auf die berechnete Farbinformation, die die Farbe, die
Tiefe (z), die Transparenz und mögliche
andere Informationen eines bestimmten Punktes auf einem Objekt oder
Bild anzeigt. Beispielsweise kann eine Abfrage die folgenden Komponentwerte
haben: einen Rotwert, einen Grünwert,
einen Blauwert, einen z-Wert und einen alpha-Wert (der z. B. die
Transparenz der Abfrage darstellt). Eine Abfrage kann ebenso andere
Informationen beinhalten, wie z. B. einen z-Tiefenwert, einen Unschärfewert,
einen Intensitätswert,
eine "brighter-than-bright"-Information (Helligkeitsübersteuerung)
und einen Anzeiger, daß die
Abfrage teilweise oder vollständig
aus Steuerinformation anstelle von Farbinformation besteht (z. B. "Abfragesteuerinformation"). Durch Berechnung
von mehr Abfragen als Pixeln (das heißt durch Supersampling) wird
ein detaillierteres Bild berechnet als auf der Anzeigevorrichtung
dargestellt werden kann. Beispielsweise kann ein Grafiksystem vier
Abfragen für
jedes an die Anzeigevorrich tung auszugebende Pixel berechnen. Nachdem
die Abfragen berechnet wurden, werden sie dann kombiniert oder gefiltert,
um die Pixel zu bilden, die in dem Einzelwertpufferspeicher abgelegt
werden und dann zu der Anzeigevorrichtung gefördert werden. Die Verwendung
von Pixeln, die in dieser Art und Weise gebildet sind, kann ein
realistischeres Endbild kreieren, da allzu abrupte Veränderungen
in dem Bild durch den Filterungsprozeß geglättet werden können.
-
Diese Supersampling-Systeme des Standes
der Technik erzeugen typischerweise eine Anzahl von Abfragen, die
weit größer als
die Anzahl von Pixelorten auf der Anzeige sind. Diese Systeme des
Standes der Technik haben typischerweise Darstellungsprozessoren,
die die Abfragen berechnen und sie in einem Darstellungspufferspeicher
ablegen. Die Filterhardware liest dann die Abfragen aus dem Darstellungspufferspeicher, filtert
die Abfragen, um Pixel zu erzeugen und legt dann die Pixel in einem
traditionellen Einzelbildpufferspeicher ab. Der traditionelle Einzelbildpufferspeicher
ist typischerweise doppelt puffergespeichert, wobei eine Seite verwendet
wird für
die Aktualisierung der Anzeigevorrichtung, während die andere Seite von
der Filterhardware aktualisiert wird. Nachdem die Abfragen gefiltert
wurden, werden die resultierenden Pixel in einem traditionellen
Einzelwertpufferspeicher abgelegt, der verwendet wird, um die Anzeigevorrichtung
zu aktualisieren. Diese Systeme haben jedoch im allgemeinen unter
Begrenzungen zu leiden, die durch die konventionellen Einzelbildpufferspeicher
und durch die zugeführte
Latenzzeit, die durch den Darstellungspufferspeicher und das Filtern
verursacht wird, auferlegt werden. Daher ist ein verbessertes Grafiksystem
wünschenswert,
das den Nutzen des Supersamplings von Pixeln beinhaltet, während die
Nachteile des konventionellen Einzelbildpufferspeichers vermieden
werden.
-
Versuche, diese Begrenzungen zu überwinden
und solch ein verbessertes Grafiksystem zur Verfügung zu stellen, sind im Stand
der Technik bekannt.
-
Beispielsweise beschreibt die JP-A-08
063608, die der US-A-5 757 375 entspricht, ein Supersamplingansatz,
der es erlaubt, die Größe des erforderlichen
Einzelbildpufferspeichers zu reduzieren. Zu diesem Zweck wird ein
bestimmter Typ von Einzelbildpufferspeicher verwendet, in den jeder
Eintrag einen Satz (z. B. 4) von Superabfragen, zwei Einträge (Disp0,
Disp1) für
das Speichern der berechneten Ausgangspixel und einen 2-Bit-Steuercode
(Ctl), der die Beziehung zwischen den Superabfragen und den berechneten
Ausgangspixeln spezifiziert, beinhaltet.
-
Daher führt der Einzelpufferspeicher,
der in der JP-A-08 063608 und in der US-A-5 757 375 beschrieben
wird, selbst wenn seine Größe vergleichsweise
klein sein kann, immer noch eine doppelte Pufferspeicherung der
erzeugten Ausgangspixel (d. h. Disp0 und Disp1) durch und es wird
noch nicht einmal angeregt, stattdessen nur die Superabfragen pufferzuspeichern
und daraus die Ausgangspixel während
der Übertragung
zu erzeugen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die vorliegende Erfindung umfaßt ein Grafiksystem,
ein Verfahren zum Betreiben des Grafiksystems und ein Computersoftwareprogramm
für das
Durchführen
des Verfahrens, wie in den angefügten
Ansprüchen ausgeführt wird.
Das Grafiksystem verwendet einen Abfragepufferspeicher und eine
programmierbare Einheit zur Umrechnung von Abfrage in Pixel für die Aktualisierung
der Anzeige. In einer Ausführungsform
kann das Grafiksystem einen Grafikprozessor, einen Abfragepufferspeicher
und eine Einheit zur Umrechnung von Abfrage in Pixel haben.
-
Der Grafikprozessor erzeugt eine
Mehrzahl von Abfragen und speichert diese in einem Abfragepufferspeicher.
Der Grafikprozessor erzeugt vorzugsweise mehr als eine Abfrage für zumindest
einen Untersatz von Pixelorten auf der Anzeige und speichert diese.
Der Abfragepufferspeicher ist somit ein supergesampleter Abfragepufferspeicher,
der eine Anzahl von Abfragen speichert, die in einigen Ausführungsformen
viel größer als die
Anzahl von Pixelorten auf der Anzeige sein kann. In anderen Ausführungsformen
kann die Gesamtzahl von Abfragen näher an der Gesamtzahl von Pixelorten
auf der Anzeigevorrichtung sein, gleich dieser Anzahl sein oder
geringer als diese Anzahl sein, die Abfragen können in bestimmten Gebieten
aber dichter positioniert sein und in anderen Gebieten weniger dicht
positioniert sein.
-
Die Einheit zur Umrechnung von Abfrage
in Pixel ist derart konfiguriert, daß sie die Abfragen von dem supergesampleten
Abfragepufferspeicher liest und die Abfragen in entsprechende Ausgangspixel
filtert oder faltet, wobei die Ausgangspixel dann zur Verfügung gestellt
werden, um die Anzeige zu aktualisieren. Es sei bemerkt, daß die Begriffe "Filter" und "Falten", so wie sie hier
verwendet werden, austauschbar verwendet werden und sich auf die
mathematische Manipulation von einer oder mehreren Abfragen beziehen,
um ein Pixel zu erzeugen (z. B. durch Mitteln, durch Anwenden einer
Faltungsfunktion, durch Summieren, durch Anwenden einer Filterfunktion,
durch Wichten der Abfragen und darauffolgendes Manipulieren, durch
Anwenden einer Zufallsfunktion usw.). Die Einheit zur Umrechnung
von Abfrage in Pixel wählt
eine oder mehrere Abfragen aus und filtert diese, um ein Ausgangpixel
zu erzeugen. Es sei bemerkt, daß die
Anzahl von Abfragen, die von der Einheit zur Umrechnung von Abfrage
in Pixel ausgewählt
und/oder gefiltert wird, Eins und vorzugsweise größer als
Eins sein kann.
-
In einigen Ausführungsformen kann die Anzahl
von Abfragen, die verwendet werden, um jedes Pixel zu bilden, variieren.
Beispielsweise kann die zugrunde liegende mittlere Abfragedichte
in dem Abfragepufferspeicher variieren, die Ausdehnung des Filters
kann variieren oder die Anzahl von Abfragen für ein bestimmtes Pixel kann
variieren aufgrund von stochastischen Variationen in der Abfragedichte.
In einigen Ausführungsformen
kann die Anzahl auf einer Pixel-Basis, auf einer Abtastzeilen-Basis,
auf einer Bereichs-Basis, auf einer Einzelbild-Basis variieren oder
die Anzahl kann konstant bleiben. Die Einheit zur Umrechnung von
Abfrage in Pixel kann auf die Abfragen von dem supergesampleten
Abfragepufferspeicher zugreifen, eine Echtzeiffilteroperation durchführen und
dann die resultierenden Ausgangspixel der Anzeige in Echtzeit zur
Verfügung
stellen. Das Grafiksystem kann ohne einen konventionellen Einzelbildpufferspeicher
arbeiten, d. h. das Grafiksystem verwendet keinen konventionellen
Einzelbildpufferspeicher, der die tatsächlichen Pixelwerte speichert,
die auf der Anzeige aktualisiert werden. Es sei bemerkt, daß einige
Anzeigen interne Einzelbildpufferspeicher haben können, diese
werden jedoch als integraler Teil der Anzeigevorrichtung und nicht
des Grafiksystems angesehen. Die Einheiten zur Umrechnung von Abfrage
in Pixel können
somit jedes Pixel mit jeder Bildwiederholung auf einer Echtzeitbasis
berechnen. Der Begriff "Echtzeit", so wie er hier
verwendet wird, bezieht sich auf eine Funktion, die mit der Bildwiederholrate
der Anzei gevorrichtung durchgeführt
wird, oder nahe dieser Rate durchgeführt wird. "Mit der Übertragung" bedeutet bei, nahe oder oberhalb der
Aufnahmefähigkeit
des menschlichen visuellen Systems für die Bewegungsverschmelzung
(wie oft ein Bild verändert
werden muß,
um die Illusion einer kontinuierlichen Bewegung zu erzeugen) und
für die
Flimmerverschmelzung (wie oft die Lichtintensität verändert werden muß, um die
Illusion der Kontinuität
zu erzeugen). Diese Konzepte werden ausführlich beschrieben in dem Buch "Spatial Vision" von Russel L. De
Valois und Karen K. De Valois, Oxford University Press, 1988.
-
Die Einheit zur Umrechnung von Abfrage
in Pixel kann programmiert werden, um die Anzahl von Abfragen zu
variieren, die verwendet werden, um die entsprechenden Ausgangspixel
zu erzeugen. Die Anzahl von Abfragen, die verwendet werden, kann
beispielsweise entsprechend dem Ort der Ausgangspixel variieren, z.
B. dem Abstand des Ausgangspixels von dem Foveationspunkt eines
Betrachters. Der Begriff "Foveationspunkt", so wie er hier
verwendet wird, bezieht sich auf einen Punkt (z. B. auf einem Anzeigeschirm),
auf den das Zentrum eines Sichtfeldes der Augen eines Betrachters
fokussiert ist. Dieser Punkt kann sich bewegen, wenn sich die Augen
des Betrachters bewegen. Beispielsweise kann sich der Foveationspunkt
(der sich bewegt, wenn sich die Augen des Betrachters bewegen) exakt
im Zentrum des Anzeigeschirms befinden, wenn der Betrachter auf
ein kleines Objekt fokussiert, das im Zentrum des Schirms angezeigt
wird.
-
Das menschliche visuelle System hat
variierende Niveaus der Sehschärfe,
wobei der höchste
Grad der Sehschärfe
in unmittelbarer Nachbarschaft des Sehgrübchens der Retina liegt. Der
foveale Bereich empfängt
Licht vom Foveationspunkt und macht typischerweise nur wenige Grad
am Zentrum des Sichtfeldes eines Menschen aus. Um somit eine beste
Anpassung an das menschliche visuelle System zu erreichen, kann das
Grafiksystem in einigen Ausführungsformen
derart konfiguriert sein, daß es
erfaßt,
wo sich der Foveationspunkt des Betrachters relativ zu der Anzeigevorrichtung
befindet. Dies erlaubt es dem Grafiksystem, die Abfragedichte an
die Sehschärfe
des menschlichen Auges anzupassen. Somit werden mehr Abfragen (und mehr
Verarbeitungsleistung) den Gebieten der Anzeigevorrichtung zugewiesen,
die von den Bereichen mit höchster
Sehschärfe
des menschlichen visuellen Systems aufgenommen werden. In gleicher
Weise werden weniger Abfragen und Verarbeitungsleistung den Bereichen
gewidmet, die von den Bereichen des menschlichen visuellen Systems
mit geringerer Sehstärke
aufgenommen werden. Es sei jedoch bemerkt, daß es nicht nur die Dichte der
Zäpfchen
und Stäbchen
im Auge ist, an die angepaßt
werden kann. Andere Faktoren beeinflussen ebenso das Wahrnehmungsvermögen des
menschlichen visuellen Systems, einschließlich des Linsensystems, chromatischer
Aberrationen und der Nervenbahnen zu dem Auge. Für die Zwecke der Anpassung
von Computeranzeigen an die menschliche Netzhautwahrnehmungsfähigkeit
stellen die Verarbeitungsgrenzen des menschlichen Gehirns für die visuelle
Aufnahme ein nützliches
Ziel dar, wonach zukünftige
Grafiksysteme streben können,
um es zu erreichen oder zu überschreiten.
-
Dieser Typ von Grafiksystem kann
auf eine Anzahl von unterschiedlichen Wegen implementiert werden.
Beispielsweise können
augenverfolgende Sensoren verwendet werden, um zu bestimmen, in
welche Richtung die Augen des Betrachters gerichtet sind. Dies kann
Daten zur Verfügung stellen,
mit denen vorhergesagt werden kann, wo der Foveationspunkt des Betrachters
ist. Typischerweise können
kopfmontierte augenverfolgende Sensoren einen zusätzlichen
kopfverfolgenden Sensor verwenden. Zusammengenommen können die
augen- und kopfverfolgenden Sensoren eine nützliche Information über die
Position und die Bewegung des Foveationspunktes des Betrachters
relativ zu der Anzeigevorrichtung zur Verfügung stellen. Noch weiterführende Genauigkeit
kann erhalten werden unter Verwendung von zwei augenverfolgenden
Sensoren (d.h. einen für
jedes Auge des Betrachters). Somit können zwei Foveationspunkte
für jeden
Betrachter erfaßt werden.
Weiterhin können
in einigen Konfigurationen die Foveationspunkte von mehreren Betrachtern
erfaßt werden.
Andere Konfigurationen können
einen handverfolgenden Sensor (z. B. Zeigestab oder Datenhandschuh)
in Kombination mit kopf- und/oder augenverfolgenden Sensoren verwenden.
Eine andere Konfiguration kann eine am Kopf montierte Anzeige verwenden
mit verschiedenen Bewegungs-, Richtungs-, Augenverfolgungs- und/oder
Kopfverfolgungssensoren. Eine größere Anzahl
von Abfragen kann einem Bereich einer vorbestimmten Größe, der
an dem berechneten Foveationspunkt zentriert ist, zugewiesen werden,
um Ungenauigkeiten der Sensoren zu kompensieren (d. h. um sicherzustellen,
daß der
tatsächliche
Foveationspunkt Pixel empfangen wird, die von einer hohen Abfragedichte
erzeugt wurden). Es sei bemerkt, daß der Begriff "Blickverfolgungseinheit", so wie er hier
verwendet wird, sich auf irgendeine Kombination von augenverfolgenden, kopfverfolgenden,
handverfolgenden und/oder körperverfolgenden
Sensoren bezieht, die Informationen betreffend den Foveationspunkt
von einem oder mehreren Betrachtern zur Verfügung stellt (es kann zwei Foveationspunkte
für jeden
Betrachter geben). Beispiele von Blickverfolgungseinheiten können eines
oder mehrere der folgenden beinhalten: Videokameras, "EMG"-Sensoren bzw. Elektromyographiesensoren,
die elektrische Ströme
in Muskeln erfassen, einen Augen- und Kopfverfolger, einen Augenverfolger,
einen Kopfverfolger, einen Handverfolger, einen Datenhandschuh,
einen Stab, einen Datenanzug, eine Maus, einen Körperpositionssensor, einen
die Körperposition
erfassenden Stuhl, Bewegungssensoren, Drucksensoren, akustische
Sensoren und Infrarotscanner/-sensoren. In anderen Ausführungsformen
kann das System annehmen, daß der
Foveationspunkt des Betrachters an einem festen Ort nahe des Zentrums
des Schirms lokalisiert ist, an einem variierenden Punkt des Interesses
auf der Anzeige, die von der Softwareanwendung erzeugt wird, die
ausgeführt
wird.
-
Das Grafiksystem kann somit derart
konfiguriert sein, daß es
eine größere Anzahl
von Abfragen bei der Berechnung von Pixelwerten in Gebieten verwendet,
wo die Betrachter in der Lage sind, diese aufzunehmen, und eine
zweite geringere Anzahl von Abfragen bei der Berechnung von Pixelwerten
in anderen Gebieten zu benutzen, wo die Betrachter nicht in der
Lage sind, diese aufzunehmen. Die Einheit zur Umrechnung von Abfrage
in Pixel variiert durch die Variation der Anzahl von verwendeten
Abfragen, vorzugsweise die Größe bzw.
die Ausdehnung des Filters (z. B. den Radius des Filters, wenn ein
zirkularsymmetrischer Filter verwendet wird), der für die Erzeugung
der entsprechenden Ausgangspixel verwendet wird, was die Anzahl
von Abfragen, die bei der Berechnung der Ausgangspixel verwendet
werden, beeinflußt
(zusätzlich
könnte
die Darstellungseinheit die Abfragedichte bereits variiert haben).
Alternativ dazu kann die Einheit zur Umrechnung von Abfrage in Pixel
Abfragen unter Verwendung anderer Verfahren auswählen, z. B. das zufällige Auswäh-len-Verwerfen von
Abfragen, um die Anzahl von Abfragen während des Filterprozesses zu
variieren.
-
Der Grafikprozessor kann in ähnlicher
Weise konfiguriert sein, so daß er
die Dichte erzeugter Abfragen oder in dem supergesampleten Abfragepufferspeicher
dargestellter Abfragen für
verschiedene Regionen des angezeigten Bildes variiert. Diese Bereiche
mit unterschiedlicher Abfragedichte können basierend auf dem Punkt
des Interesses, der Cursorposition, der Augenverfolgung, der Kopfverfolgung
usw. positioniert sein. In anderen Ausführungsformen kann die Abfragedichte
auf einer Abtastzeilenbasis, einer Pixel-Basis oder einer Einzelbildregion-Basis
variiert werden.
-
In einigen Ausführungsformen ist der Grafikprozessor
weiterhin derart konfigurierbar, daß er die Positionierung der
erzeugten Abfragen variiert. Beispielsweise können die Abfragen entsprechend
einem regelmäßigen Gitter,
einem gestörten
regelmäßigen Gitter
oder einer zufälligen
Verteilung über
dem Bild positioniert werden. Die Abfragepositionen können für den schnellen
Zugriff in einem oder mehreren Abfragepositionsspeichern abgelegt
werden. In einer Ausführungsform
können
die Abfragepositionen als Offset- bzw. Verschiebewerte anstelle
von absoluten Adressen oder Koordinaten gespeichert werden. In einer
Ausführungsform
ist der Grafikprozessor so betreibbar, daß er die Abfragepositionen
auf einer Einzelbild-per-Einzelbild-Basis oder innerhalb eines einzelnen
Einzelbildes programmatisch konfiguriert oder variiert.
-
Ein Softwareprogramm, das auf einem
Computermedium verkörpert
ist, und ein Verfahren zum Betreiben eines Grafikuntersystems wurden
ebenso in Betracht gezogen. In einer Ausführungsform weist das Verfahren
zunächst
die Berechnung einer Mehrzahl von Abfragewertorten und dann das
Erzeugen einer Abfrage für
jeden Abfragepixelort auf. Die Abfragen können dann gespeichert werden
(z. B. in den doppelpuffergespeicherten Abfragewertpuffer). Die
Abfragewertorte können
entsprechend einer Anzahl von Positionierungs- oder Abstandsschemata,
z. B. einem regelmäßigen Gitter,
einem gestörten
regelmäßigen Gitter
oder einem stochastischen Gitter, spezifiziert werden. Die gespeicherten
Abfragewerte können
dann ausgewählt
oder gefiltert werden, um Ausgangspixel zu bilden, die in Echtzeit
direkt der Anzeige zur Verfügung
gestellt werden, vorzugsweise ohne sie in einem traditionellen Einzelbildpufferspeicher
abzulegen. Die Abfragen können
entsprechend ihrem Abstand von dem Zentrum des Faltungskerns (was
dem geschätzten
Zentrum des Ausgangspixels entspricht) ausgewählt werden. Die ausgewählten Abfragen
können
mit einem Gewichtungsfaktor multipliziert und summiert werden. Das
Ausgangspixel wird ebenso normalisiert (z. B. durch die Verwendung
von vornormalisierten Wichtungsfaktoren, die nachgeschlagen werden,
oder durch Teilen der summierten Abfragewerte durch einen berechneten
oder vorberechneten Normalisierungsfaktor). In manchen Ausführungsformen sind
der Auswahlprozeß,
der Gewichtungsprozeß und
der Normalisierungsprozeß jeweils
programmierbar und veränderbar
innerhalb jedes bestimmten Einzelbildes auf einer Echtzeitbasis.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Das vorgehende und auch die anderen
Ziele, Merkmale und Vorteile dieser Erfindung können vollständiger verstanden werden unter
Bezug auf die folgende detaillierte Beschreibung, wenn sie zusammen
mit den begleitenden Figuren gelesen wird, in denen:
-
1 eine
Ausführungsform
eines Computersystems darstellt, das eine Ausführungsform eines Grafiksystems
enthält,
-
2 ist
ein vereinfachtes Blockdiagramm des Computersystems von 1,
-
3 ist
ein Blockdiagramm, das mehr Details einer Ausführungsform des Grafiksystems
von 1 darstellt,
-
4 ist
ein Diagramm, das die traditionelle Pixelberechnung darstellt,
-
5A ist
ein Diagramm, das eine Ausführungsform
des Supersamplens darstellt,
-
5B ist
ein Diagramm, das eine zufällige
Verteilung von Abfragen darstellt,
-
6 ist
ein Diagramm, das Details einer Ausführungsform eines Grafiksystems
mit einer Ausführungsform
eines supergesampleten Abfragepufferspeichers mit variabler Auflösung darstellt,
-
7 ist
ein Diagramm, das Details einer anderen Ausführungsform eines Grafiksystems
mit einer Ausführungsform
eines supergesampleten Abfragepufferspeichers mit variabler Auflösung darstellt,
-
8 ist
ein Diagramm, das Details von drei unterschiedlichen Ausführungsformen
von Abfragepositionierungsschemata darstellt,
-
9 ist
ein Diagramm, das Details einer Ausführungsform eines Abfragepositionierungsschema
darstellt,
-
10 ist
ein Diagramm, das Details einer anderen Ausführungsform eines Abfragepositionierungsschemas
darstellt,
-
11 ist
ein Diagramm, das Details eines Verfahrens des parallelen Umwandelns
von Abfragewerten in Pixel darstellt,
-
11A ist
ein Diagramm, das mehrere Details der Ausführungsform von 11 darstellt,
-
11B ist
ein Diagramm, das Details einer Ausführungsform eines Verfahrens
für den
Umgang mit Grenzbedingungen darstellt,
-
12 ist
ein Flußdiagramm,
das eine Ausführungsform
eines Verfahrens für
das Zeichnen von Abfragen in einen supergesampleten Abfragepufferspeicher
darstellt,
-
12A ist
ein Diagramm, das eine Ausführungsform
für die
Codierung von Dreieckseckpunkten darstellt,
-
13 ist
ein Diagramm, das eine Ausführungsform
eines Verfahrens für
die Berechnung von Pixeln aus Abfragewerten darstellt,
-
14 ist
ein Diagramm, das Details einer Ausführungsform einer Pixelfaltung
für einen
Beispielsatz von Abfragen darstellt,
-
15 ist
ein Diagramm, das eine Ausführungsform
eines Verfahrens zum Aufteilen eines supergesampleten Abfragepufferspeichers
in Bereiche darstellt,
-
16 ist
ein Diagramm, das eine andere Ausführungsform eines Verfahrens
zum Unterteilen eines supergesampleten Abfragepufferspeichers in
Bereiche darstellt,
-
17 ist
ein Diagramm, das noch eine andere Ausführungsform eines Verfahrens
für das
Aufteilen eines supergesampleten Abfragepufferspeichers in Bereiche
darstellt,
-
18A–B sind Diagramme, die eine
Ausführungsform
eines Grafiksystems darstellen, das derart konfiguriert ist, daß es den
Eingang von einer Augenverfolgungs- oder Kopfverfolgungseinrichtung
benutzt,
-
19A–B sind Diagramme, die eine
Ausführungsform
eines Grafiksystems darstellen, das derart konfiguriert ist, daß es die
Bereichsposition entsprechend der Position eines Cursors oder eines
sichtbaren Objekts variiert und
-
20 ist
ein Diagramm einer Ausführungsform
eines Computernetzwerkes, das mehrere Computer miteinander verbindet.
-
21A stellt
ein Beispiel einer Ausführungsform
einer Texturabbildung dar,
-
21B stellt
ein Beispiel einer Ausführungsform
einer Texturabbildung auf einem Würfel dar,
-
21C stellt
ein Beispiel einer Texturabbildung auf ein sphärisches Objekt dar,
-
22 stellt
ein Beispiel einer Ausführungsform
einer Mip-Map dar.
-
Während
die Erfindung verschiedenen Modifikationen und alternativen Formen
zugänglich
ist, sind spezifische Ausführungsformen
hiervon beispielhaft in den Figuren gezeigt und werden hier im Detail
beschrieben.
-
Detaillierte Beschreibung
verschiedener Ausführungsformen
-
Computersystem – 1
-
In 1 ist
eine Ausführungsform
eines Computersystems 80 gezeigt, das ein dreidimensionales (3-D)
Grafiksystem beinhaltet. Das 3-D-Grafiksystem kann in irgendeinem
von verschiedenen Systemen enthalten sein, einschließlich eines
Computersystems, eines Netzwerk-PC's, einer Internetanwendung, einem Fernseher,
einschließlich
HDTV-Systemen und interaktiven Fernsehsystemen, persönlichen
digitalen Assistenten (PDAs) und anderen Geräten, die unter anderem 2-D- und/oder 3-D-Grafik
anzeigen.
-
Wie gezeigt, weist das Computersystem 80 eine
Systemeinheit 82 und einen Videomonitor oder ein Anzeigegerät 84 auf,
das mit der Systemeinheit 82 verbunden ist. Das Anzeigegerät 84 kann
einer von verschiedenen Typen von Anzeigemonitoren oder -geräten sein
(zum Beispiel ein CRT-, LCD-, oder Plasmaschirm). Wie weiter unten
beschrieben wird, beinhaltet das 3-D-Grafiksystem in dem Computersystem 80 einen
supergesampleten Abfragewertpufferspeicher mit einer programmierbaren
Einheit zur Umrechnung von Abfrage in Pixel in Echtzeit, um die
Qualität
und den Realismus von den Bildern, die auf der Anzeigevorrichtung 84 dargestellt
werden, zu verbessern.
-
Blockdiagramm eines Computersystems – 2
-
In 2 ist
ein vereinfachtes Blockdiagramm gezeigt, das das Computersystem
von 1 darstellt. Elemente
des Computersystems, die nicht für
ein Verständnis
der vorliegenden Erfindung notwendig sind, sind aus Gründen der
Einfachheit nicht gezeigt. Das Computersystem 80 beinhaltet,
wie gezeigt, eine Hauptverarbeitungseinheit (CPU) 102,
die mit einem Hochgeschwindigkeitsspeicherbus oder dem Systembus 104,
der ebenso als der Hostbus 104 bezeichnet wird, verbunden
ist. Ein Systemspeicher 106 kann ebenso mit dem Hochgeschwindigkeitsbus 104 verbunden
sein.
-
Der Hostprozessor 102 kann
ein oder mehrere Prozessoren von unterschiedlichen Typen aufweisen, zum
Beispiel Mikroprozessoren, Multiprozessoren und CPUs. Der Systemspeicher 106 kann
jede Kombination von verschiedenen Typen von Speicheruntersystemen,
einschließlich
Arbeitsspeichern (zum Beispiel statische Arbeitsspeicher oder „SRAMs", synchrone dynamische
Arbeitsspeicher oder „SDRAMs" und dynamische Rambus-Zugriffsspeicher
oder „RDRAM", und andere) und
Massenspeichergeräte
beinhalten. Der Systembus oder Hostbus 104 kann ein oder
mehrere Kommunikations- oder Hostcomputerbusse (für die Datenkommunikation
zwischen den Hostprozessoren, den CPUs und den Speichersubsystemen)
sowie auch spezialisierte Subsystembusse aufweisen.
-
Ein 3-D-Grafiksystem oder Grafiksystem 112 entsprechend
der vorliegenden Erfindung ist mit dem Hochgeschwindigkeitsspeicherbus 104 verbunden.
Das 3-D-Grafiksystem 112 kann mit dem Bus 104 beispielsweise
durch einen Koordinatenumschalter bzw. Kreuzschienenwähler oder
eine andere Busverbindungslogik verbunden sein. Es wird angenommen,
daß verschiedene
andere externe Geräte
oder andere Busse mit dem Hochgeschwindigkeitsspeicherbus 104 verbunden
sein können.
Es sei bemerkt, daß das
3-D-Grafiksystem mit einem oder mehreren der Busse in dem Computersystem 80 verbunden
sein kann und/oder mit verschiedenen Typen von Bussen verbunden
sein kann. Zusätzlich
kann das 3-D-Grafiksystem mit einem Kommunikationsanschluß verbunden
sein und dadurch Grafikdaten direkt von einer externen Quelle, zum
Beispiel dem Internet oder einem Netzwerk empfangen. Wie in der
Figur gezeigt ist, ist das Anzeigegerät 84 mit dem 3-D-Grafiksystem 112,
das in dem Computersystem 80 aufgenommen ist, verbunden.
-
Die Host CPU 102 kann entsprechend
einem programmierten Eingangs-/Ausgangs-(I/O)Protokoll Information zu und von
dem Grafiksystem 112 über
den Hostbus 104 übertragen.
Alternativ dazu kann das Grafiksystem 112 auf das Speichersubsystem 106 gemäß einem
Direktspeicherzugriffsprotokoll (DMA) oder über intelligentes Busmastering
zugreifen. Ein Grafikanwendungsprogramm in Übereinstimmung mit einer Anwendungsprogrammschnittstelle
(API), wie zum Beispiel OpenGL oder Java 3D, kann auf der
Host CPU 102 ausgeführt
werden und Befehle und Daten erzeugen, die ein geometrisches Grundelement
(graphische Daten) definieren, wie zum Beispiel ein Polygon, für die Ausgabe
auf dem Anzeigegerät 84.
Wie durch die bestimmten graphischen Schnittstellen, die verwendet
werden, definiert wird, können
diese Grundelemente getrennte Farbeigenschaften für die Vor-
und Rückseiten
haben. Der Hostprozessor 102 kann diese Grafikdaten zu
dem Speichersubsystem 106 übertragen. Danach kann der
Hostprozessor 102 betrieben werden, um die Grafikdaten
zu dem Grafiksystem 112 über den Hostbus 104 zu übertragen.
In einer anderen Ausführungsform
kann das Grafiksystem 112 über den Hostbus 104 unter
Verwendung von DMA Zugriffszyklen Geometriedatenanordnungen einlesen.
In noch einer anderen Ausführungsform
kann das Grafiksystem 112 mit dem Systemspeicher 106 über einen
direkten Anschluß,
wie zum Beispiel eine Version des verbesserten Grafikanschlusses (AGP),
wie er von Intel Corporation vertrieben wird, verbunden sein.
-
Das Grafiksystem kann Grafikdaten
von irgendeiner Quelle erhalten, einschließlich der Host CPU 102 und/oder
dem Systemspeicher 106, anderem Speicher oder von einer
externen Quelle, wie zum Beispiel einem Netzwerk, zum Beispiel dem
Internet, oder einem Sendemedium, wie zum Beispiel Fernsehen, oder
von anderen Quellen.
-
Wie unten beschrieben wird, kann
das Grafiksystem 112 derart konfiguriert sein, daß es eine
effizientere Mikrocodesteuerung erlaubt, was zu einer erhöhten Leistung
für die
Handhabung von ankommenden Farbwerten führt, die den Polygonen entsprechen,
die von der Host CPU 102 erzeugt wurden. Es sei bemerkt, daß, während das
Grafiksystem 112 als Teil des Computersystems 80 dargestellt
wurde, das Grafiksystem 112 ebenso auch als ein Einzelgerät (zum Beispiel
mit seinem eigenen eingebauten Bildschirm). Das Grafiksystem 112 kann
ebenso als ein Einzelchipgerät
oder als Teil eines Systems auf einem Chip oder eines Mehrfachchipmoduls
konfiguriert sein.
-
Grafiksystem – 3
-
3 ist
ein Blockdiagramm, das Details einer Ausführungsform des Grafiksystems 112 darstellt.
Wie in der Figur zu sehen ist, kann das Grafiksystem 112 einen
oder mehrere Grafikprozessoren 90, einen oder mehrere supergesamplete
Abfragewertpufferspeicher 162 und eine oder mehrere Einheiten
zur Umrechnung von Abfragewerte in Pixel 170A–D aufweisen.
Das Grafiksystem 112 kann ebenso einen oder mehrere Digital-Analog-Wandler
(DACs) 178A–B aufweisen.
Der Grafikprozessor kann irgendein geeigneter Typ eines Hochleistungsprozessors
sein (zum Beispiel spezialisierte Grafikprozessoren oder Berechnungseinheiten, Multimediaprozessoren,
GSPs oder Allzweckprozessoren). In einer Ausführungsform kann der Grafikprozessor 90 eine
oder mehrere Darstellungseinheiten 150A–D aufweisen. In der
gezeigten Ausführungsform
weist der Grafikprozessor 90 jedoch ebenso eine oder mehrere
Steuereinheiten 140, einen oder mehrere Datenspeicher 152A–D und
eine oder mehrere Verzeichniseinheiten 154 auf. Der Abfragepufferspeicher 162 kann
einen oder mehrere Abfragespeicher 160A bis 160N aufweisen,
wie in der Figur gezeigt ist.
-
A. Steuereinheit
-
Die Steuereinheit 140 funktioniert
als Schnittstelle zwischen dem Grafiksystem 112 und dem
Computersystem 80 durch Steuern der Datenübertragung
zwischen dem Grafiksystem 112 und dem Computersystem 80.
In den Ausführungsformen
des Grafiksystems 112, die zwei oder mehrere Darstellungseinheiten 150A–D aufweisen,
kann die Steuereinheit 140 ebenso den Datenstrom, der von
dem Computersystem 80 empfangen wird, in eine entsprechende
Anzahl von parallelen Strömen
aufteilen, die zu den einzelnen Darstellungseinheiten 150A–D gelenkt
werden. Die Grafikdaten können
von dem Computersystem 80 in einer komprimierten Form erhalten
werden. Dies kann mit Vorteil die erforderliche Übertragsbandbreite zwischen
dem Computersystem 80 und dem Grafiksy stem 112 reduzieren.
In einer Ausführungsform
kann die Steuereinheit 140 derart konfiguriert sein, daß sie den
empfangenen Datenstrom aufteilt und den Darstellungseinheiten 150A–D in komprimierter
Form zuleitet.
-
Die Grafikdaten können eines oder mehrere graphische
Grundelemente enthalten. Der Begriff der graphischen Grundelemente,
so wie er hier verwendet wird, beinhaltet Polygone, parametrische
Oberflächen, Splines,
NURBS (nicht-gleichförmige,
rationale B-Splines), unterteilte Oberflächen, Fraktale, Volumengrundelement
und Teilchensysteme. Diese graphischen Grundelemente sind im Detail
in dem Lehrbuch beschrieben mit dem Titel „Computer Graphics: Principles
and Practice" von
James D. Foley et al., veröffentlicht
von Addison-Wesley Publishing Co., Inc., 1996. Es sei bemerkt, daß in dieser
detaillierten Beschreibung aus Gründen der Einfachheit auf Polygone
Bezug genommen wird, die beschriebenen Ausführungsformen und Beispiele
jedoch ebenso mit Grafikdaten verwendet werden können, die andere graphische
Grundelementtypen verwenden.
-
B. Darstellungseinheit
-
Die Darstellungseinheiten 150A–D (ebenso
hier als Zeicheneinheiten bezeichnet) sind derart konfiguriert,
daß sie
Grafikbefehle und Daten von der Steuereinheit 140 empfangen
und dann eine Anzahl von Funktionen durchführen, die von der genauen Implementierung
abhängen.
Beispielsweise können
die Darstellungseinheiten 150A–D derart konfiguriert
sein, daß sie
die Dekomprimierung (wenn die Daten komprimiert sind), die Transformation,
das Clipping, das Lighting, die Texturdarstellung, die Tiefeninformation,
die Transparenzverarbeitung, die Einstellung bzw. den Setup und
die Schirmraumdarstellung von verschiedenen graphischen Grundelementen,
die innerhalb der graphischen Daten auftreten, durchführen. Jedes
dieser Merkmale wird unten getrennt beschrieben.
-
Abhängig von dem Typ der empfangenen
komprimierten graphischen Daten können die Darstellungseinheiten 150A–D derart
konfiguriert sein, daß sie
arithmetische Decodierung, die Lauflängendecodierung, die Huffman-Decodierung
und die Wörterbuchdecodierung
(z. B. LZ77, LZSS, LZ78 und LZW) durchführen. In einer anderen Ausführungsform
können
die Einstellungseinheiten 150A–D derart ausgelegt
sein, daß sie
die graphischen Daten, die unter Verwendung von geometrischer Komprimierung
komprimiert wurden, decodieren. Die geometrische Komprimierung von
3D-Grafikdaten kann
signifikante Reduktionen in der Datengröße erreichen, während der
größte Teil
der Bildqualität
beibehalten wird. Zwei Verfahren für die Komprimierung und Dekomprimierung
der 3D-Geometrie
sind beschrieben in US-Patent Nr. 5,793,371, Anmeldungsnr. 08/511,294 (eingereicht
am 4. August 1995 mit dem Titel "Method
and Apparatus for Geometric Compression of Three-Dimensional Graphics Data", Anwaltsakte Nr.
5181-05900) und US-Patentanmeldung Nr. 09/095,777 (eingereicht am
11. Juni 1998 mit dem Titel "Compression
of Three-Dimensional Geometry Data Representing a Regularly Tiled
Surface Portion of a Graphical Object", Anwaltsakte Nr. 5181-06602). In den
Ausführungsformen des
Grafiksystems 112, die Dekomprimierung unterstützen, werden
die Grafikdaten, die von jeder Darstellungseinheit 150 empfangen
werden, in eines oder mehrere graphische "Grundelemente" dekomprimiert, die dann dargestellt
werden können.
Der Begriff "Grundelement" bezieht sich auf
Komponenten von Objekten, die seine Form definieren (z. B. Punkte,
Linien, Dreiecke, Polygone in zwei oder drei Dimensionen, Polyeder
oder Freiformoberflächen
in drei Dimensionen). Die Darstellungseinheiten 150 können irgendein
geeigneter Typ von Hochleistungsprozessor sein (z. B. ein spezialisierter
Grafikprozessor oder Berechnungseinheiten, Multimediaprozessoren,
DSPs oder Allzweckprozessoren).
-
Die Transformation bzw. Umwandlung
bezieht sich auf das Manipulieren eines Objekts und beinhaltet die
Translation des Objekts (d.h. die Bewegung des Objekts zu einem
anderen Ort), die Skalierung des Objekts (d. h. das Strecken oder
Schrumpfen) und das Drehen des Objekts (z. B. im dreidimensionalen
Raum oder im „3-space").
-
Clipping bzw. Abschneiden bezieht
sich auf das Definieren der Grenzen des angezeigten Bildes (d. h. die
Errichtung einer Abschneideregion, üblicherweise ein Rechteck)
und daraufhin das Nichtdarstellen oder Anzeigen der Pixel, die außerhalb
dieser Grenzen fallen.
-
Lighting bzw. Beleuchtung bezieht
sich auf die Berechnung der Illumination der Objekte innerhalb des angezeigten
Bildes, um zu bestimmen, welche Farbe und/oder Helligkeit jedes
einzelne Objekt haben wird. Abhängig
von dem verwendeten Schattierungsalgorithmus (z. B. konstant, Gourand
oder Phong) kann das Lighting bei einer Anzahl von unterschiedlichen
Orten evaluiert werden. Wenn beispielsweise konstantes Shading verwendet
wird (d. h. jedes Pixel eines Polygons hat dasselbe Lighting), dann
muß das
Lighting nur einmal je Polygon berechnet werden. Wenn das Gourand-Shading
verwendet wird, dann wird das Lighting einmal je Eckpunkt berechnet.
Das Phong-Shading
berechnet das Lighting auf einer Pixelbasis.
-
Set-up bzw. das Einstellen bezieht
sich auf das Abbilden von Grundelementen in ein dreidimensionales
Darstellungsfenster. Dies beinhaltet die Translation und die Transformation
der Objekte von ihrem ursprünglichen „Weltkoordinaten"-System in die Koordinaten
des errichteten Darstellungsfensters. Dies erzeugt die richtige
Perspektive für
die dreidimensionalen Objekte, die auf dem Schirm angezeigt werden.
-
Schirmraumdarstellung bezieht sich
auf die Berechnungen, die durchgeführt werden, um die Daten, die
verwendet werden, um jedes Pixel, das dargestellt werden soll, zu
erzeugen, eigentlich zu berechnen. In Systemen des Standes der Technik
wird jedes Pixel berechnet und dann in einem Einzelbildpufferspeicher
abgelegt. Die Inhalte des Einzelbildpufferspeichers werden dann
an die Anzeigevorrichtung ausgegeben, um das Endbild zu erzeugen.
In der Ausführungsform
des Grafiksystems 112, das in der Figur gezeigt ist, berechnen jedoch
die Darstellungseinheiten 150A–D „Abfragewerte" anstelle von tatsächlichen
Pixeldaten. Dies erlaubt den Darstellungseinheiten 150A–D,
mehr als eine Abfrage je Pixel zu „supersamplen" oder zu berechnen.
Das Supersampling wird detaillierter unten beschrieben. Es sei bemerkt,
daß die
Darstellungseinheiten 150A–D eine Anzahl von
kleineren funktionalen Einheiten, zum Beispiel eine getrennte Einstell-/Dekomprimiereinheit und
eine Lighting-Einheit aufweisen kann.
-
Mehr Details über das Supersampling sind
in den folgenden Büchern
erörtert:: „Principles
of Digital Image Synthesis" von
Andrew Glassner, 1995, Morgan Kaufman Publishing (Band 1) und „Renderman
Companion": von
Steve Upstill, 1990, Addison Wesley Publishing.
-
C. Datenspeicher
-
Jede Darstellungseinheit 150A–D kann
mit einem der entsprechenden Befehls- und Datenspeicher 152A–D verbunden
sein. In einer Ausführungsform
kann jeder Speicher 152A–D derart konfiguriert
sein, daß er
sowohl Daten als auch Befehle für
die Darstellungseinheiten 150A–D speichert. Während die
Implementierungen variieren können,
kann in einer Ausführungsform
jeder Datenspeicher 152A–D zwei 8-MByte SDRAMs aufweisen,
die insgesamt 16 MByte Speicher für jede Darstellungseinheit 150A–D zur
Verfügung
stellen. In einer anderen Ausführungsform
können
RDRAMs (Rambus-DRAMs) verwendet werden, um die Dekomprimierung und
die Einstelloperationen von jeder Darstellungseinheit zu unterstützen, während SDRAMs
verwendet werden können,
um die Zeichenfunktionen von den Darstellungseinheit zu unterstützen.
-
D. Verzeichniseinheit
-
Die Verzeichniseinheit 154 kann
zwischen die Darstellungseinheiten 150A–N und die Abfragespeicher 160A–N geschaltet
sein. Die Verzeichniseinheit 154 ist derart konfiguriert,
daß sie
die vervollständigten
Abfragen sequentiell ordnet und sie in den Abfragespeichem 160A–N speichert.
Es sei bemerkt, daß in
größeren Konfigurationen
mehrere Verzeichniseinheiten 154 parallel verwendet werden
können.
In einer Ausführungsform
kann die Verzeichniseinheit 154 als Kreuzschienenwähler implementiert
sein.
-
E. Abfragespeicher
-
Der supergesamplete Abfragepufferspeicher 162 weist
Abfragespeicher 160A–160N auf,
die derart konfiguriert sind, daß sie die Mehrzahl der Abfragen,
die von den Darstellungseinheiten 150A– D erzeugt wurden,
speichern. Der Begriff "Abfragepufferspeicher", wie er hier verwendet
wird, bezieht sich auf einen oder mehrere Speicher, die Abfragen
ablegen. Wie vorher erwähnt
wurde, werden eine oder mehrere Abfragen gefiltert, um Ausgangspixel
zu bilden (d. h. Pixel, die auf einer Anzeigevorrichtung anzuzeigen
sind). Die Anzahl von gespeicherten Abfragewerten kann größer als,
gleich zu oder kleiner als die Gesamtanzahl von Pixeln sein, die
zu der Anzeigevorrichtung ausgegeben werden, um ein einzelnes Einzelbild
zu aktualisieren. Jede Abfrage kann zu einem oder mehreren Ausgangspixeln
korrespondieren. Ein Abfragewert „korrespondiert" zu einem Ausgangspixel,
so wie dies hier verwendet wird, wenn die Information des Abfragewerts
zu dem Endausgangswert des Pixels beiträgt. Es sei jedoch bemerkt,
daß manche
Abfragen zu ihrem korrespondierenden Ausgangspixel null beitragen,
nachdem die Filterung stattgefunden hat.
-
Auf andere Weise ausgedrückt, speichert
der Einzelwertpufferspeicher eine Mehrzahl von Abfragewerten, die
Positionen haben, die mit Orten in dem Schirmraum auf der Anzeige
korrespondieren, d. h. die Abfragewerte tragen zu einem oder mehreren
Ausgangspixeln auf der Anzeige bei. Die Anzahl von abgelegten Abfragewerten
kann größer als
die Anzahl von Pixelorten sein und mehr als eine Abfrage kann in
dem Faltungs- (Filterungs-) Prozeß kombiniert werden, um einen
bestimm ten Ausgangspixel zu erzeugen, das auf der Anzeigevorrichtung
dargestellt wird. Jeder gegebene Abfragewert kann zu einem oder
mehreren Ausgangspixeln beitragen.
-
Die Abfragespeicher 160A bis 160N können irgendeine
einer Anzahl von unterschiedlichen Speichertypen (zum Beispiel SDRAMs,
SRAMs, RDRAMs, 3DRAMs oder 3DRAMs der nächsten Generation) in verschiedenen
Größen aufweisen.
In einer Ausführungsform
ist jede Verzeichniseinheit 154 mit vier Bänken von Abfragespeichern
verbunden, wobei jede Bank vier 3DRAM-64-Speicher aufweist. Die 3DRAM-64-Speicher können zusammen
einen supergesampleten 116 bit tiefen Abfragepufferspeicher bilden,
der mehrere Abfragewerte pro Pixel speichert. In einer Ausführungsform
kann beispielsweise jeder Abfragespeicher 160A bis 160N bis
zu sechzehn Abfragen je Pixel speichern.
-
3DRAM-64-Speicher sind spezialisierte
Speicher, die derart konfiguriert sind, daß sie das volle interne Doppeltpuffern
mit einzeln gepuffertem Z in einem Chip unterstützen. Der doppeltgepufferte
Abschnitt weist zwei RGBX Pufferspeicher auf, wobei X ein vierter
Kanal ist, der verwendet werden kann, um andere Information (zum
Beispiel alpha) zu speichern. 3DRAM-64-Speicher haben ebenso eine
Verweistabelle, die eine Window ID Information aufnimmt und einen
internen 2-1 oder 3-1 Multiplexer steuert, der auswählt, welche
Inhalte des Pufferspeichers ausgegeben werden. 3DRAM-64-Speicher
sind 3DRAM-Speicher der nächsten
Generation, die in Bälde
von Mitsubishi Electric Corporation's Semiconductor Group erhältlich sein
können.
In einer Ausführungsform
sind vier Chips, die in Kombination verwendet werden, ausreichend,
um einen doppelt puffergespeicherten 1280 × 1024 supergesampleten Abfragepufferspeicher
zu erzeugen. Da die Speicher intern doppelt puffergespeichert sind,
werden die Eingangsanschlüsse
für jeden
der zwei Einzelbildpufferspeicher in dem doppelt puffergespeicherten
System im Zeit-Multiplex-Verfahren (unter Verwendung von Multiplexern
innerhalb der Speicher) übertragen.
Die Ausgangsanschlußstifte
können
in ähnlicher
Weise im Zeitmultiplexverfahren übertragen
werden. Dies erlaubt eine reduzierte Anschlußsteckerzahl, während immer
noch die Vorteile des Doppeltpufferspeicherns zur Verfügung gestellt
werden. 3DRAM-64-Speicher reduzieren weiterhin die Anschlußsteckerzahl
dadurch, daß kein
z-Ausgangsanschlußstecker
vorhanden ist. Da der z-Vergleich und die Speicherpufferauswahl
intern gehandhabt wird, kann dies den Abfragepufferspeicher 162 vereinfachen
(zum Beispiel unter Verwendung von weniger oder keiner Auswahllogik
auf der Ausgangsseite). Die Verwendung der 3DRAM-64-Speicher reduziert
ebenso die Speicherbandbreite, da Information in den Speicher geschrieben
werden kann ohne das traditionelle Verfahren des Auslesens von Daten,
des Durchführens
eines z-Vergleiches und dann das Zurückschreiben der Daten. Statt
dessen können
die Daten einfach in den 3DRAM-64 geschrieben werden, wobei der
Speicher die oben beschriebenen Schritte intern durchführt.
-
In anderen Ausführungsformen des Grafiksystems 112 können jedoch
andere Speicher (z. B. SDRAMs, SRAMs, RDRAMs oder 3DRAMs der gegenwärtigen Generation)
verwendet werden, um Abfragepufferspeicher 162 zu bilden.
-
Der Grafikprozessor 90 kann
derart konfiguriert sein, daß er
eine Vielzahl von Abfragepositionen erzeugt entsprechend eines bestimmten
Abfragepositionierungsschemas (z. B. ein reguläres Gitter, ein gestörtes reguläres Gitter,
usw.). Alternativ dazu können
die Abfragepositionen (oder die Offsetwerte, die zu den regulären Gitterpositionen
addiert werden, um die Abfragepositionen zu bilden) von dem Abfragepositionsspeicher
(zum Beispiel eine RAM/ROM-Tabelle) gelesen werden.
-
Mit dem Empfang eines Polygons, das
darzustellen ist, bestimmt der Grafikprozessor 90, basierend auf
den Abfragepositionen, welche Abfragen innerhalb des Polygons liegen.
Der Grafikprozessor 90 stellt die Abfragen dar, die in
das Polygon fallen und speichert die dargestellten Abfragen in dem
Abfragespeichern 160A–N.
Es sei bemerkt, daß die
Begriffe darstellen und zeichnen, so wie sie hier verwendet werden,
austauschbar benutzt werden und sich auf das Berechnen von Farbwerten
für die
Abfragen beziehen. Tiefenwerte, Alpha-Werte und andere Werte je
Abfrage können
ebenso in dem Darstellungs- oder Zeichenprozeß berechnet werden.
-
F. Einheiten zur Umrechnung
von Abfrage zu Pixel
-
Die Einheiten 170A–N zur
Umrechnung von Abfrage in Pixel können zwischen den Abfragespeichern 170A–N und
den DACs 178A–B geschaltet
sein. Die Einheiten 170A–D zur Umrechnung
von Abfrage in Pixel sind derart konfiguriert, daß sie ausgewählte Abfragen
von den Abfragespeichern 160A–N lesen und dann
eine Faltung zum Beispiel eine Filterungs- und Gewichtungsfunktion
oder eine Tiefpaßfilterung)
auf den Abfragen durchführen,
um die Ausgangspizelwerte zu erzeugen, die zu den DACs 178A–B ausgegeben
werden. Die Einheiten 170A–D zur Umrechnung
von Abfrage in Pixel können
programmierbar sein, um ihnen zu erlauben, verschiedene Filterfunktionen
zu unterschiedlichen Zeiten durchzuführen, abhängig von dem gewünschten Ausgangstyp.
In einer Ausführungsform
können
die Einheiten 170A–D zur
Umrechnung von Abfrage in Pixel einen 5 × 5 supergesampleten Rekonstruktionsbandpaßfilter
implementieren, um die supergesampleten Abfragepufferspeicherdaten
(die in den Abfragespeichern 160A–N abgelegt sind)
in einzelne Pixelwerte umzuwandeln. In anderen Ausführungsformen
können
die Berechnungseinheiten 170A–D eine ausgewählte Anzahl von
Abfragen filtern, um ein Ausgangspixel zu berechnen. Die gefilterten
Abfragewerte können
mit einem variablen Wichtungsfaktor multipliziert werden, der den
Abfragewerten, die Positionen nahe dem Zentrum des zu berechnenden
Pixels haben, mehr oder weniger Gewicht gibt. Andere Filterfunktionen
können
ebenso entweder allein oder in Kombination, verwendet werden, zum
Beispiel Tent-Filter, zirkulare und elliptische Filter, Mitchell-Filter,
Bandpaßfilter,
Synchronisationsfunktionsfilter usw.
-
Die Einheiten 170A–D zur
Umrechnung von Abfrage in Pixel können ebenso mit einem oder
mehreren der folgenden Merkmale konfiguriert sein: Farbnachschlagen
unter Verwendung von Farbpseudotabellen, direkte Farbe, inverse
Gammakorrektur, Filtern von Abfragen in Pixel und Umwandlung von
Pixeln in den nicht-linearen Lichtraum. Andere Merkmale von Einheiten 170A–D zur
Umrechnung von Abfrage in Pixel können programmierbare Videozeitgeneratoren,
programmierbare Pixeltaktsynthesizer und Kreuzschienenfunktionen
beinhalten. Nachdem die Einheiten zur Umrechnung von Abfrage in
Pixel den Takt und die Farbe von jedem Pixels manipuliert haben,
werden die Pixel zu den DACs 178A–B ausgegeben.
-
G. DACs
-
Die DACs 178A–B arbeiten
als die Ausgangsendstufe des Grafiksystems 112. Die DACs 178A–B dienen
dazu, die digitalen Pixeldaten, die von den Kreuzeinheiten 174A–B empfangen
wurden, in analoge Videosignale zu übersetzen, die dann zu der
Anzeigevorrichtung gesendet werden. Es sei bemerkt, daß in einer Ausführungsform
die DACs 178A–B umgangen
werden können
oder vollständig
unterdrückt
werden können, um
digitale Ausgangspixeldaten neben den analogen Videosignalen auszugeben.
Dies kann nützlich
sein, wenn die Anzeigevorrichtung 84 auf einer digitalen
Technologie basiert (zum Beispiel ein LCD-Typ Anzeige oder eine
digitale Mikrospiegelanzeige).
-
Supersampling – 4–5
-
4 stellt
ein Beispiel einer traditionellen, nicht supergesampleten Pixelwertberechnung
dar. Jedes Pixel hat exakt einen Datenpunkt, der für es berechnet
wurde, und der einzelne Datenpunkt ist bei dem Zentrum des Pixels
angeordnet. Beispielsweise trägt
nur ein Datenpunkt (d. h. Abfrage 74) zu dem Wert des Pixels 70 bei.
-
Man wende sich nun 5A zu, in der ein Beispiel einer Ausführungsform
des Supersamplings dargestellt ist. In dieser Ausführungsform
werden eine Anzahl von Abfragen berechnet. Die Anzahl von Abfragen kann
mit der Anzahl von Pixeln verknüpft
sein oder völlig
unabhängig
von der Anzahl von Pixeln sein. In diesem Beispiel gibt es achtzehn
Abfragen, die in einem regulären
Gitter über
neun Pixel verteilt sind. Selbst mit all den Abfragen, die in der
Figur präsent
sind, könnte
eine einfache 1 : 1 Korrelation durchgeführt werden (zum Beispiel durch
Verwerfen aller Abfragen außer
derjenigen Abfrage, die dem Zentrum von jedem Pixel am nächsten liegt).
Der am meisten interessante Fall ist jedoch die Durchführung einer
Filterungsfunktion auf mehreren Abfragewerten, um die Pixelendwerte
zu bestimmen. Wie oben bemerkt wurde, kann ebenso eine einzelne
Abfrage verwendet werden, um eine Mehrzahl von Ausgangspixeln zu
erzeugen, d. h. das sogenannte Untersampling oder Subsampling.
-
Ein zirkularer Filter 72 ist
in der Figur dargestellt. In diesem Beispiel tragen die Abfragen 74A–B beide zu
dem Endwert des Pixels 70 bei. Dieser Filterungsprozeß kann mit
Vorteil den Realismus des angezeigten Bildes verbessern durch das
Glätten
von abrupten Kanten in dem angezeigten Bild (zum Beispiel durch
Durchführen
des Anti-Aliasings). Der Filter 72 kann einfach die Abfragen 74A–B mitteln,
um den Endwert des Ausgangspixels 70 zu bilden, oder er
kann den Beitrag der Abfrage 74B (an dem Zentrum des Pixels 70)
erhöhen und
den Beitrag der Abfrage 74A (d. h. die Abfrage, die von
dem Pixelzentrum 70 weiter entfernt ist) erniedrigen. Der
zirkulare Filter wird für
jeden zu berechnenden Ausgangspixel erneut positioniert, so daß das Zentrum des
Filters 72 mit der Zentrumsposition des zu berechnenden
Pixels zusammenfällt.
Andere Filter und Filterpositionierungsschemata sind ebenso möglich und
wurden in Betracht gezogen.
-
In 5B ist
eine andere Ausführungsform
des Supersamplings dargestellt. In dieser Ausführungsform sind jedoch die
Abfragen zufällig
positioniert. Genauer gesagt, werden unterschiedliche Abfragepositionen
ausgewählt
und dem Grafikprozessor 90 (und den Darstellungseinheiten
150A-D) zur Verfügung
gestellt, die die Farbinformation berechnen, um Abfragen an diesen
unter schiedlichen Orten zu bilden. Somit kann die Anzahl von Abfragen,
die in den Filter 72 fallen, von Pixel zu Pixel variieren.
-
Supergesampleter Abfragepufferspeicher
mit Faltung in Echtzeit – 6–13
-
In 6 ist
ein Diagramm gezeigt, das eine mögliche
Konfiguration für
den Datenfluß durch
eine Ausführungsform
des Grafiksystems 112 darstellt. Wie die Figur zeigt, werden
geometrische Daten 350 von dem Grafiksystem 112 empfangen
und verwendet, um den Zeichenprozeß 352 durchzuführen. Der
Zeichenprozeß 352 wird
durch eine oder mehrere Steuereinheiten 140, Darstellungseinheiten 150,
Speicher 152 und eine Verzeichniseinheit 154 implementiert.
Die geometrischen Daten 350 umfassen Daten für eines
oder mehrere Polygone. Jedes Polygon weist eine Mehrzahl von Eckpunkten
auf (z. B. 3 Eckpunkte im Fall eines Dreiecks), wobei einige von
diesen gemeinsam verwendet werden können. Daten, wie z. B. X-,
Y- und Z-Koordinaten, Farbdaten, Beleuchtungsdaten und Texturabbildungsinformation
können
für jeden
Eckpunkt eingeschlossen sein.
-
Zusätzlich zu den Eckpunktdaten
empfängt
der Zeichenprozeß 352 ebenso
Abfragekoordinaten von einem Abfragepositionsspeicher 354.
In einer Ausführungsform
ist der Positionsspeicher 354 innerhalb der Darstellungseinheiten 150A–D ausgebildet.
In einer anderen Ausführungsform
kann der Positionsspeicher 354 als Teil der Textur- und
Darstellungsspeicher 152A bis 152D oder als getrennter
Speicher realisiert werden. Der Abfragepositionsspeicher 354 ist
derart konfiguriert, daß er
Positionsinformation speichert für
Abfragen, die in einem Zeichenprozessor 352 berechnet werden
und dann in den supergesampleten Abfragepufferspeicher 162 abgelegt
werden. In einer Ausführungsform
kann der Positionsspeicher 354 derart konfiguriert sein, daß er die
gesamten Abfrageadressen speichert. Dies kann jedoch die Größe des Positionsspeichers 354 erhöhen. Alternativ
dazu kann der Positionsspeicher derart konfiguriert sein, daß er nur
X- oder Y-Offsetwerte für die
Abfragen speichert. Die Speicherung lediglich der Offsetwerte kann
weniger Speicherplatz verwenden als das Speichern der gesamten Position
jeder Abfrage. Die Offsetwerte können
Bezug auf Behälterkoordinaten oder
Bezug auf Positionen auf einem regulären Gitter nehmen. Die Abfragepositionsinformation,
die in dem Abfragepositionsspeicher 354 abgelegt ist, kann
von einer speziell entwortenen Einheit zur Berechnung der Abfrageposition
(nicht gezeigt) gelesen werden und verarbeitet werden, um die Beispielabfragepositionen
für den
Grafikprozessor 90 zu berechnen. Detailliertere Information über Abfragepositionsoffsetwerte
ist unten eingefügt
(siehe Beschreibung der 9 und 10).
-
In einer anderen Ausführungsform
kann der Abfragepositionsspeicher 354 derart konfiguriert
sein, daß er
eine Tabelle von Zufallszahlen speichert. Der Abfragepositionsspeicher 354 kann
ebenso speziell angepaßte
Hardware aufweisen, um ein oder mehrere unterschiedliche Typen von
regulären
Gittern zu erzeugen. Diese Hardware kann programmierbar sein. Die
gespeicherten Zufallszahlen können
als Offsetwerte zu den regulären
Gitterpositionen, die von der Hardware erzeugt werden, addiert werden.
In einer Ausführungsform
kann der Abfragepositionsspeicher programmierbar sein, um in einer
Anzahl von unterschiedlichen Wegen auf die Zufallszahlentabelle
zuzugreifen oder diese „zu
entfalten". Dies
kann es ermöglichen,
eine kleinere Tabelle ohne visuelle Artefakten zu verwenden, die
durch die Wiederholung der Offsetwerte der Abfragepositionen verursacht
werden. In einer Ausführungsform
können
die Zufallszahlen wiederholbar sein, wodurch es dem Zeichenprozeß 352 und
dem Prozeß 360 zur
Berechnung von Abfrage in Pixel ermöglicht wird, dieselben Offsetwerte
für dieselbe
Abfrage zu verwenden, ohne daß die
Speicherung von jedem Oftsetwert notwendig ist.
-
Wie in der Figur gezeigt ist, kann
der Abfragewertpositionsspeicher 354 derart konfiguriert
sein, daß er
Abfragewertverschiebungen speichert, die entsprechend einer Anzahl
von unterschiedlichen Schemata erzeugt wurden, wie zum Beispiel
ein reguläres
Gitter, ein reguläres
hexagonales Gitter, ein gestörtes
reguläres Gitter
oder eine zufällige
(stochastische) Verteilung. Das Grafiksystem 112 kann eine
Anzeige von dem Betriebssystem, dem Gerätetreiber oder den geometrischen
Daten 350 empfangen, die anzeigt, welcher Typ von Abfragewertpositionsschema
verwendet wird. Der Abfragewertpositionsspeicher 354 ist
daher konfigurierbar oder programmierbar, um die Positionsinformation
entsprechend einem oder mehreren unterschiedlichen Schemata zu erzeugen.
Detailliertere Informationen über
verschiedene Abfragewertpositionsschemata werden weiter unten beschrieben
(siehe die Beschreibung von 8).
-
In einer Ausführungsform kann der Abfragepositionsspeicher 354 ein
RAM/ROM enthalten, der stochastische Abfragepunkte (oder Orte) für unterschiedliche
Gesamtabfragezählungen
je Behälter
enthält.
Eine Anzahl von unterschiedlichen Behältergrößen kann verwendet werden (zum
Beispiel eine Abfrage je Behälter, vier
Abfragen je Behälter,
usw.). Die spezifische Position für jede Abfrage innerhalb eines
Behälters
kann bestimmt werden durch Nachschlagen des Offsetwerts der Abfrage
der RAM/ROM-Tabelle (die Offsetwerte können relativ zu den entsprechenden
Behälterpositionen
gespeichert werden). Abhängig
von der Implementierung kann es jedoch sein, daß nicht alle Behältergrößen einen
eindeutigen RAM/ROM-Eintrag haben. Manche Behältergrößen können einfach einen Untersatz
der größeren Behältergrößeneintragungen
lesen. In einer Ausführungsform
hat jede unterstützte
Größe zumindest
vier unterschiedliche Abfragepositionsschemavarianten, was die Endbildartefakte
aufgrund der Wiederholung von Abfragepositionen reduzieren kann.
-
Nachdem einmal die Abfragepositionen
von dem Abfragepositionsspeicher 354 gelesen wurden, wählt der
Zeichenprozeß 352 die
Abfragepositionen aus, die in das gegenwärtig darzustellende Polygon
fallen. Der Zeichenprozeß 352 berechnet
dann die Z- und Farbinformation (die Alpha- oder andere Tiefen von Feldinformationswerten
enthalten kann) für
jede dieser Abfragen und speichert die Daten in dem Abfragepufferspeicher 162.
In einer Ausführungsform
kann der Abfragepufferspeicher Z-Werte (und vielleicht Alpha-Werte)
einfach pufferspeichern, während
andere Abfragekomponenten, wie zum Beispiel die Farbe, mehrfach
puffergespeichert werden. Im Gegensatz zu Systemen des Standes der
Technik, kann das Grafiksystem 112 alle Abfragen doppelt
pufferspeichern (obgleich nicht alle Abfragekomponenten doppelt
gespeichert sein müssen,
d.h. die Abfragen können
Komponenten haben, die doppelt puffergespeichert sind, oder nicht
alle Abfragen können doppelt
puffergespeichert sein). In einer Ausführungsform werden die Abfragen
in dem Abfragepufferspeicher 162 in Behältern abgelegt. In Ausführungsformen
kann die Größe der Behälter, d.h.
die Quantität
der Abfragen innerhalb eines Behälters,
von Einzelbild zu Einzelbild variieren und kann ebenso über verschiedene
Regionen des Anzeigegeräts 84 innerhalb
eines einzelnen Einzelbildes variieren. Beispielsweise können Behälter entlang
der Kanten der Anzeigevorrichtung nur eine Abfrage enthalten, während Behälter, die
Pixeln nahe des Zentrums des Anzeigegeräts 84 entsprechen,
sechzehn Abfragen enthalten können.
Es sei bemerkt, daß die Fläche der
Behälter
von Region zu Region variieren kann. Die Verwendung von Behältern wird
unten in Verbindung mit 11 in
größerem Detail
beschrieben.
-
Parallel zu und vorzugsweise unabhängig von
dem Zeichenprozeß 352 ist
der Filterprozeß 360 derart konfiguriert,
daß er
Abfragewerte von dem Abfragewertpufferspeicher 162 liest,
diese filtert (d. h. Filtern) und dann das resultierende Ausgangspixel
an die Anzeigevorrichtung 84 ausgibt. Die Einheiten 170 zur
Umrechnung von Abfrage in Pixel implementieren den Filterprozeß 380.
Der Filterprozeß ist
somit für
zumindest eine Untergruppe der Ausgangspixel betreibbar, um eine
Mehrzahl von Abfragewerten zu filtern, um einen entsprechenden Ausgabepixel
zu erzeugen. In einer Ausführungsform
ist der Filterprozeß 360 derart
konfiguriert, daß er
(i) den Abstand jeder Abfrage von dem Zentrum des zu filternden
Ausgangspixel bestimmt, (ii) die Komponenten (zum Beispiel Farbe
und alpha) des Abfragewertes mit einem Filterwert multipliziert,
der eine bestimmte (programmierbare) Funktion des Abstandes ist,
(iii) all die gewichteten Abfragewerte summiert, die zu dem Ausgangspixel
beitragen und (iv) das resultierende Ausgangspixel normalisiert.
Der Filterprozeß wird
unten in größerem Detail
beschrieben (siehe die Beschreibung der begleitenden 11, 12 und 14).
Es sei bemerkt, daß die
Ausdehnung des Filters nicht kreisförmig sein muß (d. h.
es kann eine Funktion von X und Y anstelle des Abstandes sein),
doch selbst wenn die Ausdehnung es ist, muß der Filter nicht kreissymmetrisch
sein. Die „Ausdehnung" des Filters ist
der Bereich, innerhalb dessen Abfragewerte die bestimmten Pixel,
die mit dem Filter berechnet werden, beeinflussen können.
-
Wendet man sich nun 7 zu, so ist ein Diagramm gezeigt, das
eine alternative Ausführungsform des
Grafiksystems 112 zeigt. In dieser Ausführungsform werden zwei oder
mehrere Abfragepositionsspeicher 354A und 354B benutzt.
Die Abfragepositionsspeicher 354A–B sind somit im wesentlichen
doppelt puffergespeichert. Wenn die Abfragepositionen von Einzelbild
zu Einzelbild die gleichen bleiben, dann können die Abfragepositionen
einfach puffergespeichert werden. Wenn jedoch die Abfragepositionen
von Einzelbild zu Einzelbild variieren können, dann kann das Grafiksystem 112 mit
Vorteil derart konfiguriert sein, daß es die Abfragepositionen
doppelt pufferspeichert. Die Abfragepositionen können auf der Darstellungsseite
(d. h. der Speicher 354A kann doppelt puffergespeichert
sein) und/oder der Filter-/Faltungsseite (d. h. der Speicher 354B kann
doppelt puffergespeichert sein) doppelt puffergespeichert sein.
Andere Kombinationen sind ebenso möglich. Beispielsweise kann
der Speicher 354A einfach puffergespeichert sein, während der
Speicher 354B doppelt puffergespeichert ist. Diese Konfiguration
kann es erlauben, daß eine
Seite des Speichers 354B für die Aktualisierung (z. B.
durch den Filter-/Faltungsprozeß 360)
für die
Bildwiederholung verwendet wird, während die andere Seite des
Speichers 354B aktualisiert wird. In dieser Konfiguration
kann das Grafiksystem 112 die Abfragepositionierungsschemata
auf einer Einzelbasis verändern
durch Verschieben der Abfragepositionen (oder der Offsetwerte bzw.
der Verschiebungswerte) von dem Speicher 345A in den doppelt
puffergespeicherten Speicher 354B, wenn jedes Einzelbild
dargestellt wird. Die Positionen, die verwendet werden, um die Abfragewerte
(die von dem Speicher 354A gelesen sind) zu berechnen,
werden somit zum Speicher 354B kopiert für die Verwendung
während
des Filterprozesses (d. h. dem Umwandlungsprozeß von Abfragewert in Pixel). Nachdem
die Positionsinformation einmal in den Speicher 354B kopiert
wurde, kann der Positionsspeicher 354A dann mit neuen Abfragepositionsoffsets
beladen werden, die für
das zweite darzustellende Einzelbild verwendet werden. Auf diese
Art und Weise folgen die Abfragewertpositionsinformationen den Abfragewerten von
dem Zeichen-/Darstellungsprozeß zu
dem Filterprozeß.
-
Noch eine andere alternative Ausführungsform
kann Anzeiger zu den Offsetwerten mit den Abfragewerten selbst in
dem supergesampleten Abfragepufferspeicher 162 speichern.
Diese Anzeiger können
verwendet werden, um die Offsetwerte/Störungswerte, die mit jeder bestimmten
Abfrage verknüpft
sind, nachzuschlagen.
-
Abfragepositionierungsschemata
-
8 stellt
eine Anzahl von verschiedenen Abfragepositionierungsschemata dar.
In dem regulären Gitterpositionierungsschema 190 ist
jede Abfrage an einem Schnittpunkt eines Gitters mit regelmäßigen Abständen positioniert.
Es sei jedoch bemerkt, daß der
Begriff „reguläres Gitter" oder „vordefiniertes
Gitter", so wie
er hier verwendet wird, nicht auf quadratische Gitter beschränkt ist.
Andere Typen von Gittern werden ebenso als „regulär", so wie der Begriff hier verwendet
wird, angesehen, einschließlich,
jedoch nicht hierauf begrenzt, rechteckige Gitter, hexagonale Gitter,
Dreiecksgitter, logarithmische Gitter und halbreguläre Gitter, wie
Penrose-Kacheln.
-
Das Positionierungsschema des gestörten regulären Gitters 192 basiert
auf der vorherigen Definition eines regulären Gitters. Die Abfragewerte
in dem gestörten
regulären
Gitterschema 192 können
jedoch von ihren entsprechenden Gitterschnittpunkten abweichen.
In einer Ausführungsform
können
die Abfragewerte um einen Zufallswinkel (zum Beispiel von 0° bis 360°) und einen
Zufallsabstand oder um zufällige
X- und Y-Offsets, die auf einen vorbestimmten Bereich begrenzt sein
können,
jedoch nicht müssen,
verschoben sein. Die Offset-Werte können auf einer Anzahl von Wegen
erzeugt werden, zum Beispiel durch Hardware, basierend auf einer
kleinen Anzahl von Kernen, die in einer Tabelle nachgeschlagen werden,
oder durch Verwendung einer Pseudozufallsfunktion. Noch einmal sei
erwähnt,
daß das
Schema des gestörten
regulären
Gitters 192 auf jedem Typ von regulärem Gitter (zum Beispiel quadratisch
oder hexagonal) basieren kann. Ein rechteckiges oder hexagonales
gestörtes
Gitter kann insbesondere wünschenswert
sein aufgrund der geometrischen Eigenschaften dieser Gittertypen.
-
Das stochastische Abfragepositionierungsschema 194 stellt
einen dritten potentiellen Typ eines Schemas für das Positionieren von Abfragen
dar. Die stochastische Abfragepositionierung beinhaltet die zufällige Verteilung
der Abfragen über
einen Bereich (zum Beispiel dem angezeigten Bereich auf einer Anzeigevorrichtung
oder einem bestimmten Fenster). Die zufällige Positionierung von Abfragen
kann durch eine Anzahl von unterschiedlichen Verfahren erzielt werden,
zum Beispiel unter Verwendung eines Zufallszahlengenerators, wie
zum Beispiel einem internen Takt, um Pseu dozufallszahlen zu erzeugen.
Zufallszahlen oder Positionen können
ebenso vorherberechnet und in dem Speicher abgelegt werden.
-
Verschiedene andere Positionserzeugungsschemata
können
verwendet werden, die auf verschiedenen statistischen Schemata basieren,
die derart konstruiert sind, daß sie
eine Abfrageposition erzeugen, die sich gegenseitig vermeidet, gemäß irgendeiner
Metrik.
-
Die Positionserzeugungsschemata,
die oben diskutiert wurden, können
vorberechnete Positionen oder Positionen, die während der Darstellung mit der Übertragung
erzeugt werden oder eine Kombination hiervon verwenden.
-
Wendet man sich nun 9 zu, so sind Details einer Ausführungsform
eines Schemas eines gestörten regulären Gitters 192 gezeigt.
In dieser Ausführungsform
sind die Abfragen zufällig
von einem regulären
quadratischen Gitter um X- und Y-Offsets verschoben. Wie der vergrößerte Bereich
zeigt, hat die Abfrage 198 einen X-Offset 134,
der seine horizontale Verschiebung gegenüber seinem entsprechenden Gitterschnittpunkt 196 spezifiziert.
In gleicher Weise hat die Abfrage 198 ebenso einen Y-Offset 136,
der seine vertikale Abweichung von dem Gitterschnittpunkt 196 spezifiziert.
Der zufällige
Offset kann ebenso durch einen Winkel und einen Abstand spezifiziert
werden. Wie bei der vorher offenbarten Ausführungsform, die Winkel und
Abstände verwendet,
kann der X-Offset 134 und der Y-Offset 136 auf
einen bestimmten minimalen und/oder maximalen Wert oder einen Bereich
von Werten begrenzt sein.
-
In 10 sind
Details einer anderen Ausführungsform
eines gestörten
regulären
Gitterschemas 192 gezeigt. In dieser Ausführungsform
sind die Abfragen in "Behälter" 138A–D gruppiert.
In dieser Ausführungsform
enthält
jeder Behälter
neun (das heißt
3 × 3)
Abfragen. Unterschiedliche Behältergrößen können in
anderen Ausführungsformen
verwendet werden (z. B. Behälter,
die 2 × 2-Abfragen oder 4 × 4-Abfragen
speichern). In der gezeigten Ausführungsform wird die Position
jeder Abfrage als ein Offset bzw. als ein Verschiebungswert relativ
zu der Position des Behälters
bestimmt. Die Position der Behälter
kann als irgendeine bequeme Position bezüglich des Gitters definiert
werden, z. B. die unteren linken Ecken 132A–D,
wie in der Figur gezeigt ist. Die Position der Abfrage 198 wird
beispielsweise bestimmt durch Addition des X-Offsets 124 und des
Y-Offsets 126 zu den X- und Y-Koordinaten der Ecke 132B des
Behälters 138D.
Wie vorher bemerkt wurde, kann dies die Größe des Abfragepositionsspeichers,
der in manchen Ausführungsformen
verwendet wird, reduzieren.
-
In 11 ist
ein mögliches
Verfahren für
das schnelle Umwandeln von Abfragewerten, die in dem Abfragepufferspeicher 162 abgelegt
sind, in Pixel gezeigt. In dieser Ausführungsform sind die Inhalte
des Abfragepufferspeichers 162 in Spalten (z. B. die Spalten
1–4) organisiert.
Jede Spalte in dem Abfragepufferspeicher 162 kann eine
zweidimensionale Anordnung von Behältern aufweisen. Die Spalten
können
derart konfiguriert sein, daß sie
sich in horizontaler Richtung überlappen
(z. B. um einen oder mehrere Behälter)
und jede Spalte kann einer bestimmten Einheit 170A–D zur
Umrechnung von Abfrage in Pixel für den Faltungsprozeß zugewiesen
sein. Die Größe des Überlapps
kann von der Ausdehnung des zu verwendenden Filters abhängen. Das in
der Figur gezeigte Beispiel illustriert einen Überlapp von zwei Behältern (jedes
Quadrat, wie z. B. das Quadrat 188, stellt einen einzelnen
Behälter
dar, der eine oder mehrere Abfragen aufweist). Diese Konfiguration kann
mit Vorteil den Einheiten 170A–D zur Umrechnung
von Abfrage in Pixel erlauben, parallel und unabhängig zu
arbeiten, wobei jede Einheit 170A–D zur Umrechnung
von Abfrage in Pixel ihre eigene Spalte empfängt und umwandelt. Das Überlappen
der Spalten wird sichtbare Bänder
oder andere Artefakte, die an den Spaltengrenzen auftreten für jeden
Operator, der größer als
ein Pixel in der Ausdehnung ist, eliminieren.
-
In 11A sind
mehr Details einer Ausführungsform
eines Verfahrens gezeigt für
das Lesen der Abfragen von einem supergesampleten Abfragepufferspeicher.
Wie die Figur darstellt, wandert der Faltungsfilterkern 400 über die
Spalte 414 (siehe Pfeil 406), um Ausgangspixel
zu erzeugen. Eine oder mehrere Einheiten 170 zur Umrechnung
von Abfrage in Pixel können
den Faltungsfilterkern 400 implementieren. Ein Behältercachespeicher 408 kann
verwendet werden, um schnellen Zugriff auf die Abfragewerte zur
Verfügung
zu stellen, die potentiell zu dem Ausgangspixel beitragen. Wenn
der Faltungsprozeß fortfährt, werden
Behälter
von dem supergesampleten Abfragepufferspeicher gelesen und in dem
Behältercachespeicher 408 abgelegt.
In einer Ausführungsform
werden Behälter 410,
die nicht länger
benötigt
werden, in dem Cachespeicher von neuen Behältern 412 überschrieben.
Wenn jedes Pixel erzeugt ist, verschiebt sich der Faltungsfilterkern 400.
Der Kern 400 kann als in einer sequentiellen Art und Weise
innerhalb der Spalte in der Richtung, die durch den Pfeil 406 angezeigt
ist, fortfahrend visualisiert werden. Wenn der Kern 400 das
Ende der Spalte erreicht, kann er eine oder mehrere Zeilen von Abfragen
nach unten verschieben und kann dann erneut fortfahren. Der Faltungsprozeß fährt somit
in einer Abtastzeilen-Art und Weise fort, wodurch eine Spalte von
Ausgangspixeln für
die Anzeige erzeugt wird.
-
In 11B ist
ein Diagramm gezeigt, das die möglichen
Grenzbedingungen darstellt. In einer Ausführungsform können die
Behälter,
die außerhalb
des Abfragefensters 420 fallen, durch Abfragen ersetzt
werden mit vorbestimmten Hintergrundfarben, die von dem Benutzer
spezifiziert werden. In einer anderen Ausführungsform werden Behälter, die
außerhalb
des Fensters liegen, nicht verwendet durch Einstellen ihrer Wichtungsfaktoren
auf Null (und durch dynamisches Berechnen der Normalisierungskoeffizienten).
In noch einer anderen Ausführungsform
können
die Behälter
an der inneren Kante des Fensters dupliziert werden, um diejenigen
außerhalb
des Fensters zu ersetzen. Dies wird durch den äußeren Behälter 430 angezeigt,
der durch den gespiegelten inneren Behälter 432 ersetzt wird.
-
12 ist
ein Flußdiagramm
einer Ausführungsform
eines Verfahrens für
das Zeichnen oder Darstellen von Abfragepixeln in einem supergesampleten
Abfragepufferspeicher. Bestimmte Schritte von 12 können
gleichzeitig oder in anderer Ordnung auftreten. In dieser Ausführungsform
empfängt
das Grafiksystem graphische Befehle und Grafikdaten von der Host-CPU 102 oder
direkt von dem Hauptspeicher 106 (Schritt 200).
Als nächstes
werden die Befehle und Daten zu einer oder mehreren Darstellungseinheiten 150A–D geleitet
(Schritt 202). Wenn die Grafikdaten komprimiert sind (Schritt 204),
dann dekomprimieren die Darstellungseinheiten 150A-D die Daten in
ein nutzbares Format, z. B. Dreiecke (Schritt 206). Als
nächstes
werden die Dreiecke verarbeitet, z. B. in den Schirmraum umgewandelt,
beleuchtet und transformiert (Schritt 208A). Wenn das Grafik system
Supersampling mit variabler Auflösung
implementiert, dann werden die Dreiecke mit den Bereichsgrenzen
der Abfragedichte verglichen (Schritt 208B). Bei Implementierungen
des Supersamplings mit variabler Auflösung können unterschiedliche Regionen
des Anzeigegeräts
unterschiedlichen Abfragedichten zugewiesen werden basierend auf
einer Anzahl von Faktoren (z. B. dem Zentrum der Aufmerksamkeit
auf dem Schirm, wie es von einer Augen- oder Kopfverfolgung bestimmt
wird). Abfragedichteregionen werden unten detaillierter beschrieben
(siehe unten den Abschnitt mit dem Titel "Abfragepufferspeicher mit variabler
Auflösung"). Wenn das Dreieck
eine Abfragedichteregionsgrenze kreuzt (Schritt 210), dann
kann das Dreieck in zwei kleinere Polygone entlang der Bereichsgrenze
aufgeteilt werden (Schritt 212). Dies kann es jedem neugebildeten
Dreieck erlauben, eine einzige Abfragedichte zu haben. In einer
Ausführungsform
kann das Grafiksystem derart konfiguriert sein, daß es das
gesamte Dreieck einfach zweimal (das heißt einmal in jedem Bereich)
verwendet und dann eine Begrenzungsbox verwendet, um das Dreieck
effektiv abzuschneiden.
-
Als nächstes wird eines der Abfragepositionierungsschemata
(z. B. reguläres
Gitter, gestörtes
reguläres
Gitter oder stochastisch) aus dem Abfragepositionsspeicher 184 ausgewählt (Schritt 214).
Das Abfragepositionierungsschema wird im allgemeinen vorprogrammiert
sein in dem Abfragepositionsspeicher 184, kann jedoch auch "on the fly" bzw. während der Übertragung
ausgewählt
werden. Basierend auf diesem Abfragepositionierungsschema und der
Abfragedichte des Bereichs, der das Dreieck enthält, bestimmen die Darstellungseinheiten 150A–D,
welche Behälter
Abfragen enthalten können,
die in den Grenzen des Dreiecks lokalisiert sind (Schritt 216).
Die Verschiebungen für
die Abfragen innerhalb dieser Behälter werden dann von dem Abfragepositionsspeicher 184 ausgelesen
(Schritt 218). Jede Position der Abfrage wird dann unter
Verwendung der Verschiebungen berechnet und wird mit den Endpunkten
des Dreiecks verglichen, um zu bestimmen, ob die Abfrage innerhalb
des Dreiecks ist (Schritt 220). Schritt 220 wird
unten detaillierter erörtert.
-
Für
jede Abfrage, für
die bestimmt wird, daß sie
innerhalb des Dreiecks liegt, zeichnet die Darstellungseinheit die
Abfrage durch Berechnung der Farbe, alpha und anderer Attribute
der Abfrage. Dies kann die Beleuchtungsberechnung und die Interpolation
basierend auf der Farb- und Texturkarteninformation, die mit den
Endpunkten des Dreiecks verknüpft
sind, beinhalten. Nachdem die Abfragen dargestellt sind, können sie zu
der Verzeichniseinheit 154 weitergeleitet werden, die dann
die Abfragen in dem Abfragepufferspeicher 162 speichert
(Schritt 224).
-
Es sei bemerkt, daß die Ausführungsform
des Verfahrens, das oben beschrieben wurde, nur für die Zwecke
der Erläuterung
verwendet wird und nicht als begrenzend verstanden wird. Beispielsweise
können
in manchen Ausführungsformen
die in der Figur gezeigten Schritte, wo sie seriell auftreten, parallel
implementiert werden. Weiterhin können manche Schritte in bestimmten
Ausführungsformen
des Grafiksystems reduziert oder eliminiert werden (z. B. die Schritte 204–206 in
Ausführungsformen,
die keine geometrische Kompression implementieren oder die Schritte 210–212 in
Ausführungsformen,
die keinen supergesampleten Abfragepufferspeicher mit variabler
Auflösung
implementieren).
-
Bestimmung, welche Abfragen
in dem darzustellenden Polygon liegen
-
Der Vergleich kann auf einer Anzahl
von unterschiedlichen Wegen durchgeführt werden. In einer Ausführungsform
werden zunächst
die Deltas (Differenzvektoren) zwischen den drei Eckpunkten, die
das Dreieck definieren, bestimmt. Beispielsweise können diese
Deltas in der Ordnung des ersten zu zweiten Eckpunktes (v2 – v1) =
d12, des zweiten zu dritten Eckpunktes (v3 – v2) = D23 und des dritten
Eckpunktes zurück
zu dem ersten Eckpunkt (v1 - v3) = d31 genommen werden. Diese Deltas
bilden Vektoren und jeder Vektor kann derart kategorisiert werden,
daß er
zu einem der vier Quadranten der Koordinatenebene gehört (z. B.
durch Verwendung der zwei Vorzeichenbits seiner Delta-X- und -Y-Koeffizienten).
Eine dritte Bedingung kann zugefügt
werden, die bestimmt, ob der Vektor ein X-major vector (Vektor,
der mehr horizontal als vertikal verläuft) oder ein Y-major vector
(Vektor, der mehr vertikal als horizontal verläuft) ist. Dies kann bestimmt
werden durch Berechnen, ob abs(delta_x) größer als abs(delta_y) ist.
-
Unter Verwendung dieser drei Informationsbits
können
die Vektoren alle kategorisiert werden, so daß sie zu einer von acht unterschiedlichen
Regionen der Koordinatenebene gehören. Wenn drei Bits verwendet werden,
um diese Region zu definieren, dann können das X-Vorzeichenbit (um zwei nach links verschoben), das
Y-Vorzeichenbit (um eins nach links verschoben) und das X-major
Bit verwendet werden, um die acht Bereiche zu erzeugen, wie in 12A gezeigt ist.
-
Als nächstes werden drei Kantengleichungen
verwendet, um das Innere des Dreiecks zu definieren. Diese Kantengleichungen
(oder Halbebengleichungen) können
unter Verwendung der Steigungsabschnittsform definiert werden. Um
den benötigten
numerischen Bereich zu reduzieren, können sowohl die X-major- als auch
die Y-major-Gleichungsformen verwendet werden (so daß der absolute
Wert des Steigungswertes in dem Bereich von 0 bis 1 liegt). Die
Kantengleichungen sind somit:
X-major: | y – m·x – b < 0, wenn der Punkt
unterhalb der Linie ist, |
Y-major: | x – m·y – b < 0, wenn der Punkt
links von der Linie ist. |
-
Die X-major-Gleichungen erzeugen
einen negativen gegenüber
einem positiven Wert, wenn der in Frage stehende Punkt unterhalb
der Linie ist, während
die Y-major-Gleichung einen negativen gegenüber einem positiven Wert erzeugt,
wenn der in Frage stehende Punkt links der Linie ist. Da bekannt
ist, welche Seite der Linie die "akzeptiert"-Seite ist, kann
das Vorzeichenbit (oder das Inverse des Vorzeichenbits) des Kantegleichungsergebnisses
verwendet werden, um zu bestimmen, ob die Abfrage auf der "akzeptiert"-Seite ist oder nicht.
Dies wird hier als "Akzeptierungsbit" bezeichnet. Somit
ist eine Abfrage auf der Akzeptierungsseite einer Linie, wenn:
X-major: | y – m·x – b <xor> accept |
Y-major: | x – m·y – b <xor> accept |
-
Das Akzeptierungs- bzw. Annahmebit
kann entsprechend der folgenden Tabelle berechnet werden, wobei
cw bestimmt, ob das Dreieck im Uhrzeigersinn (cw = 1) oder im Gegenuhrzeigersinn
(cw = 0) orientiert ist:
1: accept = !cw
0: accept = cw
4:
accept = cw
5: accept = cw
7: accept = cw
6: accept
= !cw
2: accept = !cw
3: accept = !cw
-
Entscheidungsregeln für diese
Darstellung können
ebenso implementiert werden (z. B. können Koordinatenachsen derart
definiert werden, daß sie
zu dem positiven Oktanten gehören).
In gleicher Weise kann X-major so definiert werden, daß es alle
Punkte aufweist, die auf den Winkel-halbierenden liegen.
-
In einer alternativen Ausführungsform
kann die Akzeptierungsseite einer Kante durch Anwenden der Kantengleichung
auf den dritten Eckpunkt des Dreiecks bestimmt werden (der Eckpunkt,
der nicht einer der beiden Eckpunkte ist, die die Kante bilden).
Dieses Verfahren kann zusätzliche
Kosten einer Vielfachaddition hervorrufen, die durch die oben beschriebene
Technik nicht verwendet werden darf.
-
Um die "faced-ness" (das heißt, welche Seite wohin gewandt
ist) eines Dreiecks zu bestimmen (das heißt, ob das Dreieck rechtsläufig oder
linksläufig
ist), können
die Delta-Richtungen von zwei Kanten des Dreiecks überprüft werden
und die Steigungen der beiden Kanten können verglichen werden. Angenommen,
daß beispielsweise
die Kante 12 eine Delta-Richtung von 1 hat und die zweite
Kante (Kante 23) eine Delta-Richtung von 0, 4 oder 5 hat,
dann ist das Dreieck gegenläufig
bzw. linksläufig.
Wenn jedoch die Kante 23 eine Delta-Richtung von 3, 2 oder
6 hat, dann ist das Dreieck rechtsläufig. Wenn die Kante 23 eine
Delta-Richtung von 1 hat (das heißt, dieselbe wie die Kante 12),
dann führt
der Vergleich der Steigungen der beiden Kanten zur Entscheidung
(das heißt,
beide sind X-major). Wenn die Kante 12 eine größere Steigung
hat, dann ist das Dreieck gegenläufig.
Wenn die Kante 23 eine Delta-Richtung von 7 hat (das exakte
Gegenteil der Kante 12), dann werden wieder die Steigungen
verglichen, jedoch mit dem entgegengesetzten Ergebnis im Hinblick
darauf, ob das Dreieck rechtsläufig
oder linksläufig
ist.
-
Dieselbe Analyse kann erschöpfend auf
alle Kombination der Delta-Richtungen der Kante 12 und
Kante 23 angewendet werden, wobei in jedem Fall die richtige
faced-ness bestimmt wird. Wenn die Steigungen im Grenzfall gleich
sind, dann ist das Dreieck entartet (das heißt mit keiner inneren Fläche). Es
kann explizit hierauf getestet werden und eliminiert werden oder
mit angemessener numerischer Sorgfalt könnte es durchgelassen werden,
da es nicht veranlassen wird, daß Abfragen dargestellt werden.
Ein Spezialfall tritt auf, wenn ein Dreieck die Sichtebene teilt,
dies kann jedoch früher
in der Pipeline erfaßt
werden (z. B. wenn das Vorderebenen- und das Rückebenenabschneiden durchgeführt wird).
-
Es sei bemerkt, daß in den
meisten Fällen
nur eine Seite eines Dreiecks dargestellt wird. Wenn somit, nachdem
die faced-ness eines Dreiecks bestimmt wurde, die Fläche eine
ist, die zurückgewiesen
wird, dann kann das Dreieck eliminiert werden (das heißt, es ist
nicht Gegenstand weiterer Bearbeitung mit keinen erzeugten Pixeln).
Es sei weiterhin bemerkt, daß diese
Bestimmung der faced-ness nur einen zusätzlichen Vergleich (das heißt der Steigung
der Kante 12 mit der der Kante 23) über die
bereits berechneten Faktoren hinaus verwendet. Viele traditionelle
Ansätze
können
komplexere Berechnungen verwenden (bei früheren Stufen der Einstellberechnung).
-
13 ist
ein Flußdiagramm
einer Ausführungsform
eines Verfahrens für
das Filtern von in dem supergesampleten Abfragepufferspeicher abgelegten
Abfragen, um Ausgangspixelwerte zu erzeugen. Zunächst wird ein Strom von Behältern von
dem supergesampleten Abfragepufferspeicher gelesen (Schritt 250).
Diese können
in einem oder mehreren Cachespeichern abgelegt werden, um den Einheiten
zur Umrechnung von Abfrage zu Pixel einen leichten Zugriff während des
Faltungsprozesses zu ermöglichen
(Schritt 252). Als nächstes
werden die Behälter
untersucht, um zu bestimmen, welche Abfragen enthalten können, die
zu dem gegenwärtig
durch den Filterprozeß erzeugten
Ausgangspixel beitragen können
(Schritt 254). Jede Abfrage, die in einem Behälter ist,
der zu dem Ausgangspixel beitragen kann, wird dann individuell untersucht,
um zu bestimmen, ob die Abfrage tatsächlich beiträgt (Schritte 256–258).
Diese Bestimmung kann auf dem Abstand von der Abfrage zu dem Zentrum
des zu erzeugenden Ausgangspixels basieren.
-
In einer Ausführungsform können die
Einheiten zur Umrechnung von Abfrage zu Pixel 170 derart
konfiguriert sein, daß sie
diesen Abstand (das heißt
die Ausdehnung oder die Einhüllende
des Filters an der Position der Abfrage) berechnen und dann dies
verwenden, um in einer Tabelle Speicherfiltergewichtungswerte entsprechend
der Filterausdehnung zu indexieren (Schritt 260). In einer
anderen Ausführungsform
wird jedoch die möglicherweise
teure Berechnung des Abstandes von dem Zentrum des Pixels zu dem
Abfragewert (der typischerweise eine Quadratwurzelfunktion beinhaltet)
vermieden durch Verwendung des quadrierten Abstandes, um die Tabelle
von Filtergewichten zu indexieren. Alternativ dazu kann eine Funktion
von X und Y verwendet werden neben einer, die abhängig von
der Abstandsberechnung ist. In einer Ausführungsform kann dies erzielt
werden durch Verwendung eines Gleitkommaformats für den Abstand
(z. B. 4 oder 5 Bits der Mantisse und 3 Bits des Exponenten), wodurch
es möglich
ist, daß ein
Großteil
der Genauigkeit beibehalten wird, während der erhöhte Wertebereich
kompensiert wird. In einer Ausführungsform
kann die Tabelle in ROM implementiert werden. Es können jedoch
ebenso RAM-Tabellen verwendet werden. RAM-Tabellen können in manchen Ausführungsformen
mit Vorteil dem Grafiksystem erlauben, die Filterkoeffizienten auf
einer Einzelbildbasis zu variieren. Beispielsweise können die
Filterkoeffizienten variiert werden, um bekannte Fehler der Anzeige zu
kompensieren oder entsprechend der persönlichen Vorlieben des Benutzers.
Das Grafiksystem kann ebenso die Filterkoeffizienten auf einer Schirmbereichsbasis
innerhalb eines Einzelbildes oder auf einer Ausgangspixelbasis variieren.
Eine andere alternative Ausführungsform
kann tatsächlich
die gewünschten
Filtergewichte für
jede Abfrage unter Verwendung von spezialisierter Hardware (z. B.
Multiplizierer und Addierer) berechnen. Die Filtergewichte für Abfragen
außerhalb
der Grenzen des Faltungsfilters können einfach mit einem Filtergewicht
von 0 multipliziert werden (Schritt 262) oder sie können völlig aus
der Berechnung entfernt werden.
-
Nachdem das Filtergewicht für eine Abfrage
bestimmt wurde, kann dann die Abfrage mit ihrem Filtergewicht multipliziert
werden (Schritt 264). Die gewichtete Abfrage kann dann
in einer laufenden Summe summiert werden, um den Farbwert des endgültigen Ausgangspixels
zu bestimmen (Schritt 266). Das Filtergewicht kann ebenso
zu einem laufenden Summenpixelfiltergewicht addiert werden (Schritt 268),
das verwendet wird, um die gefilterten Pixel zu normalisieren. Die
Normalisierung verhindert mit Vorteil, daß sie gefilterten Pixel (z. B.
Pixel mit mehr Abfragen als andere Pixel) zu hell oder zu dunkel
erscheinen durch Kompensierung der Verstärkung, die durch den Faltungsprozeß eingeführt wurde.
Nachdem all die beitragenden Abfragen gewichtet und summiert wurden,
kann das Gesamtfiltergewicht verwendet werden, um die Verstärkung, die
durch das Filtern veranlaßt
wurde, herauszuteilen (Schritt 270). Schließlich können die
normalisierten Ausgangspixel ausgegeben werden für die Gamma-Korrektur, die
Digital-/Analog-Umwandlung (sofern notwendig) und die eventuelle
Anzeige (Schritt 274).
-
14 stellt
ein vereinfachtes Beispiel einer Ausgangspixelfaltung dar. Wie die
Figur zeigt, enthalten vier Behälter 288A–D Abfragewerte,
die möglicherweise
zu dem Ausgangspixel beitragen können.
In diesem Beispiel ist das Zentrum des Ausgangspixels an der Grenze
der Behälter 288A–D lokalisiert.
Jeder Behälter umfaßt 16 Abfragen
und eine Anordnung von vier Behältern
(2 × 2)
wird gefiltert, um das Ausgangspixel zu erzeugen. Angenommen, daß zirkulare
Filter verwendet werden, so bestimmt der Abstand von jedem Abfragewert
von dem Pixelzentrum, welcher Filterwert auf die Abfrage angewendet
wird. Beispielsweise ist Abfrage 296 relativ nahe an dem
Pixelzentrum und fällt
daher in den Bereich des Filters mit einem Filterwert von 8. In gleicher
Weise fallen die Abfragen 294 und 292 in Bereiche
des Filters mit Filterwerten von 4 bzw. 2. Die Abfrage 290 liegt
jedoch außerhalb
der maximalen Filterausdehnung und bekommt daher einen Filterwert
von 0 verliehen. Die Abfrage 290 wird somit nicht zu dem
Wert des Ausgangspixels beitragen. Dieser Filtertyp stellt sicher,
daß die
Abfragen, die am nächsten
an dem Pixelzentrum lokalisiert sind, am meisten beitragen, während Pixel,
die von dem Pixelzentrum entfernt angeordnet sind, weniger zu dem
endgültigen
Ausgangspixelwert beitragen. Dieser Typ des Filterns führt automatisch
das Anti-Aliasing durch Glätten
jeder abrupten Veränderung
in dem Bild durch (z. B. von einer dunklen Linie zu einem hellen
Hintergrund). Ein anderer besonders nützlicher Typ von Filter für das Anti-Aliasing
ist ein mit Fenster versehener Sinc-Filter. Mit Vorteil enthält der mit
Fenster versehene Sinc-Filter negative Keulen, die einige der gemischten
oder "verzerrten" Bilder erneut schärft. Negative
Keulen sind Flächen,
in denen der Filter veranlaßt,
daß die
Abfragen von den Pixeln, die berechnet werden, abgezogen werden.
Im Gegensatz dazu addieren Abfragen auf irgendeiner Seite der negativen
Keule sich zu dem Pixel, das berechnet wird.
-
Beispielwerte für die Abfragen 290–296 sind
in den Boxen 300–308 dargestellt.
In diesem Beispiel weist jede Abfrage einen Rot-, Grün-, Blau-
und Alpha-Wert auf zusätzlich
zu den Positionierungsdaten der Abfrage. Der Block 310 stellt
die Berechnung jedes Pixelkomponentenwerts für den nicht normalisierten
Ausgangspixel dar. Wie der Block 310 anzeigt, wird mögliche unerwünschte Verstärkung in
die endgültigen
Pixelwerte eingeführt
(das heißt
ein Ausgangspixel mit einem Rot-Komponentenwert
von 2000 ist viel größer als irgendeiner
der Rot-Komponentenwerte in der Abfrage). Wie vorher bemerkt wurde,
können
die Filterwerte summiert werden, um einen Normalisierungswert zu
erhalten 308. Der Normalisierungswert 308 wird
verwendet, um die unerwünschte
Verstärkung
von dem Ausgangspixel herauszuteilen. Der Block 312 stellt
diesen Prozeß und
die endgültigen
normalisierten Beispielpixelwerte dar.
-
Es sei bemerkt, daß die hier
verwendeten Werte nur aus Gründen
der Beschreibung ausgewählt
wurden und nicht als begrenzend verstanden werden. Beispielsweise
kann der Filter eine große
Anzahl von Regionen aufweisen, die jeweils unterschiedliche Filterwerte
haben. In einer Ausführungsform
können
einige Regionen negative Filterwerte haben. Der verwendete Filter
kann eine kontinuierliche Funktion sein, die für jede Abfrage basierend auf
dem Abstand der Abfrage von dem Pixelzentrum ermittelt wird. Es
sei ebenso bemerkt, daß Gleitkommazahlen
für erhöhte Genauigkeit
verwendet werden können.
Eine Vielzahl von Filtern kann benutzt werden, z. B. Zylinder, Konus,
Gauß,
Katmull-Rom, Sinc mit Fenster, Mitchell-Filter, Box, Tent.
-
Vollschirm-Anti-Aliasing
-
Die überwiegende Mehrheit von aktuellen
3D-Grafiksystemen stellt nur das Echtzeit-Anti-Aliasing für Linien und Punkte zur Verfügung. Während manche
Systeme ebenso erlauben, daß die
Kanten eines Polygons "verschwommen" werden, arbeitet
diese Technik typischerweise am besten, wenn alle Polygone in der Tiefe
vorsortiert sind. Dies kann die Absicht des Bereitstellens einer
Allzweck-3D-Darstellungshardware für die meisten Anwendungen (die
keine Tiefenvorsortierung ihrer Polygone durchführen) vereiteln. In einer Ausführungsform
kann das Grafiksystem 112 derart konfiguriert sein, daß es das
Vollschirm-Anti-Aliasing implementiert durch stochastisches Abfragen
von bis zu 16 Abfragen je Ausgangspixel gefiltert mit einem 4 × 4-Faltungsfilter.
-
Obgleich die Ausführungsformen oben in beachtlichem
Detail beschrieben wurden, sind andere Versionen möglich. Zahlreiche
Variationen und Modifikationen ergeben sich dem Fachmann, sobald
die obige Offenbarung voll gewürdigt
wird.
-
Supersampling mit variabler
Auflösung
-
Gegenwärtig würde das geradlinige Brute-Force-Verfahren
der Verwendung einer festen Anzahl von Abfragen pro Pixelort, z.
B. ein 8 × supergesampleter
Abfragepufferspeicher, die Verwendung von achtmal mehr Speicher,
die Verwendung der achtfachen Füllrate
(z. B. Speicherbandbreite) und eine Faltungspipeline, die in der
Lage ist, acht Abfragen pro Pixel zu verarbeiten, zur Folge haben.
Bei gegebener hoher Auflösung und
Bildwiederholraten von gegenwärtigen
Anzeigen kann ein Grafiksystem dieser Größe relativ teuer sein, um den
gegenwärtigen
Integrationsgrad zu implementieren.
-
In einer Ausführungsform kann das Grafiksystem 112 derart
konfiguriert sein, daß es
diese möglichen Hürden überwindet
durch Implementierung des Supersamplings mit variabler Auflösung. In
dieser Ausführungsform
imitiert das Grafiksystem 112 die Charakteristika des menschlichen
Auges durch Zuweisen einer höheren
Anzahl von Abfragen pro Pixel an einem oder mehreren ersten Orten
auf dem Schirm (z. B. dem Foveationspunkt auf dem Schirm) mit einem
Abfall der Anzahl von Abfragen pro Pixel für einen oder mehrere zweite
Bereiche auf dem Schirm (z. B. weiter von dem Foveationspunkt entfernte
Gebiete). Abhängig
von der Implementierung kann der Foveationspunkt in einer Vielzahl
von Arten bestimmt werden. In einer Ausführungsform kann der Foveationspunkt
ein vorbestimmtes Gebiet und ein bestimmtes auf dem Schirm angezeigtes Objekt
sein. Beispielsweise könnte
das Gebiet um einen sich bewegenden Cursor oder um den Hauptcharakter
in einem Computerspiel als der Foveationspunkt bestimmt werden.
In einer anderen Ausführungsform
kann der Foveationspunkt auf dem Schirm durch die Kopfverfolgung
oder die Augenverfolgung bestimmt werden. Selbst wenn die augen-/kopf-/hand-verfolgten,
cursorbasierten oder hauptcharakterbasierten Foveationspunkte nicht
implementiert werden, kann der Foveationspunkt im Zentrum des Schirms
fixiert werden, in dem der Hauptteil der Aufmerksamkeit des Betrachters
während
der überwiegenden
Zeit fokussiert ist. Das Supersampling mit variabler Auflösung wird
unten in größerem Detail
beschrieben.
-
Sugergesampleter Abfragepufferspeicher
mit variabler Auflösung 15–19
-
Ein traditioneller Einzelbildpufferspeicher
ist eine rechteckige Anordnung von gleichförmig abgefragten Pixeln. Für jedes
Pixel auf der Zielanzeigevorrichtung (CRT oder LCD) gibt es ein
einzelnes Pixel oder einen Ort von Speicherplatz in dem Einzelbildpufferspeicher
(möglicherweise
doppelt puffergespeichert). Es besteht eine triviale 1 : 1-Korrespondenz
zwischen der 2D-Speicheradresse
eines gegebenen Pixels und seiner 2D-Abfrageadresse für die Darstellungsmathematik.
Auf andere Art ausgedrückt
gibt es in einem traditionellen Einzelbildpufferspeicher keinen
getrennten Begriff von Abfragen, abgesehen von den Pixeln selbst.
Die Ausgangspixel werden in einem traditionellen Einzelbildpufferspeicher
reihen-/zeilenweise abgelegt in der Reihenfolge, in der die Pixel
der Anzeige während
der Anzeigewiederholrate zur Verfügung gestellt werden.
-
In einem supergesampleten Abfragepufferspeicher
mit variabler Auflösung
variiert die Anzahl von berechneten Abfragen je Ausgangspixel auf
einer regionalen Basis. Somit werden Ausgangspixel in Bereichen von
größerem Interesse
unter Verwendung einer größeren Anzahl
von Abfragen berechnet, wodurch eine größere Auflösung in diesem Bereich erzeugt
wird, und Ausgangspixel in Bereichen von geringerem Interesse werden
unter Verwendung einer geringeren Anzahl von Abfragen berechnet,
was eine geringere Auflösung
in diesem Bereich erzeugt.
-
Wie vorher bemerkt wurde, kann in
manchen Ausführungsformen
das Grafiksystem 112 mit einem supergesampleten Abfragepufferspeicher
variabler Auflösung
konfiguriert sein. Um das Supersampling mit variabler Auflösung zu
implementieren, kann der Abfragepufferspeicher 162 in klei nere
Stücke
aufgeteilt sein, die Regionen genannt werden. Die Größe, der
Ort und andere Attribute dieser Regionen können derart konfiguriert sein,
daß sie
dynamisch variieren, wie sie durch Laufzeitregister auf einer Einzelbildbasis
parametrisiert werden.
-
In 15 ist
ein Diagramm eines möglichen
Schemas für
das Unterteilen eines Abfragepufferspeichers 162 gezeigt.
In dieser Ausführungsform
wird der Abfragepufferspeicher 162 in die folgenden drei
verschachtelten Bereiche unterteilt: fovealer Bereich 354,
medialer Bereich 352 und peripherer Bereich 350.
Jede dieser Regionen hat rechteckig geformte äußere Grenzen, jedoch haben
die mediale Region und die periphere Region ein rechteckig geformtes
Loch in ihrem Zentrum. Jeder Bereich kann mit bestimmten konstanten
Eigenschaften (je Einzelbild) konfiguriert sein, z. B. einer konstanten
Abfragedichte und einer konstanten Größe des Pixelbehälters. In
einer Ausführungsform
kann der gesamte Dichtebereich 256 sein, d.h. ein Bereich
könnte
zwischen einer Abfrage je 16 Schirmpixeln (4 × 4) und 16 Abfragen für jedes
Schirmpixel unterstützen.
In einer anderen Ausführungsform
kann der gesamte Dichtebereich auf andere Werte, z. B. 64, begrenzt
sein. In einer Ausführungsform
variiert die Abfragedichte entweder linear oder nicht linear über einen
entsprechenden Bereich. Es sei bemerkt, daß in anderen Ausführungsformen
die Anzeige in eine Mehrzahl von Bereichen konstanter Größe (z. B.
Quadrate, die eine Größe von 4 × 4 Pixeln
haben) aufgeteilt sein kann.
-
Um die Berechnungen für Polygone
durchzuführen,
die ein oder mehrere Regionecken (z. B. die Ecke der fovealen Region)
umfassen, kann der Abfragepufferspeicher weiter in eine Mehrzahl
von Unterregionen unterteilt sein. In 16 ist
eine Ausführungsform
eines Abfragepufferspeichers 162 gezeigt, der in Unterregionen
unterteilt ist. Jede dieser Unterregionen ist rechteckig, was es
dem Grafiksystem 112 erlaubt, eine 2D-Adresse mit einer
Unterregion in eine lineare Adresse in dem Abfragepufferspeicher 162 zu übersetzen. Somit
hat in manchen Ausführungsformen
jede Unterregion eine Speicherbasisadresse, die anzeigt, wo der Speicher
für die
Pixel innerhalb der Unterregion beginnt. Jede Unterregion kann ebenso
einen "Schritt"-Parameter haben,
der mit seiner Breite verknüpft
ist.
-
Eine andere mögliche Aufteilung des supergesampleten
Abfragepufferspeichers ist kreisförmig. In 17 ist eine solche Ausführungsform
dargestellt. Beispielsweise kann jede Region zwei mit ihr verknüpfte Radien
haben (z. B. 360–368),
die die Region in drei konzentrische kreisförmige Regionen aufteilen. Die
kreisförmigen
Regionen können
alle um denselben Schirmpunkt, den zentralen Punkt der Fovea, zentriert
sein. Es sei jedoch bemerkt, daß der
Mittelpunkt der Fovea nicht immer in der Mitte des fovealen Bereichs
lokalisiert sein muß.
In manchen Fällen
kann er sogar außerhalb
des Schirms lokalisiert sein (d.h. an der Seite der visuellen Anzeigefläche der
Anzeigevorrichtung). Während
die dargestellte Ausführungsform
bis zu sieben unterschiedliche kreisförmige Regionen unterstützt, ist
es für
einige der Kreise möglich,
daß sie
gemeinsam zwei unterschiedliche Regionen durchqueren, wodurch die
ausgeprägten
kreisförmigen
Regionen auf fünf
oder weniger reduziert werden.
-
Die kreisförmigen Regionen können Bereiche
von konstanter Abfragedichte beschreiben, die tatsächlich verwendet
werden. Beispielsweise kann in dem in der Figur dargestellten Beispiel
der foveale Bereich 354 eine Abfragepufferspeicherdichte
von acht Abfragen pro Schirmpixel zuweisen, außerhalb des innersten Kreises 368 kann
es jedoch nur vier Abfragen pro Pixel verwenden und außerhalb
des nächsten
Kreises 366 kann es nur zwei Abfragen pro Pixel verwenden.
In dieser Ausführungsform
müssen
die Ringe nicht tatsächlich Speicher
einsparen (die Bereiche tun dies), sie können jedoch möglicherweise
Speicherbandbreite in und aus dem Abfragepufferspeicher (sowie auch
Pixelfaltungsbandbreite) einsparen. Zusätzlich zu dem Anzeigen einer unterschiedlichen
effektiven Abfragedichte können
die Ringe ebenso verwendet werden, um ein unterschiedliches einzusetzendes
Abfragepositionsschema anzuzeigen. Wie vorher bemerkt wurde, können diese
Abfragepositionsschemata in einem RAM/ROM auf dem Chip oder in einem
programmierbaren Speicher abgelegt sein.
-
Wie vorher erörtert wurde, kann in einigen
Ausführungsformen
der supergesamplete Abfragepufferspeicher 162 weiter in
Behälter
unterteilt sein. Beispielsweise kann ein Behälter eine einzelne Abfrage
oder eine Anordnung von Abfragen (z. B. 2 × 2 oder 4 × 4 Abfragen) speichern. In
einer Ausführungsform
kann jeder Behälter
zwischen einem und sechzehn Abfragepunkten speichern, obgleich andere
Konfigurationen möglich sind
und in Betracht gezogen wurden. Jede Region kann mit einer bestimmten
Behältergröße sowie
auch einer konstanten Speicherabfragedichte konfiguriert sein. Es
sei bemerkt, daß die
Bereiche niedriger Dichte nicht unbedingt größere Behältergrößen haben müssen. In einer Ausführungsform
sind die Bereiche (oder zumindest die inneren Bereiche) exakt ganzzahlige
Vielfache der Größe des Behälters, der
die Region einschließt. Dies
erlaubt eine effizientere Verwendung des Abfragepufferspeichers
in manchen Ausführungsformen.
-
Das Supersampling mit variabler Auflösung beinhaltet
das Berechnen einer variablen Anzahl von Abfragen für jedes
Pixel, das auf der Anzeigevorrichtung angezeigt wird. Bestimmte
Bereiche eines Bildes können
von einer größeren Anzahl
von Abfragen profitieren (z. B. nahe Objektkanten), während andere
Bereiche keine zusätzlichen
Abfragen benötigen
(z. B. glatte Bereiche mit einer konstanten Farbe und Helligkeit).
Um Speicher und Bandbreite einzusparen, können zusätzliche Abfragen nur in Bereichen
verwendet werden, die von der erhöhten Auflösung profitieren. Wenn beispielsweise
ein Teil der Anzeige mit einer konstanten Blaufarbe koloriert ist
(z. B. wie in einem Hintergrund), dann können zusätzliche Abfragen nicht besonders
nützlich sein,
da sie alle einfach denselben konstanten Wert (gleich der darzustellenden
Hintergrundfarbe) haben. Wenn im Gegensatz dazu ein zweiter Bereich
auf dem Schirm ein 3D-dargestelltes Objekt mit komplexen Texturen
und Kanten anzeigt, kann die Verwendung von zusätzlichen Abfragen nützlich sein,
um bestimmte Artefakte, wie z. B. das Aliasing, zu vermeiden. Eine
Anzahl unterschiedlicher Verfahren kann verwendet werden, um zu
bestimmen oder vorherzusagen, welche Bereiche eines Bildes von höheren Abfragedichten
profitieren würden.
Beispielsweise könnte
eine Kantenanalyse auf dem Endbild durchgeführt werden und diese Information
könnte
verwendet werden, um vorherzusagen, wie die Abfragedichten verteilt
sein sollten. Die Softwareanwendung kann ebenso in der Lage sein,
anzuzeigen, welchen Gebieten eines Einzelbildes eine höhere Abfragedichte
zugewiesen werden sollte.
-
Eine Anzahl unterschiedlicher Verfahren
kann verwendet werden, um das Supersampling mit variabler Auflösung zu
implementieren. Diese Verfahren neigen dazu, in die folgenden zwei
allge meinen Kategorien zu fallen: (1) diejenigen Verfahren, die
den Zeichen- oder Darstellungsprozeß betreffen, und (2) diejenigen
Verfahren, die den Faltungsprozeß betreffen. Beispielsweise
können
Abfragen in dem supergesampleten Abfragepufferspeicher 162 dargestellt
werden unter Verwendung eines der folgenden Verfahren:
- 1) eine gleichförmige
Abfragedichte,
- 2) eine variierende Abfragedichte auf einer Regionsbasis (z.
B. medial, foveal oder peripher) und
- 3) eine variierende Abfragedichte durch Verändern der Dichte auf einer
Abtastzeilenbasis (oder auf Basis einer kleinen Anzahl von Abtastzeilen).
-
Das Variieren der Abfragedichte auf
einer Abtastzeilenbasis kann verwirklicht werden durch Verwenden
einer Nachschlagtabelle mit Dichten. Beispielsweise kann die Tabelle
spezifizieren, daß die
ersten fünf
Pixel einer bestimmten Abtastzeile jeweils drei Abfragen haben,
während
die nächsten
vier Pixel jeweils zwei Abfragen haben usw.
-
Auf der Faltungsseite sind die folgenden
Verfahren möglich:
- 1) ein gleichförmiger Faltungsfilter,
- 2) ein kontinuierlicher variabler Faltungsfilter, und
- 3) ein Faltungsfilter, der mit mehreren Ortsfrequenzen arbeitet.
-
Ein gleichförmiger Faltungsfilter kann
beispielsweise eine konstante Ausdehnung (oder Anzahl von ausgewählten Abfragen)
für jedes
berechnete Pixel haben. Im Gegensatz dazu kann ein kontinuierlicher
variabler Faltungsfilter die Anzahl von Abfragen, die verwendet
werden, um ein Pixel zu berechnen, allmählich verändern. Die Funktion kann kontinuierlich
von einem Maximum im Zentrum der Aufmerksamkeit zu einem Minimum
in entfernten Gebieten variieren.
-
Verschiedene Kombinationen dieser
Verfahren (sowohl auf der Darstellungsseite als auch auf der Faltungsseite)
sind ebenso möglich.
Beispielsweise kann eine konstante Abfragedichte auf der Darstellungsseite verwendet
werden, während
ein kontinuierlich variabler Faltungsfilter auf den Abfragen verwendet
wird.
-
Verschiedene Verfahren für die Bestimmung,
welche Bereiche des Bildes mehr Abfragen pro Pixel zugewiesen werden,
wurden ebenso in Betracht gezogen. In einer Ausführungsform können, wenn
das Bild auf dem Schirm einen Hauptfokuspunkt hat (z. B. einen Charakter
wie Mario in einem Computerspiel), mehr Abfragen für den Bereich
um Mario und weniger Abfragen für
Pixel in anderen Bereichen (z. B. um den Hintergrund oder nahe der
Ränder
des Schirms) berechnet werden.
-
In einer anderen Ausführungsform
kann der Foveationspunkt des Betrachters durch die Augen-/Kopf-/Handverfolgung
bestimmt werden. In Ausführungsformen
der Kopfverfolgung wird die Blickrichtung des Betrachters bestimmt
oder abgeschätzt
aus der Orientierung des Kopfes des Betrachters, die unter Verwendung
einer Vielzahl von Mechanismen gemessen werden kann. Beispielsweise
kann ein Helm oder ein Visier, das von dem Betrachter getragen wird
(mit Augen-/Kopfverfolgung),
allein oder in Kombination mit einem Handverfolgungsmechanismus,
einem Stab oder einem augenverfolgenden Sensor verwendet werden,
um die Orientierungsinformation dem Grafiksystem 112 zur
Verfügung
zu stellen. Andere Alternativen beinhalten die Kopfverfolgung unter
Verwendung eines infrarotreflektierenden Punktes, der auf der Stirn
des Benutzers plaziert ist, oder unter Verwendung einer Brille mit
eingebauten kopf- und/oder augenverfolgenden Sensoren. Ein Verfahren
für die
Verwendung der Kopf- und Handverfolgung ist beschrieben in dem US-Patent
Nr. 5,446,834 (mit dem Titel "Method
and Apparatus for High Resolution Virtual Reality Systems Using
Head Tracked Display" von
Michael Deering, ausgestellt am 29. August 1995), das hier in seiner
Gesamtheit durch Bezugnahme aufgenommen wird. Andere Verfahren für die Kopfverfolgung
sind ebenso möglich
und wurden in Betracht gezogen (z. B. Infrarotsensoren, elektromagnetische
Sensoren, kapazitive Sensoren, Videokameras, Schall- und Ultraschalldetektoren,
kleidungsbasierte Sensoren, Videoverfolgungseinrichtungen, leitfähige Tinten,
Dehnungsmeßstreifen,
Kraftrückkopplungsdetektoren,
faseroptische Sensoren, pneumatische Sensoren, magnetische Verfolgungseinrichtungen
und mechanische Schalter).
-
Wie vorher erwähnt wurde, kann die Augenverfolgung
insbesondere von Vorteil sein, wenn sie in Verbindung mit der Kopfverfolgung
verwendet wird. In augenverfolgenden Ausführungsformen wird die Blickrichtung
des Betrachters direkt gemessen durch Erfassen der Orentierung der
Augen des Betrachters in Bezug auf den Kopf des Betrachters. Diese
Information kann eine genaue Messung des Foveationspunkts des Betrachters
(oder von Foveationspunkten, wenn zwei augenverfolgende Sensoren
verwendet werden) ermöglichen,
wenn sie mit anderer Information betreffend die Position und die
Orientierung des Kopfes des Betrachters in Bezug auf die Anzeigevorrichtung
kombiniert wird. Ein mögliches
Verfahren für
die Augenverfolgung ist beschrieben im US-Patent Nr. 5,638,176 (mit
dem Titel "Inexpensive
Interterometric Eye Tracking System"). Andere Verfahren für die Augenverfolgung
sind ebenso möglich
und wurden in Betracht gezogen (z. B. die oben aufgelisteten Verfahren
für die
Kopfverfolgung).
-
Unabhängig davon, welches Verfahren
verwendet wird, so verändert
sich die Verteilung der Abfragen, wenn der Foveationspunkt des Betrachters
seine Position verändert.
Wenn beispielsweise der Blick des Betrachters auf die obere linke
Ecke des Schirms fokussiert wird, können den Pixeln, die der oberen
linken Ecke des Schirms entsprechen, jeweils acht oder sechzehn
Abfragen zugewiesen werden, während
den Pixeln in der gegenüberliegenden
Ecke (d.h. der unteren rechte Ecke des Schirms) nur eine oder zwei
Abfragen pro Pixel zugewiesen werden können. Sobald der Blick des
Betrachters sich verändert,
tut dies auch die Zuweisung der Abfragen pro Pixel. Wenn sich der
Blick des Betrachters zur unteren rechten Ecke des Schirms bewegt,
können
den Pixeln in der oberen linken Ecke des Schirms nur eine oder zwei
Abfragen pro Pixel zugewiesen werden. Somit kann die Anzahl von
Abfragen pro Pixel für
unterschiedliche Regionen des Schirms in Bezug auf den Foveationspunkt
des Betrachters aktiv verändert
werden. Es sei bemerkt, daß in
einigen Ausführungsformen
mehrere Benutzer jeweils kopf-/augen-/handverfolgende Mechanismen
haben können,
die dem Grafiksystem 112 einen Eingang zur Verfügung stellen.
In diesen Ausführungsformen
sind zwei oder mehrere Foveationspunkte auf dem Schirm vorstellbar,
die Bereichen mit hoher und niedriger Abfragedichte entsprechen.
Wie vorher erwähnt
wurde, können
die Abfragedichten nur den Darstellungsprozeß, nur den Filterprozeß oder beide
Prozesse beeinflussen.
-
In den 18A–B ist eine Ausführungsform
eines Verfahrens für
das Zuteilen bzw. Aufteilen der Anzahl von Abfragen pro Pixel gezeigt.
Das Verfahren teilt die Anzahl von Abfragen basierend auf dem Ort
des Pixels relativ zu einem oder mehreren Foveationspunkten zu.
In 18A wird eine augen-
oder kopfverfolgende Einrichtung 360 verwendet, um den
Foveationspunkt 362 (d. h. den Fokussierungspunkt des Blicks
eines Betrachters) zu bestimmen. Dies kann unter Verwendung einer
Verfolgungseinrichtung 360 bestimmt werden, um die Richtung
zu bestimmen, in die die Augen eines Betrachters (dargestellt als
364 in der Figur) blicken. Wie die Figur darstellt, werden in dieser
Ausführungsform
die Pixel in die foveale Region 354 (die um den Foveationspunkt 362 zentriert
sein kann), die mediale Region 352 und die periphere Region 350 aufgeteilt.
-
Drei Abfragepixel sind in der Figur
dargestellt. Das Abfragepixel 374 ist innerhalb der fovealen
Region 314 lokalisiert. Angenommen, daß die foveale Region 314 mit
Behältern
mit acht Abfragen konfiguriert ist, und angenommen, daß der Faltungsradius
für jedes
Pixel vier Behälter
berührt,
dann kann ein Maximum von 32 Abfragen zu jedem Pixel beitragen.
Das Abfragepixel 372 ist innerhalb der medialen Region 352 lokalisiert. Angenommen,
daß die
mediale Region 352 mit Behältern mit vier Abfragen konfiguriert
ist, und angenommen, daß der
Faltungsradius für
jedes Pixel vier Behälter
berührt,
dann kann ein Maximum von sechzehn Abfragen zu jedem Pixel beitragen.
Das Abfragepixel 370 ist innerhalb der peripheren Region 350 lokalisiert.
Angenommen, die periphere Region 350 ist mit Behältern mit
jeweils einer Abfrage konfiguriert, und angenommen, der Faltungsradius
für jedes
Pixel berührt
einen Behälter,
dann gibt es eine Abfrage-zu-Pixel-Korrelation für Pixel in der peripheren Region 350.
Es sei bemerkt, daß diese
Werte lediglich Beispiele sind und eine unterschiedliche Anzahl
von Regionen, Abfragen pro Behälter
und Faltungsradien verwendet werden können.
-
In 18B ist
dasselbe Beispiel gezeigt, jedoch mit einem anderen Foveationspunkt 362.
Wie die Figur darstellt, stellt, wenn die Verfolgungseinrichtung 360 eine
Veränderung
in der Position des Foveationspunktes 362 feststellt, diese
dem Grafiksystem eine Eingabe zur Verfügung, das dann die Position
der fovealen Region 354 und der medialen Region 352 einstellt.
In einigen Ausführungsformen
können
sich Teile einiger Regionen (z. B. der medialen Region 352) über die
Kante der Anzeigevorrichtung 84 hinaus erstrecken. In diesem
Beispiel ist das Pixel 370 nun innerhalb der fovealen Region 354,
während
die Pixel 372 und 374 nun innerhalb der peripheren
Region sind. Unter der Annahme der Abfragekonfiguration wie bei
dem Beispiel in 18A kann
ein Maximum von 32 Abfragen zu dem Pixel 370 beitragen,
während
nur eine Abfrage zu den Pixeln 372 und 374 beitragen
wird. Mit Vorteil kann diese Konfiguration mehr Abfragen für Bereiche
zuweisen, die nahe bei dem Foveationspunkt sind (z. B. dem Fokuspunkt
des Blicks des Betrachters). Dies kann dem Betrachter ein realistischeres
Bild zur Verfügung
stellen ohne die Notwendigkeit, eine große Anzahl von Abfragen für jedes
Pixel auf der Anzeigevorrichtung 84 zu berechnen.
-
In den 19A–B ist eine andere Ausführungsform
eines Computersystems gezeigt, das mit einem supergesampleten Abfragepufferspeicher
mit variabler Auflösung
konfiguriert ist. In dieser Ausführungsform wird
das Zentrum der Aufmerksamkeit des Betrachters durch die Position
eines Hauptcharakters 362 bestimmt. Der mediale und der
foveale Bereich sind um den Hauptcharakter 362 zentriert,
wenn er sich durch die Szene bewegt. In manchen Ausführungsformen
kann der Hauptcharakter ein einfacher Cursor sein (z. B. wie er
durch eine Tastatureingabe oder durch eine Maus bewegt wird).
-
In noch einer anderen Ausführungsform
können
Regionen mit höherer
Abfragedichte um die Mitte des Schirms der Anzeigevorrichtung 84 zentriert
sein. Mit Vorteil kann dies weniger Steuersoftware und -hardware erfordern,
während
immer noch ein schärferes
Bild im Zentrum des Schirms (wo die Aufmerksamkeit des Betrachters
während
eines Großteils
der Zeit fokussiert sein kann) zur Verfügung gestellt wird.
-
Computernetzwerk – 20
-
In 20 ist
ein Computernetzwerk 500 gezeigt, das zumindest einen Servercomputer 502 und
ein oder mehrere Clientcomputer 506A–N aufweist. (In der
in 4 gezeigten Ausführungsform
sind die Clientcomputer 506A–B dargestellt.) Eines
oder mehrere der Clientsysteme können ähnlich dem
Computersystem 80 konfiguriert sein, wobei jedes ein oder
mehrere Grafiksysteme 112 hat, wie oben beschrieben wurde.
Der Server 502 und der (die) Client(s) 506 können über eine
Vielzahl von Verbindungen 504, wie z. B. ein Nahbereichsnetzwerk
(LAN), ein Weitbereichsnetzwerk (WAN) oder eine Internetverbindung
miteinander verbunden sein. In einer Ausführungsform kann der Server 502 geometrische
3D-Daten (die komprimiert sein können) speichern
und zu einem oder mehreren Clients 506 übertragen. Die Clients 506 empfangen
die komprimierten 3D-Geometriedaten,
dekomprimieren sie (sofern notwendig) und stellen dann die geometrischen
Daten dar. Das dargestellte Bild wird dann auf der Anzeigevorrichtung
des Clients angezeigt. Die Clients stellen die geometrischen Daten
dar und zeigen das Bild an unter Verwendung des supergesampleten
Abfragepufferspeichers und unter Verwendung von Echtzeitfiltertechniken,
die oben beschrieben wurden. In einer anderen Ausführungsform
können
die komprimierten 3D-Geometriedaten zwischen den Clientcomputern 506 übertragen werden.
-
Zusätzliche Merkmale des Grafiksystems
-
Abhängig von der Implementierung
kann das Computersystem 80 derart konfiguriert sein, daß es eine oder
mehrere der folgenden Techniken in Echtzeit unter Verwendung des
Grafiksystems 112 (und des supergesampleten Abfragepufferspeichers 162)
durchführt:
Texturfiltern hoher Qualität,
Erhebungsabbildung, Verschiebungsabbildung, mehrfache Texturabbildung,
Dekomprimierung von komprimierten Grafikdaten, das Phong-Shading
pro Pixel, Tiefe von Feldeffekten, Alphapufferspeicherung, Soft-Key-Ausgabe,
effektiver linearer 12-Bit-Ausgang und integrale Augen-Kopf-Hand-Verfolgung.
Jede dieser Techniken wird weiter unten im Detail beschrieben.
-
A. Texturfilterung 21–22
-
Eine populäre Technik, den Realismus von
auf einem Computersystem angezeigten Bildern zu verbessern, ist
die Texturabbildung. Die Texturabbildung bildet ein Bild, das eine
Mehrzahl von Pixelwerten oder Texelwerten ("Texturabbildung" genannt) auf die Oberfläche eines
Objekts ab. Eine Texturabbildung ist ein Bild, das auf ein dreidimensionales
(3D-) Objekt verzerrt (oder abgebildet) werden kann. Ein Beispiel
einer Texturabbildung 20 ist in 21A dargestellt. Die Texturabbildung 20 wird
als eine Sammlung von Texturelementen 22A–N ("Texel") definiert mit Koordinaten
U und V (ähnlich
der X- und Y-Koordinaten auf der Anzeige oder dem "Schirmraum"). In 21B ist ein Beispiel einer
Texturabbildung gezeigt. Wie die Figur darstellt, wird das Texturabbild 20 auf
zwei Seiten eines dreidimensionalen Würfels abgebildet. Die 21C zeigt ein anderes Beispiel
der Texturabbildung, jedoch dieses Mal auf ein kugelförmiges Objekt.
Ein anderes Beispiel wäre
es, ein Bild eines Gemäldes
mit komplizierten Details auf eine Reihe von Polygonen abzubilden,
die eine Vase darstellen.
-
Während
Texturabbildung zu realistischeren Szenen führen kann, können ungünstige Nebeneffekte der
Texturabbildung auftreten, es sei denn, das Grafikuntersystem kann
Texturabbilder mit der korrekten Perspektive anwenden. Die perspektivenkorrigierte
Texturabbildung beinhaltet einen Algorithmus, der Texel (d. h. Pixel
von Bitmap-Texturbild) in Anzeigepixel in Übereinstimmung mit der örtlichen
Orientierung der Oberfläche übersetzt.
-
In Verbindung mit der Texturabbildung
benutzen viele Grafiksubsysteme das bilineare Filtern, das Anti-Aliasing
und das Mip-Mapping, um die Erscheinung von dargestellten Bildern
weiter zu verbessern. Die bilineare Filterung verbessert die Erscheinung
von texturabgebildeten Oberflächen
durch Betrachten der Werte einer Anzahl von benachbarten Texeln
(z. B. vier), um den Wert der angezeigten Pixel zu bestimmen. Bilineares
Filtern kann die "Blockartigkeit" etwas reduzieren,
die aus der Einzelpunktabfrage resultiert, wenn benachbarte Anzeigepixelwerte
durch ein einzelnes Texel definiert werden.
-
Wie vorher beschrieben wurde, bezieht
sich das Aliasing auf die gezackten Kanten, die aus der Anzeige
eines glatten Objekts auf einer Computeranzeige resultieren. Aliasing
kann insbesondere an den Kanten von Texturabbildungen verwirrend
sein. Das Anti-Aliasing (d. h. das Minimieren der Erscheinung von
gezackten Kanten) verhindert diese Ablenkung durch Reduzieren des
Kontrasts zwischen den Kanten, wo unterschiedliche Abschnitte des
Texturabbilds sich treffen. Dies wird typischerweise durch Einstellen
der Pixelwerte an oder nahe der Kante verwirklicht.
-
Das Mip-Mapping beinhaltet das Speichern
mehrerer Kopien von Texturabbildern, die jeweils mit einer unterschiedlichen
Auflösung
digitalisiert sind. Wenn ein texturabgebildetes Polygon kleiner
als das Texturbild selbst ist, können
unerwünschte
Effekte während
der Texturabbildung auftreten. Das Mip-Mapping verhindert dieses
Problem durch Bereitstellen einer großen Version einer Texturabbildung
für die
Verwendung, wenn das Objekt nahe bei dem Betrachter (d. h. groß) ist und
kleineren Versionen des Texturabbilds für die Verwendung, wenn das
Objekt von dem Blick aus schrumpft.
-
Eine Mip-Map kann als eine Pyramide
von gefilterten Versionen derselben Texturabbildung visualisiert werden.
Jede Abbildung hat die halbe lineare Auflösung ihrer vorherigen Abbildung
und besitzt daher ein Viertel der Anzahl von Texeln. Die Speicherkosten
dieser Organisation, in der das gröbste Niveau nur ein Texel hat,
beträgt
4/3 (d. h. 1 + 1/4 + 1/16 + ...) der Kosten der ursprünglichen
Abbildung. Das Akronym "Mip" steht für "multum in parvo", eine lateinische
Phrase, die "viele
Dinge in kleinem Raum" bedeutet.
Das Mip-Map-Schema stellt somit vorgefilterte Texturen zur Verfügung, wobei
eine hiervon in Echtzeit für
die Verwendung bei der Darstellung ausgewählt wird. Im allgemeinen wird
der gewünschte
Grad nicht exakt an eines der vorbestimmten Niveaus in der Mip-Map
passen. Die Interpolation kann somit involviert sein, um den gewünschten
Grad zu berechnen. Die bilineare Interpolation kann verwendet werden,
falls der nachzuschlagende Texel nicht exakt auf den ganzzahligen
Grenzen der vorbestimmten Mip-Map-Niveaus liegt. Ähnliche
zweidimensionale lineare Interpolationen werden in jeder Mip-Map
berechnet, wenn skalierte (U, V) Werte für die Texturnachschlagtabelle
keine ganzzahligen Werte sind. Um Kontinuität sicherzustellen, wenn sich
die Bilder (z. B. während
der Animation) schnell verändern,
werden die Effekte der vier Texel, die die skalierten (U, V) Werte
umschließen,
betrachtet, basierend auf ihren linearen Abständen von dem Bezugspunkt im
Texelraum. Beispielsweise werden, wenn die skalierten (U, V) Werte
(3, 7; 6, 8) sind, die gewichteten Durchschnitte der Texel (3, 6),
(4, 6), (3, 7) und (4, 7) genommen.
-
In 22 ist
eine Reihe von Mip-Maps gezeigt. Wie die Figur darstellt, ist jedes
Mip-Map ein zweidimensionales Bild, wobei jedes nachfolgende Mip-Map
die halbe Größe des vorherigen
hat. Beispielsweise, falls das Niveau 0 (d. h. das Texturabbild 20)
16 × 16
Texel beträgt,
beträgt
das Niveau 1 (Mip-Map 22) 8 × 8 Texel, das Niveau 2 (Mip-Map 24)
beträgt
4 × 4
Texel, das Niveau 3 (Mip-Map 26)
beträgt
2 × 2
Texel und das Niveau 4 (Mip-Map 28) ist ein einzelnes Texel.
Jedes nachfolgende Mip-Map ist halb so groß wie das vorherige Mip-Map.
Somit hat jedes nachfolgende Mip-Map nur ein Viertel des Bereichs,
der Anzahl von Texeln und der Auflösung des vorherigen Mip-Maps.
Es sei jedoch bemerkt, daß andere
Verhältnisse
ebenso möglich
sind und daß Mip-Maps
nicht quadratisch sein müssen.
-
Die trilineare Filterung kann verwendet
werden, um Kanten von Polygonen, die mittels Mip-Map abgebildet sind, zu glätten und
zu verhindern, daß sich
bewegende Objekte ein ablenkendes "Blitzen" zeigen, das von fehlangepaßten Texturzwischenabschnitten
resultiert. Das trilineare Filtern beinhaltet das Mischen von Texeln
von zwei benachbarten Mip-Maps (z. B. das Mischen der Texel von
der Mip-Map 20 und der Mip-Map 22). Die Texeladressen
in den benachbarten Mip-Maps stehen durch ihre Adressen miteinander
in Verbindung. Beispielsweise entspricht ein bestimmtes Texel bei
der Adresse (U, V) im Niveau N dem Texel bei der Adresse (U/2, V/2)
im Niveau N + 1. Dies wird durch die Texel 30 und 32 in
der Figur dargestellt (jeweils mit einem "x" markiert).
-
Die gegenwärtige Texturabbildungshardware
tendiert dazu, einfache bi- oder trilineare Interpolationen von
Mip-Map-texturierten Bildern zu implementieren. Bilineare Filter
sind jedoch effektiv "Zelt"-Filter, die im Texturraum,
nicht im Schirmraum, gleichförmig
sind. Gleichförmigkeit
im Schirmraum tendiert jedoch zu realistischeren Bildern.
-
Gegenwärtig wird der Großteil der
Texturabbildungen hoher Qualität
tatsächlich
durch Software durchgeführt.
Während
eine Vielfalt von unterschiedlichen Techniken verwendet wird, können die
meisten allgemein als "elliptische
Filter" (d. h. elliptisch
im Texturraum, jedoch kreisförmig
im Schirmraum) klassifiziert werden. Diese elliptischen Filtern
erzeugen realistischere Resultate, sind jedoch um einiges komplexer
als ein Zelt-Filter. Diese Komplexität hat die meisten Echtzeithardwareimplementierungen
verhindert.
-
In einer Ausführungsform kann das Grafiksystem 112 derart
konfiguriert sein, daß es
die Texturabbildung mit hoher Qualität in Echtzeit durchführt durch
Umwandeln von Texeln in Mikropolygone (z. B. Dreiecke) mit in Darstellungszeit
bzw. Render-Zeit. Diese Mikropolygone werden dann unter Verwendung
der bilinearen Interpolation in dem supergesampleten Abfragepufferspeicher 162 dargestellt.
Das letzte Filtern (das das Hochqualitätsbild erzeugt) wird aufgeschoben,
bis die Faltung durchgeführt
wird. Dies erlaubt es, daß alle
Abfragen, die den letzten Pixelwert beeinflussen könnten, in
den Abfragepufferspeicher 162 geschrieben werden, bevor
der Pixelwert berechnet wird. Die letzte Filterung kann dann mit
Vorteil im Schirmraum durchgeführt
werden. In einer Ausführungsform
können
100 bis 200 Abfragen gefiltert werden, um ein einzelnes Pixel zu
erzeugen. Dies kann die Erscheinung des endgültigen Bildes in einigen Ausführungsformen
signifikant verbessern, wenn sie mit traditionellen Hardwaretexturabbildungssystemen
verglichen wird, die nur vier bis acht Texel filtern, um ein Pixel
zu erzeugen.
-
In einer Ausführungsform kann das Grafiksystem 112 ebenso
derart konfiguriert sein, daß es
eine oder mehrere der folgenden fortgeschrittenen Texturtechniken
durchführt:
Erhöhungsabbildung
bzw. Bump-Mapping, Verschiebungsabbildung und mehrfache Texturabbildung.
-
B. Erhöhungsabbildung
-
Das Bump-Mapping bzw. Erhöhungsabbilden
stört die
Normale auf einer Oberfläche,
um das zu erzeugen, was als kleine Falten oder Erhöhungen auf
der Oberfläche
erscheint. Diese Technik versagt nahe der Silhouette eines Objekts
(da die Silhouette des Objekts tatsächlich unverändert ist,
die enthaltenen Erhöhungen
durch das Schattieren sind in der Geometrie nicht sichtbar) und
bei nahezu Glanzwinkeln zu der Oberfläche (da es kein Blocken oder
keine geometrische Abschwächung
aufgrund der Erhöhungen
gibt). Das Bump-Mapping ist im allgemeinen trotzdem eine effektive
Art, kleine Deformationen einer Form zu implizieren, ohne die Geometrie
tatsächlich
zu verändern,
solange die Erhöhungen
sehr klein sind und das Objekt mit einem gewissen Abstand entfernt
ist.
-
C. Verschiebungsabbildung
-
Die Verschiebungsabbildung verschiebt
tatsächlich
die Oberfläche
um eine gegebene Größe in einer gegebenen
Richtung. Das Darstellen von verschiebungsabgebildeten Oberflächen kann
für einige
Systeme eine Herausforderung darstellen, insbesondere wenn die Verschiebungen
groß werden.
Die Ergebnisse sind häufig
viel besser als mit Erhöhungsabbildung,
daß verschiebungsabgebildete
Objekte tatsächlich
Selbstausblendungs- und möglicherweise
selbstschattierende Merkmale zeigen sowie auch eine veränderte Silhouette.
-
D. Mehrfache Texturabbildung
-
Die mehrfache Texturabbildung beinhaltet
das Mischen einer Anzahl unterschiedlicher Texturabbildungen, um
die Textur zu bilden, die an das Objekt angewendet wird. Beispielsweise
kann eine Strukturtextur mit einer Marmortextur vermischt werden,
so daß es
scheint, daß die
Struktur halbtransparent ist und ein Marmorobjekt bedeckt.
-
Ein anderes Beispiel der mehrfachen
Texturabbildung ist das Nehmen einer Texturabbildung von entsprechenden
hellen und dunklen Gebieten (d. h. eine Niederfrequenzschattenabbildung)
und dann Mischen dieser Schattenabbildung mit einer Textur (z. B.
einer Hochfrequenztexturabbildung). Das mehrfache Texturabbilden
kann ebenso für "Mikrodetail"-Anwendungen verwendet
werden. Wenn beispielsweise ein Betrachter eine auf eine Textur
abgebildete Wand zoomt, kann die Texturabbildung für die Wand
mit einer Intensitätsabbildung
niedriger Auflösung
vermischt werden, um realistischere Fehlerstellen und Variationen
in der Endbearbeitung der Wand bereitzustellen.
-
E. Dekomorimierung von
komprimierten Grafikdaten
-
Wie vorher erwähnt wurde, können einige
Ausführungsformen
des Grafiksystems 112 derart konfiguriert werden, daß sie komprimierte
3D-Daten empfangen und dekomprimieren. Dies kann mit Vorteil die Speicherbandbreitenerfordernisse
innerhalb des Grafiksystems 112 reduzieren sowie auch Objekten
mit einer großen
Anzahl von Polygonen erlauben, daß sie in Echtzeit dargestellt
werden.
-
F. Phong-Shading pro Pixel
-
Wie vorher erwähnt wurde, kann das Grafiksystem 112 in
einigen Ausführungsformen
derart konfiguriert sein, daß es
Texturen in Unterpixeldreiecksfragmente aufbricht (siehe Texturfilterung
oben). Durch Kombinieren dieses Merkmals mit der geometrischen Komprimierung
(siehe Dekomprimierung von komprimierten Grafikdaten oben) und einer
extrem hohen Dreiecksdarstellungsrate kann das Grafiksystem 112 in
einigen Ausführungsformen
in der Lage sein, eine Bildqualität zu erreichen, die mit der
des Phong-Shading pro Pixel rivalisiert, dieser gleicht oder sie
sogar übertrifft.
Diese Hochqualitätsbilder
können
erzielt werden durch Feintesselierung der darzustellenden Objekte
unter Verwendung von Mikropolygonen. Durch das Feintesselieren der
Objekte wird ein glatteres und genaueres Bild erzeugt ohne die Notwendigkeit
des Phong-Shadings pro Pixel. Beispielsweise kann die Hardware in
dem Grafiksystem derart konfiguriert sein, daß sie automatisch alle Grundelemente
in Mikrodreiecke umsetzt (d. h. Dreiecke, die eine Größe von einem
Pixel oder darunter haben), bevor das Beleuchten und die Texturbildung
durchgeführt
werden.
-
G. Soft-Key-Ausgabe
-
In manchen Umgebungen können Benutzer
des Grafiksystems die Fähigkeit
wünschen,
mit Anti-Aliasing dargestellte Bilder hoher Qualität auszugeben,
die von einem Live-Videostrom überlagert
werden. Während
einige Systeme existieren, die diese Fähigkeit anbieten, sind sie
typischerweise sehr teuer. In einer Ausführungsform kann das Grafiksystem 112 derart
konfiguriert werden, daß es
kostengünstig
Overlays mit hoher Qualität
erzeugt. In einer Ausführungsform
kann das Gra fiksystem 112 derart konfiguriert sein, daß es einen genauen
Soft-Edge-Alpha-Key-Effekt für
den Videoausgang und einen Abwärtsstrom-Alpha-Key-Effekt
erzeugt. Der Alpha-Key-Effekt kann durch die Einheiten 170 zur
Umrechnung von Abfrage in Pixel erzeugt werden, die eine Filterfunktion
auf den Alpha-Werten durchführen
können,
die in dem Abfragepufferspeicher 162 abgelegt sind, um "Alpha-Pixel" zu bilden. Jedes
Alpha-Pixel kann einem bestimmten Ausgangspixel entsprechen. In
einer Ausführungsform
können
die Alpha-Pixel ausgegeben werden unter Verwendung von DAC 178A,
während
die Farbausgangspixel durch den DAC 178B ausgegeben werden.
-
In einer anderen Ausführungsform
wird dieser Soft-Edge-Alpha-Key-Overlay dann in einem digitalen Format
zu einer externen Mischeinheit ausgegeben, die das Overlay mit einer
Live-Videozuführung mischt.
Die Alpha-Pixel, die jedem Ausgangspixel entsprechen, werden bestimmen,
wieviel des Livevideos durch die entsprechenden Pixel des Overlays
durchscheint. In einer Ausführungsform
werden beispielsweise die Pixel umso opaker, je größer die
Alpha-Pixelwerte werden (und umso weniger scheint die Live-Videozuführung durch
die Pixel). In gleicher Weise werden die Pixel umso transparenter,
je kleiner die Alpha-Pixelwerte werden. Andere Ausführungsformen
sind ebenso möglich
und wurden in Betracht gezogen. Beispielsweise könnte die Live-Videozuführung in
das Computersystem 80 oder das Grafiksystem 112 eingegeben
werden. Das Grafiksystem 112 könnte dann die beiden Quellen
intern mischen und das kombinierte Videosignal ausgeben.
-
H. 12-Bit effektiver linearer
Ausgang
-
Während
eine 12-Bit- (lineares Licht) Farbtiefe (d. h. 12 Bits von Daten
für sowohl
Rot, Grün
als auch Blau) in vielen Ausführungsformen
als ideal erachtet wird, können
mögliche
Begrenzungen in den Abfragespeichern 162 den Speicherplatz
pro Abfrage auf einen kleineren Wert (z. B. 10 Bits pro Farbkomponente)
begrenzen. In einer Ausführungsform
kann das Grafiksystem 112 derart konfiguriert sein, daß es ein
Dithering der Abfragen von 12 Bits zu 10 Bits durchführt, bevor
diese in dem Abfragepufferspeicher 162 abgelegt werden.
Während
der letzten Anti-Aliasing-Berechnung in den Einheiten 170A–D zur
Umrechnung von Abfrage in Pixel können die zusätzlichen
Bits effektiv wiederhergestellt werden. Nach der Normalisierung
können
die resultierenden Pixel genau 12 Bits haben (lineares Licht). Die
Ausgangspixel können
zu nicht linearem Licht umgewandelt werden und nach der Übersetzung
können
die Ergebnisse genau 10 Bits (nicht lineares Licht) betragen. Nach
der Umwandlung vom linearen in das nicht lineare Licht können somit
die resultierenden Pixel genau 10 Bits haben.
-
I. Integrierte Augen-Kopf-Hand-Verfolgung
-
Wie vorher bemerkt wurde, können einige
Ausführungsformen
des Grafiksystems 112 derart konfiguriert sein, daß sie die
Augen-, Kopf- und/oder Handverfolgung unterstützen durch Modifizieren der
Anzahl von Abfragen pro Pixel an dem Foveationspunkt des Betrachters.
-
J. Alpha-Blending, Fogging
und Depth-Cueing
-
Alpha-Blending ist eine Technik,
die die Transparenz eines Objekts steuert, was die realistische
Darstellung von durchscheinenden Oberflächen, wie z. B. Glas oder Wasser,
erlaubt. Zusätzliche
atmosphärische Effekte,
die in Darstellungsmaschinen anzutreffen sind, beinhalten das Fogging
und das Depth-Cueing. Beide Techniken verdunkeln ein Objekt, wenn
es sich von dem Betrachter weg bewegt. Unschärfe steht ebenso damit in Beziehung
und kann implementiert werden durch Durchführen einer Tiefpassfilterung
während
des Filter- und Abfrage-in-Pixel-Berechnungsprozesses
(z. B. durch die Verwendung einer größeren Ausdehnung während des
Filterprozesses) durch die Abfrage-in-Pixel-Berechnungseinheiten 170A–D.
Ein Alpha-Wert kann erzeugt werden, der verwendet werden kann, um
die gegenwärtige
Abfrage in dem Abfragepufferspeicher zu mischen.
-
Obgleich die obigen Ausführungsformen
in beträchtlichem
Detail beschrieben wurden, sind andere Versionen möglich. Zahllose
Variationen und Modifikationen ergeben sich dem Fachmann, sobald
er die obige Beschreibung vollständig
verstanden hat. Es ist beabsichtigt, daß die folgenden Ansprüche derart
interpretiert werden, daß sie
all solche Variationen und Modifikationen umfassen. Es sei bemerkt,
daß die
hier verwendeten Überschriften
nur zu organisatorischen Zwecken verwendet wurden und nicht dazu
gedacht sind, die bereitgestellte Beschreibung oder die hier angefügten Ansprüche zu begrenzen.