-
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 sind daher weit effizienter bei graphischen Operationen als
der Universalprozessor des Computers. 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 60Hz 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 Anzeigevorrichtung 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 Darstellungspufterspeicher 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.
-
Die US-Patentanmeldung Nr. 09/251,453
mit dem Titel "Graphics
System with Programmable Real-Time Sample Filtering" zeigt ein graphisches
Computersystem, das einen su pergesampleten Abfragepufferspeicher
und eine Einheit zur Umrechnung von Abfrage in Pixel für das Aktualisieren
der Anzeige verwendet. Der Grafikprozessor erzeugt eine Mehrzahl
von Abfragen und legt diese in einen Abfragepufferspeicher ab. Der
Grafikprozessor erzeugt und speichert vorzugsweise mehr als eine
Abfrage für
zumindest eine Untermenge der Pixelorte auf der Anzeige. Der Abfragewertpufterspeicher
ist somit ein supergesampleter Abfragewertpufferspeicher, der eine
Anzahl von Abfragewerten speichert, die weit größer als die Anzahl von Pixelorten
auf der Anzeige sein kann. Die Einheit zur Umrechnung von Abfragewert
in Pixel ist derart ausgelegt, daß sie die Abfragewerte von
dem supergesampleten Abfragewertpufferspeicher liest und die Abfragewerte
filtert oder faltet in entsprechende Ausgangspixel, wobei die Ausgangspixel
dann bereitgestellt werden, um die Anzeige zu aktualisieren. Die
Einheit zur Umrechnung von Abfragewert in Pixel wählt einen
oder mehrere Abfragewerte aus und filtert sie, um ein Ausgangspixel
zu erzeugen. Die Einheit zur Umrechnung von Abfragewert in Pixel
kann betrieben werden, um Abfragewerte zu erhalten und Pixel zu
erzeugen, die direkt der Anzeige zur Verfügung gestellt werden, ohne
daß ein Einzelbildpufferspeicher
dazwischengeschaltet ist.
-
Die britische Patentanmeldung GB-A-2,278,524
(Nihon Unisys Ltd) beschreibt ein Verfahren und eine Vorrichtung
für das
Darstellen bzw. das Rendering von visuellen Bildern, das die Gebietsberechnung
und das Blending bzw. Mischen von partiellen Pixellisten einsetzt
für das
Anti-Aliasing und die Transparenz. Eine Darstellungspipeline bildet
Polygonkanteninterpolation, Pixelblending und Anti-Aliasing-Darstellungsoperationen
in der Hardware. Grundfunktionspolygone werden in Unterpixelkoordinaten
umgewandelt und werden dann zerteilt und geformt, um "Pixlink"-Elemente zu erzeugen, die
auf jedem Pixel abgebildet werden. Grundelemente werden entlang
Pixelgrenzen mit RGBZ-Werten partitioniert, die für jedes
Pixel, das von einem Grundelement geschnitten wird, berechnet.
-
Die europäische Patentanmeldung EP-A-0,463,700
((Philips) beschreibt ein Verfahren für das Erzeugen eines Bildes
von Objekten in einem dreidimensionalen Raum für die Anzeige auf einer zweidimensionalen
Pixelanordnung. Das Verfahren ermittelt N-Wiedergaben des Bildes,
wobei jede Wiedergabe eine Subpixelverschiebung gegenüber der vorherigen
Wiedergabe aufweist, um den Effekt der Anti-Aliasingfilterung zu
bewirken. Für
jedes Bild, das auf dem Anzeigegerät erscheint, wird ein Satz
von N-Zwischenbildern dargestellt und ein Modul liefert für jede der
N-Darstellungen einen unterschiedlichen vorbestimmten Offset-Wert,
so daß sich
der Abfragepunkt für
jeden Pixel zwischen den Darstellungen bewegt. Ein Bildakkumulierungspufferspeicher
addiert die Zwischenbilder, wenn sie erzeugt werden, auf, so daß nach N-Darstellungen der
Pufferspeicher ein Bild enthält,
das overgesampelt wurde und gefiltert wurde in Übereinstimmung mit der Abfragepunktverteilung und
jeglichen Wichtungen, die mit jedem Abfragepunkt verbunden sein
können.
-
Es wäre wünschenswert, diese verbesserte Grafikarchitektur
zu verwenden, um weitere verbesserte Anzeigefähigkeiten zur Verfügung zu
stellen, einschließlich
reduzierte Artefakte, wenn z. B. die Darstellungsrate von der Pixelerzeugungsrate
abweicht, wie auch verbesserte Anzeigeeffekte, wie z. B. das Schwenken,
das Zoomen und dergleichen einschließlich des 2D-Schwenkens und -zoomens
als auch der 3D-Bewegung, z. B. Positions- und Drehveränderungen
um einen ersten Knotenpunkt einer Kamera.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Der erste Aspekt der Erfindung stellt
ein Grafiksystem zur Verfügung
mit: einem Grafikprozessor, der derart betreibbar ist, daß er eine
Mehrzahl von Abfragen bzw. Momentwerten darstellt, einem Abfragewertpufterspeicher,
der mit dem Grafikprozessor verbunden ist, um die Abfragen zu speichern,
und einer Einheit zur Umrechnung von Abfragewert auf Pixel, die
mit dem Abfragewertpufferspeicher verbunden ist, wobei die Einheit
zur Umrechnung von Abfragewert bzw. Momentwert in Pixel so betreibbar
ist, daß sie
Momentwerte von dem Momentwertpufferspeicher auswählt und
filtert, um Ausgangspixel für die
Anzeige zu erzeugen, wobei die Einheit zur Berechnung von Momentwert
auf Pixel so betreibbar ist, daß sie
zumindest einen ersten der Ausgangspixel durch Auswählen und
Filtern eines Bereiches der gespeicherten Momentwerte erzeugt, der
eine Filterausdehnung abdeckt, die größer oder kleiner als ein einzelner
Pixelbereich in dem Abfragepufferspeicher ist, wobei die Einheit
zur Umrechnung von Momentwert auf Pixel derart betreibbar ist, daß sie einen
oder mehrere der (i) Filterzentrumsorte, an denen die Filterung
der gespeicherten Momentwerte angewendet wird, der (ii) Filterwichtungsfaktoren,
die in der Filterung der gespeicherten Momentwerte verwendet werden,
und (iii) den Radius der Filterausdehnung zwischen benachbarten
Einzelbildern einstellt, um Artefakte zu reduzieren.
-
Ein anderer Aspekt der Erfindung
stellt ein Verfahren zum Erzeugen von Pixeln für die Anzeige in einem Grafiksystem
zur Verfügung,
wobei das Verfahren aufweist: Darstellen einer Mehrzahl von Abfragewerten
in einen Abfragepufferspeicher, Auswählen und Filtern von gespeicherten
Abfragewerten aus dem Abfragepufterspeicher, um Ausgangspixel für die Anzeige
zu erzeugen, wobei das Filtern das Filtern eines Abschnittes der
gespeicherten Momentwerte umfaßt,
der eine Filterausdehnung abdeckt, die größer oder kleiner als ein einzelner
Pixelbereich in den Momentwertpufferspeicher ist, um zumindest ein
erstes der Ausgangspixel zu erzeugen, wobei das Filtern weiterhin
aufweist, das Einstellen von einem oder mehreren der (i) Filterzentrumsorte,
an denen das Filtern der gespeicherten Momentwerte angewendet wird,
(ii) Filtergewichtungsfaktoren, die bei der Filterung der gespeicherten
Momentwerte verwendet werden, und (iii) einen Radius der Filterausdehnung
zwischen benachbarten Einzelbildern, um Artefakte zu reduzieren.
-
Ausführungsformen der Erfindung
stellen ein Computergrafiksystem zur Verfügung, das einen supergesampleten
Abfragewertpufferspeicher und eine programmierbare Einheit zur Umrechnung
von Abfrage in Pixel für
die Aktualisierung der Anzeige verwendet, wobei das Grafik system
eine verbesserte Speicherung von Positionsinformation der Abfragen
in dem Abfragepufterspeicher hat. In einer Ausführungsform kann das Grafiksystem
einen Grafikprozessor, einen supergesampleten Abfragepufterspeicher
und eine Einheit zur Umrechnung von Abfrage in Pixel haben. Der
Grafikprozessor erzeugt vorzugsweise eine Mehrzahl von Abfragen
und speichert diese in einem Abfragewertpufferspeicher. Vorzugsweise
erzeugt und speichert der Grafikprozessor mehr als eine Abfrage
für zumindest
eine Untersatz der Pixelorte auf der Anzeige. Der Abfragepufferspeicher ist
somit eine supergesampleter Abfragepufferspeicher, der eine Anzahl
von Abfragen speichert, die in manchen Ausführungsformen weitaus größer als
die Anzahl von Pixelorten auf der Anzeige sein kann. In anderen
Ausführungsformen
kann die Gesamtzahl von Abfragen näher an, gleich zu oder sogar
weniger als die Gesamtzahl von Pixelorten auf der Anzeigevorrichtung
sein, die Abfragen können
jedoch dichter positioniert sein in bestimmten Bereichen und weniger
dicht positioniert sein in anderen Bereichen.
-
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. 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.
-
Die Einheit zur Umrechnung von Abfrage
in Pixel kann auf die Abfragen von dem supergesampleten Abfragepufferspeicher
zugreifen, eine Filteroperation durchführen und dann die resultierenden Ausgangspixel
direkt der Anzeige zur Verfügung
stellen, vorzugsweise in Echtzeit. Das Grafiksystem kann mit einem
konventionellen Einzelbildpufferspeicher betrieben werden, d.h.
das Grafiksystem braucht nicht einen konventionellen Einzelbildpuffer benutzen,
der die tatsächlichen
Pixelwerte, die auf dem Display aktualisiert werden, speichert.
Es sei bemerkt, daß manche
Anzeigen interne Einzelbildpufferspeicher haben, diese werden jedoch
als integraler Teil des Anzeigegerätes und nicht des Grafiksystems
angesehen. Die Einheiten zur Umrechnung von Abfrage in Pixel können somit
jedes Pixel für
jede Schirmaktualisierung auf einer Echtzeitbasis oder während der Übertragung
aktualisieren.
-
In einer Ausführungsform ist die Einheit
zur Umrechnung von Abfrage in Pixel derart betreibbar, daß sie das
Filtern von gespeicherten Abfragen einstellt, um Artefakte zu reduzieren
oder einzustellen, z. B. ist sie derart betreibbar, daß sie selektiv
das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern
einstellt, um Artefakte zwischen den benachbarten Einzelbildern
zu reduzieren. Beispielsweise kann die Einheit zur Umrechnung von
Abfrage bzw. Momentwert in Pixel einen ersten Satz von gespeicherten
Abfragen auswählen
und filtern, um erste Ausgangspixel für das Display zu erzeugen unter Verwendung
eines ersten Filters und kann später
einen zweiten Satz von gespeicherten Abfragewerten auswählen und
filtern, um zweite Ausgangspixel für das Display bzw. die Anzeige
unter Verwendung eines zweiten Filtern, der sich von dem ersten
Filter unterscheidet, zu erzeugen. In einer Ausführungsform kann die Einheit
zur Umrechnung von Abfrage in Pixel das Filtern von gespeicherten
Abfragen in benachbarten Einzelbildern durch Simulation von verschiedenen
Schirmeffekten oder Anzeigeeffekten, wie z. B. das Schwenken, das
Zoomen und dergleichen, einschließlich das 2D-Schwenken und -Zoomen
sowie auch der 3D-Bewegung, z. B. Positions- und Rotationsveränderungen
um einen ersten Knotenpunkt einer Kamera für reduzierte Artefakte, selektiv
einstellen.
-
Die Einheit zur Umrechnung von Abfrage
in Pixel stellt vorzugsweise selektiv die Zentrumsorte (Zentren)
in dem Abfragepufferspeicher ein, auf die der Filter (z. B. ein
Faltungsfilter) während
der Filterung von gespeicherten Abfragen angewendet wird, um Artefakte
zu reduzieren. Die Zentrumsorte, auf die der Faltungsfilter angewendet
wird, entsprechen den Zentren der Ausgangspixel, die erzeugt werden. Die
Einheit zur Umrechnung von Abfrage in Pixel beinhaltet eine Adreßerzeugungslogik
für die
Erzeugung von Adressen entsprechend der Zentrumsorte, wobei der
Faltungsfilter an diese Zentrumsorte bei der Erzeugung von Ausgangspixeln
für die
Anzeige angewendet wird. Die Adreßerzeugungslogik ist programmierbar,
um Adressen an ausgewählten
Unterpixelpositionen entsprechend den gewünschten Zentren zu erzeugen.
In der bevorzugten Ausführungsform
ist die Unterpixelpositionsstartadresse, die von der Adreßerzeugerlogik
erzeugt wird, programmierbar und die Pixelschrittgröße kann
konstant bleiben. Die Einheit zur Umrechnung von Abfrage in Pixel
ist derart betreibbar, daß sie
selektiv die Zentrumsorte einstellt, an denen der Filter in einer
oder mehreren der X- oder Y-Richtung angewendet wird, und kann die
Zentrumsorte der Filter über
eine Unterpixeldistanz einstellen. Die Einheit zur Umrechnung von
Abfrage in Pixel kann einen Faltungsfilter verwenden bei der Filterung
der Abfragen oder andere Typen von Filtern.
-
In dieser Ausführungsform kann der Abfragepufferspeicher
Abfragen speichern entsprechend einem Gebiet, das größer als
ein sichtbarer Bereich der Anzeige ist, und eine oder mehrere der
Abfragen von außerhalb
des (vorher) sichtbaren Bereiches der Anzeige können verwendet werden bei der
Erzeugung von Ausgangspixeln entsprechend der eingestellten Faltungszentren.
Das Grafiksystem kann ebenso derart betrieben werden, daß es selektiv
den Videotakt einstellt, um die Einstellung der Zentrumsorte der
Faltungsfilter während
des Filterns der gespeicherten Abfragewerte zu kompensieren.
-
Die Einheit zur Umrechnung von Abfrage
in Pixel kann Ausgangspixel mit der gleichen Geschwindigkeit erzeugen
wie der Grafikprozessor die Abfragewerte in dem Abfragewertpufferspeicher
darstellt. Wenn beispielsweise bei einem gegenwärtigen Satz von abgespeicherten
Abfragewerten festgestellt wird, daß er ähnlich oder identisch zu einem
vorherigen Satz von abgespeicherten Abfragewerten ist, die vorher
für die
Erzeugung von Ausgangspixeln in einem vorherigen Einzelbild verwendet
wurden, kann die Einheit zur Umrechnung von Abfrage in Pi xeln selektiv
das Filtern des gegenwärtigen
Satzes von abgespeicherten Abfragewerten in einem gegenwärtigen Einzelbild
einstellen, um Artefakte zu reduzieren. Wenn ein Satz von abgespeicherten
Abfragewerten früher
für die
Erzeugung von ersten Ausgangspixeln in einem vorherigen Einzelbild
verwendet worden ist, dann kann somit die Einheit zur Umrechnung
von Abfrage in Pixel selektiv das Filtern eines ähnlichen Satze (oder des gleichen
Satzes) von abgespeicherten Abfragewerten einstellen, um unterschiedliche
Pixel in einem nachfolgenden Einzelwert zu erzeugen, um Artefakte
zu reduzieren. Somit arbeitet in Situationen, in der der Knotenpunkt
der Kamera im wesentlichen zwischen benachbarten Einzelbildern fixiert bleibt,
die vorliegende Erfindung derart, daß sie den Knotenpunkt der Kamera
effektiv geschickt variiert, um jegliche Artefakte zu entfernen,
die zwischen benachbarten Einzelbildern auftreten können.
-
Die Einheit zur Umrechnung von Abfrage
in Pixel kann mit einer unterschiedlichen (z. B. höheren) Geschwindigkeit
arbeiten als die Darstellungsrate. Beispielsweise kann die Einheit
zur Umrechnung von Abfragewert in Pixel Ausgangspixel mit einer
unterschiedlichen Geschwindigkeit erzeugen als der Grafikprozessor
die Abfragewerte in dem Abfragewertpufferspeicher darstellt, z.
B. ist der Grafikprozessor betreibbar, um die Mehrzahl von Abfragewerten
in dem Abfragepufferspeicher mit einer ersten Geschwindigkeit darzustellen,
und die Einheit zur Umrechnung von Abfragewerte zu Pixel ist betreibbar, um
Ausgangspixel bei einer zweiten größeren Geschwindigkeit zu erzeugen.
Dies erlaubt es der Faltungspipeline in der Einheit zur Umrechnung
von Abfrage in Pixel während
der Übertragung
zu arbeiten, unabhängig
von der Darstellungsgeschwindigkeit. In diesem System ist die Einheit
zur Umrechnung von Abfrage in Pixel derart betreibbar, daß sie selektiv das
Filtern von abgespeicherten Abfragewerten zwischen benachbarten
Einzelbildern durchführt,
wie oben beschrieben wurde, um Artefakte zu reduzieren. Somit ist,
wo bestimmt wird, daß ein
erster Satz von gespeicherten Abfragewerten früher bei der Erzeugung von Ausgangspixeln
in einem vorherigen Einzelbild verwendet wurde, die Einheit zur
Umrechnung von Abfragewert zu Pixel derart betreibbar, daß sie selektiv
das Filtern des ersten Satzes von gespeicherten Abfragewerten in
einem gegenwärtigen (oder
nachfolgenden) Einzelbild einstellt, um Artefakte zu reduzieren.
Die Abfragewerte können
somit einmal erzeugt werden und dann zwei oder mehrere Male mit
unterschiedlichen Filtern gefaltet werden, um Artefakte zu entfernen,
bis der Grafikprozessor neue Abfragewerte in dem Abfragepufferspeicher darstellt.
-
In einer anderen Ausführungsform
ist die Einheit zur Umrechnung von Abfragewert zu Pixel derart betreibbar,
daß sie
das Filtern von abgespeicherten Abfragewerten einstellt, um einen
Anzeigeeffekt zu implementieren. Insbesondere ist die Einheit zur
Umrechnung von Abfragewert zu Pixel derart betreibbar, daß sie selektiv
das Filtern von abgespeicherten Abfragewerten in benachbarten Einzelbildern
einstellt, um einen Anzeigeeffekt zwischen den benachbarten Einzelbildern
zu implementieren. Der Anzeigeeffekt kann beinhalten das Schwenken
bzw. Panoramieren, das Zoomen, das Drehen oder das Bewegen von Szenen
u. a., einschließ lich
der 2D-Panoramierung und des -Zoomens als auch der 3D-Bewegung,
z. B. Positions- und Drehveränderungen
um einen ersten Knotenpunkt einer Kamera.
-
In dieser Ausführungsform kann der Abfragewertpufferspeicher
Abfragewerte speichern entsprechend eines Bereichs, der größer als
ein sichtbarer Bereich der Anzeige ist, und ein oder mehrere Abfragewerte
von außerhalb
der (vorher) sichtbaren Fläche
der Anzeige können
verwendet werden, um die Anzeigeeffekte zu implementieren. Die Einheit zur
Umrechnung von Abfragewert in Pixel kann das Filter einstellen durch
Einstellen von einem oder mehreren der Positionen (Zentren) der
Pixel, des Radius des Filters und des Abstandes zwischen den Pixeln.
Die Einheit zur Umrechnung von Abfragewerten in Pixel kann das Filtern
von gespeicherten Abfragewerten einstellen, um die Anzeigeeffekte
auf einer Bruchteilpixelgrenze zu implementieren. Beispielsweise
kann die Einheit zur Umrechnung von Abfrage in Pixel selektiv das
Filtern von gespeicherten Abfragewerten in benachbarten Einzelbildern
einstellen, um die Panoramierung bzw. das Schwenken oder das Zoomen
zwischen den benachbarten Einzelbildern auf einer Bruchteilpixelgrenze
zu bewirken.
-
Ein Vorteil dieser Erfindung ist
eine glattere Panoramierung oder ein glatteres Zoomen, wenn die Abfragewerte
mit einer geringeren Rate als die Faltung dargestellt werden. Man
nehme beispielsweise eine Situation an, bei der die Kamera in eine
bestimmte Richtung geschwenkt wird oder heran- oder herausgezoomt
wird, und die Abfragewerte mit der halben Geschwindigkeit der Faltung
dargestellt werden. In diesem Fall können zwei Faltungsoperationen
auf den selben Daten durchgeführt
werden und dann tritt ein Sprung zu der nächsten Schwenkposition in dem
nächsten
dargestellten Einzelbild auf. Gemäß der vorliegenden Erfindung
kann die Einheit zur Umrechnung von Abfragewert zu Pixel derart
arbeiten, daß die
Faltungszentren in dem zweiten Faltungszyklus eingestellt werden
(z. B. durch Bewegung von 10,5 Pixeln nach rechts), um die Schwenkoperation
zu bewirken, selbst wenn neue Daten entsprechend dem Schwenk noch
nicht dargestellt wurden. Wenn somit ein Anzeigeeffekt gewünscht ist
und wenn ein erster Satz von abgespeicherten Abfragewerten früher verwendet
wurde bei der Erzeugung von Ausgangspixeln in einem vorherigen Einzelbild, ist
die Einheit zur Umrechnung von Abfragewert zu Pixel derart betreibbar,
daß sie
selektiv das Filtern des ersten Satzes von abgespeicherten Abfragewerten
in einem nachfolgenden Einzelbild einstellt, um die Anzeigeeffekte
in dem nachfolgenden Einzelbild zu implementieren.
-
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
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 Erzeugung von Ausgangspixeln kann das selektive Einstellen
der Filterung von gespeicherten Abfragewerten beinhalten, um Artefakte zu
reduzieren oder um Anzeigeeffekte zu erzeugen. Die Erzeugung von
Ausgangspixeln kann ebenso mit der gleichen oder einer unterschiedlichen
Geschwindigkeit als die Darstellungsrate arbeiten.
-
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,
-
1A stellt
ein Computernetzwerk dar, das zumindest einen Servercomputer und
ein oder mehrere Clientcomputer aufweist, wobei die Clientcomputer
eine Ausführungsform
eines Grafiksystems beinhalten,
-
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 stellt
eine traditionelle Pixelberechnung dar,
-
5A stellt
eine Ausführungsform
des Supersamplens dar, 5B stellt
eine zufällige
Verteilung von Abfragen dar,
-
6 stellt
Details einer Ausführungsform eines
Grafiksystems mit einer Ausführungsform
eines supergesampleten Abfragepufferspeichers mit variabler Auflösung dar,
-
7 stellt
Details einer anderen Ausführungsform
eines Grafiksystems mit einer Ausführungsform eines supergesampleten
Abfragepufferspeichers mit variabler Auflösung dar,
-
8 stellt
Details von drei unterschiedlichen Ausführungsformen von Abfragepositionierungsschemata
dar,
-
9 stellt
Details einer Ausführungsform eines
Abfragepositionierungsschema dar, 10 stellt
Details einer anderen Ausführungsform
eines Abfragepositionierungsschemas dar,
-
11 stellt
Details eines Verfahrens des parallelen Umwandelns von Abfragewerten
in Pixel dar,
-
11A stellt
mehrere Details der Ausführungsform
von 11 dar,
-
11B stellt
Details einer Ausführungsform eines
Verfahrens für
den Umgang mit Grenzbedingungen dar,
-
12 ist
ein Flußdiagramm,
das eine Ausführungsform
eines Verfahrens für
das Zeichnen von Abfragen in einen supergesampleten Abfragepufferspeicher
darstellt,
-
12A stellt
eine Ausführungsform
für die Codierung
von Dreieckseckpunkten dar, 13 stellt eine
Ausführungsform
eines Verfahrens für
die Berechnung von Pixeln aus Abfragewerten dar,
-
14 stellt
Details einer Ausführungsform einer
Pixelfaltung für
einen Beispielsatz von Abfragen dar,
-
15 ist
ein Flußdiagramm,
das die Einstellung der Filterung für ein Einzelbild aus Pixeln darstellt,
-
16A stellt
ein erstes Filterungsverfahren für
Abfragewerte dar, wobei die Faltungszentren auf den Behältern zentriert
sind,
-
16B stellt
einen Abschnitt des Pixelbildes dar, welches von den Abfragewerten
unter Verwendung des ersten Filterungsverfahrens von 16A erzeugt wurde, wobei
das Pixelbild einen Artefakt beinhaltet (eine Linie mit Treppeneffekt),
-
17A stellt
ein zweites Filterungsverfahren für Abfragewerte dar, wobei die
Faltungszentren relativ zu den Behältern nach links verschoben
sind,
-
17B stellt
einen Abschnitt des Pixelbildes dar, das durch die Abfragen erzeugt
wurde unter Verwendung des zweiten Filterungsverfahrens von 17A, wobei das Pixelbild
die Artefakte von 16B nicht
beinhaltet,
-
18 stellt
ein erstes Filterungsverfahren für
Abfragewerte dar, wobei die Faltungszentren auf den Behältern zentriert
sind,
-
19 stellt
ein zweites Filterverfahren für Abfragewerte
dar, um einen Zoomanzeigeeffekt zu implementieren, wobei die Faltungszentren
mit einem größeren Abstand
voneinander entfernt sind und der Filterradius erhöht wurde,
und
-
20 ist
ein Flußdiagramm,
das die Erzeugung von Anzeigeeffekten darstellt. 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-, Plasmaschirm, digitale Spiegelanzeige
(DMO) oder eine reflektive Silicium-LCD). Verschiedene Eingabegeräte können mit
dem Computersystem verbunden sein, einschließlich einer Tastatur 86 und/oder
einer Maus 88 oder einem anderen Eingabegerät (zum Beispiel
einem Trackball, einem Digitalisiertablett, einem Tablett, Eingabegeräten mit
sechs Freiheitsgraden, Kopfverfolger, Augenverfolger, Datenhandschuh,
Körpersensoren
usw.). Anwendungssoftware kann von dem Computersystem 80 ausgeführt werden,
um 3-D-Grafikobjekte
auf dem Anzeigegerät 84 anzuzeigen.
-
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, um die Qualität und den
Realismus von den Bildern, die auf der Anzeigevorrichtung 84 dargestellt
werden, zu verbessern. Die Einheit zur Umrechnung von Abfrage in
Pixel kann einen Filter oder eine Faltungspipeline oder andere Hardware
für die
Erzeugung von Pixeln in Antwort auf Abfragen in dem Abfragepufferspeicher
beinhalten. Die Einheit zur Umrechnung von Abfragewert in Pixel
kann betrieben werden, um Abfragen von dem Abfragepufferspeicher
zu erhalten und Pixel zu erzeugen, die der Anzeige direkt zur Verfügung gestellt
werden. Die Einheit zur Umrechnung von Abfrage in Pixel kann in einer „Echtzeit"- oder in einer „während der Übertragung"- Art und Weise betrieben
werden.
-
Die Begriffe „Filtern" und „Falten" werden hier austauschbar verwendet
und beziehen sich auf mathematische Manipulationen von einer oder
mehreren Abfragen, um ein Pixel zu erzeugen (beispielsweise durch
Mitteln, durch Anlegen einer Faltungsfunktion, durch Summierung,
durch Anlegen einer Filterfunktion, durch Wichten der Abfragen und
darauffolgendes Manipulieren, durch Anlegen einer Zufallsfunktion,
usw.).
-
Der Begriff „Echtzeit", so wie er hier verwendet wird, bezieht
sich auf eine Funktion, die durchgeführt wird bei oder nahe der
Aktualisierungs- bzw. Darstellungsart des Anzeigegerätes. „Während der Übertragung" bedeutet nahe oder
oberhalb der Aufnahmefähigkeit
des menschlichen Sehsystems für die
Bewegungsverschmelzung (wie oft ein Bild verändert werden muß, um die
Illusion von kontinuierlicher Bewegung zu geben) und Flimmerverschmelzung
(wie oft die Lichtintensität
verändert
werden muß,
um die Illusion der Kontinuität
zu geben). Diese Konzepte sind weiter ausgeführt in dem Buch „Spatial
Vision" von Russel
L. De Valois und Karen K. De Valois, Oxford University Press, 1988.
-
Gemäß der vorliegenden Erfindung
kann die Einheit zur Umrechnung von Abfragewert in Pixel derart
arbeiten, daß sie
selektiv das Filtern der gespeicherten Abfragen einstellt, um Artefakte
zu reduzieren oder um Anzeigeeffekte zu erzeugen. Die Erzeugung
von Ausgangspixeln kann ebenso mit der selben oder mit einer unterschiedlichen
Geschwindigkeit wie die Darstel lungsgeschwindigkeit der Abfragewerte
arbeiten, die berechnet werden und in dem Abfragewertpufferspeicher
gemäß der vorliegenden
Erfindung abgelegt werden.
-
Computernetzwerk 1A
-
In 1A ist
ein Computernetzwerk 500 gezeigt, daß zumindest einen Servercomputer 502 und einen
oder mehrere Clientcomputer 506A–N aufweist. (In der Ausführungsform,
die in 1A gezeigt ist,
sind die Clientcomputer 506A–B dargestellt.) Ein oder
mehrere der Clientsysteme können ähnlich dem Computersystem 80 konfiguriert
sein, wobei jedes ein oder mehrere Grafiksysteme 112, wie
oben beschrieben wurde, hat. Der Server 502 und der Client (die
Clients) 506 können über eine
Vielzahl von Verbindungen 504 miteinander verbunden sein,
wie zum Beispiel ein Nahbereichsnetzwerk (LAN), ein Weitbereichsnetz
(WAN) oder eine Internetverbindung. In einer Ausführungsform
kann der Server 502 3-D-Geometriedaten (die komprimiert
sein können)
speichern und zu einem oder mehreren der Clients 506 übertragen.
Die Clients 506 empfangen die komprimierten 3-D-Geometriedaten,
dekomprimieren sie (sofern notwendig) und stellen dann die geometrischen
Daten dar. Das dargestellte Bild wird dann auf dem Anzeigegerät des Clients
dargestellt. Die Clients stellen die Geometriedaten dar und zeigen
das Bild an unter Verwendung des supergesampleten Abfragepufferspeichers
und Echtzeitfiltertechniken, die hier beschrieben werden. In einer
anderen Ausführungsform
können
die komprimierten 3-D-Geometriedaten zwischen den Clientcomputern 506 übertragen
werden.
-
Blockdiagramm eines Computersystems 2
-
In 2 ist
ein vereinfachtes Blockdiagramm gezeigt, das das Computersystem
von 1 darstellt. 2 kann ebenso die Computer 506A, 506B oder 502 darstellen.
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 Busmasterering
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 Grafiksystem 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. Darstellungseinheiten
-
sDie 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 Set-up 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. Die Darstellungseinheiten
150A–D
können
ebenso einen größeren Bereich
von Abfragen erzeugen als der sichtbare Bereich der Anzeige 84 für verschiedene Effekte,
wie zum Beispiel das Schwenken und das Zoomen. 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–D 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 Abfragespeichern 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ählerimplementiert
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. Ebenso können manche
Abfragen dargestellt und in dem Abfragepufferspeicher abgelegt werden,
die außerhalb
des sichtbaren Bereichs der Anzeigevorrichtung 84 sind,
wobei diese Abfragen für
verschiedene Anzeigeeffekte, wie zum Beispiel das Schwenken und
das Zoomen, verwendet werden können.
-
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
bestimmten 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–D zur
Umrechnung von Abfrage in Pixel können zwischen den Abfragespeichern 160A–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 Ausgangspixelwerte 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 abgel5egt 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, Farbraumwandler 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.
-
In einer Ausführungsform ist die Einheit
zur Umrechnung von Abfrage in Pixel derart betreibbar, daß sie die
Filterung von gespeicherten Abfragen einstellt, um Artefakte zu
reduzieren, z. B. ist sie derart betreibbar, daß sie selektiv die Filterung
der gespeicherten Abfragen in benachbarten Einzelbildern einstellt,
um Artefakte zwischen den benachbarten Einzelbildern zu reduzieren.
Das Filtern kann eingestellt werden durch Einstellen der Zentralorte
bzw. Zentrumsorte, an denen das Filter angelegt wird, z. B. durch
Einstellen der Orte der Faltungszentren, an denen die Pixel erzeugt
werden, relativ zu einem vorherigen Einzelbild. Diese Einstellung
der Filterung von gespeicherten Abfragewerten kann derart betrieben
werden, daß Artefakte
reduziert werden oder sichtbare Artefakte reduziert werden, z. B.
einfach Artefakte auf unterschiedliche Orte in dem Bild verteilt werden,
wodurch sie für
einen Menschen weniger wahrnehmbar sind.
-
In einer Ausführungsform beinhalten die Einheiten 170A–D zur
Umrechnung von Abfrage in Pixel jeweils eine Adreßerzeugungslogik
für die
Erzeugung von Adressen entsprechend den Zentrumsorten (Zentren)
in dem Abfragepufferspeicher, auf denen der Faltungsfilter angewendet
wird, wobei der Faltungsfilter an diese Zentren in dem Abfragepufferspeicher
während
der Erzeugung von Ausgangspixeln für die Anzeige angelegt wird.
Die Adreßerzeugungslogik
ist programmierbar, um Adressen an ausgewählten Unterpixelpositionen
zu erzeugen, die den gewünschten
Adressen entsprechen. In der bevorzugten Ausführungsform ist der Beginn der
Subpixelpositionsadresse, die von der Adreßerzeugungslogik erzeugt wird,
programmierbar und die Pixelschrittgröße kann konstant bleiben.
-
Die vorliegende Erfindung kann angewendet werden,
wo die Einheit zur Umrechnung von Abfrage in Pixel Ausgangspixel
mit der selben Geschwindigkeit erzeugt wie der Grafikprozessor die
Abfragen zu dem Abfragepufferspeicher darstellt oder wo die Einheit
zur Umrechnung von Abfrage in Pixel mit einer anderen (z. B. höheren) Geschwindigkeit
als die Darstellungsrate arbeitet.
-
In einer anderen Ausführungsform
der vorliegenden Erfindung ist die Einheit zur Umrechnung von Abfrage
in Pixel betreibbar, um das Filtern von gespeicherten Abfragewerten
einzustellen, um einen Anzeigeeffekt, wie z. B. das Schwenken, das
Zoomen, das Drehen oder das Bewegen von Szenen u. a. zu implementieren.
Diese selektive Einstellung des Filterns von gespeicherten Abfragen,
um Artefakte zu reduzieren oder Anzeigeeffekte zu erzeugen, wird unten
unter Bezug auf die 15–20 erörtert.
-
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).
-
Wie gezeigt ist, arbeitet eine programmierbare
Takteinheit 182 derart, daß sie ein oder mehrere Taktsignale
(einschließlich
eines Pixeltaktes) jedem der DACs 178A–B zur Verfügung stellt.
An jeder ansteigenden Flanke des Pixeltaktes verriegeln die DACs 178A–B den
(die) Ausgangspixelwert(e) in den DACs 178A–B für die Ausgabe eines entsprechenden
analogen Signals an die Anzeige.
-
Wenn die Einheit zur Umrechnung von
Abfrage in Pixel die Faltungszentren in einem Einzelbild relativ
zu einem vorherigen Einzelbild horizontal oder vertikal einstellt,
wie oben erwähnt
wurde, arbeitet die Einheit zur Umrechnung von Abfrage in Pixel
ebenso derart, daß die
Phase des Pixeltaktes, der den DACs 178A–B zur Verfügung gestellt
wird, verschoben oder eingestellt wird. Dies ist aufgrund der Einstellung
der Faltungszentren in einem Einzelbild relativ zu einem vorherigen
Einzelbild notwendig, um ein wahrnehmbares "Wackeln" des Bildes zu vermeiden. Im allgemeinen
korreliert eine Verschiebung der Faltungszentren um einen Bruchteil
eines Pixels direkt mit einer Verschiebung des Taktes um eine entsprechende
Menge. Die Einstellung des Videotaktes, um die Faltungszentrumseinstellung
in der Pixelfilterung gegeneinander zu versetzen, wird unten weiter
diskutiert.
-
In einem Grafiksystem, in dem digitale
Pixel zu der Anzeige ausgegeben werden, beinhaltet das Grafiksystem
Ausgabeelemente oder Vorrichtungen, die den programmierbaren Pixeltakt
empfangen, wobei die Ausgangselemente den Digital-/Analog-Umwandlungsschaltkreis
nicht enthalten.
-
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
Verwerten 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
unterschiedlichen 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
-
6 stellt
eine mögliche
Konfiguration für den
Datenfluß durch
eine Ausführungsform
des Grafiksystems 112 dar. 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 Oftsetwerte 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 entworfenen 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 Abfragepositionsoftsetwerte
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 Oftsetwerte zu den regulären
Gitterpositionen, die von der Hardware erzeugt werden, addiert werden.
In einer Ausführungsform
kann der Abfragepositi onsspeicher 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 Oftsetwerte
für dieselbe
Abfrage zu verwenden, ohne daß die
Speicherung von jedem Offsetwert 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 Abfragewertpositionsspeicher 354 ein
RAM/ROM enthalten, das stochastische Abfragewertpunkte (oder Orte)
für unterschiedliche
Gesamtabfragewertzahlen je Behälter
enthält.
Der Begriff „Behälter",
wie er hier verwendet wird, bezieht sich auf eine Region oder eine
Fläche
in dem virtuellen Schirmraum und enthält alle Abfragen in diesem
Gebiet (zum Beispiel kann der Container 1 × 1 Pixel in der Fläche, 2 × 2 Pixel
in der Fläche,
usw. sein). Die Verwendung von Behältern kann das Speichern von
und den Zugriff auf Abfragewerte in dem Abfragepufferspeicher 162 vereinfachen. Eine
Anzahl von unterschiedlichen Behältergrößen kann
verwendet werden (zum Beispiel eine Abfrage je Behälter, vier
Abfragen je Behälter,
usw.). In der bevorzugten Ausführungsform
hat jeder Behälter eine
X-Y-Position, die
einem bestimmten Ort auf der Anzeige entspricht. Die Behälter sind
vorzugsweise regelmäßig beabstandet.
In dieser Ausführungsform können die
X-Y-Positionen der Behälter
aus dem Speicherort der Behälter
innerhalb des Abfragewertpufferspeichers 162 bestimmt werden.
Die Positionen der Behälter
entsprechen bestimmten Positionen auf der Anzeige. In manchen Ausführungsformen können die
Behälterpositionen
zu Pixelzentren korrespondieren, während in anderen Ausführungsformen die
Behälterpositionen
mit Punkten korrespondieren, die zwischen den Pixelzentren lokalisiert
sind. Die spezifische Position von jeder Abfrage innerhalb eines
Behälters
kann bestimmt werden durch Nachschlagen des Offsets des Abfragewerts
in der RAM/ROM-Tabelle (die Offsets können relativ zu der entsprechenden
Behälterposition
gespeichert sein). Abhängig
von der Implementierung kann jedoch nicht jede Auswahl für die Behältergrößen einen
einzigartigen bzw. eindeutigen RAM/ROM-Eintrag haben. Manche Behälter größen können einfach
einen Untersatz bzw. Untermenge der größeren Behältergrößeneinträge auslesen. In einer Ausführungsform
hat jede unterstützte
Größe zumindest
vier unterschiedliche Abfragepositionsschemavarianten, die die Artefakte des
Endbildes aufgrund der Wiederholung der Abfragewertpositionen reduzieren
können.
-
In einer Ausführungsform kann der Positionsspeicher 354 Paare
von 8-Bit-Zahlen speichern, wobei jedes Paar ein X-Offset und ein
Y-Offset aufweist (andere mögliche
Offset-Werte sind ebenso möglich,
zum Beispiel ein Zeit-Offset, ein Z-Offset, usw.). Wenn zu einer
Behälterposition
addiert, definiert jedes Paar eine bestimmte Position in dem Schirmraum.
Der Begriff „Schirmraum" bezieht sich allgemein
auf das Koordinatensystem der Anzeigevorrichtung. Um die Lesezeiten
zu verbessern, kann der Speicher 354 in einer breiten/parallelen
Art und Weise konstruiert sein, so daß dem Speicher erlaubt wird,
mehr als einen Abfrageort je Taktzyklus auszugeben.
-
Nachdem die Abfragewertpositionen
von dem Abfragepositionsspeicher 354 gelesen wurden, wählt der
Zeichenprozeß 352 die
Abfragewertpositionen aus, die in das gegenwärtig darzustellende Polygon
fallen. Der Zeichenprozeß 352 berechnet
dann die z- und Farbinformation (die alpha oder andere Tiefen von
Feldinformation und/oder Unschärfewerte 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)
nur einfach pufferspeichern, während
andere Abfragewertkomponenten, wie zum Beispiel Farbe, doppelt puffergespeichert
werden. Im Gegensatz zu Systemen des Standes der Technik kann das
Grafiksystem 112 alle Abfragewerte doppelt Pufferspeichern
(obwohl nicht alle Abfragewertkomponenten doppelt puffergespeichert
sein können,
d.h. die Abfragewerte können Komponenten
haben, die nicht doppelt puffergespeichert sind oder es können nicht
alle Abfragewerte doppelt puffergespeichert sein). In einer Ausführungsform
werden die Abfragewerte in dem Abfragewertpufferspeicher 162 in
Behältern
abgelegt. In manchen Ausführungsformen
kann die Größe der Behälter, d.h.
die Menge der Abfragewerte innerhalb eines Behälters, von Einzelbild zu Einzelbild
variieren und kann ebenso über
verschiedene Regionen der Anzeigevorrichtung 84 innerhalb
eines einzelnen Einzelbilds variieren. Beispielweise können Behälter entlang
der Kanten der Anzeigeeinrichtung nur einen Abfragewert enthalten,
während
Behälter,
die Pixeln entsprechen, die nahe des Zentrums der Anzeigevorrichtung 84 sind,
sechzehn Abfragewerte umfassen können.
Es sei bemerkt, daß die
Fläche
der Behälter von
Region zu Region variieren kann. Die Verwendung der Behälter wird
unten in Verbindung mit 11 mehr
im Detail beschrieben.
-
Parallel zu und 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.
-
Gemäß der vorliegenden Erfindung
ist die Einheit zur Umrechnung von Abfrage in Pixel derart betreibbar,
daß sie
das Filtern der gespeicherten Abfragewerte selektiv auswählt, um
Artefakte zu reduzieren oder verschiedene Anzeigeeffekte zur Verfügung zu
stellen, wie unten weiter beschrieben wird.
-
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 Grafiksystems 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 (zum Beispiel 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. den Wendung während des Filterprozesses (d.h.
den 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. In dieser 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 Offset-Werten mit den Abfragewerten selbst
in dem supergesampelten Abfragepufferspeicher 162 speichern.
Diese Anzeiger können
verwendet werden, um die Offset-Werte/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", 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 ei nem internen Takt, um Pseudozufallszahlen zu erzeugen.
Zufallszahlen oder Positionen können
ebenso vorherberechnet und in dem Speicher abgelegt werden.
-
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.
-
11 Umwandeln von Abfragewerten in Pixel
-
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 Um rechnung 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 Darstellen von Abfragen in einem supergesampleten
Abfragepufferspeicher
-
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 Befeh- le
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 Grafiksystem
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, welche Abfragen innerhalb
des darzustellenden Polygons liegen, 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 Winkelhalbierenden 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 Erzeugen von Ausgangspixeln durch
Auswählen
und Filtern von Abfragewerten in dem supergesampleten Abfragepufferspeicher
-
13 ist
ein Flußdiagramm
einer Ausführungsform
eines Verfahrens für
das Auswählen
von 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. Multiplizieren
und Addieren) 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 Beispielhafte Ausgangspixelfaltung
-
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, das heißt der Zentralort,
an dem der Filter angewendet wird, um das entsprechende Ausgangspixel zu
erzeugen, 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 B. 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 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.
-
Dynamische Filtereinstellung
für die
Reduktion von Artefakten
-
Die vorliegende Erfindung beinhaltet
ein verbessertes System und ein Verfahren für das Einstellen des Filterns
von Abfragen bei der Erzeugung von Ausgangspixeln für die Reduzierung
von Artefakten.
-
Der supergesamplete Einzelbildpufferspeicher
enthält
mehr Information, als tatsächlich
angezeigt wird, das heißt
mehr Information, als tatsächlich in
Ausgangspixeln in einem gegebenen Einzelbild produziert wird. Wie
oben beschrieben wurde, speichert der supergesamplete Einzelbildpufferspeicher eine
Mehrzahl von Abfragen, die verwendet werden, um Ausgangspixel zu
erzeugen, die direkt der Anzeige zur Verfügung gestellt werden können. Der
Faltungsprozeß würde in der
Erzeugung von Ausgangspixeln in Antwort auf Abfragen typischerweise
einen Teil der berechneten Abfrageinformation nicht verwenden oder "rauswerfen". Diese zusätzliche
Information wird dargestellt oder berechnet, um fehlende Kanten
zu erfassen und ansonsten Artefakte zu entfernen. Supersampling
allein kann nicht alle Artefakte entfernen, z.B. können die
oben beschriebenen vielfältigen
Abfragepositionierungsschemata, wie z.B. die stochastische Abfrage
oder das gitterpassierte Abfragen nicht das gesamte Aliasing und
Artefakte entfernen.
-
Beispielsweise ist die Leistung des
8x-Supersamplings keine Garantie dafür, daß alle Artefakte und alles
Aliasing aus dem Endausgangsbild entfernt wurde. Stochastisches
Abfragen erzeugt beispielsweise eher einen Tausch des Aliasing gegen
Artefakte, die mehr wie Rauschen erscheinen, auf die das Auge weniger
empfindlich ist. Somit kann ein Grafiksystem, das einen supergesampleten
Abfragepufferspeicher nutzt, während
dies besser als konventionelle pixelbasierte Einzelwertpufferspeicher
ist, versehentlich einige Dreiecke auslassen und/oder zu einigen
Artefakten führen.
-
Wenn die Darstellungsrate geringer
als die Bildwiederholrate ist, dann können die Abfragen in dem Abfragepufferspeicher
zwei oder mehrere Male gefaltet werden und Artefakte können erzielt
werden. Der Begriff "Darstellungsrate", so wie er hier
verwendet wird, bezieht sich auf die Rate, mit der Abfragen in den
Abfragepufferspeicher dargestellt werden. Der Begriff "Bildwiederholrate" bezieht sich auf
die Rate, mit der die Einheit zur Umrechnung von Abfrage zu Pixel
arbeitet, um Abfragen auszuwählen
und von dem Abfragepufferspeicher zu erhalten und die Abfragen zu
filtern, um Ausgangspixel zu erzeugen, die der Anzeige zur Verfügung gestellt
werden, und zwar vorzugsweise direkt ohne einen dazwischengeschalteten
Einzelwertpufferspeicher.
-
In einer Ausführungsform der Erfindung ist bzw.
sind die eine oder die mehreren Einheiten zur Umrechnung von Abfrage
zu Pixel 170A–D (im
Singular bezeichnet als "Einheit
zur Umrechnung von Abfrage zu Pixel 170") derart betreibbar, daß sie die Faltung
mit einer unterschiedlichen Rate als die Darstellungsoperation oder
die Darstellungsrate und vorzugsweise unabhängig hiervon durchführt. Die
Berechnungsrate und das Ablegen der Abfragedaten in den Abfragepufferspeicher
kann somit von der Bildwiederholrate oder Faltungsrate entkoppelt
werden. Die Einheit 170 zur Umrechnung von Abfrage zu Pixel
kann "on the fly" bzw. mit der Übertragung
unabhängig
von der Darstellungsrate arbeiten. Wo die Darstellungsrate geringer
als die Bildwiederholrate ist, können
manche derselben Abfragedaten für
zwei oder mehrere aufeinanderfolgende Einzelbilder gefaltet werden
und Artefakte können
hieraus resultieren. Artefakte können
ebenso entstehen, wenn die Darstellungsrate dieselbe wie die Bildwiederholrate ist,
jedoch beispielsweise die Abfragedaten, die gegenwärtig in
dem Abfragepufferspeicher sind, gleich den Abfragedaten von einem
vorherigen Einzelbild sind. Die vorliegende Erfindung beinhaltet
ein System und ein Verfahren für
die dynamische Filtereinstellung für die Reduzierung von Artefakten.
-
In einer Ausführungsform ist die Einheit
zur Umrechnung von Abfrage zu Pixel 170 derart betreibbar,
daß sie
wahlweise das Filtern von abgelegten Abfragen einstellt, um Artefakte
zu reduzieren, z.B. ist sie derart betreibbar, daß sie selektiv
das Filtern von abgelegten Abfragen in benachbarten Einzelbildern
einstellt, um Artefakte zwischen den benachbarten Einzelbildern
zu reduzieren. Beispielsweise kann die Einheit zur Umrechnung von
Abfrage zu Pixel 170 einen ersten Satz von abgelegten Abfragewerten auswählen und
filtern, um erste Ausgangspixel zu erzeugen für die Anzeige unter Verwendung
eines ersten Filters und kann später
einen zweiten Satz von abgelegten Abfragen auswählen und filtern, um zweite
Ausgangspixel für
die Anzeige zu erzeugen unter Verwendung eines zweiten Filters,
der sich von dem ersten Filter unterscheidet. Dies funktioniert
derart, daß sich
die Artefakte von einer festen Position auf der Anzeige zu variierenden
Positionen auf der Anzeige verändern,
die wahrscheinlicher von dem menschlichen visuellen System übersehen
werden.
-
Nimmt man beispielsweise an, daß 0,01% der
Pixel in einem vorherigen Einzelbild ein Artefakt haben und dieselben
Abfragedaten in einem gegenwärtigen
Einzelbild verwendet werden, um Ausgangspixel zu erzeugen. In dem
gegenwärtigen
Einzelbild kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart
betrieben werden, daß sie
die Zentrumsorte, an denen der Filter auf die Abfragedaten angewendet
wird, bei der Erzeugung von Ausgangspixeln für das gegenwärtige Einzelbild
um ein halbes Pixel verschiebt. Dies kann die Artefakte für diese
0,01% der Pixel in dem gegenwärtigen
Einzelbild vollständig
entfernen, wobei keine anderen Artefakte in dem gegenwärtigen Einzelbild
erzeugt werden. Alternativ kann dies die Artefakte für diese
0,01% der Pixel in dem gegenwärtigen
Einzelbild entfernen, jedoch zu Artefakten für andere Pixel führen, die
in einer unterschiedlichen Position auf der Anzeige erscheinen.
In diesem Fall kann das menschliche visuelle System die Artefakte
mitteln, wodurch weniger wahrnehmbare Artefakte erzeugt werden.
Die vorliegende Erfindung kann somit effektiv einen Typ des temporalen
Dithering auf Ausgangspixeln durchführen, was zu weniger wahrgenommenen
Artefakten führt.
-
Die Einheit zur Umrechnung von Abfrage
zu Pixel 170 kann selektiv das Filtern von abgelegten Abfragen
in benachbarten Einzelbildern einstellen durch Simulation von verschiedenen
Schirmeffekten, wie z.B. das Schwenken und das Zoomen für reduzierte
Artefakte. Die Einheit zur Umrechnung von Abfrage zu Pixel 170 kann
ebenso selektiv das Filtern von gespeicherten Abfragen in benachbarten
Einzelbildern einstellen unter Verwendung von anderen vorbestimmten
oder stochastischen Methoden, wie dies gewünscht ist. Beispielsweise kann
die Einheit zur Umrechnung von Abfrage zu Pixel 170 das
Filtern von gespeicherten Abfragen in benachbarten Einzelbildern
selektiv einstellen durch einen stochastischen Wert, der von 0 bis
0,5 Unterpixel in irgendeiner horizontalen Richtung reicht.
-
Die Einheit zur Umrechnung von Abfrage
zu Pixel 170 kann ein Filter bei der Filterung der Abfragen,
wie es oben beschrieben wurde, verwenden und die Einheit zur Umrechnung
von Abfrage zu Pixel 170 stellt vorzugsweise selektiv die
Zentrumsorte ein, wo das Filter während des Filterns von gespeicherten Abfragen
angewendet wird, um Artefakte zu reduzieren. Mit anderen Worten
stellt die Einheit zur Umrechnung von Abfrage zu Pixel 170 vorzugsweise
selektiv die Zentrumsorte ein, wo das Filter angewendet wird, und
zwar relativ zu den Zentrumsorten, die in einem vorherigen Einzelbild
verwendet wurden. Die Einstellung der Zentrumsorte, wo das Faltungsfilter angewendet
wird, ist äquivalent
zu einer Einstellung der Zentren der zu erzeugenden Ausgangspixeln.
-
Die Einheit zur Umrechnung von Abfrage
zu Pixel beinhaltet eine Adreßerzeugerlogik
für das
Erzeugen von Adressen entsprechend der Zentrumsorte des Faltungsfilters,
wobei die Adreßerzeugungslogik
programmierbar ist, um Adressen bei ausgewählten Subpixelpositionen in
dem Abfragepufferspeicher entsprechend der gewünschten Zentren zu erzeugen.
In der bevorzugten Ausführungsform
ist die Start-Subpixelposition, an der die Adreßerzeugungslogik beginnt, Adressen
zu erzeugen, programmierbar. Die Einheit zur Umrechnung von Abfrage
zu Pixel 170 ist derart betreibbar, daß sie selektiv den Anfang der
Subpixelposition des Zentrums des Faltungsfilters in einer oder
mehreren X- oder Y-Richtungen einstellt und kann das Zentrum des
Faltungsfilters einstellen, um einen Subpixelabstand relativ zu dem
Zentrum, das in einem vorherigen Einzelbild verwendet wurde. Die
Adreßerzeugungslogik
beinhaltet ebenso eine Pixelschrittgröße, die programmierbar ist,
jedoch vorzugsweise konstant bleibt. Die Pixelschrittgröße entspricht
einem Abstand bzw. Zwischenraum zwischen den Pixeln, der im allgemeinen einen
relative Veränderung
in dem Abstand zwischen den Pixeln relativ zu entweder einem vorherigen
Abstand oder zu einem ausgewählten
Koordinatensystem, wie z.B. den Schirmraum, betrifft.
-
Um eine Filtereinstellung zu implementieren, kann
(können)
die Darstellungseinheiten) 150 in dem Grafiksystem betrieben
werden, um zusätzliche
Abfragen außerhalb
des unmittelbar sichtbaren Bereichs darzustellen, so daß diese
Abfragen für
die gewünschten
Einstellungen verfügbar
sind. In einer Ausführungsform
hat das Grafiksystem vor dem Darstellen der Abfragen in den Abfragepufferspeicher bereits
die Erscheinung des nachfolgenden Einzelbildes abgeschätzt (z.B.
hat es die gewünschte
Verschiebung in dem Faltungszentrum abgeschätzt). Wenn beispielsweise die
gewünschte
Filtereinstellung das Verschieben der Faltungszentren um ein halbes
Pixel nach rechts beinhaltet, können
zusätzliche
Abfragen in den Abfragepufferspeicher dargestellt werden an Orten,
die zumindest einem halben Pixel in Bezug auf den vorher sichtbaren
Bereich entsprechen, so daß diese
Abfragen bei der Erzeugung von Pixeln an der rechten Kante der Anzeige
verwendet werden können.
Anderenfalls wären
manche Abfragedaten für
die Ausgangspixel an der rechten Kante der Anzeige nicht verfügbar und
unerwünschte
Artefakte könnten
an der rechten Kante der Anzeige entstehen. In einer ähnlichen
Art und Weise können, wenn
die gewünschte
Filtereinstellung die Verschiebung der Faltungszentren um ein halbes
Pixel nach links beinhaltet, zusätzliche
Abfragen an Orten, die zumindest ein halbes Pixel nach links des
vorher sichtbaren Bereichs entsprechen, in den Abfragepufferspeicher
dargestellt werden, so daß diese
Abfragen bei der Erzeugung von Pixeln an der linken Kante der Anzeige
verwendet werden können.
Wo eine Verschiebung der Faltungszentren nach oben oder nach unten
gewünscht
ist, kann das System ebenso betrieben werden, um zusätzliche
Abfra gen oberhalb bzw. unterhalb des unmittelbar sichtbaren Bereichs darzustellen,
so daß diese
Abfragen für
die gewünschte
Einstellung verfügbar
sind.
-
In einer Ausführungsform hat das Grafiksystem
vor der Darstellung von Abfragen in den Abfragepufferspeicher bereits
die Erscheinung des nachfolgenden Einzelbildes abgeschätzt (z.B.
hat es die gewünschte
Verschiebung der Faltungszentren abgeschätzt) und zusätzliche
Abfragen werden in den Abfragepufferspeicher basierend auf dieser
Verschiebungsschätzung
dargestellt. Alternativ dazu können die
Darstellungseinheiten 150, wenn das zusätzliche Darstellen wenig Kosten
oder Verzögerung
hinzufügt,
zusätzliche
Abfragen um alle Kanten des Abfragepufferspeichers darstellen und
das Grafiksystem kann somit die gewünschte Verschiebung der Faltungszentren
mitten in dem nächsten
Einzelbild bestimmen.
-
Die Einheit zur Umrechnung von Abfrage
zu Pixel 170 kann ebenso andere Parameter einstellen, wie
z.B. den Filtertyp, die verwendeten Gewichtungsfaktoren, den Filterradius
oder andere Filterparameter, um zu versuchen, Artefakte zwischen
aufeinanderfolgenden Einzelbildern zu reduzieren. Wo der Radius
des Filters eingestellt wird, um Artefakte zu entfernen, können verschwommene
Abschnitte mit hoher Auflösung "verwackeln", wodurch Artefakte entfernt
werden, jedoch möglicherweise
auf Kosten der empfundenen Auflösung.
-
Einstellung
des Videotaktes
-
Das Grafiksystem ist ebenso derart
betreibbar, daß es
selektiv den Videotakt einstellt, um die Einstellung des Zentrums
des Faltungsfilters während
des Filterns von gespeicherten Abfragen zu kompensieren. Wie oben
unter Bezug auf die Diskussion der DACs 178A–B in 3 erwähnt
wurde, arbeitet die Einheit zur Umrechnung von Abfrage zu Pixel 170,
wenn die Einheit zur Umrechnung von Abfrage zu Pixel 170 die
Faltungszentren in einem Einzelbild relativ zu einem vorherigen
Einzelbild horizontal oder vertikal einstellt, wie oben erwähnt wurde,
ebenso derart, daß sie
die Phase des Pixeltaktes, der den DACs 178A-B zur Verfügung gestellt
wird, verschiebt oder einstellt. Dies ist notwendig aufgrund der
Einstellung der Faltungszentren in einem Einzelbild relativ zu einem
vorherigen Einzelbild, um ein bemerkbares "Wackeln" des Bildes zu verhindern. Im allgemeinen
korreliert eine Verschiebung der Faltungszentren um einen Bruchteil
eines Pixels direkt mit einer entsprechenden Taktverschiebung.
-
Die Einheit zur Umrechnung von Abfrage
zu Pixel 170 kann arbeiten, um die Faltungszentren in einem
Einzelbild horizontal oder vertikal einzustellen. Wenn die Faltungszentren
vertikal um eine gesamte Abtastzeile verschoben werden, dann können die
Pixel um eine gesamte Abtastzeile verzögert werden mit dem Ergebnis,
daß in
dem Ausgang eine Verschiebung von einer Abtastzeile des Einzelbildes
auftritt. Wenn eine vertikale Verschiebung in den Faltungszentren
gewünscht
wird, dann wird dies vorzugsweise nur mit einer analogen Anzeige
durchgeführt,
wie z.B. einer CRT- (Kathodenstrahlrohr-) Anzeige, und vorzugsweise
auf Unterzeileninkrementen, wie z.B. einer halben Zeile.
-
Der eingestellte Pixeltakt kann derart
arbeiten, daß er
eines, das HSYNC-Signal oder das VSYNC-Signal oder beide einstellt.
In einer Ausführungsform
beinhaltet die programmierbare Takteinheit 182 zumindest
einen Multiplexer und beinhaltet Verzögerungselemente für die Erzeugung
von einem oder mehreren verzögerten
und voreilenden Versionen des Pixeltaktes. Diese unterschiedlichen
Versionen des Pixeltaktes werden basierend auf dem Typ und der Größe der Einstellung
der Faltungszentren ausgewählt.
Die programmierbare Takteinheit 182 kann ebenso entsprechend
einer Zustandsmaschine, die den Videotakt steuert, arbeiten.
-
Es sei bemerkt, daß für manche
Anzeigen es nicht ausreichend sein kann, einfach ein oder mehrere
der Taktsignale, die der Anzeige zur Verfügung gestellt werden, zu verändern, wie
z.B. das Einstellen des horizontalen Startpulses, da hochwertigere
Anzeigen in der Lage sein können,
dies zu kompensieren. Somit wird der Pixeltakt, der den DACs oder
anderen Ausgangsschaltkreisen zur Verfügung gestellt wird, eingestellt.
-
15 Einstellen des Filterns in einem Einzelbild
-
15 ist
ein Flußdiagramm,
das den Betrieb der Einheit zur Umrechnung von Abfrage zu Pixel 170 bei
der Einstellung des Filterns der Abfragen in einem gegenwärtigen Einzelbild
veranschaulicht, um zu versuchen, Artefakte zu entfernen oder um
gewünschte
Anzeigeeffekte zu erzeugen. Es wird hier angenommen, daß zusätzliche
Abfragen vorher in dem Abfragepuffer dargestellt wurden an Orten,
an denen die gewünschte
Einstellung auftreten wird.
-
Wie gezeigt programmiert in Schritt 402 das Verfahren
vor dem Start der Erzeugung von Ausgangspixeln für ein gegenwärtiges Einzelbild
die Startadresse eines ersten Faltungszentrums für jede Einheit zur Umrechnung
von Abfrage zu Pixel (ebenso als "Faltungspipeline" bezeichnet). Wenn eine einzelne Faltungspipeline
verwendet wird, kann das Verfahren die Startadresse des Faltungszentrums
für das
untere linke Pixel, das auf der Anzeigevorrichtung angezeigt wird,
programmieren. Wenn mehrere Faltungspipelines parallel arbeiten,
so wie in 11 gezeigt
ist, kann das Verfahren arbeiten, um die Startadresse des Faltungszentrums
für jede
entsprechende Faltungspipeline zu programmieren, z.B. das Faltungszentrum
für das
untere linke Startpixel für jede
Faltungspipeline.
-
In Schritt 404 kann das
Verfahren den Pixelschrittwert für
jede Faltungspipeline programmieren. Der Pixelschrittwert kann sowohl
einen Schrittwert in der horizontalen X-Richtung als auch einen Schrittwert
in der vertikalen Y-Richtung beinhalten. Der Pixelschrittwert entspricht
dem Abstand zwischen einem Faltungszentrum und dem nächsten darauffolgenden
Faltungszentrum für
das benachbarte Pixel. In einer Ausführungsform werden die Faltungszentren
für jedes
der Ausgangspixel durch die Startadresse des Faltungszentrums und
den entsprechenden Pixelschrittwert, der für ein gesamtes Einzelbild (oder mehrere
Einzelbilder) konstant bleiben kann, bestimmt.
-
In einer Ausführungsform bleibt der Pixelschrittwert
konstant und muß daher
nicht programmiert werden. Nimmt man einen konstanten Pixelschrittwert
an, führt
eine Veränderung
in der Startadresse des Faltungszentrums zu einer Verschiebung der
Faltungszentren für
jedes der Pixel in Bezug auf die Faltungszentren, die für die Pixel
in dem vorherigen Einzelbild verwendet wurden, wobei die Verschiebung
die gleiche für
jedes der Pixel relativ zu den Pixeln in dem vorherigen Einzelbild
ist. Somit programmiert das Verfahren, um die Faltungszentren konsistent
für jedes
der Ausgangspixel in einem gegenwärtigen Einzelbild einzustellen,
vorzugsweise eine unterschiedliche Startadresse des Faltungszentrums
relativ zu dem vorherigen Einzelbild, im allgemeinen für jede Faltungspipeline
oder Einheit zur Umrechnung von Abfrage zu Pixel 170 und
behält den
gleichen Pixelschrittwert wie das vorherige Einzelbild bei. Wie
erwähnt,
führt dies
für jedes
Pixel in dem gegenwärtigen
Einzelbild zu um dieselbe Größe verschobenen
Faltungszentren in Bezug auf die Faltungszentren, die für Pixel
verwendet wurden von dem vorherigen Einzelbild.
-
In einer anderen Ausführungsform
arbeitet das Verfahren derart, daß es die Pixelschrittgröße auf einer
per Einzelbild- oder sogar einer Pixelbasis einstellt, wodurch variierende
Verschiebungen in den Faltungszentren für jedes der Pixel in Bezug
auf die Faltungszentren, die für
die Pixel in dem vorherigen Einzelbild verwendet wurden, erzeugt
werden. Beispielsweise kann die Pixelschrittgröße selektiv auf einer Pixelbasis
eingestellt werden für
jedes von zumindest einer Untergruppe von Pixeln in dem Einzelbild,
wie z.B. durch eine stochastische Einstellung, die von –0,25 und
+0,25 Subpixeln reicht. Dies kann ebenso die Entfernung von Artefakten
in verschiedenen Abschnitten eines Bildes herbeiführen.
-
Wo dieses Verfahren der vorliegenden
Erfindung verwendet wird, um Anzeigeeftekte, wie z.B. das Zoomen,
zu erzeugen, kann der Pixelschrittwert auf einen unterschiedlichen
Wert relativ zu dem vorherigen Einzelbild programmiert werden, um
entweder ein "Heranzoomen" oder ein "Herauszoomen" zu implementieren.
Beispielsweise wird der Pixelschrittwert auf einen kleineren Schrittwert
programmiert, um in ein Bild hineinzuzoomen, und wird auf einen größeren Schrittwert
programmiert, um aus einem Bild herauszuzoomen. Die Erzeugung von
Anzeigeeffekten wird weiter unten erörtert.
-
In Schritt 406 beginnt das
Verfahren mit der Faltung an der Startadresse, die in Schritt 402 programmiert
wurde. Dies beinhaltet das Anwenden des Faltungsfilters auf Abfragen
in den Abfragepufferspeicher an den Faltungszentren, die von der
Startadresse in Schritt 402 spezifiziert sind, um das erste Ausgangspixel
für die
Anzeige zu erzeugen.
-
In Schritt 408 schreitet
das Verfahren zu dem nächsten
Faltungszentrum fort unter Verwendung des in Schritt 404 programmierten
Schrittwertes.
-
In Schritt 410 führt das
Verfahren eine Faltung auf Abfragen in dem Abfragepufferspeicher
an dem nächsten
Faltungszentrum, wie es in Schritt 408 bestimmt wurde,
durch. Dies be inhaltet erneut das Erzeugen eines Ausgangspixels
durch Anwenden eines Faltungsfilters auf Abfragen in dem Abfragepufferspeicher
basierend auf diesem Faltungszentrum.
-
Wie gezeigt werden die Schritte 408
und 410 für
jedes der Ausgangspixel für
die entsprechende Faltungspipeline wiederholt. Es sei ebenso bemerkt, daß die Schritte 406, 408 und 410 von
jeder der entsprechenden Faltungspipelines oder Einheiten zur Umrechnung
von Abfrage zu Pixel durchgeführt
werden kann, wenn mehr als eine vorhanden ist, vorzugsweise parallel.
Somit arbeitet das Verfahren durch einfaches Verändern der Startadresse des
Faltungszentrums für
jede der einen oder mehreren Einheiten zur Umrechnung von Abfrage
zu Pixel oder der Faltungspipelines, um die Faltungszentren für jedes
der Ausgangspixel für
ein gegenwärtiges
Einzelbild relativ zu den Faltungszentren, die in einem vorherigen
Einzelbild verwendet wurden, einzustellen. Wie oben beschrieben
wurde, kann dies durchgeführt
werden, um zu versuchen, Artefakte zwischen benachbarten Einzelbildern
zu entfernen, wie z.B. wenn die Abfragedaten identisch oder gleich
Abfragedaten von einem vorherigen Einzelbild sind. Dies kann ebenso
durchgeführt
werden, um verschiedene Typen von Anzeigeeffekten zu erzeugen, wie
unten beschrieben wird.
-
16 und 17 Beispielhafte
Einstellung von Faltungszentren
-
Die 16A–16B und 17A und 17B stellen ein
Beispiel der Funktion der vorliegenden Erfindung dar. 16A stellt einen repräsentativen
Satz von Abfragen von dem Abfragepufferspeicher dar, in dem die
Zentren der Faltungsfilter um jeweilige Behälter in dem Abfragepufferspeicher
zentriert sind. Wie gezeigt ist, kann, wenn der Faltungsfilter unter
Verwendung dieser Faltungszentren auf entsprechende Abfragen angewendet
wird, um Ausgangspixel für
die Anzeige zu erzeugen, eine Kante mit einem Alias oder Artefakt
produziert werden, wie in 16B gezeigt
ist.
-
17A stellt
den gleichen Satz von Abfragedaten dar, in dem die Faltungszentren
relativ zu den Faltungsfiltern in 16A verschoben
wurden. Wie in 17A gezeigt
ist, sind die Faltungszentren um näherungsweise ein halbes Pixel
nach links verschoben. Die Faltungsfilter, die an diese neuen Faltungszentren
angelegt werden, werden im allgemeinen einen gegenüber den
Faltungsfiltern, die unter Verwendung der Faltungszentren von 16A angewendet wurden, unterschiedlichen
Satz von Abfragen verwenden. Obgleich einige der Abfragen in jedem
der Faltungsfilter der 16A und 17A verwendet werden können, wird
jedoch die Verschiebung der Faltungszentren dazu führen, daß für die Erzeugung
der Ausgangspixel in 17A zumindest
teilweise andere Abfragen verwendet werden als diejenigen, die in 16A verwendet wurden.
-
Wie in 17B gezeigt
ist, können
die Artefakte nicht länger
erscheinen, wenn Ausgangspixel in Antwort auf denselben Satz von
Abfragen erzeugt werden unter Verwendung von Faltungsfiltern mit
unterschiedlichen oder verschobenen Faltungszentren, wie in 17A gezeigt ist. Es sei
bemerkt, daß andere
Artefakte in anderen Abschnitten des gezeichneten zeigt ist. Es
sei bemerkt, daß andere
Artefakte in anderen Abschnitten des gezeichneten Bildes auftreten
können.
Diese würden
jedoch typischerweise weniger bemerkbar sein als Situationen, in
denen Artefakte in derselben Position für zwei oder mehrere aufeinanderfolgende
Einzelbilder erscheinen.
-
Die vorliegende Erfindung kann angewendet werden,
wo die Einheit zur Umrechnung von Einzelbild zu Pixel 170 Ausgangspixel
mit derselben Rate erzeugt wie der Grafikprozessor Abfragen in den
Abfragepufferspeicher darstellt. Dort, wo die Einheit zur Umrechnung
von Abfrage zu Pixel 170 Ausgangspixel mit derselben Rate
darstellt wie der Grafikprozessor Abfragen in den Abfragepufferspeicher
darstellt, enthält
im allgemeinen der Abfragepufferspeicher bei jeder Aktualisierung
bzw. Wiederholung der Anzeige neue Abfragedaten.
-
In dieser Ausführungsform kann das Grafiksystem
Informationen von dem graphischen Softwaretreiber oder der Grafikanwendung
betreffend die Ähnlichkeit
von Abfragedaten in benachbarten Einzelbildern empfangen. Wenn einer
oder mehrere der Grafiksoftwaretreiber die Grafikanwendung oder
die Einheit zur Umrechnung von Abfrage zu Pixel bestimmt, daß die Abfragedaten
in benachbarten Einzelbildern genügend ähnlich sind, dann kann die
Einheit zur Umrechnung von Abfrage zu Pixel derart betrieben werden,
um das Filtern für
das gegenwärtige Einzelbild
von Abfragedaten einzustellen, um zu versuchen, jegliche Artefakte,
die zwischen benachbarten Einzelbildern erscheinen können, zu
entfernen. Auf andere Weise gesagt, wenn der graphische Softwaretreiber
und/oder die graphische Anwendung und/oder die Einheit zur Umrechnung
von Abfrage zu Pixel bestimmt, daß die Abfragedaten in einem
gegenwärtigen
Einzelbild ausreichend ähnlich
zu Abfragedaten von einem unmittelbar vorherigen Einzelbild sind,
dann kann die Einheit zur Umrechnung von Abfrage zu Pixel derart
betrieben werden, daß sie
das Filtern für
das gegenwärtige
Einzelbild von Abfragedaten einstellt, um zu versuchen, jegliche
Artefakte, die zwischen den benachbarten Einzelbildern auftauchen
können,
zu entfernen.
-
Die Bestimmung, ob Abfragedaten "ausreichend ähnlich" sind, um eine Einstellung
bzw. Verstellung des Filterns zu garantieren, kann Informationen
beinhalten, die von der Anwendung empfangen werden mit Veränderungen
des Knotenpunktes der Kamera oder kann auf Kriterien basieren, die
von dem Grafiktreiber verwendet werden.
-
Wenn beispielsweise ein gegenwärtiger Satz von
gespeicherten Abfragewerten als ähnlich
oder identisch zu einem vorherigen Satz von abgespeicherten Abfragewerten,
die vorher bei der Erzeugung von Ausgangspixeln in einem vorherigen
Einzelbild verwendet wurde, bestimmt werden, kann die Einheit zur
Umrechung von Abfrage zu Pixel selektiv das Filtern des gegenwärtigen Satzes
von gespeicherten Abfragen in einem gegenwärtigen Einzelbild einstellen,
um Artefakte zu reduzieren. Auf andere Art ausgedrückt, wenn
ein Satz von gespeicherten Abfragewerten vorher verwendet wurde
bei der Erzeugung von ersten Ausgangspixeln in einem ersten Einzelbild,
kann die Einheit zur Umrechnung von Abfrage zu Pixel selektiv das
Filtern eines ähnlichen
Satzes (oder des gleichen Satzes) von abgespeicherten Abfragewerten
einstellen, um unterschiedliche Pixel in einem nachfolgenden Einzelbild
zu erzeugen, um Artefakte zu reduzieren. In Situationen, in denen
der Knotenpunkt der Kamera im wesentlichen fix bleibt, arbeitet
somit die vorliegende Erfindung, indem sie den Knotenpunkt der Kamera
auf subtile Weise variiert, um jegliche Artefakte, die zwischen
benachbarten Einzelbildern auftreten können, zu entfernen.
-
Die vorliegende Erfindung kann ebenso
angewendet werden, wo die Einheit zur Umrechnung von Abfrage in
Pixel Ausgangspixel mit der gleichen Rate erzeugt wie der Grafikprozessor
Abfragen in dem Abfragepufferspeicher darstellt bzw. bereitstellt, ungeachtet
davon, ob der gegenwärtige
Satz von gespeicherten Abfragewerten als ähnlich oder gleich zu einem
vorherigen Satz von abgelegten Abfragen bestimmt wird. Beispielsweise
können
der graphische Softwaretreiber und/oder die graphische Anwendung und/oder
die Einheit zur Umrechnung von Abfrage zu Pixel derart betrieben
werden, daß sie
das Filtern für ein
gegenwärtiges
Einzelbild von Abfragedaten einstellen basierend auf anderen Kriterientypen,
wie z.B. der relativen Nähe
von Objekten in dem Bild zu dem Betrachter oder auf anderen Kriterien,
um zu versuchen, alle Artefakte zu entfernen.
-
Die vorliegende Erfindung beinhaltet
ebenso ein Grafiksystem wie oben beschrieben wurde, in dem die Einheit
zur Umrechnung von Abfrage zu Pixel 170 mit einer unterschiedlichen
(z.B. höheren) Rate
arbeiten kann als die Darstellungsrate. Die Einheit zur Umrechnung
von Abfrage zu Pixel 10 kann somit Ausgangspixel mit einer
unterschiedlichen Rate darstellen als der Grafikprozessor Abfragen
zu dem Abfragepufferspeicher darstellt; z.B. ist der Grafikprozessor
betreibbar, um die Mehrzahl von Abfragen zu dem Abfragepufferspeicher
mit einer ersten Rate darzustellen, und die Einheit zur Umrechnung von
Abfrage zu Pixel ist derart betreibbar, daß sie Ausgangspixel mit einer
zweiten, größeren Rate
erzeugt. Beispielsweise kann die Einheit zur Umrechnung von Abfrage
zu Pixel mit einer hohen Aktualisierungsrate, z.B. 60 Hz bis 84
Hz, arbeiten und mit dieser Rate "on-the-fly" bzw. mit der Übertragung falten, wobei die
Darstellungsrate die Hälfte
oder ein Viertel der Faltungsrate sein kann.
-
Dies erlaubt es der einen oder den
mehreren Faltungspipelines oder den Einheiten zur Umrechnung von
Abfrage zu Pixel 170 on the fly unabhängig von der Darstellungsrate
zu arbeiten. In diesem System ist die Einheit zur Umrechnung von
Abfrage zu Pixel 170 derart betreibbar, daß sie selektiv
das Filtern von gespeicherten Abfragen zwischen benachbarten Einzelbildern
einstellt, wie oben beschrieben wurde, um Artefakte zu reduzieren.
Mit anderen Worten, wo bestimmt wird, daß ein erster Satz von gespeicherten
Abfragen früher
bei der Erzeugung von Ausgangspixeln in einem ersten Einzelbild
verwendet wurde, ist die Einheit zur Umrechnung von Abfrage zu Pixel
derart betreibbar, daß sie
selektiv das Filtern des ersten Satzes von gespeicherten Abfragen in
einem nachfolgenden Einzelbild einstellt, um Artefakte zu reduzieren.
Die Abfragen können
somit einmal erzeugt werden und dann zwei- oder mehrere Male mit unterschiedlichen
Filtern gefaltet werden, um Artefakte zu entfernen, bis der Grafikprozessor neue
Abfragen in dem Abfragepuffer darstellt.
-
In dieser Ausführungsform kann das Grafiksystem
Information von dem graphischen Softwaretreiber oder der graphischen
Anwendung enthalten, ob derselbe Satz von Abfragedaten in benachbarten Einzelbildern
verwendet wird. Alternativ dazu kann (können) die Darstellungseinheiten)
und/oder die Einheiten) zur Umrechnung von Abfrage zu Pixel ein oder
mehrere Bits setzen/löschen,
die anzeigen, ob ein Einzelbild von dargestellten Abfragen erneut
verwendet wird, um Ausgangspixel zu erzeugen, das heißt ein Einzelbild
von Abfragen, die verwendet wurden, um Ausgangspixel in einem vorherigen
Einzelbild zu erzeugen, ebenso verwendet werden, um Ausgangspixel
in einem nachfolgenden Einzelbild zu verwenden. Wenn diese Bedingung
erfaßt
wird, kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 auf
die Einstellung bzw. die Verstellung des Filterns für das gegenwärtige Einzelbild
von Abfragedaten gerichtet werden, um zu versuchen, alle Artefakte, die
zwischen den benachbarten Einzelbildern auftreten können, zu
entfernen.
-
Wenn somit der graphische Softwaretreiber und/oder
die graphische Anwendung und/oder die Einheit zur Umrechnung von
Abfrage zu Pixel bestimmt, daß der
gleiche Satz von Abfragedaten verwendet wird, um Ausgangspixel in
benachbarten Einzelbildern zu erzeugen, dann kann die Einheit zur Umrechnung
von Abfrage zu Pixel 170 das Filtern für das gegenwärtige Einzelbild
von Abfragedaten einstellen, um zu versuchen, alle Artefakte, die
zwischen den benachbarten Einzelbildern auftreten können, zu entfernen.
-
Filtereinstellung, um
einen Anzeigeeffekt zu implementieren
-
In einer anderen Ausführungsform
ist die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart
betreibbar, daß sie
das Filtern von gespeicherten Abfragen einstellt, um einen Anzeigeeffekt
zu implementieren. Mehr im speziellen ist die Einheit zur Umrechnung
von Abfrage zu Pixel 170 derart betreibbar, um selektiv
das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern
einzustellen, um einen Anzeigeeffekt zwischen den benachbarten Einzelbildern
zu implementieren. Das Verfahren, das in 15 beschrieben wurde, kann somit verwendet werden,
um einen Anzeigeeffekt zu implementieren. Der Anzeigeeffekt kann
das Schwenken, das Zoomen, das Drehen oder das Bewegen von Szenen
und andere umfassen.
-
Um Anzeigeeffekte korrekt zu implementieren,
stellt (stellen) die Darstellungseinheiten) 150 die geeigneten
Abfragen in den Abfragepufferspeicher dar, um sicherzustellen, daß Abfragen
für den
gewünschten
Anzeigeeffekt vorhanden sind, z.B. Schwenken, Zoomen, Drehen, Bewegen
der Szenen oder andere Funktionen. Dies bringt im wesentlichen die
Darstellung von Abfragewerten mit sich, die nicht direkt anzeigbar
sind, da sie außerhalb
des gegenwärtig
angezeigten Bereichs sind, die jedoch in einem Schwenk- oder Zoomeffekt
in einem nachfolgenden Einzelbild verwendet werden würden, um
zu ermöglichen,
daß dieser
Anzeigeeffekt korrekt arbeitet. Wenn beispielsweise ein Schwenk
nach rechts gewünscht
ist, kann die geeignete Anzahl von Abfragen, die rechts des gegenwärtig angezeigten
Bildes positioniert sind, in den Abfragepufferspeicher dargestellt
werden, so daß diese
Abfragen verfügbar
sind, um den Schwenkeffekt auf dem nachfolgenden Einzelbild zu implementieren.
-
Der Abfragepufferspeicher kann somit
in dieser Ausführungsform
Abfragen speichern entsprechend eines Bereichs, der größer als
ein sichtbarer Bereich der Anzeige ist, und eine oder mehrere Abfragen
von außerhalb
des sichtbaren Bereichs der Anzeige können verwendet werden, um den
Anzeigeeffekt zu implementieren. Im Fall eines "Hineinzoomens" können
zusätzliche
Abfragen außerhalb
des sichtbaren Bereichs der Anzeige nicht notwendig sein. Für "Herauszoomvorgänge" und Schwenkvorgänge stellt
(stellen) die Darstellungseinheiten) vorzugsweise zusätzliche
Abfragen in dem Abfragepufferspeicher dar als Vorwegnahme dieser
Anzeigeeffekte. Dies würde
die Berechnung oder die Darstellung eines Bildes etwas breiter oder
größer als
ursprünglich
nötig beinhalten,
das heißt
die Erzeugung von Abfragen außerhalb
des unmittelbar anzuzeigenden Bereichs, worin die Einheit zur Umrechnung
von Abfrage zu Pixel 170 arbeiten würde, um diese Anzeigeeffekte
für den
zweiten Faltungszyklus auf diesem Satz von Abfragedaten unter Verwendung
der zusätzlichen
Abfragen zu implementieren.
-
In einer Ausführungsform hat das graphische System
vor dem Darstellen der Abfragen in den Abfragepufferspeicher bereits
die Erscheinung des nachfolgenden Einzelbildes (z.B. den gewünschten Anzeigeeffekt)
abgeschätzt,
und hat somit bereits die gewünschte
Verschiebung der Faltungszentren abgeschätzt. Die Darstellungseinheit 150 weiß somit
a priori von dem gewünschten
Anzeigeeffekt, so daß die
korrekten Abfragen in den Abfragepufferspeicher dargestellt werden
können.
Dies führt
dazu, daß nur die
notwendigen zusätzlichen
Daten dargestellt werden. In einer anderen Ausführungsform kann die Darstellungseinheit 150 in
einer Art vorprogrammiert sein, so daß sie immer eine Anzahl von
Abfragen außerhalb
des gegenwärtig
sichtbaren Bereichs in zwei oder mehr Richtungen, z.B. links, rechts,
oben und/oder unten, darstellt, um sicherzustellen, daß Abfragen,
die notwendig sind, um irgendeinen gewünschten Effekt zu implementieren,
wie z.B. das Linksschwenken, das nach rechts Schwenken, das nach
oben Schwenken, das nach unten Schwenken, das Herauszoomen und die
Drehung und andere. Wenn die zusätzliche
Darstellung ein wenig Kosten oder Verzögerung addiert, können die
Darstellungseinheiten zusätzliche
Abfragen um alle Kanten des Abfragepufferspeichers darstellen und
das graphische System kann somit den gewünschten Anzeigeeffekt bestimmen
und somit die gewünschte
Verschiebung in den Faltungszentren während des nächsten Einzelbildes bestimmen.
-
Die Einheit zur Umrechnung von Abfrage
zu Pixel kann das Filtern einstellen durch Einstellen einer oder
mehrerer der Positionen (Zentren) der Pixel, des Filterradius und
des Abstandes zwischen den Pixeln. Die Einheit zur Umrechnung von
Abfrage zu Pixel kann ebenso das Filtern von gespeicherten Abfragen
einstellen, um den Anzeigeeffekt auf einer Bruchteilspixelgrenze
zu implementieren. Beispielsweise kann die Einheit zur Umrechnung
von grenze zu implementieren. Beispielsweise kann die Einheit zur
Umrechnung von Abfrage zu Pixel selektiv das Filtern von gespeicherten
Abfragen in benachbarten Einzelbildern einstellen, um das Schwenken
oder das Zoomen zwischen den benachbarten Einzelbildern auf einer
Bruchteilpixelgrenze zu bewirken. Wenn ein Anzeigeeffekt auf einer
Bruchteilpixelgrenze implementiert wird, bedeutet dies, daß der Anzeigeeffekt
nicht auf ganze Pixelbewegungen eingeschränkt ist, sondern stattdessen
durch eine Anzahl von ganzen und Bruchteilpixeln implementiert werden
kann, z.B. ein Schwenk nach rechts um 0,25 Pixel, 0,5 Pixel oder
10,25 Pixel.
-
Ein Vorteil dieser Erfindung ist
ein glatteres Schwenken oder Zoomen, wenn z.B. die Abfragen mit
einer geringeren Rate als die Faltung dargestellt werden. Man nehme
beispielsweise eine Situation an, bei der die Kamera in einer bestimmten
Richtung verschwenkt wird oder heran- oder herausgezoomt wird und
die Abfragen mit der halben Rate der Faltungsoperation dargestellt
werden. In diesem Fall können
im Stand der Technik zwei Faltungsoperationen auf denselben Abfragedaten
durchgeführt
werden und dann tritt ein Sprung zu der nächsten Schwenkposition in dem
nächsten
dargestellten Einzelbild auf. Entsprechend der vorliegenden Erfindung kann
die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart
betrieben werden, daß sie
die Faltungszentren in dem zweiten Faltungszyklus auf dem Satz von
Abfragedaten einstellt (z.B. die Faltungszentren um 10,5 Pixel nach
rechts bewegt), um die Schwenkoperation zu bewirken, selbst wenn
neue Abfragedaten entsprechend dem Schwenk noch nicht in dem Abfragepufferspeicher
dargestellt wurden. Hier ist es wünschenswert, daß zusätzliche
Abfragedaten ursprünglich
in dem Abfragepufferspeicher rechts von dem gegenwärtig sichtbaren
Bereich in Vorwegnahme des Anzeigeeffekts dargestellt wurden, was
während
der zweiten Faltung der Abfragedaten implementiert wurde. Beispielsweise
kann die Darstellungseinheit zumindest zusätzliche 10,5 Pixel rechts von
dem gegenwärtig
sichtbaren Bereich darstellen, um sicherzustellen, daß Abfragen
vorhanden sind, um den Schwenk nach rechts um 10,5 Pixel zu implementieren.
-
Wenn ein Anzeigeeffekt gewünscht wird
und wenn ein erster Satz von gespeicherten Abfragen verwendet wurde
bei der Erzeugung von Ausgangspixeln in einem ersten Einzelbild,
ist somit die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betreibbar,
daß sie
selektiv das Filtern des ersten Satzes von gespeicherten Abfragen
in einem nachfolgenden Einzelbild einstellt, um den Anzeigeeffekt in
dem nachfolgenden Einzelbild zu implementieren.
-
18 und 19 Beispielhafte Einstellung
von Faltunaszentren und des Radius um ein Zoomen zu implementieren
-
Die 18 und 19 stellen ein Beispiel dar, wo
die Filtereinstellung der vorliegenden Erfindung verwendet werden
kann, um einen Zoomanzeigeeffekt zu implementieren. 18 stellt einen repräsentativen Abschnitt von Abfragen
von dem Abfragepufferspeicher dar, in dem die Faltungszentren auf
entsprechenden Behältern
zentriert sind und eine erste Radiusgröße haben. 19 stellt das Filtern dar, das auf ein
nachfolgendes Einzelbild angewendet wird, indem dieselben oder unterschiedliche
Abfragedaten verwendet werden können,
und indem das Faltungszentrum und die Radiusgröße eingestellt wurden, um einen "Heranzoom"-Effekt zu implementieren.
Wie in 19 gezeigt ist,
wird durch Veränderung
der Zentren der Faltungsfilter und des Radius der Faltungsfilter
ein unterschiedlicher Anzeigeeftekt erzeugt, ohne daß irgendeine
neue Darstellung von unterschiedlichen Abfragedaten in dem Abfragepufferspeicher
erforderlich ist. Mit anderen Worten können die existierenden Abfragen
in dem Abfragepufferspeicher in Verbindung mit einem unterschiedlichen
Filtertyp verwendet werden, um unterschiedliche Anzeigeeffekte, wie
z.B. das Zoomen, das Drehen, das Schwenken und das Bewegen der Szene
und andere zu bewirken.
-
Die Typen der Filtervariablen, die
unabhängig
verändert
werden können,
beinhalten den Abstand zwischen den Pixeln, die Positionen der Pixel, z.B.
die Faltungszentren, und den Radius der Filter und andere. Das System
und das Verfahren der vorliegenden Erfindung kann verwendet werden,
um diese Anzeigeeffekte auf Bruchteilpixelgrenzen zu implementieren,
z.B. sind diese Effekte nicht auf ganze Pixelbewegungen beschränkt, sondern
können auf
einer Subpixel- oder Bruchteilpixelgrenze implementiert werden.
-
Es sei bemerkt, daß in dieser
Ausführungsform
es nicht notwendig sein muß,
den Videotakt einzustellen, wenn das Bild sich tatsächlich bewegt.
In einer anderen Ausführungsform
kann das Verfahren den Videotakt einstellen, wie z.B. um ein "herangezoomtes" Bild auf einem bestimmten
Ort auf der Anzeige zu positionieren oder um die Veränderung
der Faltungszentren zu ergänzen,
wenn sie entgegengesetzt ist, um der Gegenwirkung der Veränderung
der Faltungszentren entgegenzuwirken.
-
Dieses Verfahren des Einstellens
der Filterung, um einen Anzeigeeftekt zu implementieren, kann in
Verbindung mit kopfverfolgenden oder augenverfolgenden Anzeigen
verwendet werden. Wenn beispielsweise ein Betrachter mit einer kopfverfolgenden
oder augenverfolgenden Anzeige seinen Kopf schnell wendet, kann
das Verfahren auf einem gegenwärtigen
Satz von dargestellten Abfragen implementiert werden, um den gewünschten
Anzeigeeffekt, wie z.B. das Schwenken entsprechend der Bewegung
des Benutzers, zu implementieren. Dies kann Software auf einem höheren Niveau
erfordern, wie z.B. die Anwendungssoftware oder den Grafiktreiber,
z.B. den Java-3D-Grafiktreiber, um Kenntnis betreffend der Grenzen,
wo diese Anzeigeeffekte implementiert werden können, zu haben, einschließlich Information,
wie z.B. die minimale Abschneiddistanz, den Typ der Bewegung und
möglicherweise
den Anzeigetyp, der verwendet wird. Somit kann der Softwaretreiber
oder andere graphische Software bestimmen, wo diese Anzeigeeffekte
implementiert werden können.
Wenn der Anzeigeeffekt implementiert werden kann, kann das Verfahren
die Bewegung in eine Kombination aus einem Schwenk und/oder einer
Skalierung aufteilen, um den gewünschten
Effekt zu implementieren. Beispielsweise würde der Grafiktreiber, wie
z.B. ein Java-3D-Grafiktreiber, Kenntnis haben betreffend der Orientierung
der Kameraposition von Einzelbild zu Einzelbild und ebenso Kenntnis haben
entsprechend der Grafikumgebung. Wenn der Grafiktreiber lernt, daß die Kamera
bei einem Einzelbild in einer Position ist und in dem nächsten Einzelbild
exakt in derselben Position ist mit dem einzigen Unterschied, daß die Kamera
gedreht wird, dann kann der Grafiktreiber das Grafiksystem derart
instruieren, daß dies
durch einen Schwenk oder durch einen Schwenk und eine Skalierung
durch die Einstellung der Faltungszentren oder anderer Filtervariablen
approximiert wird.
-
Der gewünschte Grad eines Schwenks
oder einer Drehbewegung, um einen Anzeigeeffekt zu implementieren,
kann von der relativen Nähe
des involvierten Objektes abhängen.
In einer Ausführungsform
kann die Software den Grad der Verschiebung basierend auf nahen
und fernen Objekten berechnen. Wo die Objekte bei einem unendlichen
oder bei einem konstanten Abstand sind, wird der Grad der Verschiebung
relativ einfach berechnet. Wenn die Objekte, die auf der Anzeige
präsent
sind, eine Mischung von Abständen
haben, dann kann die Grafiksoftware den Grad der Verschiebung berechnen
basierend auf einer Mittelung von ausgewählten Objekten oder basierend
auf einer Augenverfolgungsinformation in Bezug auf die Konvergenz
des Betrachters. Als ein Beispiel kann der Grafiktreiber bei einer
einfachen Gebäudedurchwanderung
vorprogrammiert werden oder "wissen", daß die meisten
Objekte relativ nahe zu dem Betrachter sind und daher kann dieses
Merkmal während
des gesamten Durchgangs aktiviert sein. Das Grafiksystem und/oder
die Software kann ebenso auf einer Einzelbildbasis den Bereich von
Abständen
bestimmen, um zu bestimmen, ob diese Anzeigeeffekte implementiert
werden können. Wo
diese Anzeigeeffekte zuviel Störung
erzeugen, haben entweder die graphische Treibersoftware oder der
Benutzer die Fähigkeit,
dieses Merkmal abzuschalten. Es sei bemerkt, daß diese Technik am besten auf
Bildern arbeitet, die einen Fokus bei einer großen Distanz relativ zu der
Skalierung der inkrementellen Kamerabewegung ist. Es sei weiterhin
bemerkt, daß manche
perspektivischen Probleme für Bilder
mit einem Fokus bei einem relativ nahen Abstand zu dem Bild auftreten.
-
20
-
20 ist
ein Flußdiagramm,
das eine Ausführungsform
der Erzeugung eines Anzeigeeffekts entsprechend der vorliegenden
Erfindung darstellt. Wie in Schritt 442 gezeigt ist, bestimmt
das Verfahren eine Veränderung
in der Position und Orientierung des dargestellten Bildes. Dieser
Schritt kann durchgeführt
werden durch die graphische Treibersoftware, die auf der Host-CPU
ausgeführt
wird, oder durch das Grafiksystem 112. In Schritt 444 bestimmt
das Verfahren einen Schwenk- und/oder Skalierungswert basierend
auf einem spezifizierten Punkt in dem Bild unter Verwendung der
ermittelten Veränderung
in der Position und der Orientierung von Schritt 442. Schritt 444 kann
ebenso entweder von der Host-CPU oder von dem Grafiksystem 112 durchgeführt werden.
In Antwort auf die Schritte 442 und 444 erzeugt das Verfahren in
Schritt 446 die Startadresse des Faltungszentrums, die
Schrittgröße und/oder
den Filterradius basierend auf dem in Schritt 444 bestimmten Schwenk-
und Skalierungswert. In Schritt 446 kann das Verfahren
ebenso andere Filtervariablenwerte programmieren, die verwendet
werden, um den gewünschten
Schwenk-, Skalierungs-, Dreh- oder anderen Anzeigeeffekt zu implementieren,
sofern benötigt.
-
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.