DE60000450T2 - Graphisches system mit überabgetastetem musterpuffer mit erzeugung von ausgangspixeln unter benutzung von selektiver justierung der filterung zur implementierung von anzeigeeffekten - Google Patents
Graphisches system mit überabgetastetem musterpuffer mit erzeugung von ausgangspixeln unter benutzung von selektiver justierung der filterung zur implementierung von anzeigeeffektenInfo
- Publication number
- DE60000450T2 DE60000450T2 DE60000450T DE60000450T DE60000450T2 DE 60000450 T2 DE60000450 T2 DE 60000450T2 DE 60000450 T DE60000450 T DE 60000450T DE 60000450 T DE60000450 T DE 60000450T DE 60000450 T2 DE60000450 T2 DE 60000450T2
- Authority
- DE
- Germany
- Prior art keywords
- frame
- pixel
- filtering
- sample
- filter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000001914 filtration Methods 0.000 title claims description 135
- 239000012723 sample buffer Substances 0.000 title claims description 103
- 230000000694 effects Effects 0.000 title claims description 102
- 238000000034 method Methods 0.000 claims description 113
- 239000000872 buffer Substances 0.000 claims description 51
- 238000004091 panning Methods 0.000 claims description 38
- 238000004364 calculation method Methods 0.000 claims description 29
- 230000033001 locomotion Effects 0.000 claims description 13
- 230000003139 buffering effect Effects 0.000 claims description 5
- 239000000523 sample Substances 0.000 description 243
- 230000015654 memory Effects 0.000 description 90
- 238000009877 rendering Methods 0.000 description 72
- 238000006243 chemical reaction Methods 0.000 description 68
- 230000008569 process Effects 0.000 description 33
- 230000006870 function Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000006073 displacement reaction Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000000007 visual effect Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 8
- 239000013598 vector Substances 0.000 description 8
- 238000002156 mixing Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006837 decompression Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000009499 grossing Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000011094 buffer selection Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- MBYLVOKEDDQJDY-UHFFFAOYSA-N tris(2-aminoethyl)amine Chemical compound NCCN(CCN)CCN MBYLVOKEDDQJDY-UHFFFAOYSA-N 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Processing (AREA)
Description
- Diese Erfindung betrifft im allgemeinen das Gebiet der Computergrafik und insbesondere Grafiksysteme mit hoher Leistung.
- 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. Stattdessen 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 begrenztet 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 60 Hz oder mehr unterstützen. Bei dieser Wachstumsrate ist es in nicht allzu ferner Zukunft möglich, daß Grafiksysteme buchstäblich in der Lage sind, mehr Pixel wiederzugeben als ein einzelnes menschliches Sehsystem wahrnehmen kann. Während diese zusätzliche Leistung in Umgebungen mit mehreren Ansichten verwendet werden kann, kann sie in gebräuchlicheren Umgebungen mit hauptsächlich einer Ansicht verschwendet sein. Somit ist ein graphisches System wünschenswert, das in der Lage ist, sich an die variable Natur des menschlichen Auflösungssystems anzupassen (das heißt, in der Lage ist, die Qualität dort zur Verfügung zu stellen, wo sie benötigt wird oder am meisten aufnehmbar ist).
- Während die Anzahl von Pixeln ein wichtiger Faktor bei der Bestimmung der Leistung von graphischen Systemen ist, ist ein anderer Faktor von gleicher Wichtigkeit die Qualität des Bildes. Beispielsweise kann ein Bild mit hoher Pixeldichte immer noch unrealistisch erscheinen, wenn Kanten innerhalb des Bildes zu scharf oder zu zackig sind (ebenso als Alias-Effekt bezeichnet). Eine gut bekannte Technik, diese Probleme zu überwinden, ist das Anti-Aliasing. Anti-Aliasing beinhaltet das Glätten der Kanten von Objekten durch Schattieren von Pixeln entlang der Grenzen von graphischen Elementen. Genauer gesagt bringt das Anti-Aliasing das Entfernen von höher frequenten Komponenten von einem Bild mit sich, bevor sie störende visuelle Artefakte verursachen. Beispielsweise kann Anti-Aliasing Kanten mit hohem Kontrast in einem Bild dämpfen oder glätten durch Einstellen von bestimmten Pixeln auf Zwischenwerte (z. B. um die Silhouette eines hellen Objekts, das vor einem dunklen Hintergrund überlagert wird).
- Ein anderer visueller Effekt, der verwendet wird, um den Realismus von Computerbildern zu erhöhen, ist das Alpha-Blending. Alpha-Blending ist eine Technik, die die Transparenz eines Objekts steuert, was die realistische Darstellung von durchsichtigen bzw. durchscheinenden Oberflächen, wie z. B. Wasser oder Glas, erlaubt. Ein anderer Effekt, der verwendet wird, um den Realismus zu steigern, ist das Fogging. Das Fogging verdunkelt ein Objekt, wenn es sich von dem Betrachter weg bewegt. Das einfache Fogging ist ein Spezialfall des Alpha-Blendings, in dem sich der Grad von alpha mit dem Abstand ändert, so daß das Objekt so erscheint, als ob es im Nebel bzw. im Dunst verschwindet, wenn sich das Objekt von dem Betrachter weg bewegt. Dieses einfache Fogging kann ebenso als "depth cueing" bzw. Tiefeninformation oder atmosphärische Abschwächung bezeichnet werden, das heißt, das Verringern des Kontrastes eines Objekts, so daß es weniger auffallend erscheint, wenn es in der Ferne verschwindet. Komplexere Typen des Foggings gehen über eine einfache lineare Funktion hinaus, um eine komplexere Verbindung zwischen dem Grad der Transparenz und dem Abstand eines Objekts von dem Betrachter bereitzustellen. Softwaresysteme des gegenwärtigen Standes der Technik gehen sogar noch weiter durch Verwendung von atmosphärischen Modellen, um tiefliegenden Nebel mit verbessertem Realismus bereitzustellen.
- Während die oben aufgelisteten Techniken das Erscheinungsbild von Computergrafikbildern dramatisch verbessern können, haben sie ebenso bestimmte Begrenzungen. Insbesondere können sie ihre eigenen Aberrationen einfügen und sind typischerweise von der Dichte der auf der Anzeigevorrichtung angezeigten Pixel begrenzt.
- Im Ergebnis ist daher ein Grafiksystem wünschenswert, das in der Lage ist, verbesserte Leistungsniveaus zu benutzen, um nicht nur die Anzahl von dargeslellten 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 lasen 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 werden, kann ein realistischeres Endbild kreieren, da allzu abrupte Veränderungen in dem Bild durch den Filterungsprozeß geglättet werden können.
- Diese Supersampling-Systeme des Standes der Technik erzeugen typischerweise eine Anzahl von Abfragen, die weit größer als die Anzahl von Pixelorten auf der Anzeige sind. Diese Systeme des Standes der Technik haben typischerweise Darstellungsprozessoren, die die Abfragen berechnen und sie in einem Darstellungspufferspeicher ablegen. Die Filterhardware liest dann die Abfragen aus dem Darstellungspufferspeicher, filtert die Abfragen, um Pixel zu erzeugen und legt dann die Pixel in einem traditionellen Einzelbildpufferspeicher ab. Der traditionelle Einzelbildpufferspeicher ist typischerweise doppelt puffergespeichert, wobei eine Seite verwendet wird für die Aktualisierung der Anzeigevorrichtung, während die andere Seite von der Filterhardware aktualisiert wird. Nachdem die Abfragen gefiltert wurden, werden die resultierenden Pixel in einem traditionellen Einzielwertpufferspeicher 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 supergesampelten 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 Abfragewertpufferspeicher 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 die 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 werden.
- Die europäische Patentanmeldung EP-A-0,463,700 (Philips) beschreibt ein Verfahren zur Erzeugung eines Bildes von Objekten in einem dreidimensionalen Raum für die Anzeige auf einer zweidimensionalen Pixelanordnung. Das Verfahren mittelt N Darstellungen bzw. Wiedergaben des Bildes, wobei jede Darstellung gegenüber der vorherigen Darstellung eine Subpixelverschiebung aufweist, um einen Anti-Aliasing-Filtereffekt zu bewirken. Für jedes Bild, das auf der Anzeigevorrichtung erscheint, wird ein Satz von N Zwischenbildern dargestellt und ein Modul liefert für jede der N Darstellungen einen unterschiedlichen vorbestimmten Verschiebungs- bzw. Offsetwert, so daß der Abfragewert sich für jedes Pixel zwischen den Darstellungen bewegt. Ein Bildsummationspufferspeicher addiert die Zwischenbilder, wenn sie erzeugt werden, auf, so daß nach N Darstellungen der Pufferspeicher ein Bild enthält, das overgesamplet wurde und gefiltert wurde in Übereinstimmung mit der Abfragepunktverteilung und jeglichen Wichtungen, die zu jedem Abfragepunkt zugefügt werden können.
- Es wäre wünschenswert, diese verbesserte Grafikarchitektur zu verwenden, um weiter verbesserte Anzeigefähigkeiten zur Verfügung zu stellen, einschließlich der Reduzierung von Artefakten, wie zum Beispiel wenn die Darstellungsrate sich von der Pixelerzeugungsrate unterscheidet, wie auch verbesserte Anzeigeeffekte, wie zum Beispiel Panoramierung, Zooming und dergleichen, einschließlich 2D-Panoramierung und Zooming wie auch 3D-Bewegung, zum Beispiel Positions- und Drehveränderung um einen ersten Knotenpunkt der Kamera.
- Der erste Aspekt der Erfindung stellt ein graphisches System zur Verfügung mit: einem Grafikprozessor, der so betreibbar ist, daß er eine Mehrzahl von Abtastungen bzw. Momentwerten darstellt bzw. erzeugt, einen Abfragewertpufferspeicher, der mit dem Grafikprozessor verbunden ist, um die Mehrzahl von Abtastwerten bzw. Momentwerten zu speichern, und einer Einheit zur Umrechnung von Abfragewert auf Pixel, die mit dem Abfragewertpufferspeicher verbunden ist, wobei die Einheit zur Umrechnung von Abfragewert auf Pixel so betreibbar ist, daß sie die gespeicherte Mehrzahl von Abfragewerten aus dem Abfragewertpufferspeicher auswählt und filtert, um Ausgangspixel zu erzeugen, wobei die Einheit zur Umrechnung von Abfragewert auf Pixel so betreibbar ist, daß sie (a) einen ersten Teilsatz aus der gespeicherten Mehrzahl von Abfragewerten auswählt und filtert, um ein erstes der Ausgangspixel in einem ersten Einzelbild zu erzeugen und (b) einen zweiten Teilsatz der gespeicherten Mehrzahl von Abfragewerten auswählt und filtert, der sich von dem ersten Teilsatz unterscheidet, um das erste Ausgangspixel in einem zweiten Einzelbild zu erzeugen, wobei der erste Teilsatz und der zweite Teilsatz so ausgewählt werden, daß sie einen Anzeigeeffekt auf den Ausgangspixeln implementieren.
- Ein anderer Aspekt der Erfindung stellt ein Verfahren zur Erzeugung von Pixeln für die ANzeige in einem Grafiksystem zur Verfügung, wobei das Verfahren aufweist: Darstellen bzw. Erzeugen einer Mehrzahl von Abfragewerten in einem Abfragewertpuffer, Auswählen und Filtern der gespeicherten Mehrzahl von Abfragewerten aus dem Abfragewertpufferspeicher, um Ausgangspixel für die Anzeige zu erzeugen, wobei das Auswählen und Filtern aufweist: (a) Auswählen und Filtern eines ersten Teilsatzes aus der gespeicherten Mehrzahl von Abfragewerten, um ein erstes der Ausgangspixel in einem ersten Einzelbild zu erzeugen und (b) Auswählen und Filtern eines zweiten Teilsatzes aus der gespeicherten Mehrzahl von Abfragewerten, der sich von dem ersten Teilsatz unterscheidet, um das erste Ausgangspixel in einem zweiten Einzelbild zu erzeugen, wobei der erste Teilsatz und der zweite Teilsatz so ausgewählt werden, daß sie einen Anzeigeeffekt auf den Ausgangspixeln implementieren.
- Ausführungsformen der Erfindung stellen ein Computergrafiksystem zur Verfügung, das einen supergesampleten Abfragewertpuffer und eine programmierbare Einheit zur Umrechnung von Abfragewert zu Pixel für das Aktualisieren der Anzeige benutzt, wobei das Grafiksystem die Abfragefilterung einstellen kann, um Artefakte zu reduzieren oder Anzeigeeffekte zu implementieren. In einer Ausführungsform kann das Grafiksystem einen Grafikprozessor, einen supergesampleten Abfragewertpuffer und eine Einheit zur Umrechnung von Abfragewert in Pixel haben. Der Grafikprozessor erzeugt eine Mehrzahl von Abfragen und speichert sie in einem Abfragewertpufferspeicher. Vorzugsweise erzeugt der Grafikprozessor mehr als eine Abfrage für zumindest einen Untersatz der Pixelorte auf der Anzeige und speichert diese. Der Abfragewertpufferspeicher ist somit ein supergesampleter Abfragepufferspeicher, der eine Anzahl von Abfragewerten speichert, die in manchen Ausführungsformen weit größer als die Anzahl von Pixelorten auf der Anzeige sein kann. In anderen Ausführungsformen kann die Gesamtzahl von Abfragewerten näher bei, gleich zu oder sogar geringer als die Gesamtzahl von Pixelorten auf dem Anzeigegerät sen, die Abfragewerte können jedoch in manchen Gebieten dichter positioniert und in anderen Gebieten weniger dicht positioniert sein.
- Die Einheit zur Umrechnung von Abfragewert in Pixel ist derart konfiguriert, daß sie die Abfragewerte von dem supergesampelten Abfragewertpufferspeicher liest und die Abfragewerte in entsprechende Ausgangspixel filtert oder faltet, wobei die Ausgengspixel dann zur Verfügung gestellt werden, um die Anzeige zu aktualisieren. Die Einheit zur Umrechnung von Abfragewert in Pixel wählt eine oder mehrere Abfragewerte aus und filtert sie, um einen Ausgangspixel zu erzeugen. Es sei bemerkt, daß die Anzahl von Abfragewerten, die von der Einheit zur Umrechnung von Abfragewert zu Pixel ausgewählt und/oder gefiltert werden, eins oder in der bevorzugten Ausführungsform größer als eins sein kann.
- Die Einheit zur Umrechnung von Abfragewert zu Pixel kam auf die Abfragewerte von dem supergesampelten Abfragewertpufferspeicher zugreifen, eine Filteroperation durchführen und dann die resultierenden Ausgangspixel direkt der Anzeige zur Verfügung stellen, vorzugsweise in Echtzeit. Das Grafiksystem kann ohne einen konventionellen Einzelbildpufferspeicher arbeiten, d. h. das Grafiksystem braucht nicht einen konventionellen Einzelbildpufferspeicher zu verwenden, der die tatsächlichen Pixelwerte speichert, die auf der Anzeige aktualisiert werden. Es sei bemerkt, daß manche Anzeige interne Einzelbildpufferspeicher haben können, diese werden jedoch als integraler Teil der Anzeigevorrichtung und nicht des Grafiksystems angesehen. Die Einheiten zur Umrechnung von Abfragewert zu Pixel können somit jedes Pixel für jede Schirmaktualisierung auf einer Echtzeitbasis oder während der Übertragung berechnen.
- In einer Ausführungsform ist die Einheit zur Umrechnung von Abfragewert zu Pixel so betreibbar, daß sie das Filtern von abgespeicherten Abfragewerten einstellt, um Artefakte zu reduzieren oder einzustellen, zum Beispiel ist sie betreibbar, um selektiv das Filtern von gespeicherten Abfragewerten in benachbarten Einzelbildern einzustellen, um Artefakte zwischen den benachbarten Einzelbildern zu reduzieren. Die Einheit zur Umrechnung von Abfragewert zu Pixel kann beispielsweise einen ersten Satz von gespeicherten Abfragewerten auswählen und filtern, um erste Ausgangspixel für die Anzeige unter Verwendung eines ersten Filters zu erzeugen, und kann später einen zweiten Satz von abgespeicherten Abfragewerten auswählen und filtern, um zweite Ausgangspixel für die Anzeige unter Verwendung eines zweiten Filters, der sich von dem ersten Filter unterscheidet, zu erzeugen. In einer Ausführungsform kann die Einheit zur Umrechnung von Abfragewert zu Pixel selektiv das Filtern von abgespeicherten Abfragewerten in benachbarten Einzelbildern einstellen durch Simulation von verschiedenen Schirmeffekten oder Anzeigeeffekten, wie zum Beispiel Panoramierung, Zooming und dergleichen, einschließlich der 2D-Panoramierung und des Zoomings als auch der 3D-Bewegung, zum Beispiel Positions- und Drehveränderungen um einen ersten Knotenpunkt einer Kamera für reduzierte Artefakte.
- Die Einheit zur Umrechnung von Abfragewert zu Pixel stellt vorzugsweise wahlweise die Zentralorte (Zentren) in dem Abfragewertpufferspeicher, wo der Filter (zum Beispiel ein Faltungsfilter) während der Filterung von abgespeicherten Abfragewerten angelegt wird, ein, um Artefakte zu reduzieren. Die Zentralorte, an denen der Faltungsfilter angelegt wird, entsprechen den Zentren der Ausgangspixel, die erzeugt werden. Die Einheit zur Umrechnung von Abfragewert zu Pixel beinhaltet eine Adreßerzeugungslogik für das Erzeugen von Adressen entsprechend den Zentralorten, wobei der Faltungsfilter an diese Zentralorte bei der Erzeugung der Ausgangspixel für die Anzeige angelegt wird. Die Adreßerzeugungslogik ist programmierbar, um Adressen bei ausgewählten Unterpixelpositionen entsprechend den gewünschten Zentren zu erzeugen. In der bevorzugten Ausführungsform ist die Anfangssubpixelpositionsadresse, die von der Adreßerzeugungslogik erzeugt wird, programmierbar und die Pixelschrittgröße kann konstant bleiben. Die Einheit zur Umrechnung von Abfragewert zu Pixel ist derart betreibbar, daß sie selektiv die Zentralorte einstellt, an denen der Filter angelegt wird, in einer oder mehreren der X- oder Y-Richtung und kann die Zentralorte der Filter durch einen Unterpixelabstand einstellen. Die Einheit zur Umrechnung von Abfragewert zu Pixel kann einen Faltungsfilter für die Filterung der Abfragewerte oder andere Filtertypen verwenden.
- In dieser Ausführungsform kann der Abfragewertpufferspeicher Abfragewerte speichern entsprechend eines Bereichs größer als ein sichtbarer Bereich der Anzeige und ein oder mehrere Abfragewerte von außerhalb des ("vorher") sichtbaren Bereichs der Anzeige kann bei der Erzeugung von Ausgangspixeln entsprechend der eingestellten Faltungszentren verwendet werden. Das Grafiksystem kann ebenso derart betrieben werden, um die Videotaktung selektiv einzustellen, um die Einstellung der Zentrumsorte der Faltungsfilter während der Filterung der gespeicherten Abfragewerte zu kompensieren.
- Die Einheit zur Umrechnung von Abfragewert zu 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 Ausgangs pixeln in einem vorherigen Einzelbild verwendet wurden, kann die Einheit zur Umrechnung von Abfragewert zu Pixel 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 Abfragewert zu Pixel selektiv das Filtern eines ähnlichen Satzes (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 fixiert zwischen benachbarten Einzelbildern 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 Abfragewerte zu Pixel kann mit einer unterschiedlichen (zum Beispiel höheren) Geschwindigkeit arbeiten als die Darstellungsrate. Beispielsweise kann die Einheit zur Umrechnung von Abfragewert zu Pixel Ausgangspixel mit einer unterschiedlichen Geschwindigkeit erzeugen als der Grafikprozessor die Abfragewerte in dem Abfragewertpufferspeicher darstellt, zum Beispiel 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 Faltungs-Pipeline in der Einheit zur Umrechnung von Abfragewert zu Pixel während der Übertragung zu arbeiten, unabhängig von der Darstellungsgeschwindigkeit. In diesem System ist die Einheit zur Umrechnung von Abfragewert zu 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 Arte fakte 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 Panoramieren, das Zooming, das Drehen oder das Bewegen von Szenen unter anderem, einschließlich der 2D-Panoramierung und des -Zoomings als auch der 3D-Bewegung, zum Beispiel Positions- und Drehveränderungen um einen ersten Knotenpunkt einer Kamera.
- In dieser Ausführungsform kann der Einzelwertpufferspeicher 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 zu 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 Abfragewert in Pixel kann das Filtern von gespeicherten Abfragewerten einstellen, um die Anzeigeeffekte auf einer Bruchteilpixelgrenze zu implementieren. Beispielsweise kann die Einheit zur Umrechnung von Abfragewert zu Pixel selektiv das Filtern von gespeicherten Abfragewerten in benachbarten Einzelbildern einstellen, um die Panoramierung oder das Zooming zwischen den benachbarten Einzelbildern auf einer Bruchteilpixelgrenze zu bewirken.
- Ein Vorteil dieser Erfindung ist eine glattere Panoramierung oder ein glatteres Zooming, 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 denselben 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 Abfragewerte zu Pixel arbeiten, um die Faltungszentren (zum Beispiel bewege 10,5 Pixel nach rechts) in dem zweiten Faltungszyklus einzustellen, um die Schwenkoperation zu bewirken, selbst wenn neue Daten entsprechend des Schwenks 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 (zum Beispiel in den doppelt puffergespeicherten Abfrgewertpuffer). Die Abfragewerforte können entsprechend einer Anzahl von Positionierungs- oder Abstandsschemata spezifiziert werden. Die gespeicherten Abfragewerte können dann ausgewählt und 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.
- Das vorhergehende 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:
- Fig. 1 eine Ausführungsform eines Computersystems darstellt, das eine Ausführungsform eines Grafiksystems enthält,
- Fig. 1A stellt ein Computernetzwerk dar, das zumindest einen Servercomputer und einen oder mehrere Client-Computer aufweist, wobei die Client-Computer eine Ausführungsform eines Grafiksystems beinhalten,
- Fig. 2 ein vereinfachtes Blockdiagramm des Computersystems von Fig. 1 ist,
- Fig. 3 ein Blockdiagramm ist, das mehr Details einer Ausführungsform des Grafiksystems von Fig. 1 zeigt,
- Fig. 4 eine traditionelle Pixelberechnung darstellt,
- Fig. 5A eine Ausführungsform des Supersamplings darstellt,
- Fig. 5B eine Zufallsverteilung von Abfragewerten darstellt,
- Fig. 6 Details einer Ausführungsform eines Grafiksystems darstellt mit einer Ausführungsform eines supergesampleten Abfragepufferspeichers variabler Auflösung,
- Fig. 7 Details einer anderen Ausführungsform eines Grafiksystems mit einer Ausführungsform eines supergesampleten Abfragewertpufferspeichers mit variabler Auflösung und einem doppelt gepufferten Abfragewertpositionsspeicher darstellt,
- Fig. 8 Details von drei unterschiedlichen Ausführungsformen von Abfragewerfpositionsschemata darstellt,
- Fig. 9 Details einer Ausführungsform eines Abfragewertpositionierungsschemas darstellt,
- Fig. 10 Details einer anderen Ausführungsform eines Abfragewertpositionierungsschemas darstellt,
- Fig. 11 Details des Verfahrens des parallelen Umwandelns von Abfragewerten in Pixel darstellt,
- Fig. 11A mehr Details der Ausführungsform von Fig. 11 darstellt,
- Fig. 11B Details einer Ausführungsform eines Verfahrens für das Handeln mit Grenzbedingungen darstellt,
- Fig. 12 ein Flußdiagramm ist, das eine Ausführungsform eines Verfahrens zum Zeichnen von Abfragen in einen supergesampleten Abfragepufferspeicher darstellt,
- Fig. 12A eine Ausführungsform eines Verfahrens für die Codierung von Dreieck- Eckpunkten darstellt,
- Fig. 13 eine Ausführungsform eines Verfahrens zum Berechnen von Pixeln aus Abfragewerten darstellt,
- Fig. 14 Details einer Ausführungsform einer Umrechnung von Abfrage in Pixel für einen Beispielsatz von Abfragen darstellt,
- Fig. 15 ein Flußdiagramm ist, das die Einstellung der Filterung für ein Einzelbild aus Pixeln darstellt,
- Fig. 16A ein erstes Filterungsverfahren für Abfragewerte darstellt, wobei die Faltungszentren auf den Behältern zentriert sind,
- Fig. 16B einen Abschnitt des Pixelbildes darstellt, das von den Abfragewerte unter Verwendung des ersten Filterungsverfahrens von Fig. 16A erzeugt wurde, wobei das Pixelbild einen Artefakt beinhaltet (eine Linie mit Treppeneffekt),
- Fig. 17A ein automatisches Filterungsverfahren für Abfragewerte darstellt, wobei die Faltungszentren nach links relativ zu den Behältern verschoben sind,
- Fig. 17B einen Abschnitt des Pixelbildes darstellt, der von den Abfragewerten erzeugt wurde unter Verwendung des zweiten Filterungsverfahrens von Fig. 17A, wobei das Pixelbild nicht den Artefakt von Fig. 16B beinhaltet,
- Fig. 18 ein erstes Filterungsverfahren für Abfragewerte darstellt, in dem die Faltungszentren auf den Behältern zentriert sind,
- Fig. 19 ein zweites Filterungsverfahren für Abfragewerte darstellt, um einen Zoomanzeigeeffekt zu implementieren, wobei die Faltungszentren um einen größeren Abstand voneinander entfernt sind und der Filterradius erhöht wurde, und
- Fig. 20 ein Flußdiagramm ist, das die Erzeugung von Anzeigeeffekten darstellt.
- Während die Erfindung verschiedene Modifikationen und alternative Formen zuläßt, sind die spezifischen Ausführungsformen hiervon in den Zeichnungen beispielhaft gezeigt und werden hier im Detail beschrieben.
- In Fig. 1 ist eine Ausführungsform eines Computersystems 80 gezeigt, das ein dreidimensionales (3D-)Grafiksystem beinhaltet. Das 3D-Grafiksystem kann in irgendeinem von verschiedenen Systemen enthalten sein, einschließlich eines Computersystems, eines Netzwerk-PCs, einer Internetanwendung, einem Fernseher, einschließlich HDTV-Systmen und interaktiven Fernsehsystemen, persönlichen digitalen Assistenten (PDAs) und anderer Geräten, die unter anderem 2D- und/oder 3D-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 (z. B. ein CRT-, LCD- Plasmaschirm, digitale Spiegelanzeige (DMD) oder eine reflektive Silizium-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 (z. B. 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 3D-Grafikobjekte auf dem Anzeigegerät 84 anzuzeigen. Wie weiter unten beschrieben wird, beinhaltet das 3D-Grafiksystem in dem Computersystem 80 einen supergesampelten Abfragewertpufferspeicher mit einer programmierbaren Einheit zur Umrechnung von Abfrage zu Pixel, um die Qualität und den Realismus der auf der Anzeigevorrichtung 84 dargestellten Bilder zu verbessern.
- Die Einheit zur Umrechnung von Abfragewert zu Pixel kann einen Filter oder eine Faltungspipeline oder eine andere Hardware für das Erzeugen von Pixeln in Antwort auf Abfragewerte in dem Abfragewertepufferspeicher beinhalten. Die Einheit zur Umrechnung von Abfragewert zu Pixel kann betrieben werden, um Abfragewerte von dem Abfragewertpufferspeicher zu erhalten und Pixel zu erzeugen, die direkt der Anzeige zur Verfügung gestellt werden. Die Einheit zur Umrechnung von Abfragewert zu Pixel kann in einer "Echtzeit" Art und Weise oder in einer "während der Übertragung" Art und Weise arbeiten.
- Die Begriffe "Filter" und "Faltung" werden hier miteinander austauschbar verwendet und beziehen sich auf die mathematische Manipulation einer oder mehrerer Abfragen, um ein Pixel zu erzeugen (zum Beispiel durch Mitteln, Anwendung einer Faltungsfunktion, durch Summierung, durch Anwenden einer Filterungsfunktion, durch Wichten der Abfragewerte und dann deren Manipulation, durch Anwenden einer Zufallsfunktion usw.).
- Der Begriff "Echtzeit", so wie er hier verwendet wird, bezieht sich auf eine Funktion, die mit oder nahe der Aktualisierungsrate der Anzeigevorrichtung durchgeführt wird. "Während der Übertragung" bedeutet bei, nahe oder oberhalb der Aufnahmefähigkeit des menschlichen Visualisierungssystems für die Bewegungsfusion (wie oft ein Bild verändert werden muß, um die Illusion einer kontinuierlichen Bewegung zu geben) und der Flimmerfusion (wie oft die Lichtintensität verändert wer den muß, um die Illusion der Kontinuität zu geben). Diese Konzepte sind außerdem beschrieben in dem Buch "Spatial Vision" von Rüssel L. De Valois und Karen K. De Valois, Oxford University Press, 1988.
- Entsprechend der vorliegenden Erfindung kann die Einheil zur Umrechnung von Abfragewert zu Pixel arbeiten, um selektiv das Filtern der gespeicherten Abfragen einzustellen, um Artefakte zu reduzieren oder Anzeigeeffekte zu erzeugen. Die Erzeugung von Ausgangspixeln kann ebenso mit derselben oder einer unterschiedlichen Geschwindigkeit wie die Darstellungsgeschwindigkeit der Abfragewerte arbeiten, die berechnet werden und in dem Abfragewertpufferspeicher gemäß der vorliegenden Erfindung abgelegt werden.
- In Fig. 1A ist ein Computernetzwerk 500 gezeigt, das zumindest einen Servercomputer 502 und einen oder mehrere Clientcomputer 506A-N aufweist. (In der Ausführungsform, die in Fig. 4 gezeigt ist, sind die Clientcomputer 506A-B dargestellt.) Eines oder mehrere der Clientsysteme kann (können) ähnlich wie das Computersystem 80 konfiguriert sein, wobei jedes eines oder mehrere Grafiksysteme 112 hat, wie oben beschrieben wurde. Der Server 502 und der (die) Client(s) 506 können über eine Vielzahl von Verbindungen 504, wie z. B. ein lokales Netzwerk (LAN), ein Weitbereichsnetz (WAN) oder eine Internetverbindung miteinander verbunden sein. In einer Ausführungsform kann der Server 502 3D-geometrische Daten (die komprimiert sein können) speichern und zu einem oder mehreren Clients 506 übertragen. Die Clients 506 empfangen die komprimierten 3D- geometrischen Daten, dekomprimieren sie (sofern notwendig) und stellen dann die geometrischen Daten dar. Das dargestellte Bild wird dann auf der Anzeigevorrichtung des Clients angezeigt. Die Clients stellen die geometrischen Daten dar und zeigen das Bild an unter Verwendung von supergesampleten Abfragepufferspeicher- und Echtzeitfiltertechniken, die oben beschrieben wurden. In einer anderen Ausführungsform können die komprimierten 3D-geometrischen Daten zwischen den Clientcomputern 506 übertragen werden.
- Fig. 3A stellt ein vereinfachtes Blockdiagramm für ein Computersystem 80 gezeigt. Fig. 2 kann ebenso die Computer 506A, 506B oder 502 darstellen. Die Elemente des Computersystems 80, die nicht für ein Verständnis der vorliegenden Erfindung notwendig sind, sind aus Gründen der Bequemlichkeit nicht gezeigt worden. Wie gezeigt ist, beinhaltet das Computersystem 80 eine Hauptprozessoreinheit (CPU) 102, die mit dem Hochgeschwindigkeitsspeicherbus oder dem Systembus 104, der auch als Host-Bus bezeichnet wird, verbunden ist. Ein Systemspeicher 106 kann ebenso mit dem Hochgeschwindigkeitsbus 104 verbunden sein.
- Der Host-Prozessor 102 kann einen oder mehrere Prozessoren von variierenden Typen aufweisen, zum Beispiel Mikroprozessoren, Multiprozessoren und CPUs. Der Systemspeicher 106 kann irgendeine Kombination von unterschiedlichen Typen von Speicheruntersystemen, einschließlich Direktzugriffsspeichern zum Beispiel statische Direktzugriffspeicher oder "SRAMs", synchrone dy dynamische direkte Zugriffsspeicher oder "SDRAMs" und dynamische RAM-Bus- Direktzugriffspeicher oder "RDRAM", unter anderen) und Massenspeichergeräte aufweisen. Der Systembus oder Host-Bus 104 kann einen oder mehreren Kommunikationsbusse oder Host- Computerbusse (für die Datenkommunikation zwischen den Host-Prozessoren, den CPUs und den Speichersubsystemen) als auch spezialisierte Subsystembusse aufweisen.
- Ein 3D-Grafiksystem oder Grafiksystem 112 gemäß der vorliegenden Erfindung ist mit dem Hochgeschwindigkeitsspeicherbus 104 verbunden. Das 3D-Grafiksystem 112 kann mit dem Bus 104 durch beispielsweise einen Koordinatenschalter oder irgendeine 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 3D-Grafiksystem mit einem oder mehreren der Busse in dem Computersystem 80 verbunden sein kann und/oder mit verschiedenen Bustypen verbunden sein kann. Zusätzlich kann das 3D-Grafiksystem mit einem Kommunikationsanschluß verbunden sein und dadurch direkt Grafikdaten von einer externen Quelle, zum Beispiel dem Internet oder einem Netzwerk, empfangen. Wie in der Figur gezeigt ist, ist die Anzeigevorrichtung 84 mit dem 3D-Grafiksystem 112, das in dem Computersystem 80 enthalten ist, verbunden.
- Die Host-CPU 102 kann Informationen zu von dem Grafiksystem 112 entsprechend einem programmierten Eingabe-/Ausgabe- (I/O-)Protokoll über den Systembus 104 übertragen. Alternativ dazu kann das Grafiksystem 112 auf den Systemspeicher 106 entsprechend einem Direktzugriffsspeicher-(DMA-) oder einem intelligenten Busmastering zugreifer.
- Ein Grafikanwendungsprogramm, das den Standard einer Anwendungsprogrammierschnittstelle (API) erfüllt, wie z. B. OpenGL® oder Java3D kann auf der Host-CPU 102 ausgeführt werden und Befehle und Daten erzeugen, die ein geometrisches Grundelement (Grafik-Daten), wie z. B. ein Polygon, für die Ausgabe auf der Anzeigevorrichtung 84 definieren. Wie durch das bestimmte verwendete Grafikinterface definiert wird, können diese Grundelemente unterschiedliche Farbeigenschaften für die vorderen und hinteren Oberflächen haben. Der Host-Prozessor 102 kann diese Grafikdaten zu dem Speichersubsystem 106 übertragen. Danach kann der Host-Prozessor 102 die Grafikdaten zu dem Grafiksystem 112 über den Hostbus 104 übertragen. In einer anderen Ausführungsform kann das Grafiksystem 112 die geometrischen Datenanordnungen über den Hostbus 104 unter Verwendung von DMA-Zugriffszyklen einlesen. In noch einer anderen Ausführungsform kann das Grafiksystem 112 mit dem Systemspeicher über einen direkten Anschluß, wie z. B. eine Version eines verbesserten Grafikanschlusses (AGP), wie er von Intel Corporation vertrieben wird, verbunden sein.
- Das Grafiksystem kann graphische Daten von irgendeiner Quelle erhalten einschließlich der Host-CPU 102 und/oder dem Systemspeicher 106 oder anderem Speicher oder von externen Quellen, wie z. B. einem Netzwerk, oder einem Sendemedium (z. B. 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 dem Host-Prozessor 102 erzeugt wurden. Es sei bemerkt, daß während das Grafiksystem 112 als Teil des Computersystems 80 dargestellt worden ist, das Grafiksystem 112 ebenso auch als Einzelgerät konfiguriert sein kann (z. B. mit seinem eigenen eingebauten Bildschirm). Das Grafiksystem 112 kann ebenso als ein 1- Chip-Gerät oder als Teil eines Systems auf einem Chip oder als ein Mehrfachchipmodul konfiguriert sein.
- Es wird nun auf Fig. 3 Bezug genommen, dort ist ein Blockdiagramm, das Details einer Ausführungsform des Grafiksystems 112 darstellt, gezeigt. Wie in den Figuren 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 Abfragewert zu Pixel 170A-D aufweisen. Das Grafiksystem 112 kann ebenso einen oder mehrere Digital- zu-Analog-Umwandler (DACs) 178A-B aufweisen. Der Grafikprozessor 90 kann irgendein geeigneter Typ eines Hochleistungsprozessors sein (z. B. spezialisierte Grafikprozessoren oder Berechnungseinheiten, Multi-Media-Prozessoren, DSPs oder Universalprozessoren). 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 - 160N aufweisen, wie in der Figur gezeigt ist.
- 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 Übertragungsbandbreite 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 zu den Darstellungseinheiten 150A-D in komprimierter Form leitet.
- Die Grafikdaten können eines oder mehrere graphische Grundelemente enthalten. Der Begriff "graphische Grundelemente" beinhaltet, wie er hier verwendet wird, Polygone, parametrische Oberflächen, Splines, NURBS (nicht gleichförmige, rationale B-Splines), unterteilte Oberflächen, Fraktale, Volumengrundelemente 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.
- Die Darstellungseinheiten 150A-D (ebenso hier als Zeicheneinheiten bezeichnet) sind derart ausgelegt, 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 Grafikprozossor 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 worden 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 "supersampeln" 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.
- 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.
- 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ähler implementiertsein.
- Der supergesamplete Abfragepufferspeicher 162 weist Abfragespeicher 160A-160 N 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 gespeichertem 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 supergesampelten 116 bit tiefen Abfragepufferspeicher bilden, der mehrere Abfragewerte pro Pixel speichert. In einer Ausführungsform kann beispielsweise jeder Abfragespeicher 160A bis 160 N 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 supergesampelten 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 Ausangsseite). 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 können die Abfragepositionen (oder die Verschiebungen, die zu den regulären Gitterpositionen addiert werden, um die Abfragepositionen zu bilden) von einem Abfragepositionsspeicher (z. B. eine RAM-/ROM-Tabelle) gelesen werden. Mit Empfang eines Polygons, das darzustellen ist, bestimmt der Grafikprozessor 90, welche Abfragen innerhalb des Polygons fallen, basierend auf den Abfrageposition an. Die grafikverarbeitende Einheit 90 stellt die Abfragen, die innerhalb des Polygons fallen, dar, und speichert die dargestellten Abfragen in dem Abfragespeicher 160A-N. Es sei bemerkt, daß die Begriffe darstellen und zeichnen, wie sie hier verwendet werden, miteinander austauschbar verwendet werden und sich auf die Berechnung von Farbwerten für Abfragen beziehen. Tiefenwerte, alpha-Werte und andere Werte je Abfrage können ebenso in dem Darstellungs- oder Zeichenprozeß berechnet werden.
- Die Einheiten 170A-D zur Umrechnung von Abfrage zu Pixel können zwischen den Abfrage- Speichern 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 supergesampelten Rekonstruktionsbandpaßfilter implementieren, um die supergesampelten Abfragepufferspeicherdaten (die in den Abfragespeichern 160A-N abgelegt sind) in einzelne Pixelwerte umzuwandeln. In anderen Ausführungsformen können die Berechnungseinheiten 170A-D eine ausgewählte Anzahl von Abfragen filtern, um ein Ausgangspixel zu berechnen. Die gefilterten Abfragewerte können mit einem variablen Wichtungsfaktor multipliziert werden, der den Abfragewerten, die Positionen nahe dem Zentrum des zu berechnenden Pixels haben, mehr oder weniger Gewicht gibt. Andere Filterfunktionen können ebenso entweder allein oder in Kombination, verwendet werden, zum Beispiel Tent-Filter, zirkuläre 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, Farbraumkonvertierer 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, zum Beispiel ist sie derart betreibbar, daß sie selektiv die Filterung der gespeicherten Abfragen in be nachbarten Einzelbildern einstellt, um Artefakte zwischen den benachbarten Einzelbildern zu reduzieren. Das Filtern kann eingestellt werden durch Einstellen der Zentralorte, an denen der Filter angelegt wird, zum Beispiel 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 arbeiten, um Artefakte zu reduzieren oder im sichtbare Artefakte zu reduzieren, zum Beispiel Einfachartefakte auf unterschiedliche Orte in dem Bild zu verteilen, wodurch sie für einen Menschen weniger wahrnehmbar sind.
- In einer Ausführungsform beinhalten die Einheiten 170A-B zur Umrechnung von Abfrage in Pixel jeweils eine Adreßerzeugungslogik für das Erzeugen von Adressen entsprechend den Zentrumsorten (Zentren) in dem Abfragepufferspeicher, wo der Faltungsfilter angewendet wird, wobei der Faltungsfilter an diese Zentren in dem Abfragepufferspeicher angelegt wird während der Erzeugung von Ausgangspixeln für die Anzeige. Die Adreßerzeugungslogik ist programmierbar, um Adressen an ausgewählten Unterpixelpositionen zu erzeugen, die den gewünschten Zentren 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 derselben Geschwindigkeit erzeugt wie der Grafikprozessor die Abfragen zu dem Abfragepufferspeicher darstellt oder wo die Einheit zur Umrechnung von Abfrage in Pixel mit einer anderen (zum Beispiel höheren) Geschwindigkeit als die Darstellungsgeschwindigkeit 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 zum Beispiel das Schwenken, das Zoomen, das Drehen oder das Bewegen von Szenen unter anderem zu implementieren. Diese selektive Einstellung des Filterns von gespeicherten Abfragen, um Artefakte zu reduzieren oder Anzeigeeffekte zu erzeugen, wird unten unter Bezug auf die Fig. 15 bis 20 erörtert.
- 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) Ausgangspixel wert(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, um die Phase des Pixeltaktes, der den DACs 178A-B zur Verfügung gestellt wird, zu verschieben oder einzustellen. Dies ist aufgrund der Einstellung der Faltungszentren in einem Einzelbild relativ zu einem vorherigen Einzelbild notwendig, um ein bemerkbares "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 Digitalzu-Analog-Umwandlungsschaltkreis nicht enthalten.
- Fig. 4 stellt ein Beispiel einer traditionellen, nicht supergesampelten 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 Fig. 5A zu, in der ein Beispiel einer Ausführungsform des Supersamplings dargestellt ist. In dieser Ausführungsform werden eine Anzahl von Abfragen berechnet. Die Anzahl von Abfragen kann mit der Anzahl von Pixeln verknüpft sein oder völlig unabhängig von der Anzahl von Pixeln sein. In diesem Beispiel gibt es achtzehn Abfragen, die in einem regulären Gitter über neun Pixel verteilt sind. Selbst mit all den Abfragen, die in der Figur präsent sind, könnte eine einfache 1 : 1 Korrelation durchgeführt werden (zum Beispiel durch Verwerfen aller Abfragen außer derjenigen Abfrage, die dem Zentrum von jedem Pixel am nächsten liegt). Der am meisten interessante Fall ist jedoch die Durchführung einer Filterungsfunktion auf mehreren Abfragewerten, um die Pixelendwerte zu bestimmen. Wie oben bemerkt wurde, kann ebenso eine einzelne Abfrage verwendet werden, um eine Mehrzahl von Ausgangspixeln zu erzeugen, d. h. das sogenannte Untersampling oder Subsampling.
- Ein zirkularer Filter 72 ist in der Figur dargestellt. In diesem Beispiel tragen die Abfragen 74A-B beide zu dem Endwert des Pixels 70 bei. Dieser Filterungsprozeß kann mit Vorteil den Realismus des angezeigten Bildes verbessern durch das Glätten von abrupten Kanten in dem angezeigten Bild (zum Beispiel durch Durchführen des Anti-Aliasings). Der Filter 72 kann einfach die Abfragen 74A-B mitteln, um den Endwert des Ausgangspixels 70 zu bilden, oder er kann den Beitrag der Abfrage 74B (an dem Zentrum des Pixels 70) erhöhen und den Beitrag der Abfrage 74A (d. h. die Abfrage, die von dem Pixelzentrum 70 weiter entfernt ist) erniedrigen. Der zirkuläre 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 Fig. 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.
- Fig. 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 (der durch die Darstellungseinheiten 150A-D durchgeführt werden kann) ebenso Abfragekoordinaten von einem Abfragepositionsspeicher 354. In einer Ausführungsform ist der Positionssipeicher 354 innerhalb der Darstellungseinheiten 150A-D verkörpert. In einer anderen Ausführungsform kann der Positionsspeicher 354 als Teil der Textur- und Darstellungsspeicher 152A-152D, oder getrennt realisiert werden. Der Abfragepositionsspeicher 354 ist derart konfiguriert, daß er Positionsinformation speichert für Abfragen, die in dem Zeichenprozeß 352 berechnet werden, und dann in den supergesampelten Abfragepufferspeicher 162 gespeichert werden. In einer Ausführungsform kann der Positionsspeicher 354 derart konfiguriert sein, daß er die gesamten Abfragewertadressen speichert. Dies kann jedoch die Erhöhung der Größe des Positionsspeichers 354 bedeuten. Alternativ kann der Positionsspeicher 354 derart konfiguriert sein, daß er nur die X- und Y-Offsets für Abfragen speichert. Das Speichern nur der Offsets kann weniger Speicherplatz verwenden als das Speichern der gesamten Position von jeder Abfrage. Die Offsets können relativ zu Behälterkoordinaten oder relativ zu Positionen auf einem regulären Gitter sein. Die Abfragepositionsinformation, die in dem Abfragepositionsspeicher 354 gespeichert ist, kann durch eine reservierte Abfragepositionsberechnungseinheit (nicht gezeigt) gelesen werden und verarbeitet werden, um die Beispielabfragepositionen für den Grafikprozessor 90 zu berechnen. Detailliertere Informationen über die Abfragepositionsoffsets sind unten aufgenommen (siehe die Beschreibung der Fig. 9 und 10).
- In einer anderen Ausführungsform kann der Abfragewertpositionsspeicher 354 derart konfiguriert sein, daß er eine Tabelle von Zufallszahlen speichert. Der Abfragewertpositionsspeicher 354 kann ebenso reservierte Hardware aufweisen, um einen oder mehrere unterschiedliche Typen von regulären Gittern zu erzeugen. Diese Hardware kann programmierbar sein. Die gespeicherten Zufallszahlen können als Verschiebungen bzw. Offsets bezüglich den regulären Gitterpositionen, die von der Hardware erzeugt wurden, addiert werden. In einer Ausführungsform kann der Abfragewertpositionsspeicher derart programmiert werden, daß er auf die Zufallszahlentabelle in einer Anzahl von unterschiedlichen Wegen zugreift oder sie "entfaltet". Dies kann es erlauben, eine kleinere Tabelle zu verwenden ohne visuelle Artefakte, die durch Wiederholen der Abfragewertpositionsoffsets verursacht wird. In einer Ausführungsform können die Zufallszahlen wiederholbar sein, wodurch dem Zeichenprozeß 352 und dem Prozeß zur Umrechnung von Abfrage in Pixel 360 ermöglicht wird, dieselben Offset-Verschiebungswerte für dieselbe Abfrage zu verwenden, ohne notwendigerweise jeden Offset zu speichern.
- 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. Detaillierter Informationen über verschiedene Abfragewertpositionsschemata werden weiter unten beschrieben (siehe die Beschreibung von Fig. 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 allii 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 dar 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ältergröß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 Fig. 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 Abfrage werten 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 Fig. 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 Fig. 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 Abfrage Positionen 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 wer Jen, 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 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.
- Fig. 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 beschrankt 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 Gittisrs 192 basiert auf der vorherigen Definition eines regulären Gitters. Die Abfragewerte in dem gestörten regulären Gitterschema 192 können jedoch von ihren entsprechenden Gitterschnittpunkten abweichen. In einer Ausführungsform können die Abfragewerte um einen Zufallswinkel (zum Beispiel von 0º bis 360º) und einen Zufallsabstand oder um zufällige X- und Y-Offsets, die auf einen vorbestimmten Bereich begrenzt sein können, jedoch nicht müssen, verschoben sein. Die Offset-Werte können auf einer Anzahl von Wegen erzeugt werden, zum Beispiel durch Hardware, basierend auf einer kleinen Anzahl von Kernen, die in einer Tabelle nachgeschlagen werden, oder durch Verwendung einer Pseudozufallsfunktion. Noch einmal sei erwähnt, daß das Schema des gestörten regulären Gitters 192 auf jedem Typ von regulärem Gitter (zum Beispiel quadratisch oder hexagonal) basieren kann. Ein rechteckiges oder hexagonales gestörtes Gitter kann insbesondere wünschenswert: sein aufgrund der geometrischen Eigenschaften dieser Gittertypen.
- Das stochastische Abfragepositionierungsschema 194 stellt einen dritten potentiellen Typ eines Schemas für das Positionieren von Abfragen dar. Die stochastische Abfragepositionierung beinhaltet die zufällige Verteilung der Abfragen über einen Bereich (zum Beispiel dem angezeigten Bereich auf einer Anzeigevorrichtung oder einem bestimmten Fenster). Die zufällige Positionierung von Abfragen kann durch eine Anzahl von unterschiedlichen Verfahren erzielt werden, zum Beispiel unter Verwendung eines Zufallszahlengenerators, wie zum Beispiel einem internen Takt, um Pseudozufallszahlen zu erzeugen. Zufallszahlen oder Positionen können ebenso vorherberechnet und in dem Speicher abgelegt werden.
- Wendet man sich nun Fig. 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 Fig. 10 sind Details einer anderen Ausführungsform eines gestörten regulären Gitterschemas 192 gezeigt. In dieser Ausführungsform sind die Abfragen in "Behälter" 138A-D gruppiert. In dieser Ausführungsform enthält jeder Behälter neun (das heißt 3 · 3) Abfragen. Unterschiedliche Behältergrößen können in anderen Ausführungsformen verwendet werden (z. B. Behälter, die 2 · 2- Abfragen oder 4 · 4-Abfragen speichern). In der gezeigten Ausführungsform wird die Position jeder Abfrage als ein Offset bzw. als ein Verschiebungswert relativ zu der Position des Behälters bestimmt. Die Position der Behälter kann als irgendeine bequeme Position bezüglich des Gitters definiert werden, z. B. die unteren linken Ecken 132A-D, wie in der Figur gezeigt ist. Die Position der Abfrage 198 wird beispielsweise bestimmt durch Addition des X-Offsets 124 und des Y-Offsets 126 zu den X- und Y-Koordinaten der Ecke 132B des Behälters 138D. Wie vorher bemerkt wurde, kann dies die Größe des Abfragepositionsspeichers, der in manchen Ausführungsformen verwendet wird, reduzieren.
- In Fig. 11 ist ein mögliches Verfahren für das schnelle Umwandeln von Abfragewerten, die in dem Abfragepufferspeicher 162 abgelegt sind, in Pixel gezeigt. In dieser Ausführungsform sind die Inhalte des Abfragepufferspeichers 162 in Spalten (z. B. die Spalten 1-4) organisiert. Jede Spalte in dem Abfragepufferspeicher 162 kann eine zweidimensionale Anordnung von Behältern aufweisen. Die Spalten können derart konfiguriert sein, daß sie sich in horizontaler Richtung überlappen (z. B. um einen oder mehrere Behälter) und jede Spalte kann einer bestimmten Einheit 170A-D zur Umrechnung von Abfrage in Pixel für den Faltungsprozeß zugewiesen sein. Die Größe des Überlapps kann von der Ausdehnung des zu verwendenden Filters abhängen. Das in der Figur gezeigte Beispiel illustriert einen Überlapp von zwei Behältern (jedes Quadrat, wie z. B. das Quadrat 188, stellt einen einzelnen Behälter dar, der eine oder mehrere Abfragen aufweist). Diese Konfiguration kann mit Vorteil den Einheiten 170A-D zur Umrechnung von Abfrage in Pixel erlauben, parallel und unabhängig zu arbeiten, wobei jede Einheit 170A-D zur Umrechnung von Abfrage in Pixel ihre eigene Spalte empfängt und umwandelt. Das Überlappen der Spalten wird sichtbare Bänder oder andere Artefakte, die an den Spaltengrenzen auftreten für jeden Operator, der größer als ein Pixel in der Ausdehnung ist, eliminieren.
- In Fig. 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 beitra gen. 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 Fig. 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 Nul (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.
- Fig. 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 Fig. 12 können gleichzeitig oder in anderer Ordnung auftreten. In dieser Ausführungsform empfängt das Grafiksystem graphische Befehle und Grafikdaten von der Host-CPU 102 oder direkt von dem Hauptspeicher 106 (Schritt 200). Als nächstes werden die Befehle und Daten zu einer oder mehreren Darstellungseinheiten 150A-D geleitet (Schritt 202). Wenn die Grafikdaten komprimiert sind (Schritt 204), dann dekomprimieren die Darstellungseinheiten 150A-D die Daten in ein nutzbares Format, z. B. Dreiecke (Schritt 206). Als nächstes werden die Dreiecke verarbeitet, z. B. in den Schirmraum umgewandelt, beleuchtet und transformiert (Schritt 208A). Wenn das Grafiksystem Supersampling mit variabler Auflösung implementiert, dann werden die Dreiecke mit den Bereichsgrenzen der Abfragedichte verglichen (Schritt 208B). Bai 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 Grafiksy stem 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).
- 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(detta_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-Vorzeichonbit (um eins nach links verschoben) und das X-major Bit verwendet werden, um die acht Bereiche zu erzeugen, wie in Fig. 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 gleicherweise 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).
- Fig. 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 Filitergewichten zu indexieren. Alternativ dazu kann eine Funktion von X und Y verwendet werden neben einer, die abhängig von der Abstandsberechnung ist. In einer Ausführungsform kann dies erzielt werden durch Verwendung eines Gleitkommaformats für den Abstand (z. B. 4 oder 5 Bits der Mantisse und 3 Bits des Exponenten), wodurch es möglich ist, daß ein Großteil der Genauigkeit beibehalten wird, während der erhöhte Wertebereich kompensiert wird. In einer Ausführungsform kann die Tabelle in ROM implementiert werden. Es können jedoch ebenso RAM-Tabellen verwendet werden. RAM- Tabellen können in manchen Ausführungsformen mit Vorteil dem Grafiksystem erlauben, die Filterkoeffizienten auf einer Einzelbildbasis zu variieren. Beispielsweise können die Filterkoeffizienten variiert werden, um bekannte Fehler der Anzeige zu kompensieren oder entsprechend der persönlichen Vorlieben des Benutzers. Das Grafiksystem kann ebenso die Filterkoeffizienten auf einer Schirmbereichsbasis innerhalb eines Einzelbildes oder auf einer Ausgangspixelbasis variieren. Eine andere alternative Ausführungsform kann tatsächlich die gewünschten Filtergewichte für jede Abfrage unter Verwendung von spezialisierter Hardware (z. B. Multiplizierer und Addierer) berechnen. Die Filtergewichte für Abfragen außerhalb der Grenzen des Faltungsfilters können einfach mit einem Filtergewicht von 0 multipliziert werden (Schritt 262) oder sie körnen 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).
- Fig. 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 8. In gleicher Weise fallen die Abfragen 294 und 292 in Bereiche des Filters mit Filterwerten von 4 bzw. 2. Die Abfrage 290 liegt jedoch außerhalb der maximalen Filterausdehnung und bekommt daher einen Filterwert von 0 verliehen. Die Abfrage 290 wird somit nicht zu dem Wert das Ausgangspixels beitragen. Dieser Filtertyp stellt sicher, daß die Abfragen, die am nächsten an dem Pixelzentrum lokalisiert sind, am meisten beitragen, während Pixel, die von dem Pixelzentrum entfernt angeordnet sind, weniger zu dem endgültigen Ausgangspixelwert beitragen. Dieser Typ des Filterns führt automatisch das Anti-Aliasing durch Glätten jeder abrupten Veränderung in dem Bild durch (z. B. von einer dunklen Linie zu einem hellen Hintergrund). Ein anderer besonders nützlicher Typ von Filter für das Anti- Aliasing ist ein mit Fenster versehener Sinc-Filter. Mit Vorteil enthält der mit Fenster versehene Sinc- Filter negative Keulen, die einige der gemischten oder "verzerrten" Bilder erneut schärft. Negative Keulen sind Flächen, in denen der Filter veranlaßt, daß die Abfragen von den Pixeln, die berechnet werden, abgezogen werden. Im Gegensatz dazu addieren Abfragen auf irgendeiner Seite der negativen Keule sich zu dem Pixel, das berechnet wird.
- Beispielwerte für die Abfragen 290-296 sind in den Boxen 300-308 dargestellt. In diesem Beispiel weist jede Abfrage einen Rot-, Grün-, Blau- und Alpha-Wert auf zusätzlich zu den Positionierungsdaten der Abfrage. Der Block 310 stellt die Berechnung jedes Pixelkomponentenwerts für den nicht normalisierten Ausgangspixel dar. Wie der Block 310 anzeigt, wird mögliche unerwünschte Verstärkung in die endgültigen Pixelwerte eingeführt (das heißt ein Ausgangspixel mit einem Rot- Komponentenwert von 2000 ist viel größer als irgendeiner der Rot-Komponentenwerte in der Abfrage). Wie vorher bemerkt wurde, können die Filterwerte summiert werden, um einen Normalisierungswert zu erhalten 308. Der Normalisierungswert 308 wird verwendet, um die unerwünschte Verstärkung von dem Ausgangspixel herauszuteilen. Der Block 312 stellt diesen Prozeß und die endgültigen normalisierten Beispielpixelwerte dar.
- Es sei bemerkt, daß die hier verwendeten Werte nur aus Gründen der Beschreibung ausgewählt wurden und nicht als begrenzend verstanden werden. Beispielsweise kann der Filter eine große Anzahl von Regionen aufweisen, die jeweils unterschiedliche Filterwerte haben. In einer Ausführungsform können einige Regionen negative Filterwerte haben. Der verwendete Filter kann eine kontinuierliche Funktion sein, die für jede Abfrage basierend auf dem Abstand der Abfrage von dem Pixelzentrum ermittelt wird. Es sei ebenso bemerkt, daß Gleitkommazahlen für erhöhte Genauigkeit verwendet werden können. Eine Vielzahl von Filtern kann benutzt werden, z. B. Zylinder, Konus, Gauß, Katmull-Rom, Sine mit Fenster, Mitchell-Filter, Box, Tent.
- 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 dis 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.
- 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älti gen 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 Abfragedaton 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 betreib bar, 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 Filtereinstetlung zu implementieren, kann (können) die Darstellungseinheit(en) 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 ein 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 Abfragen 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 redu zieren. 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.
- 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 Fig. 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.
- Fig. 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 einen 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 Fig. 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 unter 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 Anzeigeeffekte, 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 beinhaltet 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.
- Die Fig. 16A-16B und 17A und 17B stellen ein Beispiel der Funktion der vorliegenden Erfindung dar. Fig. 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 Faltungszen tren auf entsprechende Abfragen angewendet wird, um Ausgangspixel für die Anzeige zu erzeugen, eine Kante mit einem Alias oder Artefakt produziert werden, wie in Fig. 16B gezeigt ist.
- Fig. 17A stellt den gleichen Satz von Abfragedaten dar, in dem die Faltungszentren relativ zu den Faltungsfiltern in Fig. 16A verschoben wurden. Wie in Fig. 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 Fig. 16A angewendet wurden, unterschiedlichen Satz von Abfragen verwenden. Obgleich einige der Abfragen in jedem der Faltungsfilter der Fig. 16A und 17A verwendet werden können, wird jedoch die Verschiebung der Faltungszentren dazu führen, daß für die Erzeugung der Ausgangspixel in Fig. 17A zumindest teilweise andere Abfragen verwendet werden als diejenigen, die in Fig. 16A verwendet wurden.
- Wie in Fig. 17B gezeigt ist, können die Artefakte nicht langer erscheinen, wenn Ausgangspixel in Antwort auf denselben Satz von Abfragen erzeugt werden unter Verwendung von Faltungsfiltern mit unterschiedlichen oder verschobenen Faltungszentren, wie in Fig. 17A gezeigt 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 Darstellungseinheit(en) und/oder die Einheit(en) 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.
- 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 Fig. 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 Darstellungseinheit(en) 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 "Hineinzoonens" 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 Darstellungseinheit(en) 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 Abfragepufterspeicher 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 Abfrage zu Pixel selektiv das Fil tern 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 implemertiert 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.
- Die Fig. 18 und 19 stellen ein Beispiel dar, wo die Filtereinstellung der vorliegenden Erfindung verwendet werden kann, um einen Zoomanzeigeeffekt zu implementieren. Fig. 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. Fig. 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 Fig. 19 gezeigt ist, wird durch Veränderung der Zentren der Faltungsfilter und des Radius der Fal tungsfilter ein unterschiedlicher Anzeigeeffekt 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 arideren 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 Anzeigeeffekt 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. Dias 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 Anzeigoeffekte 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 Schwank 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.
- Fig. 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.
Claims (40)
1. Grafiksystem mit:
einem Grafikprozessor, der so betreibbar ist, daß er ein 3 Mehrzahl von Momentwerten
erzeugt,
einem Momentwertpuffer, der mit dem Grafikprozessor verbunden ist, um die Mehrzahl von
Momentwerten (Abtastwerten) zu speichern, und
einer Einheit zur Berechnung von Momentwert auf Pixel, die mit dem Momentwertpuffer
verbunden ist, wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist, daß sie
die gespeicherte Mehrzahl von Momentwerten aus dem Momentwertpuffer auswählt und filtert, um
Ausgangspixel zu erzeugen, wobei die Einheit zur Berechnung von Momentwert auf Pixel so
betreibbar ist, daß sie (a) einen ersten Teilsatz aus der gespeicherten Mehrzahl von Momentwerten
auswählt und filtert, um ein erstes der Ausgangspixel in einem ersten Einzelbild zu erzeugen und (b)
einen zweiten Teilsatz der gespeicherten Mehrzahl von Momentwerten auswählt und filtert, der sich
von dem ersten Teilsatz unterscheidet, um das erste Ausgangspixel in einem zweiten Einzelbild zu
erzeugen, wobei der erste Teilsatz und der zweite Teilsatz so ausgewählt werden, daß sie einen
Anzeigeeffekt auf den Ausgangspixeln ausführen.
2. Grafiksystem nach Anspruch 1, wobei die Einheit zur Berechnung von Momentwert auf Pixel
so betreibbar ist, daß sie die Ausgangspixel direkt für eine Anzeige bereitstellt ohne Einzelbildpuffer,
der zwischen der Einheit zur Berechnung von Momentwert auf Pixel und der Anzeige liegt.
3. Grafiksystem nach Anspruch 1, wobei die Einheit zur Berechnung von Momentwert auf Pixel
so ausgestaltet ist, daß sie die Mehrzahl von Momentwerten auswählt und filtert, um die
Ausgangspixel auf Realzeitbasis oder im Durchlauf zu bilden.
4. Grafiksystem nach Anspruch 1, wobei der erste und der zweite Teilsatz der gespeicherten
Mehrzahl von Momentwerten nicht überlappende oder einander schneidende Teilsätze sind.
5. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel so betreibbar ist, daß sie Eigenschaften des Filterns der gespeicherten Mehrzahl
von Momentwerten zwischen dem ersten Einzelbild und dem weiten Einzelbild einstellt, um den
Anzeigeeffekt auf den Ausgangspixeln auszuführen, wobei die Eigenschaften eine oder mehrere der
folgenden umfassen: (i) Filtern von zentralen Stellen, auf welche das Filtern der gespeicherten
Mehrzahl von Momentwerten angewendet wird, (ii) Filtern mit Gewichtungsfaktoren, welche beim
Filtern der gespeicherten Mehrzahl von Momentwerten verwendet werden, und (iii) Ausmaß eines
Filterradius, welcher Bereiche um die zentralen Filterstellen definiert, wo Momentwerte zu den
entsprechenden Pixelwerten beitragen.
6. Grafiksystem nach einem der Ansprüche 1 bis 4,
wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist, daß sie einen
ersten Satz der gespeicherten Momentwerte auswählt und filtert, einschließlich eines ersten
Teilsatzes, um die Ausgangspixel in dem ersten Einzelbild für die Anzeige 30 unter Verwendung eines ersten
Filters zu erzeugen,
wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist, daß sie einen
zweiten Satz der gespeicherten Momentwerte einschließlich des zweiten Teilsatzes auswählt und
filtert, um die Ausgangspixel in dem zweiten Einzelbild für die Anzeige unter Verwendung eines
zweiten Filters zu erzeugen, der sich von dem ersten Filter unterscheidet.
7. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei der Anzeigeeffekt eines oder
mehrere der folgenden aufweist:
Schwenken, Zoomen, Drehen und Bewegen von Szenen.
8. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel so betreibbar ist, daß sie zentrale Filterbereiche einstellt, auf welche das Filtern
der gespeicherten Momentwerte zwischen dem ersten Einzelbild und dem zweiten Einzelbild
angewendet wird, um den Anzeigeeffekt zu bewirken, wobei das Einstellen das Verändern von einem
oder mehreren der folgenden aufweist: (a) eines vertikalen Stufenwertes, der einen vertikalen
Abstand zwischen den zentralen Filterbereichen steuert, (b) eines horizontalen Stufenwertes, der einen
horizontalen Abstand zwischen den zentralen Filterbereichen steuert bzw. einstellt und (c) einer
Startposition der zentralen Filterbereiche.
9. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel so betreibbar ist, daß sie wahlweise das Filtern der gespeicherten Momentwerte
zwischen dem ersten Einzelbild und dem zweiten Einzelbild einstellt, um ein Schwenken zwischen
dem ersten Einzelbild und dem zweiten Einzelbild zu bewirken.
10. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel so betreibbar ist, daß sie wahlweise das Filtern der gespeicherten Momentwerte
zwischen dem ersten Einzelbild und dem zweiten Einzelbild einstellt, um ein Zoomen zwischen dem
ersten Einzelbild und dem zweiten Einzelbild zu bewirken.
11. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel so betreibbar ist, daß sie das Filtern der gespeicherten Momentwerte so einstellt,
daß die Anzeigewirkung auf die Grenze eines Teilpixels ausgeführt wird.
12. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel so betreibbar ist, daß sie wahlweise das Filtern der gespeicherten Momentwerte
zwischen dem ersten Einzelbild und dem zweiten Einzelbild einstellt, um ein Verschwenken
zwischen dem ersten Einzelbild und dem zweiten Einzelbild auf einer Grenze eines Teilpixels zu
bewirken.
13. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel so betreibbar ist, daß sie wahlweise das Filtern der gespeicherten Momentwerte
zwischen dem ersten Einzelbild und dem zweiten Einzelbild einstellt, um ein Zoomen dazwischen an
der Grenze eines Pixelteilstücks zu bewirken.
14. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei der Grafikprozessor so betreibbar
ist, daß er die Mehrzahl von Momentwerten für den Momentwertpuffer mit einer ersten
Geschwindigkeit erzeugt, und wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist,
daß sie die Ausgangspixel mit einer zweiten, größeren Geschwindigkeit erzeugt,
wobei die Einheit zur Berechnung von Momentwert auf Pixel wiederholt betreibbar ist, so
daß sie Einzelbilder der Ausgangspixel aus der gespeicherten Mehrzahl von Momentwerten erzeugt,
bis der Grafikprozessor zusätzliche Momentwerte in dem Momentwertpuffer erzeugt.
15. Grafiksystem nach einem der Ansprüche 1 bis 4, welches weiterhin eine Anzeige aufweist,
wobei die Mehrzahl von Momentwerten, die in dem Momentwertpuffer gespeichert sind,
einem größeren Bereich entsprechen, als er auf der Anzeige für da« erste Bild sichtbar ist,
wobei eine oder mehrere Momentwerte von außerhalb des sichtbaren Bereiches der
Anzeige des ersten Einzelbildes verwendet werden, um den Anzeigeeffekt auf dem zweiten Einzelbild
auszuführen.
16. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei die Einheit zur Berechnung von
Momentwert auf Pixel einen Filter beim Filtern der gespeicherten Momentwerte verwendet,
wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist, daß sie
wahlweise Filterzentralstellen einstellt, an welchen der Filter auf gespeicherte Momentwerte angewendet
wird, und zwar zwischen dem ersten Einzelbild und dem zweiten Einzelbild, um den Anzeigeeffekt
auszuführen.
17. Grafiksystem nach Anspruch 16, wobei das Grafiksystem so betreibbar ist, daß es
wahlweise eine Videozeitsteuerung einstellt, um die wahlweise Einstellung der zentralen Filterstellen zu
kompensieren.
18. Grafiksystem nach Anspruch 16, wobei die Einheit zur Berechnung von Momentwert auf
Pixel so betreibbar ist, daß sie wahlweise die Filterzentralstellen in einer oder mehrerer der X- und
Y-Richtungen einstellt.
19. Grafiksystem nach Anspruch 16, wobei die Einheit zur Berechnung von Momentwert auf
Pixel wahlweise so betreibbar ist, daß sie die zentralen Filterstellen relativ zu vorherigen zentralen
Stellen, die in einem früheren Einzelbild verwendet wurden, um einen Sub-Pixelabstand verstellt.
20. Grafiksystem nach Anspruch 16, wobei der verwendete Filter für das Filtern der
gespeicherten Momentwerte ein Faltungsfilter ist.
21. Verfahren zum Erzeugen von Pixeln für die Anzeige in ehern Grafiksystem, wobei das
Verfahren aufweist:
Erzeugen einer Mehrzahl von Momentwerten (Abtastungen) in einem Momentwertpuffer,
Auswählen und Filtern der gespeicherten Mehrzahl von Momentwerten aus dem
Momentwertpuffer, um Ausgangspixel für die Anzeige zu erzeugen, wobei das Auswählen und Filtern
aufweist: (a) Auswählen und Filtern eines ersten Teilsatzes aus der gespeicherten Mehrzahl von
Momentwerten, um ein erstes der Ausgangspixel in einem ersten Einzelbild zu erzeugen, und (b)
Auswählen und Filtern eines zweiten Teilsatzes aus der gespeicherten Mehrzahl von Momentwerten,
der sich von dem ersten Teilsatz unterscheidet, um das erste Ausgangspixel in einem zweiten
Einzelbild zu erzeugen, wobei der erste Teilsatz und der zweite Teilsatz so ausgewählt werden, daß sie
einen Anzeigeeffekt auf den Ausgangspixeln ausführen.
22. Verfahren nach Anspruch 21, welches weiterhin das Bereitstellen der Ausgangspixel für eine
Anzeigeeinrichtung aufweist, ohne Puffern von Einzelbildern, die zwischen dem Filtern und der
Anzeigeeinrichtung liegen.
23. Verfahren nach Anspruch 21, wobei das Auswählen und Filtern der gespeicherten Mehrzahl
von Momentwerten für das Erzeugen der Ausgangspixel auf Realzeitbasis oder im Durchlauf
ausgeführt wird.
24. Verfahren nach Anspruch 21, wobei der erste Teilsatz und der zweite Teilsatz der
gespeicherten Mehrzahl von Momentwerten sich nicht überlappende oder sich schneidende Teilsätze sind.
25. Verfahren nach einem der Ansprüche 21 bis 24, welches weiterhin das Einstellen von
Eigenschaften des Filterns der gespeicherten Mehrzahl von Momentwerten zwischen dem ersten
Einzelbild und dem zweiten Einzelbild aufweist, um den Anzeigeeffekt auf den Ausgangspixeln
auszuführen, wobei die Eigenschaften eines oder mehrere der folgenden umfassen: (i) Filterzentralstellen, an
welchen das Filtern der gespeicherten Mehrzahl von Momentwerten angewendet wird, (ii)
Filterge
wichtungsfaktoren, welche beim Filtern der gespeicherten Mehrzahl von Momentwerten verwendet
werden, und (iii) Radius einer Filterausdehnung, welcher Bereiche um die Filterzentralbereiche
definiert, wo Momentwerte zu entsprechenden Pixelwerten beitragen.
26. Verfahren nach einem der Verfahren 21 bis 24, wobei das Auswählen und Filtern der
gespeicherten Mehrzahl von Momentwerten aufweist:
Auswählen und Filtern eines ersten Satzes der gespeicherten Momentwerte einschließlich
des ersten Teilsatzes, um die Ausgangspixel in dem ersten Einzelbild für die Anzeige unter
Verwendung eines ersten Filters zu erzeugen,
Auswählen und Filtern eines zweiten Satzes der gespeicherten Momentwerte, um die
Ausgangspixel in dem zweiten Einzelbild für die Anzeige unter Verwendung eines zweiten Filters zu
erzeugen, der von dem ersten Filter verschieden ist.
27. Verfahren nach einem der Ansprüche 21 bis 24, wobei der Anzeigeeffekt eines oder mehrere
der folgenden aufweist: Schwenken, Zoomen, Drehung und Bewegung von Szenen.
28. Verfahren nach einem der Ansprüche 21 bis 24, welches weiterhin das Einstellen von
Filterzentralstellen aufweist, auf welche das Filtern der gespeicherten Momentwerte zwischen dem ersten
Einzelbild und dem zweiten Einzelbild angewendet wird, um den Anzeigeeffekt auszuführen, wobei
das Einstellen das Verändern eines oder mehrerer der folgenden aufweist: (a) eines vertikalen
Schrittwertes, der einen vertikalen Abstand zwischen den Filterzentralbereichen einstellt, (b) eines
horizontalen Schrittwertes, der einen horizontalen Abstand zwischen den Filterzentralstellen einstellt
und (c) einer Startposition der Filterzentralstellen.
29. Verfahren nach einem der Ansprüche 21 bis 24, welches weiterhin das wahlweise Einstellen
des Filterns der gespeicherten Momentwerte zwischen dem ersten Einzelbild und dem zweiten
Einzelbild aufweist, um ein Verschwenken zwischen dem ersten Einzelbild und dem zweiten Einzelbild
zu bewirken.
30. Verfahren nach einem der Ansprüche 21 bis 24, welches weiterhin das wahlweise Einstellen
des Filters der gespeicherten Momentwerte zwischen dem ersten Einzelbild und dem zweiten
Einzelbild aufweist, um ein Zoomen zwischen dem ersten Einzelbild und dem zweiten Einzelbild zu
bewirken.
31. Verfahren nach einem der Ansprüche 21 bis 24, welche« weiterhin das Einstellen des
Filterns der gespeicherten Momentwerte aufweist, um den Anzeige effekt an einer Grenze eines
Pixelteilstücks auszuführen.
32. Verfahren nach einem der Ansprüche 21 bis 24, welches weiterhin das Einstellen des Filters
der gespeicherten Momentwerte zwischen dem ersten Einzelbild und dem zweiten Einzelbild
aufweist, um ein Verschwenken zwischen dem ersten Einzelbild und dem zweiten Einzelbild an einer
Grenze eines Pixelteilstücks zu bewirken.
33. Verfahren nach einem der Ansprüche 21 bis 24, welches weiterhin das Einstellen des
Filterns der gespeicherten Momentwerte zwischen dem ersten Einzelbild und dem zweiten Einzelbild
aufweist, um ein Zoomen zwischen dem ersten Einzelbild und dem zweiten Einzelbild an einer
Grenze eines Pixelteilstücks zu bewirken.
34. Verfahren nach einem der Ansprüche 21 bis 24, wobei:
das Erzeugen der Mehrzahl von Momentwerten mit einer ersten Geschwindigkeit erfolgt,
wobei das Filtern der gespeicherten Momentwerte für das Erzeugen der Ausgangspixel mit
einer zweiten, größeren Geschwindigkeit erfolgt, und
wobei das Auswählen und Filtern der gespeicherten Momentwerte das wiederholte Erzeugen
von Einzelbildern aus den Ausgangspixeln aus der gespeicherten Mehrzahl von Momentwerten
aufweist, bis der Grafikprozessor zusätzliche Abtastungen bzw. Momentwerte in den Momentwertpuffer
bringt.
35. Verfahren nach einem der Ansprüche 21 bis 24, wobei die Mehrzahl von Momentwerten,
welche in dem Momentwertpuffer gespeichert sind, einem Bereich bzw. einer Fläche entsprechen,
die größer als die sichtbare Fläche bzw. der sichtbare Bereich einer Anzeige für das erste Einzelbild
sind,
wobei einer oder mehrere Momentwerte außerhalb des sichtbaren Bereiches der Anzeige in
dem ersten Einzelbild verwendet werden, um den Anzeigeeffekt in dem zweiten Einzelbild zu
bewirken.
36. Verfahren nach einem der Ansprüche 21 bis 24, wobei das Erzeugen von Ausgangspixeln
einen Filter beim Filtern der gespeicherten Momentwerte verwendet,
wobei das Auswählen und Filtern von gespeicherten Momentwerten das wahlweise
Einstellen einer Filterzentralposition für das Filtern der gespeicherten Momentwerte zwischen dem ersten
Einzelbild und dem zweiten Einzelbild aufweist, um den Anzeigeesffekt auszuführen.
37. Verfahren nach Anspruch 36, welches weiterhin aufweist:
wahlweises Einstellen der Videozeitsteuerung, um die wahlweise Einstellung der
Filterzentralstellen zu kompensieren.
38. Verfahren nach Anspruch 36, wobei das wahlweise Einstellen das wahlweise Einstellen der
Filterzentralstellen in einer oder mehreren der X- oder Y-Richtungen umfaßt.
39. Verfahren nach Anspruch 36, wobei das wahlweise Einstellen das wahlweise Einstellen der
Filterzentralstellen um einen Sub-Pixelabstand relativ zu vorherigen Zentralstellen umfaßt, welche in
einem früheren Einzelbild verwendet wurden.
40. Verfahren nach Anspruch 36, wobei das Filtern der gespeicherten Momentwerte einen
Faltungsfilter verwendet.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/251,453 US6424343B1 (en) | 1998-02-17 | 1999-02-17 | Graphics system with programmable real-time sample filtering |
US09/413,040 US6489956B1 (en) | 1998-02-17 | 1999-10-06 | Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects |
PCT/US2000/004114 WO2000049575A1 (en) | 1999-02-17 | 2000-02-17 | Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60000450D1 DE60000450D1 (de) | 2002-10-17 |
DE60000450T2 true DE60000450T2 (de) | 2003-07-31 |
Family
ID=26941621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60000450T Expired - Fee Related DE60000450T2 (de) | 1999-02-17 | 2000-02-17 | Graphisches system mit überabgetastetem musterpuffer mit erzeugung von ausgangspixeln unter benutzung von selektiver justierung der filterung zur implementierung von anzeigeeffekten |
Country Status (7)
Country | Link |
---|---|
US (1) | US6489956B1 (de) |
EP (1) | EP1161744B1 (de) |
JP (1) | JP2002537613A (de) |
AU (1) | AU763011B2 (de) |
CA (1) | CA2362350A1 (de) |
DE (1) | DE60000450T2 (de) |
WO (1) | WO2000049575A1 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6957350B1 (en) | 1996-01-30 | 2005-10-18 | Dolby Laboratories Licensing Corporation | Encrypted and watermarked temporal and resolution layering in advanced television |
AU4502400A (en) * | 1999-05-07 | 2000-11-21 | Broadcom Corporation | Method and system for efficiently using fewer blending units for antialiasing |
US7106322B2 (en) | 2000-01-11 | 2006-09-12 | Sun Microsystems, Inc. | Dynamically adjusting a sample-to-pixel filter to compensate for the effects of negative lobes |
US6664955B1 (en) * | 2000-03-15 | 2003-12-16 | Sun Microsystems, Inc. | Graphics system configured to interpolate pixel values |
US6924816B2 (en) * | 2000-03-17 | 2005-08-02 | Sun Microsystems, Inc. | Compensating for the chromatic distortion of displayed images |
US6873310B2 (en) * | 2000-03-30 | 2005-03-29 | Seiko Epson Corporation | Display device |
WO2001093525A2 (en) | 2000-05-26 | 2001-12-06 | Citrix Systems, Inc. | Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism |
WO2002078338A1 (en) * | 2001-03-22 | 2002-10-03 | Polycom, Inc. | High resolution graphics side channel in video conference |
US7411593B2 (en) * | 2001-03-28 | 2008-08-12 | International Business Machines Corporation | Image rotation with substantially no aliasing error |
US7266150B2 (en) | 2001-07-11 | 2007-09-04 | Dolby Laboratories, Inc. | Interpolation of video compression frames |
WO2003015407A1 (en) * | 2001-08-07 | 2003-02-20 | Polycom, Inc. | System and method for high resolution videoconferencing |
US6943805B2 (en) * | 2002-06-28 | 2005-09-13 | Microsoft Corporation | Systems and methods for providing image rendering using variable rate source sampling |
JP4947983B2 (ja) * | 2006-01-31 | 2012-06-06 | キヤノン株式会社 | 演算処理システム |
US8675004B2 (en) | 2010-01-11 | 2014-03-18 | Apple Inc. | Buffer underrun handling |
EP2556669A1 (de) * | 2010-04-07 | 2013-02-13 | Linear Algebra Technologies Limited | Rundfunkvideodecoder mit verringertem speicher und geeigneten verarbeitungsanforderungen für tragbare und mobile anwendungen |
US9265458B2 (en) | 2012-12-04 | 2016-02-23 | Sync-Think, Inc. | Application of smooth pursuit cognitive testing paradigms to clinical drug development |
US9380976B2 (en) | 2013-03-11 | 2016-07-05 | Sync-Think, Inc. | Optical neuroinformatics |
US11120591B2 (en) * | 2019-05-31 | 2021-09-14 | Apple Inc. | Variable rasterization rate |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0313101A3 (de) | 1982-07-30 | 1989-12-06 | Honeywell Inc. | Fraktionierte Pixelabbildung in einem rechnergesteuerten Abbildungssystem |
CA2030022A1 (en) * | 1989-11-17 | 1991-05-18 | Brian M. Kelleher | System and method for drawing antialiased polygons |
US5117289A (en) | 1990-04-26 | 1992-05-26 | Lyon-Lamb Video Animation | Real-time video image converter |
DE69127516T2 (de) | 1990-06-29 | 1998-02-26 | Philips Electronics Nv | Verfahren und Gerät zur Bilderzeugung |
US5173948A (en) | 1991-03-29 | 1992-12-22 | The Grass Valley Group, Inc. | Video image mapping system |
US5388206A (en) * | 1992-11-13 | 1995-02-07 | The University Of North Carolina | Architecture and apparatus for image generation |
GB2278524B (en) | 1993-05-28 | 1997-12-10 | Nihon Unisys Ltd | Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency |
US5684939A (en) * | 1993-07-09 | 1997-11-04 | Silicon Graphics, Inc. | Antialiased imaging with improved pixel supersampling |
US5774110A (en) * | 1994-01-04 | 1998-06-30 | Edelson; Steven D. | Filter RAMDAC with hardware 11/2-D zoom function |
JP2637920B2 (ja) * | 1994-08-11 | 1997-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・グラフィック・システム及びフレーム・バッファ使用方法 |
US5668940A (en) * | 1994-08-19 | 1997-09-16 | Martin Marietta Corporation | Method and apparatus for anti-aliasing polygon edges in a computer imaging system |
US5594854A (en) | 1995-03-24 | 1997-01-14 | 3Dlabs Inc. Ltd. | Graphics subsystem with coarse subpixel correction |
US5742277A (en) * | 1995-10-06 | 1998-04-21 | Silicon Graphics, Inc. | Antialiasing of silhouette edges |
US5963209A (en) * | 1996-01-11 | 1999-10-05 | Microsoft Corporation | Encoding and progressive transmission of progressive meshes |
AU3718497A (en) * | 1996-06-28 | 1998-01-21 | Resolution Technologies, Inc. | Fly-through computer aided design method and apparatus |
US5745125A (en) * | 1996-07-02 | 1998-04-28 | Sun Microsystems, Inc. | Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance |
US6128001A (en) * | 1997-04-04 | 2000-10-03 | Avid Technology, Inc. | Methods and apparatus for changing a color of an image |
US6072498A (en) * | 1997-07-31 | 2000-06-06 | Autodesk, Inc. | User selectable adaptive degradation for interactive computer rendering system |
US6204859B1 (en) * | 1997-10-15 | 2001-03-20 | Digital Equipment Corporation | Method and apparatus for compositing colors of images with memory constraints for storing pixel data |
DE69901542T2 (de) * | 1998-02-17 | 2002-12-05 | Sun Microsystems, Inc. | Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen |
-
1999
- 1999-10-06 US US09/413,040 patent/US6489956B1/en not_active Expired - Lifetime
-
2000
- 2000-02-17 DE DE60000450T patent/DE60000450T2/de not_active Expired - Fee Related
- 2000-02-17 AU AU33681/00A patent/AU763011B2/en not_active Ceased
- 2000-02-17 WO PCT/US2000/004114 patent/WO2000049575A1/en not_active Application Discontinuation
- 2000-02-17 JP JP2000600239A patent/JP2002537613A/ja active Pending
- 2000-02-17 CA CA002362350A patent/CA2362350A1/en not_active Abandoned
- 2000-02-17 EP EP00911856A patent/EP1161744B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1161744B1 (de) | 2002-09-11 |
EP1161744A1 (de) | 2001-12-12 |
AU3368100A (en) | 2000-09-04 |
US6489956B1 (en) | 2002-12-03 |
DE60000450D1 (de) | 2002-10-17 |
JP2002537613A (ja) | 2002-11-05 |
AU763011B2 (en) | 2003-07-10 |
WO2000049575A1 (en) | 2000-08-24 |
CA2362350A1 (en) | 2000-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60000447T2 (de) | Graphisches system das muster in einem musterpuffer darstellt und in anhängigkeit von gespeicherten mustern pixel erzeugt | |
DE60000686T2 (de) | Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung | |
DE69909437T2 (de) | Graphisches system mit superabtasten mit veränderlicher auflösung | |
DE60100452T2 (de) | Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang | |
DE60000335T2 (de) | Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern | |
DE60000450T2 (de) | Graphisches system mit überabgetastetem musterpuffer mit erzeugung von ausgangspixeln unter benutzung von selektiver justierung der filterung zur implementierung von anzeigeeffekten | |
DE60103535T2 (de) | Graphisches system | |
DE69602728T2 (de) | Vorrichtung zur bildmanipulation und -generation | |
DE69901542T2 (de) | Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen | |
DE69130132T2 (de) | Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven | |
DE69610341T2 (de) | 3-D-Bildertexturierung und -schattierung | |
DE69636599T2 (de) | Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild | |
DE69130545T2 (de) | System zur Erzeugung einer texturierten Perspektivsicht | |
DE69224499T2 (de) | Dreidimensionale graphische Verarbeitung | |
DE69836924T2 (de) | Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe | |
DE102017108096A1 (de) | System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung | |
DE102015113240A1 (de) | System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters | |
DE112022003721T5 (de) | Mikro-netze, eine strukturierte geometrie für computergrafik | |
DE69331486T2 (de) | Bilddatenverarbeitung | |
DE112018004343T5 (de) | Mehrraum-rendering mit konfigurierbaren transformationsparametern | |
DE3854619T2 (de) | Quadratische interpolation zur schattierten bilderzeugung. | |
DE60000681T2 (de) | Graphisches system mit superabtastungspuffer mit speicherung von abtastpositionsinformation | |
DE102013014779A1 (de) | Textelement-datenstruktur für programmierbare schattierungseinheit für eine graphikverarbeitungseinheit und verfahren zum betreiben davon | |
DE602004011234T2 (de) | Verfahren und Vorrichtung zur Erzeugung dreidimensionaler Bilder | |
KR20020031097A (ko) | 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |