[go: up one dir, main page]

DE60000686T2 - Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung - Google Patents

Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung Download PDF

Info

Publication number
DE60000686T2
DE60000686T2 DE60000686T DE60000686T DE60000686T2 DE 60000686 T2 DE60000686 T2 DE 60000686T2 DE 60000686 T DE60000686 T DE 60000686T DE 60000686 T DE60000686 T DE 60000686T DE 60000686 T2 DE60000686 T2 DE 60000686T2
Authority
DE
Germany
Prior art keywords
query
filtering
pixel
pixels
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
Application number
DE60000686T
Other languages
English (en)
Other versions
DE60000686D1 (de
Inventor
F. Michael DEERING
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US09/251,453 external-priority patent/US6424343B1/en
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60000686D1 publication Critical patent/DE60000686D1/de
Application granted granted Critical
Publication of DE60000686T2 publication Critical patent/DE60000686T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • G06T11/10
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, 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

  • 1. Technisches Gebiet der Erfindung
  • Diese Erfindung betrifft im allgemeinen das Gebiet der Computergrafik und insbesondere Grafiksysteme mit hoher Leistung.
  • 2. Beschreibung des relevanten Standes der Technik
  • Ein Computersystem verläßt sich typischerweise auf sein Grafiksystem für das Produzieren einer visuellen Ausgabe auf dem Computerschirm oder einem Anzeigegerät. Frühe Grafiksysteme waren nur dafür verantwortlich, das zu nehmen, was der Prozessor als Ausgang produziert, und dies auf dem Schirm darzustellen. Im wesentlichen fungierten sie als einfache Übersetzer oder Schnittstellen. Moderne Grafiksysteme enthalten jedoch Grafikprozessoren mit einer sehr hohen Verarbeitungsleistung. Sie fungieren nun eher wie Coprozessoren anstelle von einfachen Übersetzern. Diese Veränderung erfolgte aufgrund eines kürzlichen Anstiegs sowohl in der Komplexität als auch der Datenmenge, die zu der Anzeigevorrichtung gesendet wird. Beispielsweise haben moderne Computeranzeigen viel mehr Pixel, eine größere Farbtiefe und sind in der Lage, komplexere Bilder mit höherer Bildwiederholfrequenz darzustellen als frühere Modelle. In gleicher Weise sind die angezeigten Bilder nun komplexer und können fortgeschrittene Techniken, wie z.B. das Anti-Aliasing und das prozedurale Zeichnen von Textur (texture mapping) beinhalten.
  • Im Ergebnis würde die CPU ohne die beträchtliche Verarbeitungsleistung in dem Grafiksystem eine lange Zeit damit zubringen, die Grafikberechnungen durchzuführen. Dies könnte dem Computersystem die Verarbeitungsleistung rauben, die für die Durchführung anderer Aufgaben, die mit der Programmausführung verknüpft sind, benötigt wird, und dadurch die Gesamtsystemleistung dramatisch reduzieren. Mit einem leistungsfähigen Grafiksystem wird jedoch, wenn die CPU instruiert wird, einen Kasten auf dem Schirm darzustellen, diese davon entlastet, die Position und Farbe jedes Pixels zu berechnen. Statt dessen kann die CPU eine Anforderung an die Videokarte schicken, die besagt "zeichne eine Box bei diesen Koordinaten". Das Grafiksystem zeichnet dann die Box, was den Prozessor entlastet, so daß er andere Aufgaben leisten kann.
  • Im allgemeinen ist ein Grafiksystem in einem Computer (ebenso als Grafiksystem bezeichnet) ein Typ eines Videoadapters, der seinen eigenen Prozessor enthält, um das Leistungsniveau zu verstärken. Diese Prozessoren sind für die Berechnung von graphischen Transformationen spezialisiert, so daß sie dazu tendieren, bessere Resultate zu erzielen als die Universal-CPU, die von dem Computersystem verwendet wird. Zusätzlich entlasten sie die CPU des Computers, um andere Befehle auszuführen, während das Grafiksystem die graphischen Berechnungen handhabt. Die Popularität von graphischen Anwendungen und insbesondere von Multimediaanwendungen hat dazu geführt, daß Grafiksysteme mit hoher Leistung ein gemeinsames Merkmal von Computersystemen sind. Die meisten Computerhersteller packen nun ein Grafiksystem mit hoher Leistung in ihre Systeme.
  • Da Grafiksysteme typischerweise nur einen begrenzten Satz von Funktionen durchführen, können sie angepaßt werden und sind daher weit effizienter bei graphischen Operationen als der Universalprozessor des Computers. Während frühere Grafiksysteme auf das Ausführen von zweidimensionalen (2D-) Grafiken begrenzt waren, hat sich ihre Funktionalität erhöht, so daß sie dreidimensionale (3D-) Drahtmodellgrafiken, 3D-Volumenmodelle unterstützen und nun die Unterstützung für dreidimensionale (3D-) Grafik beinhalten mit Textur und Spezialeffekten, wie z.B. das fortgeschrittene Shading bzw. Schattieren, das Fogging bzw. Schleiern, das Alpha-Blending bzw. das Alpha-Mischen und das spiegelartige Hervorheben.
  • Die Verarbeitungsleistung von dreidimensionalen Grafiksystemen hat sich mit einem halsbrecherischen Tempo verbessert. Vor wenigen Jahren konnten schattierte Bilder von einfachen Objekten nur mit wenigen Einzelbildern pro Sekunde wiedergegeben werden, während heutige Systeme die Wiedergabe von komplexen Objekten mit 60Hz oder mehr unterstützen. Bei dieser Wachstumsrate ist es in nicht allzu ferner Zukunft möglich, daß Grafiksysteme buchstäblich in der Lage sind, mehr Pixel wiederzugeben als ein einzelnes menschliches Sehsystem wahrnehmen kann. Während diese zusätzliche Leistung in Umgebungen mit mehreren Ansichten verwendet werden kann, kann sie in gebräuchlicheren Umgebungen mit hauptsächlich einer Ansicht verschwendet sein. Somit ist ein graphisches System wünschenswert, das in der Lage ist, sich an die variable Natur des menschlichen Auflösungssystems anzupassen (das heißt, in der Lage ist, die Qualität dort zur Verfügung zu stellen, wo sie benötigt wird oder am meisten aufnehmbar ist).
  • Während die Anzahl von Pixeln ein wichtiger Faktor bei der Bestimmung der Leistung von graphischen Systemen ist, ist ein anderer Faktor von gleicher Wichtigkeit die Qualität des Bildes. Beispielsweise kann ein Bild mit hoher Pixeldichte immer noch unrealistisch erscheinen, wenn Kanten innerhalb des Bildes zu scharf oder zu zackig sind (ebenso als Alias-Effekt bezeichnet). Eine gut bekannte Technik, diese Probleme zu überwinden, ist das Anti-Aliasing. Anti-Aliasing beinhaltet das Glätten der Kanten von Objekten durch Schattieren von Pixeln entlang der Grenzen von graphischen Elementen. Genauer gesagt bringt das Anti-Aliasing das Entfernen von höher frequenten Komponenten von einem Bild mit sich, bevor sie störende visuelle Artefakte verursachen. Beispielsweise kann Anti-Aliasing Kanten mit hohem Kontrast in einem Bild dämpfen oder glätten durch Einstellen von bestimmten Pixeln auf Zwischenwerte (z.B. um die Silhouette eines hellen Objekts, das vor einem dunklen Hintergrund überlagert wird).
  • Ein anderer visueller Effekt, der verwendet wird, um den Realismus von Computerbildern zu erhöhen, ist das Alpha-Blending. Alpha-Blending ist eine Technik, die die Transparenz eines Objekts steuert, was die realistische Darstellung von durchsichtigen bzw. durchscheinenden Oberflächen, wie z.B. Wasser oder Glas, erlaubt. Ein anderer Effekt, der verwendet wird, um den Realismus zu steigern, ist das Fogging. Das Fogging verdunkelt ein Objekt, wenn es sich von dem Betrachter weg bewegt. Das einfache Fogging ist ein Spezialfall des Alpha-Blendings, in dem sich der Grad von alpha mit dem Abstand ändert, so daß das Objekt so erscheint, als ob es im Nebel bzw. im Dunst verschwindet, wenn sich das Objekt von dem Betrachter weg bewegt. Dieses einfache Fogging kann ebenso als "depth cueing" bzw. Tiefeninformation oder atmosphärische Abschwächung bezeichnet werden, das heißt, das Verringern des Kontrastes eines Objekts, so daß es weniger auffallend erscheint, wenn es in der Ferne verschwindet. Komplexere Typen des Foggings gehen über eine einfache lineare Funktion hinaus, um eine komplexere Verbindung zwischen dem Grad der Transparenz und dem Abstand eines Objekts von dem Betrachter bereitzustellen. Softwaresysteme des gegenwärtigen Standes der Technik gehen sogar noch weiter durch Verwendung von atmosphärischen Modellen, um tiefliegenden Nebel mit verbessertem Realismus bereitzustellen.
  • Während die oben aufgelisteten Techniken das Erscheinungsbild von Computergrafikbildern dramatisch verbessern können, haben sie ebenso bestimmte Begrenzungen. Insbesondere können sie ihre eigenen Aberrationen einfügen und sind typischerweise von der Dichte der auf der Anzeigevorrichtung angezeigten Pixel begrenzt.
  • Im Ergebnis ist daher ein Grafiksystem wünschenswert, das in der Lage ist, verbesserte Leistungsniveaus zu benutzen, um nicht nur die Anzahl von dargestellten Pixeln zu erhöhen, sondern ebenso die Qualität des dargestellten Bildes. Darüber hinaus ist ein Grafiksystem wünschenswert, das in der Lage ist, Steigerungen in der Verarbeitungsleistung zu benutzen, um die Ergebnisse der Grafikeffekte, wie z.B. des Anti-Aliasings, zu verbessern.
  • Grafiksysteme des Standes der Technik haben im allgemeinen diese Ziele nicht erreicht. Grafiksysteme des Standes der Technik verwenden einen konventionellen Einzelbildpufferspeicher für das Aktualisieren der Pixel-/Videodaten auf der Anzeige. Der Einzelbildpufferspeicher speichert Zeilen und Spalten von Pixeln, die exakt den entsprechenden Zeilen- und Spaltenorten auf der Anzeige entsprechen. Grafiksysteme des Standes der Technik stellen 2D- und/oder 3D-Bilder oder Objekte in dem Einzelbildpufferspeicher in der Pixelform dar und lesen dann die Pixel von dem Einzelbildpufferspeicher während einer Bildwiederholung ein, um die Anzeige zu aktualisieren. Somit speichert der Einzelbildpufferspeicher die Ausgangspixel, die dem Display bzw. der Anzeige bereitgestellt werden. Um visuelle Artefakte zu reduzieren, die durch Aktualisieren des Schirms zu derselben Zeit, zu der der Einzelbildpufferspeicher aktualisiert wird, erzeugt werden können, sind die meisten Einzelbildpufferspeicher der Grafiksysteme doppelt puffergespeichert.
  • Um realistischere Bilder zu erzielen, sind manche Grafiksysteme des Standes der Technik weitergegangen durch Erzeugung von mehr als einer Abfrage bzw. einem Momentwert pro Pixel. Der Begriff "Abfrage" bzw. "Momentwert", wie er hier verwendet wird, bezieht sich auf die berechnete Farbinformation, die die Farbe, die Tiefe (z), die Transparenz und mögliche andere Informationen eines bestimmten Punktes auf einem Objekt oder Bild anzeigt. Beispielsweise kann eine Abfrage die folgenden Komponentwerte haben: einen Rotwert, einen Grünwert, einen Blauwert, einen z-Wert und einen alpha-Wert (der z.B. die Transparenz der Abfrage darstellt). Eine Abfrage kann ebenso andere Informationen beinhalten, wie z.B. einen z-Tiefenwert, einen Unschärfewert, einen Intensitätswert, eine "brighter-than-bright"-Information (Helligkeitsübersteuerung) und einen Anzeiger, daß die Abfrage teilweise oder vollständig aus Steuerinformation anstelle von Farbinformation besteht (z.B. "Abfragesteuerinformation"). Durch Berechnung von mehr Abfragen als Pixeln (das heißt durch Supersampling) wird ein detaillierteres Bild berechnet als auf der Anzeigevorrichtung dargestellt werden kann. Beispielsweise kann ein Grafiksystem vier Abfragen für jedes an die Anzeigevorrichtung auszugebende Pixel berechnen. Nachdem die Abfragen berechnet wurden, werden sie dann kombiniert oder gefiltert, um die Pixel zu bilden, die in dem Einzelwertpufferspeicher abgelegt werden und dann zu der Anzeigevorrichtung gefördert werden. Die Verwendung von Pixeln, die in dieser Art und Weise gebildet sind, kann ein realistischeres Endbild kreieren, da allzu abrupte Veränderungen in dem Bild durch den Filterungsprozeß geglättet werden können.
  • Diese Supersampling-Systeme des Standes der Technik erzeugen typischerweise eine Anzahl von Abfragen, die weit größer als die Anzahl von Pixelorten auf der Anzeige sind. Diese Systeme des Standes der Technik haben typischerweise Darstellungsprozessoren, die die Abfragen berechnen und sie in einem Darstellungspufterspeicher ablegen. Die Filterhardware liest dann die Abfragen aus dem Darstellungspufferspeicher, filtert die Abfragen, um Pixel zu erzeugen und legt dann die Pixel in einem traditionellen Einzelbildpufferspeicher ab. Der traditionelle Einzelbildpufferspeicher ist typischerweise doppelt puffergespeichert, wobei eine Seite verwendet wird für die Aktualisierung der Anzeigevorrichtung, während die andere Seite von der Filterhardware aktualisiert wird. Nachdem die Abfragen gefiltert wurden, werden die resultierenden Pixel in einem traditionellen Einzelwertpufferspeicher abgelegt, der verwendet wird, um die Anzeigevorrichtung zu aktualisieren. Diese Systeme haben jedoch im allgemeinen unter Begrenzungen zu leiden, die durch die konventionellen Einzelbildpufferspeicher und durch die zugeführte Latenzzeit, die durch den Darstellungspufferspeicher und das Filtern verursacht wird, auferlegt werden. Daher ist ein verbessertes Grafiksystem wünschenswert, das den Nutzen des Supersamplings von Pixeln beinhaltet, während die Nachteile des konventionellen Einzelbildpufferspeichers vermieden werden.
  • Die US-Patentanmeldung Nr. 09/251,453 mit dem Titel "Graphics System with Programmable Real-Time Sample Filtering" zeigt ein graphisches Computersystem, das einen su pergesampleten Abfragepufferspeicher und eine Einheit zur Umrechnung von Abfrage in Pixel für das Aktualisieren der Anzeige verwendet. Der Grafikprozessor erzeugt eine Mehrzahl von Abfragen und legt diese in einen Abfragepufferspeicher ab. Der Grafikprozessor erzeugt und speichert vorzugsweise mehr als eine Abfrage für zumindest eine Untermenge der Pixelorte auf der Anzeige. Der Abfragewertpufterspeicher ist somit ein supergesampleter Abfragewertpufferspeicher, der eine Anzahl von Abfragewerten speichert, die weit größer als die Anzahl von Pixelorten auf der Anzeige sein kann. Die Einheit zur Umrechnung von Abfragewert in Pixel ist derart ausgelegt, daß sie die Abfragewerte von dem supergesampleten Abfragewertpufferspeicher liest und die Abfragewerte filtert oder faltet in entsprechende Ausgangspixel, wobei die Ausgangspixel dann bereitgestellt werden, um die Anzeige zu aktualisieren. Die Einheit zur Umrechnung von Abfragewert in Pixel wählt einen oder mehrere Abfragewerte aus und filtert sie, um ein Ausgangspixel zu erzeugen. Die Einheit zur Umrechnung von Abfragewert in Pixel kann betrieben werden, um Abfragewerte zu erhalten und Pixel zu erzeugen, die direkt der Anzeige zur Verfügung gestellt werden, ohne daß ein Einzelbildpufferspeicher dazwischengeschaltet ist.
  • Die britische Patentanmeldung GB-A-2,278,524 (Nihon Unisys Ltd) beschreibt ein Verfahren und eine Vorrichtung für das Darstellen bzw. das Rendering von visuellen Bildern, das die Gebietsberechnung und das Blending bzw. Mischen von partiellen Pixellisten einsetzt für das Anti-Aliasing und die Transparenz. Eine Darstellungspipeline bildet Polygonkanteninterpolation, Pixelblending und Anti-Aliasing-Darstellungsoperationen in der Hardware. Grundfunktionspolygone werden in Unterpixelkoordinaten umgewandelt und werden dann zerteilt und geformt, um "Pixlink"-Elemente zu erzeugen, die auf jedem Pixel abgebildet werden. Grundelemente werden entlang Pixelgrenzen mit RGBZ-Werten partitioniert, die für jedes Pixel, das von einem Grundelement geschnitten wird, berechnet.
  • Die europäische Patentanmeldung EP-A-0,463,700 ((Philips) beschreibt ein Verfahren für das Erzeugen eines Bildes von Objekten in einem dreidimensionalen Raum für die Anzeige auf einer zweidimensionalen Pixelanordnung. Das Verfahren ermittelt N-Wiedergaben des Bildes, wobei jede Wiedergabe eine Subpixelverschiebung gegenüber der vorherigen Wiedergabe aufweist, um den Effekt der Anti-Aliasingfilterung zu bewirken. Für jedes Bild, das auf dem Anzeigegerät erscheint, wird ein Satz von N-Zwischenbildern dargestellt und ein Modul liefert für jede der N-Darstellungen einen unterschiedlichen vorbestimmten Offset-Wert, so daß sich der Abfragepunkt für jeden Pixel zwischen den Darstellungen bewegt. Ein Bildakkumulierungspufferspeicher addiert die Zwischenbilder, wenn sie erzeugt werden, auf, so daß nach N-Darstellungen der Pufferspeicher ein Bild enthält, das overgesampelt wurde und gefiltert wurde in Übereinstimmung mit der Abfragepunktverteilung und jeglichen Wichtungen, die mit jedem Abfragepunkt verbunden sein können.
  • Es wäre wünschenswert, diese verbesserte Grafikarchitektur zu verwenden, um weitere verbesserte Anzeigefähigkeiten zur Verfügung zu stellen, einschließlich reduzierte Artefakte, wenn z. B. die Darstellungsrate von der Pixelerzeugungsrate abweicht, wie auch verbesserte Anzeigeeffekte, wie z. B. das Schwenken, das Zoomen und dergleichen einschließlich des 2D-Schwenkens und -zoomens als auch der 3D-Bewegung, z. B. Positions- und Drehveränderungen um einen ersten Knotenpunkt einer Kamera.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Der erste Aspekt der Erfindung stellt ein Grafiksystem zur Verfügung mit: einem Grafikprozessor, der derart betreibbar ist, daß er eine Mehrzahl von Abfragen bzw. Momentwerten darstellt, einem Abfragewertpufterspeicher, der mit dem Grafikprozessor verbunden ist, um die Abfragen zu speichern, und einer Einheit zur Umrechnung von Abfragewert auf Pixel, die mit dem Abfragewertpufferspeicher verbunden ist, wobei die Einheit zur Umrechnung von Abfragewert bzw. Momentwert in Pixel so betreibbar ist, daß sie Momentwerte von dem Momentwertpufferspeicher auswählt und filtert, um Ausgangspixel für die Anzeige zu erzeugen, wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist, daß sie zumindest einen ersten der Ausgangspixel durch Auswählen und Filtern eines Bereiches der gespeicherten Momentwerte erzeugt, der eine Filterausdehnung abdeckt, die größer oder kleiner als ein einzelner Pixelbereich in dem Abfragepufferspeicher ist, wobei die Einheit zur Umrechnung von Momentwert auf Pixel derart betreibbar ist, daß sie einen oder mehrere der (i) Filterzentrumsorte, an denen die Filterung der gespeicherten Momentwerte angewendet wird, der (ii) Filterwichtungsfaktoren, die in der Filterung der gespeicherten Momentwerte verwendet werden, und (iii) den Radius der Filterausdehnung zwischen benachbarten Einzelbildern einstellt, um Artefakte zu reduzieren.
  • Ein anderer Aspekt der Erfindung stellt ein Verfahren zum Erzeugen von Pixeln für die Anzeige in einem Grafiksystem zur Verfügung, wobei das Verfahren aufweist: Darstellen einer Mehrzahl von Abfragewerten in einen Abfragepufferspeicher, Auswählen und Filtern von gespeicherten Abfragewerten aus dem Abfragepufterspeicher, um Ausgangspixel für die Anzeige zu erzeugen, wobei das Filtern das Filtern eines Abschnittes der gespeicherten Momentwerte umfaßt, der eine Filterausdehnung abdeckt, die größer oder kleiner als ein einzelner Pixelbereich in den Momentwertpufferspeicher ist, um zumindest ein erstes der Ausgangspixel zu erzeugen, wobei das Filtern weiterhin aufweist, das Einstellen von einem oder mehreren der (i) Filterzentrumsorte, an denen das Filtern der gespeicherten Momentwerte angewendet wird, (ii) Filtergewichtungsfaktoren, die bei der Filterung der gespeicherten Momentwerte verwendet werden, und (iii) einen Radius der Filterausdehnung zwischen benachbarten Einzelbildern, um Artefakte zu reduzieren.
  • Ausführungsformen der Erfindung stellen ein Computergrafiksystem zur Verfügung, das einen supergesampleten Abfragewertpufferspeicher und eine programmierbare Einheit zur Umrechnung von Abfrage in Pixel für die Aktualisierung der Anzeige verwendet, wobei das Grafik system eine verbesserte Speicherung von Positionsinformation der Abfragen in dem Abfragepufterspeicher hat. In einer Ausführungsform kann das Grafiksystem einen Grafikprozessor, einen supergesampleten Abfragepufterspeicher und eine Einheit zur Umrechnung von Abfrage in Pixel haben. Der Grafikprozessor erzeugt vorzugsweise eine Mehrzahl von Abfragen und speichert diese in einem Abfragewertpufferspeicher. Vorzugsweise erzeugt und speichert der Grafikprozessor mehr als eine Abfrage für zumindest eine Untersatz der Pixelorte auf der Anzeige. Der Abfragepufferspeicher ist somit eine supergesampleter Abfragepufferspeicher, der eine Anzahl von Abfragen speichert, die in manchen Ausführungsformen weitaus größer als die Anzahl von Pixelorten auf der Anzeige sein kann. In anderen Ausführungsformen kann die Gesamtzahl von Abfragen näher an, gleich zu oder sogar weniger als die Gesamtzahl von Pixelorten auf der Anzeigevorrichtung sein, die Abfragen können jedoch dichter positioniert sein in bestimmten Bereichen und weniger dicht positioniert sein in anderen Bereichen.
  • Die Einheit zur Umrechnung von Abfrage in Pixel ist derart konfiguriert, daß sie die Abfragen von dem supergesampleten Abfragepufferspeicher liest und die Abfragen in entsprechende Ausgangspixel filtert oder faltet, wobei die Ausgangspixel dann zur Verfügung gestellt werden, um die Anzeige zu aktualisieren. Die Einheit zur Umrechnung von Abfrage in Pixel wählt eine oder mehrere Abfragen aus und filtert diese, um ein Ausgangpixel zu erzeugen. Es sei bemerkt, daß die Anzahl von Abfragen, die von der Einheit zur Umrechnung von Abfrage in Pixel ausgewählt und/oder gefiltert wird, eins und vorzugsweise größer als eins sein kann.
  • Die Einheit zur Umrechnung von Abfrage in Pixel kann auf die Abfragen von dem supergesampleten Abfragepufferspeicher zugreifen, eine Filteroperation durchführen und dann die resultierenden Ausgangspixel direkt der Anzeige zur Verfügung stellen, vorzugsweise in Echtzeit. Das Grafiksystem kann mit einem konventionellen Einzelbildpufferspeicher betrieben werden, d.h. das Grafiksystem braucht nicht einen konventionellen Einzelbildpuffer benutzen, der die tatsächlichen Pixelwerte, die auf dem Display aktualisiert werden, speichert. Es sei bemerkt, daß manche Anzeigen interne Einzelbildpufferspeicher haben, diese werden jedoch als integraler Teil des Anzeigegerätes und nicht des Grafiksystems angesehen. Die Einheiten zur Umrechnung von Abfrage in Pixel können somit jedes Pixel für jede Schirmaktualisierung auf einer Echtzeitbasis oder während der Übertragung aktualisieren.
  • In einer Ausführungsform ist die Einheit zur Umrechnung von Abfrage in Pixel derart betreibbar, daß sie das Filtern von gespeicherten Abfragen einstellt, um Artefakte zu reduzieren oder einzustellen, z. B. ist sie derart betreibbar, daß sie selektiv das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern einstellt, um Artefakte zwischen den benachbarten Einzelbildern zu reduzieren. Beispielsweise kann die Einheit zur Umrechnung von Abfrage bzw. Momentwert in Pixel einen ersten Satz von gespeicherten Abfragen auswählen und filtern, um erste Ausgangspixel für das Display zu erzeugen unter Verwendung eines ersten Filters und kann später einen zweiten Satz von gespeicherten Abfragewerten auswählen und filtern, um zweite Ausgangspixel für das Display bzw. die Anzeige unter Verwendung eines zweiten Filtern, der sich von dem ersten Filter unterscheidet, zu erzeugen. In einer Ausführungsform kann die Einheit zur Umrechnung von Abfrage in Pixel das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern durch Simulation von verschiedenen Schirmeffekten oder Anzeigeeffekten, wie z. B. das Schwenken, das Zoomen und dergleichen, einschließlich das 2D-Schwenken und -Zoomen sowie auch der 3D-Bewegung, z. B. Positions- und Rotationsveränderungen um einen ersten Knotenpunkt einer Kamera für reduzierte Artefakte, selektiv einstellen.
  • Die Einheit zur Umrechnung von Abfrage in Pixel stellt vorzugsweise selektiv die Zentrumsorte (Zentren) in dem Abfragepufferspeicher ein, auf die der Filter (z. B. ein Faltungsfilter) während der Filterung von gespeicherten Abfragen angewendet wird, um Artefakte zu reduzieren. Die Zentrumsorte, auf die der Faltungsfilter angewendet wird, entsprechen den Zentren der Ausgangspixel, die erzeugt werden. Die Einheit zur Umrechnung von Abfrage in Pixel beinhaltet eine Adreßerzeugungslogik für die Erzeugung von Adressen entsprechend der Zentrumsorte, wobei der Faltungsfilter an diese Zentrumsorte bei der Erzeugung von Ausgangspixeln für die Anzeige angewendet wird. Die Adreßerzeugungslogik ist programmierbar, um Adressen an ausgewählten Unterpixelpositionen entsprechend den gewünschten Zentren zu erzeugen. In der bevorzugten Ausführungsform ist die Unterpixelpositionsstartadresse, die von der Adreßerzeugerlogik erzeugt wird, programmierbar und die Pixelschrittgröße kann konstant bleiben. Die Einheit zur Umrechnung von Abfrage in Pixel ist derart betreibbar, daß sie selektiv die Zentrumsorte einstellt, an denen der Filter in einer oder mehreren der X- oder Y-Richtung angewendet wird, und kann die Zentrumsorte der Filter über eine Unterpixeldistanz einstellen. Die Einheit zur Umrechnung von Abfrage in Pixel kann einen Faltungsfilter verwenden bei der Filterung der Abfragen oder andere Typen von Filtern.
  • In dieser Ausführungsform kann der Abfragepufferspeicher Abfragen speichern entsprechend einem Gebiet, das größer als ein sichtbarer Bereich der Anzeige ist, und eine oder mehrere der Abfragen von außerhalb des (vorher) sichtbaren Bereiches der Anzeige können verwendet werden bei der Erzeugung von Ausgangspixeln entsprechend der eingestellten Faltungszentren. Das Grafiksystem kann ebenso derart betrieben werden, daß es selektiv den Videotakt einstellt, um die Einstellung der Zentrumsorte der Faltungsfilter während des Filterns der gespeicherten Abfragewerte zu kompensieren.
  • Die Einheit zur Umrechnung von Abfrage in Pixel kann Ausgangspixel mit der gleichen Geschwindigkeit erzeugen wie der Grafikprozessor die Abfragewerte in dem Abfragewertpufferspeicher darstellt. Wenn beispielsweise bei einem gegenwärtigen Satz von abgespeicherten Abfragewerten festgestellt wird, daß er ähnlich oder identisch zu einem vorherigen Satz von abgespeicherten Abfragewerten ist, die vorher für die Erzeugung von Ausgangspixeln in einem vorherigen Einzelbild verwendet wurden, kann die Einheit zur Umrechnung von Abfrage in Pi xeln selektiv das Filtern des gegenwärtigen Satzes von abgespeicherten Abfragewerten in einem gegenwärtigen Einzelbild einstellen, um Artefakte zu reduzieren. Wenn ein Satz von abgespeicherten Abfragewerten früher für die Erzeugung von ersten Ausgangspixeln in einem vorherigen Einzelbild verwendet worden ist, dann kann somit die Einheit zur Umrechnung von Abfrage in Pixel selektiv das Filtern eines ähnlichen Satze (oder des gleichen Satzes) von abgespeicherten Abfragewerten einstellen, um unterschiedliche Pixel in einem nachfolgenden Einzelwert zu erzeugen, um Artefakte zu reduzieren. Somit arbeitet in Situationen, in der der Knotenpunkt der Kamera im wesentlichen zwischen benachbarten Einzelbildern fixiert bleibt, die vorliegende Erfindung derart, daß sie den Knotenpunkt der Kamera effektiv geschickt variiert, um jegliche Artefakte zu entfernen, die zwischen benachbarten Einzelbildern auftreten können.
  • Die Einheit zur Umrechnung von Abfrage in Pixel kann mit einer unterschiedlichen (z. B. höheren) Geschwindigkeit arbeiten als die Darstellungsrate. Beispielsweise kann die Einheit zur Umrechnung von Abfragewert in Pixel Ausgangspixel mit einer unterschiedlichen Geschwindigkeit erzeugen als der Grafikprozessor die Abfragewerte in dem Abfragewertpufferspeicher darstellt, z. B. ist der Grafikprozessor betreibbar, um die Mehrzahl von Abfragewerten in dem Abfragepufferspeicher mit einer ersten Geschwindigkeit darzustellen, und die Einheit zur Umrechnung von Abfragewerte zu Pixel ist betreibbar, um Ausgangspixel bei einer zweiten größeren Geschwindigkeit zu erzeugen. Dies erlaubt es der Faltungspipeline in der Einheit zur Umrechnung von Abfrage in Pixel während der Übertragung zu arbeiten, unabhängig von der Darstellungsgeschwindigkeit. In diesem System ist die Einheit zur Umrechnung von Abfrage in Pixel derart betreibbar, daß sie selektiv das Filtern von abgespeicherten Abfragewerten zwischen benachbarten Einzelbildern durchführt, wie oben beschrieben wurde, um Artefakte zu reduzieren. Somit ist, wo bestimmt wird, daß ein erster Satz von gespeicherten Abfragewerten früher bei der Erzeugung von Ausgangspixeln in einem vorherigen Einzelbild verwendet wurde, die Einheit zur Umrechnung von Abfragewert zu Pixel derart betreibbar, daß sie selektiv das Filtern des ersten Satzes von gespeicherten Abfragewerten in einem gegenwärtigen (oder nachfolgenden) Einzelbild einstellt, um Artefakte zu reduzieren. Die Abfragewerte können somit einmal erzeugt werden und dann zwei oder mehrere Male mit unterschiedlichen Filtern gefaltet werden, um Artefakte zu entfernen, bis der Grafikprozessor neue Abfragewerte in dem Abfragepufferspeicher darstellt.
  • In einer anderen Ausführungsform ist die Einheit zur Umrechnung von Abfragewert zu Pixel derart betreibbar, daß sie das Filtern von abgespeicherten Abfragewerten einstellt, um einen Anzeigeeffekt zu implementieren. Insbesondere ist die Einheit zur Umrechnung von Abfragewert zu Pixel derart betreibbar, daß sie selektiv das Filtern von abgespeicherten Abfragewerten in benachbarten Einzelbildern einstellt, um einen Anzeigeeffekt zwischen den benachbarten Einzelbildern zu implementieren. Der Anzeigeeffekt kann beinhalten das Schwenken bzw. Panoramieren, das Zoomen, das Drehen oder das Bewegen von Szenen u. a., einschließ lich der 2D-Panoramierung und des -Zoomens als auch der 3D-Bewegung, z. B. Positions- und Drehveränderungen um einen ersten Knotenpunkt einer Kamera.
  • In dieser Ausführungsform kann der Abfragewertpufferspeicher Abfragewerte speichern entsprechend eines Bereichs, der größer als ein sichtbarer Bereich der Anzeige ist, und ein oder mehrere Abfragewerte von außerhalb der (vorher) sichtbaren Fläche der Anzeige können verwendet werden, um die Anzeigeeffekte zu implementieren. Die Einheit zur Umrechnung von Abfragewert in Pixel kann das Filter einstellen durch Einstellen von einem oder mehreren der Positionen (Zentren) der Pixel, des Radius des Filters und des Abstandes zwischen den Pixeln. Die Einheit zur Umrechnung von Abfragewerten in Pixel kann das Filtern von gespeicherten Abfragewerten einstellen, um die Anzeigeeffekte auf einer Bruchteilpixelgrenze zu implementieren. Beispielsweise kann die Einheit zur Umrechnung von Abfrage in Pixel selektiv das Filtern von gespeicherten Abfragewerten in benachbarten Einzelbildern einstellen, um die Panoramierung bzw. das Schwenken oder das Zoomen zwischen den benachbarten Einzelbildern auf einer Bruchteilpixelgrenze zu bewirken.
  • Ein Vorteil dieser Erfindung ist eine glattere Panoramierung oder ein glatteres Zoomen, wenn die Abfragewerte mit einer geringeren Rate als die Faltung dargestellt werden. Man nehme beispielsweise eine Situation an, bei der die Kamera in eine bestimmte Richtung geschwenkt wird oder heran- oder herausgezoomt wird, und die Abfragewerte mit der halben Geschwindigkeit der Faltung dargestellt werden. In diesem Fall können zwei Faltungsoperationen auf den selben Daten durchgeführt werden und dann tritt ein Sprung zu der nächsten Schwenkposition in dem nächsten dargestellten Einzelbild auf. Gemäß der vorliegenden Erfindung kann die Einheit zur Umrechnung von Abfragewert zu Pixel derart arbeiten, daß die Faltungszentren in dem zweiten Faltungszyklus eingestellt werden (z. B. durch Bewegung von 10,5 Pixeln nach rechts), um die Schwenkoperation zu bewirken, selbst wenn neue Daten entsprechend dem Schwenk noch nicht dargestellt wurden. Wenn somit ein Anzeigeeffekt gewünscht ist und wenn ein erster Satz von abgespeicherten Abfragewerten früher verwendet wurde bei der Erzeugung von Ausgangspixeln in einem vorherigen Einzelbild, ist die Einheit zur Umrechnung von Abfragewert zu Pixel derart betreibbar, daß sie selektiv das Filtern des ersten Satzes von abgespeicherten Abfragewerten in einem nachfolgenden Einzelbild einstellt, um die Anzeigeeffekte in dem nachfolgenden Einzelbild zu implementieren.
  • Ein Softwareprogramm, das auf einem Computermedium verkörpert ist, und ein Verfahren zum Betreiben eines Grafikuntersystems wurden ebenso in Betracht gezogen. In einer Ausführungsform weist das Verfahren zunächst die Berechnung einer Mehrzahl von Abfragewertorten und dann das Erzeugen einer Abfrage für jeden Abfragepixelort auf. Die Abfragen können dann gespeichert werden (z. B. in den doppelpuffergespeicherten Abfragewertpuffer). Die Abfragewertorte können entsprechend einer Anzahl von Positionierungs- oder Abstandsschemata spezifiziert werden. Die gespeicherten Abfragewerte können dann ausgewählt oder gefiltert werden, um Ausgangspixel zu bilden, die in Echtzeit direkt der Anzeige zur Verfügung gestellt werden, vorzugsweise ohne sie in einem traditionellen Einzelbildpufferspeicher abzulegen. Die Erzeugung von Ausgangspixeln kann das selektive Einstellen der Filterung von gespeicherten Abfragewerten beinhalten, um Artefakte zu reduzieren oder um Anzeigeeffekte zu erzeugen. Die Erzeugung von Ausgangspixeln kann ebenso mit der gleichen oder einer unterschiedlichen Geschwindigkeit als die Darstellungsrate arbeiten.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Das vorgehende und auch die anderen Ziele, Merkmale und Vorteile dieser Erfindung können vollständiger verstanden werden unter Bezug auf die folgende detaillierte Beschreibung, wenn sie zusammen mit den begleitenden Figuren gelesen wird, in denen:
  • 1 eine Ausführungsform eines Computersystems darstellt, das eine Ausführungsform eines Grafiksystems enthält,
  • 1A stellt ein Computernetzwerk dar, das zumindest einen Servercomputer und ein oder mehrere Clientcomputer aufweist, wobei die Clientcomputer eine Ausführungsform eines Grafiksystems beinhalten,
  • 2 ist ein vereinfachtes Blockdiagramm des Computersystems von 1,
  • 3 ist ein Blockdiagramm, das mehr Details einer Ausführungsform des Grafiksystems von 1 darstellt,
  • 4 stellt eine traditionelle Pixelberechnung dar,
  • 5A stellt eine Ausführungsform des Supersamplens dar, 5B stellt eine zufällige Verteilung von Abfragen dar,
  • 6 stellt Details einer Ausführungsform eines Grafiksystems mit einer Ausführungsform eines supergesampleten Abfragepufferspeichers mit variabler Auflösung dar,
  • 7 stellt Details einer anderen Ausführungsform eines Grafiksystems mit einer Ausführungsform eines supergesampleten Abfragepufferspeichers mit variabler Auflösung dar,
  • 8 stellt Details von drei unterschiedlichen Ausführungsformen von Abfragepositionierungsschemata dar,
  • 9 stellt Details einer Ausführungsform eines Abfragepositionierungsschema dar, 10 stellt Details einer anderen Ausführungsform eines Abfragepositionierungsschemas dar,
  • 11 stellt Details eines Verfahrens des parallelen Umwandelns von Abfragewerten in Pixel dar,
  • 11A stellt mehrere Details der Ausführungsform von 11 dar,
  • 11B stellt Details einer Ausführungsform eines Verfahrens für den Umgang mit Grenzbedingungen dar,
  • 12 ist ein Flußdiagramm, das eine Ausführungsform eines Verfahrens für das Zeichnen von Abfragen in einen supergesampleten Abfragepufferspeicher darstellt,
  • 12A stellt eine Ausführungsform für die Codierung von Dreieckseckpunkten dar, 13 stellt eine Ausführungsform eines Verfahrens für die Berechnung von Pixeln aus Abfragewerten dar,
  • 14 stellt Details einer Ausführungsform einer Pixelfaltung für einen Beispielsatz von Abfragen dar,
  • 15 ist ein Flußdiagramm, das die Einstellung der Filterung für ein Einzelbild aus Pixeln darstellt,
  • 16A stellt ein erstes Filterungsverfahren für Abfragewerte dar, wobei die Faltungszentren auf den Behältern zentriert sind,
  • 16B stellt einen Abschnitt des Pixelbildes dar, welches von den Abfragewerten unter Verwendung des ersten Filterungsverfahrens von 16A erzeugt wurde, wobei das Pixelbild einen Artefakt beinhaltet (eine Linie mit Treppeneffekt),
  • 17A stellt ein zweites Filterungsverfahren für Abfragewerte dar, wobei die Faltungszentren relativ zu den Behältern nach links verschoben sind,
  • 17B stellt einen Abschnitt des Pixelbildes dar, das durch die Abfragen erzeugt wurde unter Verwendung des zweiten Filterungsverfahrens von 17A, wobei das Pixelbild die Artefakte von 16B nicht beinhaltet,
  • 18 stellt ein erstes Filterungsverfahren für Abfragewerte dar, wobei die Faltungszentren auf den Behältern zentriert sind,
  • 19 stellt ein zweites Filterverfahren für Abfragewerte dar, um einen Zoomanzeigeeffekt zu implementieren, wobei die Faltungszentren mit einem größeren Abstand voneinander entfernt sind und der Filterradius erhöht wurde, und
  • 20 ist ein Flußdiagramm, das die Erzeugung von Anzeigeeffekten darstellt. Während die Erfindung verschiedenen Modifikationen und alternativen Formen zugänglich ist, sind spezifische Ausführungsformen hiervon beispielhaft in den Figuren gezeigt und werden hier im Detail beschrieben.
  • Detaillierte Beschreibung verschiedener Ausführungsformen
  • Computersystem 1
  • In 1 ist eine Ausführungsform eines Computersystems 80 gezeigt, das ein dreidimensionales (3-D) Grafiksystem beinhaltet. Das 3-D-Grafiksystem kann in irgendeinem von verschiedenen Systemen enthalten sein, einschließlich eines Computersystems, eines Netzwerk-PC's, einer Internetanwendung, einem Fernseher, einschließlich HDTV-Systemen und interaktiven Fernsehsystemen, persönlichen digitalen Assistenten (PDAs) und anderen Geräten, die unter anderem 2-D- und/oder 3-D-Grafik anzeigen.
  • Wie gezeigt, weist das Computersystem 80 eine Systemeinheit 82 und einen Videomonitor oder ein Anzeigegerät 84 auf, das mit der Systemeinheit 82 verbunden ist. Das Anzeigegerät 84 kann einer von verschiedenen Typen von Anzeigemonitoren oder -geräten sein (zum Beispiel ein CRT-, LCD-, Plasmaschirm, digitale Spiegelanzeige (DMO) oder eine reflektive Silicium-LCD). Verschiedene Eingabegeräte können mit dem Computersystem verbunden sein, einschließlich einer Tastatur 86 und/oder einer Maus 88 oder einem anderen Eingabegerät (zum Beispiel einem Trackball, einem Digitalisiertablett, einem Tablett, Eingabegeräten mit sechs Freiheitsgraden, Kopfverfolger, Augenverfolger, Datenhandschuh, Körpersensoren usw.). Anwendungssoftware kann von dem Computersystem 80 ausgeführt werden, um 3-D-Grafikobjekte auf dem Anzeigegerät 84 anzuzeigen.
  • Wie weiter unten beschrieben wird, beinhaltet das 3-D-Grafiksystem in dem Computersystem 80 einen supergesampleten Abfragewertpufferspeicher mit einer programmierbaren Einheit zur Umrechnung von Abfrage in Pixel, um die Qualität und den Realismus von den Bildern, die auf der Anzeigevorrichtung 84 dargestellt werden, zu verbessern. Die Einheit zur Umrechnung von Abfrage in Pixel kann einen Filter oder eine Faltungspipeline oder andere Hardware für die Erzeugung von Pixeln in Antwort auf Abfragen in dem Abfragepufferspeicher beinhalten. Die Einheit zur Umrechnung von Abfragewert in Pixel kann betrieben werden, um Abfragen von dem Abfragepufferspeicher zu erhalten und Pixel zu erzeugen, die der Anzeige direkt zur Verfügung gestellt werden. Die Einheit zur Umrechnung von Abfrage in Pixel kann in einer „Echtzeit"- oder in einer „während der Übertragung"- Art und Weise betrieben werden.
  • Die Begriffe „Filtern" und „Falten" werden hier austauschbar verwendet und beziehen sich auf mathematische Manipulationen von einer oder mehreren Abfragen, um ein Pixel zu erzeugen (beispielsweise durch Mitteln, durch Anlegen einer Faltungsfunktion, durch Summierung, durch Anlegen einer Filterfunktion, durch Wichten der Abfragen und darauffolgendes Manipulieren, durch Anlegen einer Zufallsfunktion, usw.).
  • Der Begriff „Echtzeit", so wie er hier verwendet wird, bezieht sich auf eine Funktion, die durchgeführt wird bei oder nahe der Aktualisierungs- bzw. Darstellungsart des Anzeigegerätes. „Während der Übertragung" bedeutet nahe oder oberhalb der Aufnahmefähigkeit des menschlichen Sehsystems für die Bewegungsverschmelzung (wie oft ein Bild verändert werden muß, um die Illusion von kontinuierlicher Bewegung zu geben) und Flimmerverschmelzung (wie oft die Lichtintensität verändert werden muß, um die Illusion der Kontinuität zu geben). Diese Konzepte sind weiter ausgeführt in dem Buch „Spatial Vision" von Russel L. De Valois und Karen K. De Valois, Oxford University Press, 1988.
  • Gemäß der vorliegenden Erfindung kann die Einheit zur Umrechnung von Abfragewert in Pixel derart arbeiten, daß sie selektiv das Filtern der gespeicherten Abfragen einstellt, um Artefakte zu reduzieren oder um Anzeigeeffekte zu erzeugen. Die Erzeugung von Ausgangspixeln kann ebenso mit der selben oder mit einer unterschiedlichen Geschwindigkeit wie die Darstel lungsgeschwindigkeit der Abfragewerte arbeiten, die berechnet werden und in dem Abfragewertpufferspeicher gemäß der vorliegenden Erfindung abgelegt werden.
  • Computernetzwerk 1A
  • In 1A ist ein Computernetzwerk 500 gezeigt, daß zumindest einen Servercomputer 502 und einen oder mehrere Clientcomputer 506A–N aufweist. (In der Ausführungsform, die in 1A gezeigt ist, sind die Clientcomputer 506A–B dargestellt.) Ein oder mehrere der Clientsysteme können ähnlich dem Computersystem 80 konfiguriert sein, wobei jedes ein oder mehrere Grafiksysteme 112, wie oben beschrieben wurde, hat. Der Server 502 und der Client (die Clients) 506 können über eine Vielzahl von Verbindungen 504 miteinander verbunden sein, wie zum Beispiel ein Nahbereichsnetzwerk (LAN), ein Weitbereichsnetz (WAN) oder eine Internetverbindung. In einer Ausführungsform kann der Server 502 3-D-Geometriedaten (die komprimiert sein können) speichern und zu einem oder mehreren der Clients 506 übertragen. Die Clients 506 empfangen die komprimierten 3-D-Geometriedaten, dekomprimieren sie (sofern notwendig) und stellen dann die geometrischen Daten dar. Das dargestellte Bild wird dann auf dem Anzeigegerät des Clients dargestellt. Die Clients stellen die Geometriedaten dar und zeigen das Bild an unter Verwendung des supergesampleten Abfragepufferspeichers und Echtzeitfiltertechniken, die hier beschrieben werden. In einer anderen Ausführungsform können die komprimierten 3-D-Geometriedaten zwischen den Clientcomputern 506 übertragen werden.
  • Blockdiagramm eines Computersystems 2
  • In 2 ist ein vereinfachtes Blockdiagramm gezeigt, das das Computersystem von 1 darstellt. 2 kann ebenso die Computer 506A, 506B oder 502 darstellen. Elemente des Computersystems, die nicht für ein Verständnis der vorliegenden Erfindung notwendig sind, sind aus Gründen der Einfachheit nicht gezeigt. Das Computersystem 80 beinhaltet, wie gezeigt, eine Hauptverarbeitungseinheit (CPU) 102, die mit einem Hochgeschwindigkeitsspeicherbus oder dem Systembus 104, der ebenso als der Hostbus 104 bezeichnet wird, verbunden ist. Ein Systemspeicher 106 kann ebenso mit dem Hochgeschwindigkeitsbus 104 verbunden sein.
  • Der Hostprozessor 102 kann ein oder mehrere Prozessoren von unterschiedlichen Typen aufweisen, zum Beispiel Mikroprozessoren, Multiprozessoren und CPUs. Der Systemspeicher 106 kann jede Kombination von verschiedenen Typen von Speicheruntersystemen, einschließlich Arbeitsspeichern (zum Beispiel statische Arbeitsspeicher oder „SRAMs", synchrone dynamische Arbeitsspeicher oder „SDRAMs" und dynamische Rambus-Zugriffsspeicher oder „RDRAM", und andere) und Massenspeichergeräte beinhalten. Der Systembus oder Hostbus 104 kann ein oder mehrere Kommunikations- oder Hostcomputerbusse (für die Datenkommunikation zwischen den Hostprozessoren, den CPUs und den Speichersubsystemen) sowie auch spezialisierte Subsystembusse aufweisen.
  • Ein 3-D-Grafiksystem oder Grafiksystem 112 entsprechend der vorliegenden Erfindung ist mit dem Hochgeschwindigkeitsspeicherbus 104 verbunden. Das 3-D-Grafiksystem 112 kann mit dem Bus 104 beispielsweise durch einen Koordinatenumschalter bzw. Kreuzschienenwähler oder eine andere Busverbindungslogik verbunden sein. Es wird angenommen, daß verschiedene andere externe Geräte oder andere Busse mit dem Hochgeschwindigkeitsspeicherbus 104 verbunden sein können. Es sei bemerkt, daß das 3-D-Grafiksystem mit einem oder mehreren der Busse in dem Computersystem 80 verbunden sein kann und/oder mit verschiedenen Typen von Bussen verbunden sein kann. Zusätzlich kann das 3-D-Grafiksystem mit einem Kommunikationsanschluß verbunden sein und dadurch Grafikdaten direkt von einer externen Quelle, zum Beispiel dem Internet oder einem Netzwerk empfangen. Wie in der Figur gezeigt ist, ist das Anzeigegerät 84 mit dem 3-D-Grafiksystem 112, das in dem Computersystem 80 aufgenommen ist, verbunden.
  • Die Host CPU 102 kann entsprechend einem programmierten Eingangs-/Ausgangs-(I/O)Protokoll Information zu und von dem Grafiksystem 112 über den Hostbus 104 übertragen. Alternativ dazu kann das Grafiksystem 112 auf das Speichersubsystem 106 gemäß einem Direktspeicherzugriffsprotokoll (DMA) oder über intelligentes Busmasterering zugreifen.
  • Ein Grafikanwendungsprogramm in Übereinstimmung mit einer Anwendungsprogrammschnittstelle (API), wie zum Beispiel OpenGL oder Java 3D, kann auf der Host CPU 102 ausgeführt werden und Befehle und Daten erzeugen, die ein geometrisches Grundelement (graphische Daten) definieren, wie zum Beispiel ein Polygon, für die Ausgabe auf dem Anzeigegerät 84. Wie durch die bestimmten graphischen Schnittstellen, die verwendet werden, definiert wird, können diese Grundelemente getrennte Farbeigenschaften für die Vor- und Rückseiten haben. Der Hostprozessor 102 kann diese Grafikdaten zu dem Speichersubsystem 106 übertragen. Danach kann der Hostprozessor 102 betrieben werden, um die Grafikdaten zu dem Grafiksystem 112 über den Hostbus 104 zu übertragen. In einer anderen Ausführungsform kann das Grafiksystem 112 über den Hostbus 104 unter Verwendung von DMA Zugriffszyklen Geometriedatenanordnungen einlesen. In noch einer anderen Ausführungsform kann das Grafiksystem 112 mit dem Systemspeicher 106 über einen direkten Anschluß, wie zum Beispiel eine Version des verbesserten Grafikanschlusses (AGP), wie er von Intel Corporation vertrieben wird, verbunden sein.
  • Das Grafiksystem kann Grafikdaten von irgendeiner Quelle erhalten, einschließlich der Host CPU 102 und/oder dem Systemspeicher 106, anderem Speicher oder von einer externen Quelle, wie zum Beispiel einem Netzwerk, zum Beispiel dem Internet, oder einem Sendemedium, wie zum Beispiel Fernsehen, oder von anderen Quellen.
  • Wie unten beschrieben wird, kann das Grafiksystem 112 derart konfiguriert sein, daß es eine effizientere Mikrocodesteuerung erlaubt, was zu einer erhöhten Leistung für die Handhabung von ankommenden Farbwerten führt, die den Polygonen entsprechen, die von der Host CPU 102 erzeugt wurden. Es sei bemerkt, daß, während das Grafiksystem 112 als Teil des Computersystems 80 dargestellt wurde, das Grafiksystem 112 ebenso auch als ein Einzelgerät (zum Beispiel mit seinem eigenen eingebauten Bildschirm). Das Grafiksystem 112 kann ebenso als ein Einzelchipgerät oder als Teil eines Systems auf einem Chip oder eines Mehrfachchipmoduls konfiguriert sein.
  • Grafiksystem 3
  • 3 ist ein Blockdiagramm, das Details einer Ausführungsform des Grafiksystems 112 darstellt. Wie in der Figur zu sehen ist, kann das Grafiksystem 112 einen oder mehrere Grafikprozessoren 90, einen oder mehrere supergesamplete Abfragewertpufferspeicher 162 und eine oder mehrere Einheiten zur Umrechnung von Abfragewerte in Pixel 170A–D aufweisen. Das Grafiksystem 112 kann ebenso einen oder mehrere Digital-Analog-Wandler (DACs) 178A–B aufweisen. Der Grafikprozessor kann irgendein geeigneter Typ eines Hochleistungsprozessors sein (zum Beispiel spezialisierte Grafikprozessoren oder Berechnungseinheiten, Multimediaprozessoren, GSPs oder Allzweckprozessoren). In einer Ausführungsform kann der Grafikprozessor 90 eine oder mehrere Darstellungseinheiten 150A–D aufweisen. In der gezeigten Ausführungsform weist der Grafikprozessor 90 jedoch ebenso eine oder mehrere Steuereinheiten 140, einen oder mehrere Datenspeicher 152A–D und eine oder mehrere Verzeichniseinheiten 154 auf. Der Abfragepufferspeicher 162 kann einen oder mehrere Abfragespeicher 160A bis 160N aufweisen, wie in der Figur gezeigt ist.
  • A. Steuereinheit
  • Die Steuereinheit 140 funktioniert als Schnittstelle zwischen dem Grafiksystem 112 und dem Computersystem 80 durch Steuern der Datenübertragung zwischen dem Grafiksystem 112 und dem Computersystem 80. In den Ausführungsformen des Grafiksystems 112, die zwei oder mehrere Darstellungseinheiten 150A–D aufweisen, kann die Steuereinheit 140 ebenso den Datenstrom, der von dem Computersystem 80 empfangen wird, in eine entsprechende Anzahl von parallelen Strömen aufteilen, die zu den einzelnen Darstellungseinheiten 150A–D gelenkt werden. Die Grafikdaten können von dem Computersystem 80 in einer komprimierten Form erhalten werden. Dies kann mit Vorteil die erforderliche Übertragsbandbreite zwischen dem Computersystem 80 und dem Grafiksystem 112 reduzieren. In einer Ausführungsform kann die Steuereinheit 140 derart konfiguriert sein, daß sie den empfangenen Datenstrom aufteilt und den Darstellungseinheiten 150A–D in komprimierter Form zuleitet.
  • Die Grafikdaten können eines oder mehrere graphische Grundelemente enthalten. Der Begriff der graphischen Grundelemente, so wie er hier verwendet wird, beinhaltet Polygone, parametrische Oberflächen, Splines, NURBS (nicht-gleichförmige, rationale B-Splines), unterteilte Oberflächen, Fraktale, Volumengrundelement und Teilchensysteme. Diese graphischen Grundelemente sind im Detail in dem Lehrbuch beschrieben mit dem Titel „Computer Graphics: Principles and Practice" von James D. Foley et al., veröffentlicht von Addison-Wesley Publishing Co., Inc., 1996. Es sei bemerkt, daß in dieser detaillierten Beschreibung aus Gründen der Einfachheit auf Polygone Bezug genommen wird, die beschriebenen Ausführungsformen und Beispiele jedoch ebenso mit Grafikdaten verwendet werden können, die andere graphische Grundelementtypen verwenden.
  • B. Darstellungseinheiten
  • sDie Darstellungseinheiten 150A–D (ebenso hier als Zeicheneinheiten bezeichnet) sind derart konfiguriert, daß sie Grafikbefehle und Daten von der Steuereinheit 140 empfangen und dann eine Anzahl von Funktionen durchführen, die von der genauen Implementierung abhängen. Beispielsweise können die Darstellungseinheiten 150A–D derart konfiguriert sein, daß sie die Dekomprimierung (wenn die Daten komprimiert sind), die Transformation, das Clipping, das Lighting, die Texturdarstellung, die Tiefeninformation, die Transparenzverarbeitung, die Einstellung bzw. den Set-up und die Schirmraumdarstellung von verschiedenen graphischen Grundelementen, die innerhalb der graphischen Daten auftreten, durchführen. Jedes dieser Merkmale wird unten getrennt beschrieben.
  • Abhängig von dem Typ der empfangenen komprimierten graphischen Daten können die Darstellungseinheiten 150A–D derart konfiguriert sein, daß sie arithmetische Decodierung, die Lauflängendecodierung, die Huffman-Decodierung und die Wörterbuchdecodierung (z.B. LZ77, LZSS, LZ78 und LZW) durchführen. In einer anderen Ausführungsform können die Einstellungseinheiten 150A–D derart ausgelegt sein, daß sie die graphischen Daten, die unter Verwendung von geometrischer Komprimierung komprimiert wurden, decodieren. Die geometrische Komprimierung von 3D-Grafikdaten kann signifikante Reduktionen in der Datengröße erreichen, während der größte Teil der Bildqualität beibehalten wird. Zwei Verfahren für die Komprimierung und Dekomprimierung der 3D-Geometrie sind beschrieben in US-Patent Nr. 5,793,371, Anmeldungsnr. 08/511,294 (eingereicht am 4. August 1995 mit dem Titel "Method and Apparatus for Geometric Compression of Three-Dimensional Graphics Data", Anwaltsakte Nr. 5181-05900) und US-Patentanmeldung Nr. 09/095,777 (eingereicht am 11. Juni 1998 mit dem Titel "Compression of Three-Dimensional Geometry Data Representing a Regularly Tiled Surface Portion of a Graphical Object", Anwaltsakte Nr. 5181-06602). In den Ausführungsformen des Grafiksystems 112, die Dekomprimierung unterstützen, werden die Grafikdaten, die von jeder Darstellungseinheit 150 empfangen werden, in eines oder mehrere graphische "Grundelemente" dekomprimiert, die dann dargestellt werden können. Der Begriff "Grundelement" bezieht sich auf Komponenten von Objekten, die seine Form definieren (z.B. Punkte, Linien, Dreiecke, Polygone in zwei oder drei Dimensionen, Polyeder oder Freiformoberflächen in drei Dimensionen). Die Darstellungseinheiten 150 können irgendein geeigneter Typ von Hochleistungsprozessor sein (z.B. ein spezialisierter Grafikprozessor oder Berechnungseinheiten, Multimediaprozessoren, DSPs oder Allzweckprozessoren).
  • Die Transformation bzw. Umwandlung bezieht sich auf das Manipulieren eines Objekts und beinhaltet die Translation des Objekts (d.h. die Bewegung des Objekts zu einem anderen Ort), die Skalierung des Objekts (d.h. das Strecken oder Schrumpfen) und das Drehen des Objekts (z. B. im dreidimensionalen Raum oder im „3-space").
  • Clipping bzw. Abschneiden bezieht sich auf das Definieren der Grenzen des angezeigten Bildes (d.h. die Errichtung einer Abschneideregion, üblicherweise ein Rechteck) und daraufhin das Nichtdarstellen oder Anzeigen der Pixel, die außerhalb dieser Grenzen fallen.
  • Lighting bzw. Beleuchtung bezieht sich auf die Berechnung der Illumination der Objekte innerhalb des angezeigten Bildes, um zu bestimmen, welche Farbe und/oder Helligkeit jedes einzelne Objekt haben wird. Abhängig von dem verwendeten Schattierungsalgorithmus (z. B. konstant, Gourand oder Phong) kann das Lighting bei einer Anzahl von unterschiedlichen Orten evaluiert werden. Wenn beispielsweise konstantes Shading verwendet wird (d.h. jedes Pixel eines Polygons hat dasselbe Lighting), dann muß das Lighting nur einmal je Polygon berechnet werden. Wenn das Gourand-Shading verwendet wird, dann wird das Lighting einmal je Eckpunkt berechnet. Das Phong-Shading berechnet das Lighting auf einer Pixelbasis.
  • Set-up bzw. das Einstellen bezieht sich auf das Abbilden von Grundelementen in ein dreidimensionales Darstellungsfenster. Dies beinhaltet die Translation und die Transformation der Objekte von ihrem ursprünglichen „Weltkoordinaten"-System in die Koordinaten des errichteten Darstellungsfensters. Dies erzeugt die richtige Perspektive für die dreidimensionalen Objekte, die auf dem Schirm angezeigt werden.
  • Schirmraumdarstellung bezieht sich auf die Berechnungen, die durchgeführt werden, um die Daten, die verwendet werden, um jedes Pixel, das dargestellt werden soll, zu erzeugen, eigentlich zu berechnen. In Systemen des Standes der Technik wird jedes Pixel berechnet und dann in einem Einzelbildpufferspeicher abgelegt. Die Inhalte des Einzelbildpufferspeichers werden dann an die Anzeigevorrichtung ausgegeben, um das Endbild zu erzeugen. In der Ausführungsform des Grafiksystems 112, das in der Figur gezeigt ist, berechnen jedoch die Darstellungseinheiten 150A–D „Abfragewerte" anstelle von tatsächlichen Pixeldaten. Dies erlaubt den Darstellungseinheiten 150A–D, mehr als eine Abfrage je Pixel zu „supersamplen" oder zu berechnen. Das Supersampling wird detaillierter unten beschrieben. Die Darstellungseinheiten 150A–D können ebenso einen größeren Bereich von Abfragen erzeugen als der sichtbare Bereich der Anzeige 84 für verschiedene Effekte, wie zum Beispiel das Schwenken und das Zoomen. Es sei bemerkt, daß die Darstellungseinheiten 150A–D eine Anzahl von kleineren funktionalen Einheiten, zum Beispiel eine getrennte Einstell-/Dekomprimiereinheit und eine Lighting-Einheit aufweisen kann.
  • Mehr Details über das Supersampling sind in den folgenden Büchern erörtert:: „Principles of Digital Image Synthesis" von Andrew Glassner, 1995, Morgan Kaufman Publishing (Band 1) und „Renderman Companion": von Steve Upstill, 1990, Addison Wesley Publishing.
  • C. Datenspeicher
  • Jede Darstellungseinheit 150A–D kann mit einem der entsprechenden Befehls- und Datenspeicher 152A–D verbunden sein. In einer Ausführungsform kann jeder Speicher 152A–D derart konfiguriert sein, daß er sowohl Daten als auch Befehle für die Darstellungseinheiten 150A–D speichert. Während die Implementierungen variieren können, kann in einer Ausführungsform jeder Datenspeicher 152A–D zwei 8-MByte SDRAMs aufweisen, die insgesamt 16 MByte Speicher für jede Darstellungseinheit 150A–D zur Verfügung stellen. In einer anderen Ausführungsform können RDRAMs (Rambus-DRAMs) verwendet werden, um die Dekomprimierung und die Einstelloperationen von jeder Darstellungseinheit zu unterstützen, während SDRAMs verwendet werden können, um die Zeichenfunktionen von den Darstellungseinheit zu unterstützen.
  • D. Verzeichniseinheit
  • Die Verzeichniseinheit 154 kann zwischen die Darstellungseinheiten 150A–D und die Abfragespeicher 160A–N geschaltet sein. Die Verzeichniseinheit 154 ist derart konfiguriert, daß sie die vervollständigten Abfragen sequentiell ordnet und sie in den Abfragespeichern 160A–N speichert. Es sei bemerkt, daß in größeren Konfigurationen mehrere Verzeichniseinheiten 154 parallel verwendet werden können. In einer Ausführungsform kann die Verzeichniseinheit 154 als Kreuzschienenwählerimplementiert sein.
  • E. Abfragespeicher
  • Der supergesamplete Abfragepufferspeicher 162 weist Abfragespeicher 160A–160N auf, die derart konfiguriert sind, daß sie die Mehrzahl der Abfragen, die von den Darstellungseinheiten 150A–D erzeugt wurden, speichern. Der Begriff "Abfragepufferspeicher", wie er hier verwendet wird, bezieht sich auf einen oder mehrere Speicher, die Abfragen ablegen. Wie vorher erwähnt wurde, werden eine oder mehrere Abfragen gefiltert, um Ausgangspixel zu bilden (d.h. Pixel, die auf einer Anzeigevorrichtung anzuzeigen sind). Die Anzahl von gespeicherten Abfragewerten kann größer als, gleich zu oder kleiner als die Gesamtanzahl von Pixeln sein, die zu der Anzeigevorrichtung ausgegeben werden, um ein einzelnes Einzelbild zu aktualisieren. Jede Abfrage kann zu einem oder mehreren Ausgangspixeln korrespondieren. Ein Abfragewert „korrespondiert" zu einem Ausgangspixel, so wie dies hier verwendet wird, wenn die Information des Abfragewerts zu dem Endausgangswert des Pixels beiträgt. Es sei jedoch bemerkt, daß manche Abfragen zu ihrem korrespondierenden Ausgangspixel null beitragen, nachdem die Filterung stattgefunden hat. Ebenso können manche Abfragen dargestellt und in dem Abfragepufferspeicher abgelegt werden, die außerhalb des sichtbaren Bereichs der Anzeigevorrichtung 84 sind, wobei diese Abfragen für verschiedene Anzeigeeffekte, wie zum Beispiel das Schwenken und das Zoomen, verwendet werden können.
  • Auf andere Weise ausgedrückt, speichert der Einzelwertpufferspeicher eine Mehrzahl von Abfragewerten, die Positionen haben, die mit Orten in dem Schirmraum auf der Anzeige korrespondieren, d.h. die Abfragewerte tragen zu einem oder mehreren Ausgangspixeln auf der Anzeige bei. Die Anzahl von abgelegten Abfragewerten kann größer als die Anzahl von Pixelorten sein und mehr als eine Abfrage kann in dem Faltungs- (Filterungs-) Prozeß kombiniert werden, um einen bestimmten Ausgangspixel zu erzeugen, das auf der Anzeigevorrichtung dargestellt wird. Jeder gegebene Abfragewert kann zu einem oder mehreren Ausgangspixeln beitragen.
  • Die Abfragespeicher 160A bis 160N können irgendeine einer Anzahl von unterschiedlichen Speichertypen (zum Beispiel SDRAMs, SRAMs, RDRAMs, 3DRAMs oder 3DRAMs der nächsten Generation) in verschiedenen Größen aufweisen. In einer Ausführungsform ist jede Verzeichniseinheit 154 mit vier Bänken von Abfragespeichern verbunden, wobei jede Bank vier 3DRAM-64-Speicher aufweist. Die 3DRAM-64-Speicher können zusammen einen supergesampleten 116 bit tiefen Abfragepufferspeicher bilden, der mehrere Abfragewerte pro Pixel speichert. In einer Ausführungsform kann beispielsweise jeder Abfragespeicher 160A bis 160N bis zu sechzehn Abfragen je Pixel speichern.
  • 3DRAM-64-Speicher sind spezialisierte Speicher, die derart konfiguriert sind, daß sie das volle interne Doppeltpuffern mit einzeln gepuffertem Z in einem Chip unterstützen. Der doppeltgepufferte Abschnitt weist zwei RGBX Pufferspeicher auf, wobei X ein vierter Kanal ist, der verwendet werden kann, um andere Information (zum Beispiel alpha) zu speichern. 3DRAM-64-Speicher haben ebenso eine Verweistabelle, die eine Window ID Information aufnimmt und einen internen 2-1 oder 3-1 Multiplexer steuert, der auswählt, welche Inhalte des Pufferspeichers ausgegeben werden. 3DRAM-64-Speicher sind 3DRAM-Speicher der nächsten Generation, die in Bälde von Mitsubishi Electric Corporation's Semiconductor Group erhältlich sein können. In einer Ausführungsform sind vier Chips, die in Kombination verwendet werden, ausreichend, um einen doppelt puffergespeicherten 1280 × 1024 supergesampleten Abfragepufferspeicher zu erzeugen. Da die Speicher intern doppelt puffergespeichert sind, werden die Eingangsanschlüsse für jeden der zwei Einzelbildpufferspeicher in dem doppelt puffergespeicherten System im Zeit-Multiplex-Verfahren (unter Verwendung von Multiplexern innerhalb der Speicher) übertragen. Die Ausgangsanschlußstifte können in ähnlicher Weise im Zeitmultiplexverfahren übertragen werden. Dies erlaubt eine reduzierte Anschlußsteckerzahl, während immer noch die Vorteile des Doppeltpufferspeicherns zur Verfügung gestellt werden. 3DRAM-64-Speicher reduzieren weiterhin die Anschlußsteckerzahl dadurch, daß kein z- Ausgangsanschlußstecker vorhanden ist. Da der z-Vergleich und die Speicherpufferauswahl intern gehandhabt wird, kann dies den Abfragepufferspeicher 162 vereinfachen (zum Beispiel unter Verwendung von weniger oder keiner Auswahllogik auf der Ausgangsseite). Die Verwendung der 3DRAM-64-Speicher reduziert ebenso die Speicherbandbreite, da Information in den Speicher geschrieben werden kann ohne das traditionelle Verfahren des Auslesens von Daten, des Durchführens eines z-Vergleiches und dann das Zurückschreiben der Daten. Statt dessen können die Daten einfach in den 3DRAM-64 geschrieben werden, wobei der Speicher die oben beschriebenen Schritte intern durchführt.
  • In anderen Ausführungsformen des Grafiksystems 112 können jedoch andere Speicher (z.B. SDRAMs, SRAMs, RDRAMs oder 3DRAMs der gegenwärtigen Generation) verwendet werden, um Abfragepufferspeicher 162 zu bilden.
  • Der Grafikprozessor 90 kann derart konfiguriert sein, daß er eine Vielzahl von Abfragepositionen erzeugt entsprechend eines bestimmten Abfragepositionierungsschemas (z.B. ein reguläres Gitter, ein gestörtes reguläres Gitter, usw.). Alternativ dazu können die Abfragepositionen (oder die Offsetwerte, die zu den regulären Gitterpositionen addiert werden, um die Abfragepositionen zu bilden) von dem Abfragepositionsspeicher (zum Beispiel eine RAM/ROM-Tabelle) gelesen werden. Mit dem Empfang eines Polygons, das darzustellen ist, bestimmt der Grafikprozessor 90, basierend auf den Abfragepositionen, welche Abfragen innerhalb des Polygons liegen. Der Grafikprozessor 90 stellt die Abfragen dar, die in das Polygon fallen und speichert die dargestellten Abfragen in dem Abfragespeichern 160A–N. Es sei bemerkt, daß die Begriffe darstellen und zeichnen, so wie sie hier verwendet werden, austauschbar benutzt werden und sich auf das Berechnen von Farbwerten für die Abfragen beziehen. Tiefenwerte, Alpha-Werte und andere Werte je Abfrage können ebenso in dem Darstellungs- oder Zeichenprozeß berechnet werden.
  • F. Einheiten zur Umrechnung von Abfrage zu Pixel
  • Die Einheiten 170A–D zur Umrechnung von Abfrage in Pixel können zwischen den Abfragespeichern 160A–N und den DACs 178A–B geschaltet sein. Die Einheiten 170A–D zur Umrechnung von Abfrage in Pixel sind derart konfiguriert, daß sie ausgewählte Abfragen von den Abfragespeichern 160A–N lesen und dann eine Faltung zum Beispiel eine Filterungs- und Gewichtungsfunktion oder eine Tiefpaßfilterung) auf den Abfragen durchführen, um die Ausgangspixelwerte zu erzeugen, die zu den DACs 178A–B ausgegeben werden. Die Einheiten 170A–D zur Umrechnung von Abfrage in Pixel können programmierbar sein, um ihnen zu erlauben, verschiedene Filterfunktionen zu unterschiedlichen Zeiten durchzuführen, abhängig von dem gewünschten Ausgangstyp. In einer Ausführungsform können die Einheiten 170A–D zur Umrechnung von Abfrage in Pixel einen 5 × 5 supergesampleten Rekonstruktionsbandpaßfilter implementieren, um die supergesampleten Abfragepufferspeicherdaten (die in den Abfragespeichern 160A–N abgel5egt sind) in einzelne Pixelwerte umzuwandeln. In anderen Ausführungsformen können die Berechnungseinheiten 170A–D eine ausgewählte Anzahl von Abfragen filtern, um ein Ausgangspixel zu berechnen. Die gefilterten Abfragewerte können mit einem variablen Wichtungsfaktor multipliziert werden, der den Abfragewerten, die Positionen nahe dem Zentrum des zu berechnenden Pixels haben, mehr oder weniger Gewicht gibt. Andere Filterfunktionen können ebenso entweder allein oder in Kombination, verwendet werden, zum Beispiel Tent-Filter, zirkulare und elliptische Filter, Mitchell-Filter, Bandpaßfilter, Synchronisationsfunktionsfilter usw.
  • Die Einheiten 170A–D zur Umrechnung von Abfrage in Pixel können ebenso mit einem oder mehreren der folgenden Merkmale konfiguriert sein: Farbnachschlagen unter Verwendung von Farbpseudotabellen, direkte Farbe, inverse Gammakorrektur, Filtern von Abfragen in Pixel und Umwandlung von Pixeln in den nicht-linearen Lichtraum. Andere Merkmale von Einheiten 170A–D zur Umrechnung von Abfrage in Pixel können programmierbare Videozeitgeneratoren, programmierbare Pixeltaktsynthesizer, Farbraumwandler und Kreuzschienenfunktionen beinhalten. Nachdem die Einheiten zur Umrechnung von Abfrage in Pixel den Takt und die Farbe von jedem Pixels manipuliert haben, werden die Pixel zu den DACs 178A–B ausgegeben.
  • In einer Ausführungsform ist die Einheit zur Umrechnung von Abfrage in Pixel derart betreibbar, daß sie die Filterung von gespeicherten Abfragen einstellt, um Artefakte zu reduzieren, z. B. ist sie derart betreibbar, daß sie selektiv die Filterung der gespeicherten Abfragen in benachbarten Einzelbildern einstellt, um Artefakte zwischen den benachbarten Einzelbildern zu reduzieren. Das Filtern kann eingestellt werden durch Einstellen der Zentralorte bzw. Zentrumsorte, an denen das Filter angelegt wird, z. B. durch Einstellen der Orte der Faltungszentren, an denen die Pixel erzeugt werden, relativ zu einem vorherigen Einzelbild. Diese Einstellung der Filterung von gespeicherten Abfragewerten kann derart betrieben werden, daß Artefakte reduziert werden oder sichtbare Artefakte reduziert werden, z. B. einfach Artefakte auf unterschiedliche Orte in dem Bild verteilt werden, wodurch sie für einen Menschen weniger wahrnehmbar sind.
  • In einer Ausführungsform beinhalten die Einheiten 170A–D zur Umrechnung von Abfrage in Pixel jeweils eine Adreßerzeugungslogik für die Erzeugung von Adressen entsprechend den Zentrumsorten (Zentren) in dem Abfragepufferspeicher, auf denen der Faltungsfilter angewendet wird, wobei der Faltungsfilter an diese Zentren in dem Abfragepufferspeicher während der Erzeugung von Ausgangspixeln für die Anzeige angelegt wird. Die Adreßerzeugungslogik ist programmierbar, um Adressen an ausgewählten Unterpixelpositionen zu erzeugen, die den gewünschten Adressen entsprechen. In der bevorzugten Ausführungsform ist der Beginn der Subpixelpositionsadresse, die von der Adreßerzeugungslogik erzeugt wird, programmierbar und die Pixelschrittgröße kann konstant bleiben.
  • Die vorliegende Erfindung kann angewendet werden, wo die Einheit zur Umrechnung von Abfrage in Pixel Ausgangspixel mit der selben Geschwindigkeit erzeugt wie der Grafikprozessor die Abfragen zu dem Abfragepufferspeicher darstellt oder wo die Einheit zur Umrechnung von Abfrage in Pixel mit einer anderen (z. B. höheren) Geschwindigkeit als die Darstellungsrate arbeitet.
  • In einer anderen Ausführungsform der vorliegenden Erfindung ist die Einheit zur Umrechnung von Abfrage in Pixel betreibbar, um das Filtern von gespeicherten Abfragewerten einzustellen, um einen Anzeigeeffekt, wie z. B. das Schwenken, das Zoomen, das Drehen oder das Bewegen von Szenen u. a. zu implementieren. Diese selektive Einstellung des Filterns von gespeicherten Abfragen, um Artefakte zu reduzieren oder Anzeigeeffekte zu erzeugen, wird unten unter Bezug auf die 1520 erörtert.
  • G. DACs
  • Die DACs 178A–B arbeiten als die Ausgangsendstufe des Grafiksystems 112. Die DACs 178A–B dienen dazu, die digitalen Pixeldaten, die von den Kreuzeinheiten 174A–B empfangen wurden, in analoge Videosignale zu übersetzen, die dann zu der Anzeigevorrichtung gesendet werden. Es sei bemerkt, daß in einer Ausführungsform die DACs 178A–B umgangen werden können oder vollständig unterdrückt werden können, um digitale Ausgangspixeldaten neben den analogen Videosignalen auszugeben. Dies kann nützlich sein, wenn die Anzeigevorrichtung 84 auf einer digitalen Technologie basiert (zum Beispiel ein LCD-Typ Anzeige oder eine digitale Mikrospiegelanzeige).
  • Wie gezeigt ist, arbeitet eine programmierbare Takteinheit 182 derart, daß sie ein oder mehrere Taktsignale (einschließlich eines Pixeltaktes) jedem der DACs 178A–B zur Verfügung stellt. An jeder ansteigenden Flanke des Pixeltaktes verriegeln die DACs 178A–B den (die) Ausgangspixelwert(e) in den DACs 178A–B für die Ausgabe eines entsprechenden analogen Signals an die Anzeige.
  • Wenn die Einheit zur Umrechnung von Abfrage in Pixel die Faltungszentren in einem Einzelbild relativ zu einem vorherigen Einzelbild horizontal oder vertikal einstellt, wie oben erwähnt wurde, arbeitet die Einheit zur Umrechnung von Abfrage in Pixel ebenso derart, daß die Phase des Pixeltaktes, der den DACs 178A–B zur Verfügung gestellt wird, verschoben oder eingestellt wird. Dies ist aufgrund der Einstellung der Faltungszentren in einem Einzelbild relativ zu einem vorherigen Einzelbild notwendig, um ein wahrnehmbares "Wackeln" des Bildes zu vermeiden. Im allgemeinen korreliert eine Verschiebung der Faltungszentren um einen Bruchteil eines Pixels direkt mit einer Verschiebung des Taktes um eine entsprechende Menge. Die Einstellung des Videotaktes, um die Faltungszentrumseinstellung in der Pixelfilterung gegeneinander zu versetzen, wird unten weiter diskutiert.
  • In einem Grafiksystem, in dem digitale Pixel zu der Anzeige ausgegeben werden, beinhaltet das Grafiksystem Ausgabeelemente oder Vorrichtungen, die den programmierbaren Pixeltakt empfangen, wobei die Ausgangselemente den Digital-/Analog-Umwandlungsschaltkreis nicht enthalten.
  • Supersampling 45
  • 4 stellt ein Beispiel einer traditionellen, nicht supergesampleten Pixelwertberechnung dar. Jedes Pixel hat exakt einen Datenpunkt, der für es berechnet wurde, und der einzelne Datenpunkt ist bei dem Zentrum des Pixels angeordnet. Beispielsweise trägt nur ein Datenpunkt (d.h. Abfrage 74) zu dem Wert des Pixels 70 bei.
  • Man wende sich nun 5A zu, in der ein Beispiel einer Ausführungsform des Supersamplings dargestellt ist. In dieser Ausführungsform werden eine Anzahl von Abfragen berechnet. Die Anzahl von Abfragen kann mit der Anzahl von Pixeln verknüpft sein oder völlig unabhängig von der Anzahl von Pixeln sein. In diesem Beispiel gibt es achtzehn Abfragen, die in einem regulären Gitter über neun Pixel verteilt sind. Selbst mit all den Abfragen, die in der Figur präsent sind, könnte eine einfache 1 : 1 Korrelation durchgeführt werden (zum Beispiel durch Verwerten aller Abfragen außer derjenigen Abfrage, die dem Zentrum von jedem Pixel am nächsten liegt). Der am meisten interessante Fall ist jedoch die Durchführung einer Filterungsfunktion auf mehreren Abfragewerten, um die Pixelendwerte zu bestimmen. Wie oben bemerkt wurde, kann ebenso eine einzelne Abfrage verwendet werden, um eine Mehrzahl von Ausgangspixeln zu erzeugen, d.h. das sogenannte Untersampling oder Subsampling.
  • Ein zirkularer Filter 72 ist in der Figur dargestellt. In diesem Beispiel tragen die Abfragen 74A–B beide zu dem Endwert des Pixels 70 bei. Dieser Filterungsprozeß kann mit Vorteil den Realismus des angezeigten Bildes verbessern durch das Glätten von abrupten Kanten in dem angezeigten Bild (zum Beispiel durch Durchführen des Anti-Aliasings). Der Filter 72 kann einfach die Abfragen 74A–B mitteln, um den Endwert des Ausgangspixels 70 zu bilden, oder er kann den Beitrag der Abfrage 74B (an dem Zentrum des Pixels 70) erhöhen und den Beitrag der Abfrage 74A (d.h. die Abfrage, die von dem Pixelzentrum 70 weiter entfernt ist) erniedrigen. Der zirkulare Filter wird für jeden zu berechnenden Ausgangspixel erneut positioniert, so daß das Zentrum des Filters 72 mit der Zentrumsposition des zu berechnenden Pixels zusammenfällt. Andere Filter und Filterpositionierungsschemata sind ebenso möglich und wurden in Betracht gezogen.
  • In 5B ist eine andere Ausführungsform des Supersamplings dargestellt. In dieser Ausführungsform sind jedoch die Abfragen zufällig positioniert. Genauer gesagt, werden unterschiedliche Abfragepositionen ausgewählt und dem Grafikprozessor 90 (und den Darstellungseinheiten 150A–D) zur Verfügung gestellt, die die Farbinformation berechnen, um Abfragen an diesen unterschiedlichen Orten zu bilden. Somit kann die Anzahl von Abfragen, die in den Filter 72 fallen, von Pixel zu Pixel variieren.
  • Supergesampleter Abfragepufferspeicher mit Faltung in Echtzeit 613
  • 6 stellt eine mögliche Konfiguration für den Datenfluß durch eine Ausführungsform des Grafiksystems 112 dar. Wie die Figur zeigt, werden geometrische Daten 350 von dem Grafiksystem 112 empfangen und verwendet, um den Zeichenprozeß 352 durchzuführen. Der Zeichenprozeß 352 wird durch eine oder mehrere Steuereinheiten 140, Darstellungseinheiten 150, Speicher 152 und eine Verzeichniseinheit 154 implementiert. Die geometrischen Daten 350 umfassen Daten für eines oder mehrere Polygone. Jedes Polygon weist eine Mehrzahl von Eckpunkten auf (z.B. 3 Eckpunkte im Fall eines Dreiecks), wobei einige von diesen gemeinsam verwendet werden können. Daten, wie z.B. X-, Y- und Z-Koordinaten, Farbdaten, Beleuchtungsdaten und Texturabbildungsinformation können für jeden Eckpunkt eingeschlossen sein.
  • Zusätzlich zu den Eckpunktdaten empfängt der Zeichenprozeß 352 ebenso Abfragekoordinaten von einem Abfragepositionsspeicher 354. In einer Ausführungsform ist der Positionsspeicher 354 innerhalb der Darstellungseinheiten 150A–D ausgebildet. In einer anderen Ausführungsform kann der Positionsspeicher 354 als Teil der Textur- und Darstellungsspeicher 152A bis 152D oder als getrennter Speicher realisiert werden. Der Abfragepositionsspeicher 354 ist derart konfiguriert, daß er Positionsinformation speichert für Abfragen, die in einem Zeichenprozessor 352 berechnet werden und dann in den supergesampleten Abfragepufferspeicher 162 abgelegt werden. In einer Ausführungsform kann der Positionsspeicher 354 derart konfiguriert sein, daß er die gesamten Abfrageadressen speichert. Dies kann jedoch die Größe des Positionsspeichers 354 erhöhen. Alternativ dazu kann der Positionsspeicher derart konfiguriert sein, daß er nur X- oder Y-Offsetwerte für die Abfragen speichert. Die Speicherung lediglich der Offsetwerte kann weniger Speicherplatz verwenden als das Speichern der gesamten Position jeder Abfrage. Die Oftsetwerte können Bezug auf Behälterkoordinaten oder Bezug auf Positionen auf einem regulären Gitter nehmen. Die Abfragepositionsinformation, die in dem Abfragepositionsspeicher 354 abgelegt ist, kann von einer speziell entworfenen Einheit zur Berechnung der Abfrageposition (nicht gezeigt) gelesen werden und verarbeitet werden, um die Beispielabfragepositionen für den Grafikprozessor 90 zu berechnen. Detailliertere Information über Abfragepositionsoftsetwerte ist unten eingefügt (siehe Beschreibung der 9 und 10).
  • In einer anderen Ausführungsform kann der Abfragepositionsspeicher 354 derart konfiguriert sein, daß er eine Tabelle von Zufallszahlen speichert. Der Abfragepositionsspeicher 354 kann ebenso speziell angepaßte Hardware aufweisen, um ein oder mehrere unterschiedliche Typen von regulären Gittern zu erzeugen. Diese Hardware kann programmierbar sein. Die gespeicherten Zufallszahlen können als Oftsetwerte zu den regulären Gitterpositionen, die von der Hardware erzeugt werden, addiert werden. In einer Ausführungsform kann der Abfragepositi onsspeicher programmierbar sein, um in einer Anzahl von unterschiedlichen Wegen auf die Zufallszahlentabelle zuzugreifen oder diese „zu entfalten". Dies kann es ermöglichen, eine kleinere Tabelle ohne visuelle Artefakten zu verwenden, die durch die Wiederholung der Offsetwerte der Abfragepositionen verursacht werden. In einer Ausführungsform können die Zufallszahlen wiederholbar sein, wodurch es dem Zeichenprozeß 352 und dem Prozeß 360 zur Berechnung von Abfrage in Pixel ermöglicht wird, dieselben Oftsetwerte für dieselbe Abfrage zu verwenden, ohne daß die Speicherung von jedem Offsetwert notwendig ist.
  • Wie in der Figur gezeigt ist, kann der Abfragewertpositionsspeicher 354 derart konfiguriert sein, daß er Abfragewertverschiebungen speichert, die entsprechend einer Anzahl von unterschiedlichen Schemata erzeugt wurden, wie zum Beispiel ein reguläres Gitter, ein reguläres hexagonales Gitter, ein gestörtes reguläres Gitter oder eine zufällige (stochastische) Verteilung. Das Grafiksystem 112 kann eine Anzeige von dem Betriebssystem, dem Gerätetreiber oder den geometrischen Daten 350 empfangen, die anzeigt, welcher Typ von Abfragewertpositionsschema verwendet wird. Der Abfragewertpositionsspeicher 354 ist daher konfigurierbar oder programmierbar, um die Positionsinformation entsprechend einem oder mehreren unterschiedlichen Schemata zu erzeugen. Detailliertere Informationen über verschiedene Abfragewertpositionsschemata werden weiter unten beschrieben (siehe die Beschreibung von 8).
  • In einer Ausführungsform kann der Abfragewertpositionsspeicher 354 ein RAM/ROM enthalten, das stochastische Abfragewertpunkte (oder Orte) für unterschiedliche Gesamtabfragewertzahlen je Behälter enthält. Der Begriff „Behälter", wie er hier verwendet wird, bezieht sich auf eine Region oder eine Fläche in dem virtuellen Schirmraum und enthält alle Abfragen in diesem Gebiet (zum Beispiel kann der Container 1 × 1 Pixel in der Fläche, 2 × 2 Pixel in der Fläche, usw. sein). Die Verwendung von Behältern kann das Speichern von und den Zugriff auf Abfragewerte in dem Abfragepufferspeicher 162 vereinfachen. Eine Anzahl von unterschiedlichen Behältergrößen kann verwendet werden (zum Beispiel eine Abfrage je Behälter, vier Abfragen je Behälter, usw.). In der bevorzugten Ausführungsform hat jeder Behälter eine X-Y-Position, die einem bestimmten Ort auf der Anzeige entspricht. Die Behälter sind vorzugsweise regelmäßig beabstandet. In dieser Ausführungsform können die X-Y-Positionen der Behälter aus dem Speicherort der Behälter innerhalb des Abfragewertpufferspeichers 162 bestimmt werden. Die Positionen der Behälter entsprechen bestimmten Positionen auf der Anzeige. In manchen Ausführungsformen können die Behälterpositionen zu Pixelzentren korrespondieren, während in anderen Ausführungsformen die Behälterpositionen mit Punkten korrespondieren, die zwischen den Pixelzentren lokalisiert sind. Die spezifische Position von jeder Abfrage innerhalb eines Behälters kann bestimmt werden durch Nachschlagen des Offsets des Abfragewerts in der RAM/ROM-Tabelle (die Offsets können relativ zu der entsprechenden Behälterposition gespeichert sein). Abhängig von der Implementierung kann jedoch nicht jede Auswahl für die Behältergrößen einen einzigartigen bzw. eindeutigen RAM/ROM-Eintrag haben. Manche Behälter größen können einfach einen Untersatz bzw. Untermenge der größeren Behältergrößeneinträge auslesen. In einer Ausführungsform hat jede unterstützte Größe zumindest vier unterschiedliche Abfragepositionsschemavarianten, die die Artefakte des Endbildes aufgrund der Wiederholung der Abfragewertpositionen reduzieren können.
  • In einer Ausführungsform kann der Positionsspeicher 354 Paare von 8-Bit-Zahlen speichern, wobei jedes Paar ein X-Offset und ein Y-Offset aufweist (andere mögliche Offset-Werte sind ebenso möglich, zum Beispiel ein Zeit-Offset, ein Z-Offset, usw.). Wenn zu einer Behälterposition addiert, definiert jedes Paar eine bestimmte Position in dem Schirmraum. Der Begriff „Schirmraum" bezieht sich allgemein auf das Koordinatensystem der Anzeigevorrichtung. Um die Lesezeiten zu verbessern, kann der Speicher 354 in einer breiten/parallelen Art und Weise konstruiert sein, so daß dem Speicher erlaubt wird, mehr als einen Abfrageort je Taktzyklus auszugeben.
  • Nachdem die Abfragewertpositionen von dem Abfragepositionsspeicher 354 gelesen wurden, wählt der Zeichenprozeß 352 die Abfragewertpositionen aus, die in das gegenwärtig darzustellende Polygon fallen. Der Zeichenprozeß 352 berechnet dann die z- und Farbinformation (die alpha oder andere Tiefen von Feldinformation und/oder Unschärfewerte enthalten kann) für jede dieser Abfragen und speichert die Daten in dem Abfragepufferspeicher 162. In einer Ausführungsform kann der Abfragepufferspeicher z-Werte (und vielleicht alpha-Werte) nur einfach pufferspeichern, während andere Abfragewertkomponenten, wie zum Beispiel Farbe, doppelt puffergespeichert werden. Im Gegensatz zu Systemen des Standes der Technik kann das Grafiksystem 112 alle Abfragewerte doppelt Pufferspeichern (obwohl nicht alle Abfragewertkomponenten doppelt puffergespeichert sein können, d.h. die Abfragewerte können Komponenten haben, die nicht doppelt puffergespeichert sind oder es können nicht alle Abfragewerte doppelt puffergespeichert sein). In einer Ausführungsform werden die Abfragewerte in dem Abfragewertpufferspeicher 162 in Behältern abgelegt. In manchen Ausführungsformen kann die Größe der Behälter, d.h. die Menge der Abfragewerte innerhalb eines Behälters, von Einzelbild zu Einzelbild variieren und kann ebenso über verschiedene Regionen der Anzeigevorrichtung 84 innerhalb eines einzelnen Einzelbilds variieren. Beispielweise können Behälter entlang der Kanten der Anzeigeeinrichtung nur einen Abfragewert enthalten, während Behälter, die Pixeln entsprechen, die nahe des Zentrums der Anzeigevorrichtung 84 sind, sechzehn Abfragewerte umfassen können. Es sei bemerkt, daß die Fläche der Behälter von Region zu Region variieren kann. Die Verwendung der Behälter wird unten in Verbindung mit 11 mehr im Detail beschrieben.
  • Parallel zu und unabhängig von dem Zeichenprozeß 352 ist der Filterprozeß 360 derart konfiguriert, daß er Abfragewerte von dem Abfragewertpufferspeicher 162 liest, diese filtert (d.h. Filtern) und dann das resultierende Ausgangspixel an die Anzeigevorrichtung 84 ausgibt. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel implementieren den Filterprozeß 380. Der Filterprozeß ist somit für zumindest eine Untergruppe der Ausgangspixel betreibbar, um eine Mehrzahl von Abfragewerten zu filtern, um einen entsprechenden Ausgabepixel zu erzeugen. In einer Ausführungsform ist der Filterprozeß 360 derart konfiguriert, daß er (i) den Abstand jeder Abfrage von dem Zentrum des zu filternden Ausgangspixel bestimmt, (ii) die Komponenten (zum Beispiel Farbe und alpha) des Abfragewertes mit einem Filterwert multipliziert, der eine bestimmte (programmierbare) Funktion des Abstandes ist, (iii) all die gewichteten Abfragewerte summiert, die zu dem Ausgangspixel beitragen und (iv) das resultierende Ausgangspixel normalisiert. Der Filterprozeß wird unten in größerem Detail beschrieben (siehe die Beschreibung der begleitenden 11, 12 und 14). Es sei bemerkt, daß die Ausdehnung des Filters nicht kreisförmig sein muß (d.h. es kann eine Funktion von X und Y anstelle des Abstandes sein), doch selbst wenn die Ausdehnung es ist, muß der Filter nicht kreissymmetrisch sein. Die „Ausdehnung" des Filters ist der Bereich, innerhalb dessen Abfragewerte die bestimmten Pixel, die mit dem Filter berechnet werden, beeinflussen können.
  • Gemäß der vorliegenden Erfindung ist die Einheit zur Umrechnung von Abfrage in Pixel derart betreibbar, daß sie das Filtern der gespeicherten Abfragewerte selektiv auswählt, um Artefakte zu reduzieren oder verschiedene Anzeigeeffekte zur Verfügung zu stellen, wie unten weiter beschrieben wird.
  • Wendet man sich nun 7 zu, so ist ein Diagramm gezeigt, das eine alternative Ausführungsform des Grafiksystems 112 zeigt. In dieser Ausführungsform werden zwei oder mehrere Abfragepositionsspeicher 354A und 354B benutzt. Die Abfragepositionsspeicher 354A–B sind somit im wesentlichen doppelt puffergespeichert. Wenn die Abfragepositionen von Einzelbild zu Einzelbild die gleichen bleiben, dann können die Abfragepositionen einfach puffergespeichert werden. Wenn jedoch die Abfragepositionen von Einzelbild zu Einzelbild variieren können, dann kann das Grafiksystems 112 mit Vorteil derart konfiguriert sein, daß es die Abfragepositionen doppelt pufferspeichert. Die Abfragepositionen können auf der Darstellungsseite (d.h. der Speicher 354A kann doppelt puffergespeichert sein) und/oder der Filter-/Faltungsseite (d.h. der Speicher 354B kann doppelt puffergespeichert sein) doppelt puffergespeichert sein. Andere Kombinationen sind ebenso möglich. Beispielsweise kann der Speicher 354A einfach puffergespeichert sein, während der Speicher 354B doppelt puffergespeichert ist. Diese Konfiguration kann es erlauben, daß eine Seite des Speichers 354B für die Aktualisierung (zum Beispiel durch den Filter-/Faltungsprozeß 360) für die Bildwiederholung verwendet wird, während die andere Seite des Speichers 354B aktualisiert wird. In dieser Konfiguration kann das Grafiksystem 112 die Abfragepositionierungsschemata auf einer Einzelbasis verändern durch Verschieben der Abfragepositionen (oder der Offsetwerte bzw. der Verschiebungswerte) von dem Speicher 345A in den doppelt puffergespeicherten Speicher 354B, wenn jedes Einzelbild dargestellt wird. Die Positionen, die verwendet werden, um die Abfragewerte (die von dem Speicher 354A gelesen sind) zu berechnen, werden somit zum Speicher 354B kopiert für die Verwendung während des Filterprozesses (d.h. den Wendung während des Filterprozesses (d.h. den Umwandlungsprozeß von Abfragewert in Pixel). Nachdem die Positionsinformation einmal in den Speicher 354B kopiert wurde, kann der Positionsspeicher 354A dann mit neuen Abfragepositionsoffsets beladen werden, die für das zweite darzustellende Einzelbild verwendet werden. In dieser Art und Weise folgen die Abfragewertpositionsinformationen den Abfragewerten von dem Zeichen-/Darstellungsprozeß zu dem Filterprozeß.
  • Noch eine andere alternative Ausführungsform kann Anzeiger zu den Offset-Werten mit den Abfragewerten selbst in dem supergesampelten Abfragepufferspeicher 162 speichern. Diese Anzeiger können verwendet werden, um die Offset-Werte/Störungswerte, die mit jeder bestimmten Abfrage verknüpft sind, nachzuschlagen.
  • Abfragepositionierungsschemata
  • 8 stellt eine Anzahl von verschiedenen Abfragepositionierungsschemata dar. In dem regulären Gitterpositionierungsschema 190 ist jede Abfrage an einem Schnittpunkt eines Gitters mit regelmäßigen Abständen positioniert. Es sei jedoch bemerkt, daß der Begriff „reguläres Gitter", so wie er hier verwendet wird, nicht auf quadratische Gitter beschränkt ist. Andere Typen von Gittern werden ebenso als „regulär", so wie der Begriff hier verwendet wird, angesehen, einschließlich, jedoch nicht hierauf begrenzt, rechteckige Gitter, hexagonale Gitter, Dreiecksgitter, logarithmische Gitter und halbreguläre Gitter, wie Penrose-Kacheln.
  • Das Positionierungsschema des gestörten regulären Gitters 192 basiert auf der vorherigen Definition eines regulären Gitters. Die Abfragewerte in dem gestörten regulären Gitterschema 192 können jedoch von ihren entsprechenden Gitterschnittpunkten abweichen. In einer Ausführungsform können die Abfragewerte um einen Zufallswinkel (zum Beispiel von 0° bis 360°) und einen Zufallsabstand oder um zufällige X- und Y-Offsets, die auf einen vorbestimmten Bereich begrenzt sein können, jedoch nicht müssen, verschoben sein. Die Offset-Werte können auf einer Anzahl von Wegen erzeugt werden, zum Beispiel durch Hardware, basierend auf einer kleinen Anzahl von Kernen, die in einer Tabelle nachgeschlagen werden, oder durch Verwendung einer Pseudozufallsfunktion. Noch einmal sei erwähnt, daß das Schema des gestörten regulären Gitters 192 auf jedem Typ von regulärem Gitter (zum Beispiel quadratisch oder hexagonal) basieren kann. Ein rechteckiges oder hexagonales gestörtes Gitter kann insbesondere wünschenswert sein aufgrund der geometrischen Eigenschaften dieser Gittertypen.
  • Das stochastische Abfragepositionierungsschema 194 stellt einen dritten potentiellen Typ eines Schemas für das Positionieren von Abfragen dar. Die stochastische Abfragepositionierung beinhaltet die zufällige Verteilung der Abfragen über einen Bereich (zum Beispiel dem angezeigten Bereich auf einer Anzeigevorrichtung oder einem bestimmten Fenster). Die zufällige Positionierung von Abfragen kann durch eine Anzahl von unterschiedlichen Verfahren erzielt werden, zum Beispiel unter Verwendung eines Zufallszahlengenerators, wie zum Beispiel ei nem internen Takt, um Pseudozufallszahlen zu erzeugen. Zufallszahlen oder Positionen können ebenso vorherberechnet und in dem Speicher abgelegt werden.
  • Wendet man sich nun 9 zu, so sind Details einer Ausführungsform eines Schemas eines gestörten regulären Gitters 192 gezeigt. In dieser Ausführungsform sind die Abfragen zufällig von einem regulären quadratischen Gitter um X- und Y-Offsets verschoben. Wie der vergrößerte Bereich zeigt, hat die Abfrage 198 einen X-Offset 134, der seine horizontale Verschiebung gegenüber seinem entsprechenden Gitterschnittpunkt 196 spezifiziert. In gleicher Weise hat die Abfrage 198 ebenso einen Y-Offset 136, der seine vertikale Abweichung von dem Gitterschnittpunkt 196 spezifiziert. Der zufällige Offset kann ebenso durch einen Winkel und einen Abstand spezifiziert werden. Wie bei der vorher offenbarten Ausführungsform, die Winkel und Abstände verwendet, kann der X-Offset 134 und der Y-Offset 136 auf einen bestimmten minimalen und/oder maximalen Wert oder einen Bereich von Werten begrenzt sein.
  • In 10 sind Details einer anderen Ausführungsform eines gestörten regulären Gitterschemas 192 gezeigt. In dieser Ausführungsform sind die Abfragen in "Behälter" 138A–D gruppiert. In dieser Ausführungsform enthält jeder Behälter neun (das heißt 3 × 3) Abfragen. Unterschiedliche Behältergrößen können in anderen Ausführungsformen verwendet werden (z.B. Behälter, die 2 × 2-Abfragen oder 4 × 4-Abfragen speichern). In der gezeigten Ausführungsform wird die Position jeder Abfrage als ein Offset bzw. als ein Verschiebungswert relativ zu der Position des Behälters bestimmt. Die Position der Behälter kann als irgendeine bequeme Position bezüglich des Gitters definiert werden, z.B. die unteren linken Ecken 132A–D, wie in der Figur gezeigt ist. Die Position der Abfrage 198 wird beispielsweise bestimmt durch Addition des X-Offsets 124 und des Y-Offsets 126 zu den X- und Y-Koordinaten der Ecke 132B des Behälters. 138D. Wie vorher bemerkt wurde, kann dies die Größe des Abfragepositionsspeichers, der in manchen Ausführungsformen verwendet wird, reduzieren.
  • 11 Umwandeln von Abfragewerten in Pixel
  • In 11 ist ein mögliches Verfahren für das schnelle Umwandeln von Abfragewerten, die in dem Abfragepufferspeicher 162 abgelegt sind, in Pixel gezeigt. In dieser Ausführungsform sind die Inhalte des Abfragepufferspeichers 162 in Spalten (z.B. die Spalten 1–4) organisiert. Jede Spalte in dem Abfragepufferspeicher 162 kann eine zweidimensionale Anordnung von Behältern aufweisen. Die Spalten können derart konfiguriert sein, daß sie sich in horizontaler Richtung überlappen (z.B. um einen oder mehrere Behälter) und jede Spalte kann einer bestimmten Einheit 170A–D zur Umrechnung von Abfrage in Pixel für den Faltungsprozeß zugewiesen sein. Die Größe des Überlapps kann von der Ausdehnung des zu verwendenden Filters abhängen. Das in der Figur gezeigte Beispiel illustriert einen Überlapp von zwei Behältern jedes Quadrat, wie z.B. das Quadrat 188, stellt einen einzelnen Behälter dar, der eine oder mehrere Abfragen aufweist). Diese Konfiguration kann mit Vorteil den Einheiten 170A–D zur Um rechnung von Abfrage in Pixel erlauben, parallel und unabhängig zu arbeiten, wobei jede Einheit 170A–D zur Umrechnung von Abfrage in Pixel ihre eigene Spalte empfängt und umwandelt. Das Überlappen der Spalten wird sichtbare Bänder oder andere Artefakte, die an den Spaltengrenzen auftreten für jeden Operator, der größer als ein Pixel in der Ausdehnung ist, eliminieren.
  • In 11A sind mehr Details einer Ausführungsform eines Verfahrens gezeigt für das Lesen der Abfragen von einem supergesampleten Abfragepufferspeicher. Wie die Figur darstellt, wandert der Faltungsfilterkern 400 über die Spalte 414 (siehe Pfeil 406), um Ausgangspixel zu erzeugen. Eine oder mehrere Einheiten 170 zur Umrechnung von Abfrage in Pixel können den Faltungsfilterkern 400 implementieren. Ein Behältercachespeicher 408 kann verwendet werden, um schnellen Zugriff auf die Abfragewerte zur Verfügung zu stellen, die potentiell zu dem Ausgangspixel beitragen. Wenn der Faltungsprozeß fortfährt, werden Behälter von dem supergesampleten Abfragepufferspeicher gelesen und in dem Behältercachespeicher 408 abgelegt. In einer Ausführungsform werden Behälter 410, die nicht länger benötigt werden, in dem Cachespeicher von neuen Behältern 412 überschrieben. Wenn jedes Pixel erzeugt ist, verschiebt sich der Faltungsfilterkern 400. Der Kern 400 kann als in einer sequentiellen Art und Weise innerhalb der Spalte in der Richtung, die durch den Pfeil 406 angezeigt ist, fortfahrend visualisiert werden. Wenn der Kern 400 das Ende der Spalte erreicht, kann er eine oder mehrere Zeilen von Abfragen nach unten verschieben und kann dann erneut fortfahren. Der Faltungsprozeß fährt somit in einer Abtastzeilen-Art und Weise fort, wodurch eine Spalte von Ausgangspixeln für die Anzeige erzeugt wird.
  • In 11B ist ein Diagramm gezeigt, das die möglichen Grenzbedingungen darstellt. In einer Ausführungsform können die Behälter, die außerhalb des Abfragefensters 420 fallen, durch Abfragen ersetzt werden mit vorbestimmten Hintergrundfarben, die von dem Benutzer spezifiziert werden. In einer anderen Ausführungsform werden Behälter, die außerhalb des Fensters liegen, nicht verwendet durch Einstellen ihrer Wichtungsfaktoren auf Null (und durch dynamisches Berechnen der Normalisierungskoeffizienten). In noch einer anderen Ausführungsform können die Behälter an der inneren Kante des Fensters dupliziert werden, um diejenigen außerhalb des Fensters zu ersetzen. Dies wird durch den äußeren Behälter 430 angezeigt, der durch den gespiegelten inneren Behälter 432 ersetzt wird.
  • 12 Darstellen von Abfragen in einem supergesampleten Abfragepufferspeicher
  • 12 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens für das Zeichnen oder Darstellen von Abfragepixeln in einem supergesampleten Abfragepufferspeicher. Bestimmte Schritte von 12 können gleichzeitig oder in anderer Ordnung auftreten. In dieser Ausführungsform empfängt das Grafiksystem graphische Befehle und Grafikdaten von der Host-CPU 102 oder direkt von dem Hauptspeicher 106 (Schritt 200). Als nächstes werden die Befeh- le und Daten zu einer oder mehreren Darstellungseinheiten 150A–D geleitet (Schritt 202). Wenn die Grafikdaten komprimiert sind (Schritt 204), dann dekomprimieren die Darstellungseinheiten 150A–D die Daten in ein nutzbares Format, z.B. Dreiecke (Schritt 206). Als nächstes werden die Dreiecke verarbeitet, z.B. in den Schirmraum umgewandelt, beleuchtet und transformiert (Schritt 208A). Wenn das Grafiksystem Supersampling mit variabler Auflösung implementiert, dann werden die Dreiecke mit den Bereichsgrenzen der Abfragedichte verglichen (Schritt 208B). Bei Implementierungen des Supersamplings mit variabler Auflösung können unterschiedliche Regionen des Anzeigegeräts unterschiedlichen Abfragedichten zugewiesen werden basierend auf einer Anzahl von Faktoren (z.B. dem Zentrum der Aufmerksamkeit auf dem Schirm, wie es von einer Augen- oder Kopfverfolgung bestimmt wird). Abfragedichteregionen werden unten detaillierter beschrieben (siehe unten den Abschnitt mit dem Titel "Abfragepufferspeicher mit variabler Auflösung"). Wenn das Dreieck eine Abfragedichteregionsgrenze kreuzt (Schritt 210), dann kann das Dreieck in zwei kleinere Polygone entlang der Bereichsgrenze aufgeteilt werden (Schritt 212). Dies kann es jedem neugebildeten Dreieck erlauben, eine einzige Abfragedichte zu haben. In einer Ausführungsform kann das Grafiksystem derart konfiguriert sein, daß es das gesamte Dreieck einfach zweimal (das heißt einmal in jedem Bereich) verwendet und dann eine Begrenzungsbox verwendet, um das Dreieck effektiv abzuschneiden.
  • Als nächstes wird eines der Abfragepositionierungsschemata (z.B. reguläres Gitter, gestörtes reguläres Gitter oder stochastisch) aus dem Abfragepositionsspeicher 184 ausgewählt (Schritt 214). Das Abfragepositionierungsschema wird im allgemeinen vorprogrammiert sein in dem Abfragepositionsspeicher 184, kann jedoch auch "on the fly" bzw. während der Übertragung ausgewählt werden. Basierend auf diesem Abfragepositionierungsschema und der Abfragedichte des Bereichs, der das Dreieck enthält, bestimmen die Darstellungseinheiten 150A–D, welche Behälter Abfragen enthalten können, die in den Grenzen des Dreiecks lokalisiert sind (Schritt 216). Die Verschiebungen für die Abfragen innerhalb dieser Behälter werden dann von dem Abfragepositionsspeicher 184 ausgelesen (Schritt 218). Jede Position der Abfrage wird dann unter Verwendung der Verschiebungen berechnet und wird mit den Endpunkten des Dreiecks verglichen, um zu bestimmen, ob die Abfrage innerhalb des Dreiecks ist (Schritt 220). Schritt 220 wird unten detaillierter erörtert.
  • Für jede Abfrage, für die bestimmt wird, daß sie innerhalb des Dreiecks liegt, zeichnet die Darstellungseinheit die Abfrage durch Berechnung der Farbe, alpha und anderer Attribute der Abfrage. Dies kann die Beleuchtungsberechnung und die Interpolation basierend auf der Farb- und Texturkarteninformation, die mit den Endpunkten des Dreiecks verknüpft sind, beinhalten. Nachdem die Abfragen dargestellt sind, können sie zu der Verzeichniseinheit 154 weitergeleitet werden, die dann die Abfragen in dem Abfragepufferspeicher 162 speichert (Schritt 224).
  • Es sei bemerkt, daß die Ausführungsform des Verfahrens, das oben beschrieben wurde, nur für die Zwecke der Erläuterung verwendet wird und nicht als begrenzend verstanden wird. Beispielsweise können in manchen Ausführungsformen die in der Figur gezeigten Schritte, wo sie seriell auftreten, parallel implementiert werden. Weiterhin können manche Schritte in bestimmten Ausführungsformen des Grafiksystems reduziert oder eliminiert werden (z.B. die Schritte 204–206 in Ausführungsformen, die keine geometrische Kompression implementieren oder die Schritte 210–212 in Ausführungsformen, die keinen supergesampleten Abfragepufferspeicher mit variabler Auflösung implementieren).
  • Bestimmung, welche Abfragen in dem darzustellenden Polygon liegen Der Vergleich, welche Abfragen innerhalb des darzustellenden Polygons liegen, kann auf einer Anzahl von unterschiedlichen Wegen durchgeführt werden. In einer Ausführungsform werden zunächst die Deltas (Differenzvektoren) zwischen den drei Eckpunkten, die das Dreieck definieren, bestimmt. Beispielsweise können diese Deltas in der Ordnung des ersten zu zweiten Eckpunktes (v2-v1)=d12, des zweiten zu dritten Eckpunktes (v3-v2)=D23 und des dritten Eckpunktes zurück zu dem ersten Eckpunkt (v1-v3)=d31 genommen werden. Diese Deltas bilden Vektoren und jeder Vektor kann derart kategorisiert werden, daß er zu einem der vier Quadranten der Koordinatenebene gehört (z.B. durch Verwendung der zwei Vorzeichenbits seiner Delta-X- und -Y-Koeffizienten). Eine dritte Bedingung kann zugefügt werden, die bestimmt, ob der Vektor ein X-major vector (Vektor, der mehr horizontal als vertikal verläuft) oder ein Y-major vector (Vektor, der mehr vertikal als horizontal verläuft) ist. Dies kann bestimmt werden durch Berechnen, ob abs(delta_x) größer als abs(delta_y) ist.
  • Unter Verwendung dieser drei Informationsbits können die Vektoren alle kategorisiert werden, so daß sie zu einer von acht unterschiedlichen Regionen der Koordinatenebene gehören. Wenn drei Bits verwendet werden, um diese Region zu definieren, dann können das X-Vorzeichenbit (um zwei nach links verschoben), das Y-Vorzeichenbit (um eins nach links verschoben) und das X-major Bit verwendet werden, um die acht Bereiche zu erzeugen, wie in 12A gezeigt ist.
  • Als nächstes werden drei Kantengleichungen verwendet, um das Innere des Dreiecks zu definieren. Diese Kantengleichungen (oder Halbebengleichungen) können unter Verwendung der Steigungsabschnittsform definiert werden. Um den benötigten numerischen Bereich zu reduzieren, können sowohl die X-major- als auch die Y-major-Gleichungsformen verwendet werden (so daß der absolute Wert des Steigungswertes in dem Bereich von 0 bis 1 liegt). Die Kantengleichungen sind somit:
    X-major: y – m · x – b < 0, wenn der Punkt unterhalb der Linie ist,
    Y-major: x – m · y – b < 0, wenn der Punkt links von der Linie ist.
  • Die X-major-Gleichungen erzeugen einen negativen gegenüber einem positiven Wert, wenn der in Frage stehende Punkt unterhalb der Linie ist, während die Y-major-Gleichung einen negativen gegenüber einem positiven Wert erzeugt, wenn der in Frage stehende Punkt links der Linie ist. Da bekannt ist, welche Seite der Linie die "akzeptiert"-Seite ist, kann das Vorzeichenbit (oder das Inverse des Vorzeichenbits) des Kantegleichungsergebnisses verwendet werden, um zu bestimmen, ob die Abfrage auf der "akzeptiert"-Seite ist oder nicht. Dies wird hier als "Akzeptierungsbit" bezeichnet. Somit ist eine Abfrage auf der Akzeptierungsseite einer Linie, wenn:
    X-major: y – m · x – b <xor> accept
    Y-major: x – m · y – b <xor> accept
  • Das Akzeptierungs- bzw. Annahmebit kann entsprechend der folgenden Tabelle berechnet werden, wobei cw bestimmt, ob das Dreieck im Uhrzeigersinn (cw = 1) oder im Gegenuhrzeigersinn (cw = 0) orientiert ist:
    1: accept = !cw
    0: accept = cw
    4: accept = cw
    5: accept = cw
    7: accept = cw
    6: accept = !cw
    2: accept = !cw
    3: accept = !cw
  • Entscheidungsregeln für diese Darstellung können ebenso implementiert werden (z.B. können Koordinatenachsen derart definiert werden, daß sie zu dem positiven Oktanten gehören). In gleicher Weise kann X-major so definiert werden, daß es alle Punkte aufweist, die auf den Winkelhalbierenden liegen.
  • In einer alternativen Ausführungsform kann die Akzeptierungsseite einer Kante durch Anwenden der Kantengleichung auf den dritten Eckpunkt des Dreiecks bestimmt werden (der Eckpunkt, der nicht einer der beiden Eckpunkte ist, die die Kante bilden). Dieses Verfahren kann zusätzliche Kosten einer Vielfachaddition hervorrufen, die durch die oben beschriebene Technik nicht verwendet werden darf.
  • Um die "faced-ness" (das heißt, welche Seite wohin gewandt ist) eines Dreiecks zu bestimmen (das heißt, ob das Dreieck rechtsläufig oder linksläufig ist), können die Delta-Richtungen von zwei Kanten des Dreiecks überprüft werden und die Steigungen der beiden Kanten können verglichen werden. Angenommen, daß beispielsweise die Kante 12 eine Delta-Richtung von 1 hat und die zweite Kante (Kante 23) eine Delta-Richtung von 0, 4 oder 5 hat, dann ist das Dreieck gegenläufig bzw. linksläufig. Wenn jedoch die Kante 23 eine Delta-Richtung von 3, 2 oder 6 hat, dann ist das Dreieck rechtsläufig. Wenn die Kante 23 eine Delta-Richtung von 1 hat (das heißt, dieselbe wie die Kante 12), dann führt der Vergleich der Steigungen der beiden Kanten zur Entscheidung (das heißt, beide sind X-major). Wenn die Kante 12 eine größere Steigung hat, dann ist das Dreieck gegenläufig. Wenn die Kante 23 eine Delta-Richtung von 7 hat (das exakte Gegenteil der Kante 12), dann werden wieder die Steigungen verglichen, jedoch mit dem entgegengesetzten Ergebnis im Hinblick darauf, ob das Dreieck rechtsläufig oder linksläufig ist.
  • Dieselbe Analyse kann erschöpfend auf alle Kombination der Delta-Richtungen der Kante 12 und Kante 23 angewendet werden, wobei in jedem Fall die richtige faced-ness bestimmt wird. Wenn die Steigungen im Grenzfall gleich sind, dann ist das Dreieck entartet (das heißt mit keiner inneren Fläche). Es kann explizit hierauf getestet werden und eliminiert werden oder mit angemessener numerischer Sorgfalt könnte es durchgelassen werden, da es nicht veranlassen wird, daß Abfragen dargestellt werden. Ein Spezialfall tritt auf, wenn ein Dreieck die Sichtebene teilt, dies kann jedoch früher in der Pipeline erfaßt werden (z.B. wenn das Vorderebenen- und das Rückebenenabschneiden durchgeführt wird).
  • Es sei bemerkt, daß in den meisten Fällen nur eine Seite eines Dreiecks dargestellt wird. Wenn somit, nachdem die faced-ness eines Dreiecks bestimmt wurde, die Fläche eine ist, die zurückgewiesen wird, dann kann das Dreieck eliminiert werden (das heißt, es ist nicht Gegenstand weiterer Bearbeitung mit keinen erzeugten Pixeln). Es sei weiterhin bemerkt, daß diese Bestimmung der faced-ness nur einen zusätzlichen Vergleich (das heißt der Steigung der Kante 12 mit der der Kante 23) über die bereits berechneten Faktoren hinaus verwendet. Viele traditionelle Ansätze können komplexere Berechnungen verwenden (bei früheren Stufen der Einstellberechnung).
  • 13 Erzeugen von Ausgangspixeln durch Auswählen und Filtern von Abfragewerten in dem supergesampleten Abfragepufferspeicher
  • 13 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens für das Auswählen von Filtern von in dem supergesampleten Abfragepufferspeicher abgelegten Abfragen, um Ausgangspixelwerte zu erzeugen. Zunächst wird ein Strom von Behältern von dem supergesampleten Abfragepufferspeicher gelesen (Schritt 250). Diese können in einem oder mehreren Cachespeichern abgelegt werden, um den Einheiten zur Umrechnung von Abfrage zu Pixel einen leichten Zugriff während des Faltungsprozesses zu ermöglichen (Schritt 252). Als nächstes werden die Behälter untersucht, um zu bestimmen, welche Abfragen enthalten können, die zu dem gegenwärtig durch den Filterprozeß erzeugten Ausgangspixel beitragen können (Schritt 254). Jede Abfrage, die in einem Behälter ist, der zu dem Ausgangspixel beitragen kann, wird dann individuell untersucht, um zu bestimmen, ob die Abfrage tatsächlich beiträgt (Schritte 256–258). Diese Bestimmung kann auf dem Abstand von der Abfrage zu dem Zentrum des zu erzeugenden Ausgangspixels basieren.
  • In einer Ausführungsform können die Einheiten zur Umrechnung von Abfrage zu Pixel 170 derart konfiguriert sein, daß sie diesen Abstand (das heißt die Ausdehnung oder die Einhüllende des Filters an der Position der Abfrage) berechnen und dann dies verwenden, um in einer Tabelle Speicherfiltergewichtungswerte entsprechend der Filterausdehnung zu indexieren (Schritt 260). In einer anderen Ausführungsform wird jedoch die möglicherweise teure Berechnung des Abstandes von dem Zentrum des Pixels zu dem Abfragewert (der typischerweise eine Quadratwurzelfunktion beinhaltet) vermieden durch Verwendung des quadrierten Abstandes, um die Tabelle von Filtergewichten zu indexieren. Alternativ dazu kann eine Funktion von X und Y verwendet werden neben einer, die abhängig von der Abstandsberechnung ist. In einer Ausführungsform kann dies erzielt werden durch Verwendung eines Gleitkommaformats für den Abstand (z.B. 4 oder 5 Bits der Mantisse und 3 Bits des Exponenten), wodurch es möglich ist, daß ein Großteil der Genauigkeit beibehalten wird, während der erhöhte Wertebereich kompensiert wird. In einer Ausführungsform kann die Tabelle in ROM implementiert werden. Es können jedoch ebenso RAM-Tabellen verwendet werden. RAM-Tabellen können in manchen Ausführungsformen mit Vorteil dem Grafiksystem erlauben, die Filterkoeffizienten auf einer Einzelbildbasis zu variieren. Beispielsweise können die Filterkoeffizienten variiert werden, um bekannte Fehler der Anzeige zu kompensieren oder entsprechend der persönlichen Vorlieben des Benutzers. Das Grafiksystem kann ebenso die Filterkoeffizienten auf einer Schirmbereichsbasis innerhalb eines Einzelbildes oder auf einer Ausgangspixelbasis variieren. Eine andere alternative Ausführungsform kann tatsächlich die gewünschten Filtergewichte für jede Abfrage unter Verwendung von spezialisierter Hardware (z.B. Multiplizieren und Addieren) berechnen. Die Filtergewichte für Abfragen außerhalb der Grenzen des Faltungsfilters können einfach mit einem Filtergewicht von 0 multipliziert werden (Schritt 262) oder sie können völlig aus der Berechnung entfernt werden.
  • Nachdem das Filtergewicht für eine Abfrage bestimmt wurde, kann dann die Abfrage mit ihrem Filtergewicht multipliziert werden (Schritt 264). Die gewichtete Abfrage kann dann in einer laufenden Summe summiert werden, um den Farbwert des endgültigen Ausgangspixels zu bestimmen (Schritt 266). Das Filtergewicht kann ebenso zu einem laufenden Summenpixelfiltergewicht addiert werden (Schritt 268), das verwendet wird, um die gefilterten Pixel zu normalisieren. Die Normalisierung verhindert mit Vorteil, daß sie gefilterten Pixel (z.B. Pixel mit mehr Abfragen als andere Pixel) zu hell oder zu dunkel erscheinen durch Kompensierung der Verstärkung, die durch den Faltungsprozeß eingeführt wurde. Nachdem all die beitragenden Abfragen gewichtet und summiert wurden, kann das Gesamtfiltergewicht verwendet werden, um die Verstärkung, die durch das Filtern veranlaßt wurde, herauszuteilen (Schritt 270). Schließlich können die normalisierten Ausgangspixel ausgegeben werden für die Gamma-Korrektur, die Digital-/Analog-Umwandlung (sofern notwendig) und die eventuelle Anzeige (Schritt 274).
  • 14 Beispielhafte Ausgangspixelfaltung
  • 14 stellt ein vereinfachtes Beispiel einer Ausgangspixelfaltung dar. Wie die Figur zeigt, enthalten vier Behälter 288A–D Abfragewerte, die möglicherweise zu dem Ausgangspixel beitragen können. In diesem Beispiel ist das Zentrum des Ausgangspixels, das heißt der Zentralort, an dem der Filter angewendet wird, um das entsprechende Ausgangspixel zu erzeugen, an der Grenze der Behälter 288A–D lokalisiert. Jeder Behälter umfaßt 16 Abfragen und eine Anordnung von vier Behältern (2 × 2) wird gefiltert, um das Ausgangspixel zu erzeugen. Angenommen, daß zirkulare Filter verwendet werden, so bestimmt der Abstand von jedem Abfragewert von dem Pixelzentrum, welcher Filterwert auf die Abfrage angewendet wird. Beispielsweise ist Abfrage 296 relativ nahe an dem Pixelzentrum und fällt daher in den Bereich des Filters mit einem Filterwert von B. In gleicher Weise fallen die Abfragen 294 und 292 in Bereiche des Filters mit Filterwerten von 4 bzw. 2. Die Abfrage 290 liegt jedoch außerhalb der maximalen Filterausdehnung und bekommt daher einen Filterwert von 0 verliehen. Die Abfrage 290 wird somit nicht zu dem Wert des Ausgangspixels beitragen. Dieser Filtertyp stellt sicher, daß die Abfragen, die am nächsten an dem Pixelzentrum lokalisiert sind, am meisten beitragen, während Pixel, die von dem Pixelzentrum entfernt angeordnet sind, weniger zu dem endgültigen Ausgangspixelwert beitragen. Dieser Typ des Filterns führt automatisch das Anti-Aliasing durch Glätten jeder abrupten Veränderung in dem Bild durch (z.B. von einer dunklen Linie zu einem hellen Hintergrund). Ein anderer besonders nützlicher Typ von Filter für das Anti-Aliasing ist ein mit Fenster versehener Sinc-Filter. Mit Vorteil enthält der mit Fenster versehene Sinc-Filter negative Keulen, die einige der gemischten oder "verzerrten" Bilder erneut schärft. Negative Keulen sind Flächen, in denen der Filter veranlaßt, daß die Abfragen von den Pixeln, die berechnet werden, abgezogen werden. Im Gegensatz dazu addieren Abfragen auf irgendeiner Seite der negativen Keule sich zu dem Pixel, das berechnet wird.
  • Beispielwerte für die Abfragen 290–296 sind in den Boxen 300–308 dargestellt. In diesem Beispiel weist jede Abfrage einen Rot-, Grün-, Blau- und Alpha-Wert auf zusätzlich zu den Positionierungsdaten der Abfrage. Der Block 310 stellt die Berechnung jedes Pixelkomponentenwerts für den nicht normalisierten Ausgangspixel dar. Wie der Block 310 anzeigt, wird mögliche unerwünschte Verstärkung in die endgültigen Pixelwerte eingeführt (das heißt ein Ausgangspixel mit einem Rot-Komponentenwert von 2000 ist viel größer als irgendeiner der Rot-Komponentenwerte in der Abfrage). Wie vorher bemerkt wurde, können die Filterwerte summiert werden, um einen Normalisierungswert zu erhalten 308. Der Normalisierungswert 308 wird verwendet, um die unerwünschte Verstärkung von dem wird verwendet, um die unerwünschte Verstärkung von dem Ausgangspixel herauszuteilen. Der Block 312 stellt diesen Prozeß und die endgültigen normalisierten Beispielpixelwerte dar.
  • Es sei bemerkt, daß die hier verwendeten Werte nur aus Gründen der Beschreibung ausgewählt wurden und nicht als begrenzend verstanden werden. Beispielsweise kann der Filter eine große Anzahl von Regionen aufweisen, die jeweils unterschiedliche Filterwerte haben. In einer Ausführungsform können einige Regionen negative Filterwerte haben. Der verwendete Filter kann eine kontinuierliche Funktion sein; die für jede Abfrage basierend auf dem Abstand der Abfrage von dem Pixelzentrum ermittelt wird. Es sei ebenso bemerkt, daß Gleitkommazahlen für erhöhte Genauigkeit verwendet werden können. Eine Vielzahl von Filtern kann benutzt werden, z.B. Zylinder, Konus, Gauß, Katmull-Rom, Sinc mit Fenster, Mitchell-Filter, Box, Tent.
  • Vollschirm-Anti-Aliasing
  • Die überwiegende Mehrheit von aktuellen 3D-Grafiksystemen stellt nur das Echtzeit-Anti-Aliasing für Linien und Punkte zur Verfügung. Während manche Systeme ebenso erlauben, daß die Kanten eines Polygons "verschwommen" werden, arbeitet diese Technik typischerweise am besten, wenn alle Polygone in der Tiefe vorsortiert sind. Dies kann die Absicht des Bereitstellens einer Allzweck-3D-Darstellungshardware für die meisten Anwendungen (die keine Tiefenvorsortierung ihrer Polygone durchführen) vereiteln. In einer Ausführungsform kann das Grafiksystem 112 derart konfiguriert sein, daß es das Vollschirm-Anti-Aliasing implementiert durch stochastisches Abfragen von bis zu 16 Abfragen je Ausgangspixel gefiltert mit einem 4 × 4-Faltungsfilter.
  • Dynamische Filtereinstellung für die Reduktion von Artefakten
  • Die vorliegende Erfindung beinhaltet ein verbessertes System und ein Verfahren für das Einstellen des Filterns von Abfragen bei der Erzeugung von Ausgangspixeln für die Reduzierung von Artefakten.
  • Der supergesamplete Einzelbildpufferspeicher enthält mehr Information, als tatsächlich angezeigt wird, das heißt mehr Information, als tatsächlich in Ausgangspixeln in einem gegebenen Einzelbild produziert wird. Wie oben beschrieben wurde, speichert der supergesamplete Einzelbildpufferspeicher eine Mehrzahl von Abfragen, die verwendet werden, um Ausgangspixel zu erzeugen, die direkt der Anzeige zur Verfügung gestellt werden können. Der Faltungsprozeß würde in der Erzeugung von Ausgangspixeln in Antwort auf Abfragen typischerweise einen Teil der berechneten Abfrageinformation nicht verwenden oder "rauswerfen". Diese zusätzliche Information wird dargestellt oder berechnet, um fehlende Kanten zu erfassen und ansonsten Artefakte zu entfernen. Supersampling allein kann nicht alle Artefakte entfernen, z.B. können die oben beschriebenen vielfältigen Abfragepositionierungsschemata, wie z.B. die stochastische Abfrage oder das gitterpassierte Abfragen nicht das gesamte Aliasing und Artefakte entfernen.
  • Beispielsweise ist die Leistung des 8x-Supersamplings keine Garantie dafür, daß alle Artefakte und alles Aliasing aus dem Endausgangsbild entfernt wurde. Stochastisches Abfragen erzeugt beispielsweise eher einen Tausch des Aliasing gegen Artefakte, die mehr wie Rauschen erscheinen, auf die das Auge weniger empfindlich ist. Somit kann ein Grafiksystem, das einen supergesampleten Abfragepufferspeicher nutzt, während dies besser als konventionelle pixelbasierte Einzelwertpufferspeicher ist, versehentlich einige Dreiecke auslassen und/oder zu einigen Artefakten führen.
  • Wenn die Darstellungsrate geringer als die Bildwiederholrate ist, dann können die Abfragen in dem Abfragepufferspeicher zwei oder mehrere Male gefaltet werden und Artefakte können erzielt werden. Der Begriff "Darstellungsrate", so wie er hier verwendet wird, bezieht sich auf die Rate, mit der Abfragen in den Abfragepufferspeicher dargestellt werden. Der Begriff "Bildwiederholrate" bezieht sich auf die Rate, mit der die Einheit zur Umrechnung von Abfrage zu Pixel arbeitet, um Abfragen auszuwählen und von dem Abfragepufferspeicher zu erhalten und die Abfragen zu filtern, um Ausgangspixel zu erzeugen, die der Anzeige zur Verfügung gestellt werden, und zwar vorzugsweise direkt ohne einen dazwischengeschalteten Einzelwertpufferspeicher.
  • In einer Ausführungsform der Erfindung ist bzw. sind die eine oder die mehreren Einheiten zur Umrechnung von Abfrage zu Pixel 170A–D (im Singular bezeichnet als "Einheit zur Umrechnung von Abfrage zu Pixel 170") derart betreibbar, daß sie die Faltung mit einer unterschiedlichen Rate als die Darstellungsoperation oder die Darstellungsrate und vorzugsweise unabhängig hiervon durchführt. Die Berechnungsrate und das Ablegen der Abfragedaten in den Abfragepufferspeicher kann somit von der Bildwiederholrate oder Faltungsrate entkoppelt werden. Die Einheit 170 zur Umrechnung von Abfrage zu Pixel kann "on the fly" bzw. mit der Übertragung unabhängig von der Darstellungsrate arbeiten. Wo die Darstellungsrate geringer als die Bildwiederholrate ist, können manche derselben Abfragedaten für zwei oder mehrere aufeinanderfolgende Einzelbilder gefaltet werden und Artefakte können hieraus resultieren. Artefakte können ebenso entstehen, wenn die Darstellungsrate dieselbe wie die Bildwiederholrate ist, jedoch beispielsweise die Abfragedaten, die gegenwärtig in dem Abfragepufferspeicher sind, gleich den Abfragedaten von einem vorherigen Einzelbild sind. Die vorliegende Erfindung beinhaltet ein System und ein Verfahren für die dynamische Filtereinstellung für die Reduzierung von Artefakten.
  • In einer Ausführungsform ist die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betreibbar, daß sie wahlweise das Filtern von abgelegten Abfragen einstellt, um Artefakte zu reduzieren, z.B. ist sie derart betreibbar, daß sie selektiv das Filtern von abgelegten Abfragen in benachbarten Einzelbildern einstellt, um Artefakte zwischen den benachbarten Einzelbildern zu reduzieren. Beispielsweise kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 einen ersten Satz von abgelegten Abfragewerten auswählen und filtern, um erste Ausgangspixel zu erzeugen für die Anzeige unter Verwendung eines ersten Filters und kann später einen zweiten Satz von abgelegten Abfragen auswählen und filtern, um zweite Ausgangspixel für die Anzeige zu erzeugen unter Verwendung eines zweiten Filters, der sich von dem ersten Filter unterscheidet. Dies funktioniert derart, daß sich die Artefakte von einer festen Position auf der Anzeige zu variierenden Positionen auf der Anzeige verändern, die wahrscheinlicher von dem menschlichen visuellen System übersehen werden.
  • Nimmt man beispielsweise an, daß 0,01% der Pixel in einem vorherigen Einzelbild ein Artefakt haben und dieselben Abfragedaten in einem gegenwärtigen Einzelbild verwendet werden, um Ausgangspixel zu erzeugen. In dem gegenwärtigen Einzelbild kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betrieben werden, daß sie die Zentrumsorte, an denen der Filter auf die Abfragedaten angewendet wird, bei der Erzeugung von Ausgangspixeln für das gegenwärtige Einzelbild um ein halbes Pixel verschiebt. Dies kann die Artefakte für diese 0,01% der Pixel in dem gegenwärtigen Einzelbild vollständig entfernen, wobei keine anderen Artefakte in dem gegenwärtigen Einzelbild erzeugt werden. Alternativ kann dies die Artefakte für diese 0,01% der Pixel in dem gegenwärtigen Einzelbild entfernen, jedoch zu Artefakten für andere Pixel führen, die in einer unterschiedlichen Position auf der Anzeige erscheinen. In diesem Fall kann das menschliche visuelle System die Artefakte mitteln, wodurch weniger wahrnehmbare Artefakte erzeugt werden. Die vorliegende Erfindung kann somit effektiv einen Typ des temporalen Dithering auf Ausgangspixeln durchführen, was zu weniger wahrgenommenen Artefakten führt.
  • Die Einheit zur Umrechnung von Abfrage zu Pixel 170 kann selektiv das Filtern von abgelegten Abfragen in benachbarten Einzelbildern einstellen durch Simulation von verschiedenen Schirmeffekten, wie z.B. das Schwenken und das Zoomen für reduzierte Artefakte. Die Einheit zur Umrechnung von Abfrage zu Pixel 170 kann ebenso selektiv das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern einstellen unter Verwendung von anderen vorbestimmten oder stochastischen Methoden, wie dies gewünscht ist. Beispielsweise kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern selektiv einstellen durch einen stochastischen Wert, der von 0 bis 0,5 Unterpixel in irgendeiner horizontalen Richtung reicht.
  • Die Einheit zur Umrechnung von Abfrage zu Pixel 170 kann ein Filter bei der Filterung der Abfragen, wie es oben beschrieben wurde, verwenden und die Einheit zur Umrechnung von Abfrage zu Pixel 170 stellt vorzugsweise selektiv die Zentrumsorte ein, wo das Filter während des Filterns von gespeicherten Abfragen angewendet wird, um Artefakte zu reduzieren. Mit anderen Worten stellt die Einheit zur Umrechnung von Abfrage zu Pixel 170 vorzugsweise selektiv die Zentrumsorte ein, wo das Filter angewendet wird, und zwar relativ zu den Zentrumsorten, die in einem vorherigen Einzelbild verwendet wurden. Die Einstellung der Zentrumsorte, wo das Faltungsfilter angewendet wird, ist äquivalent zu einer Einstellung der Zentren der zu erzeugenden Ausgangspixeln.
  • Die Einheit zur Umrechnung von Abfrage zu Pixel beinhaltet eine Adreßerzeugerlogik für das Erzeugen von Adressen entsprechend der Zentrumsorte des Faltungsfilters, wobei die Adreßerzeugungslogik programmierbar ist, um Adressen bei ausgewählten Subpixelpositionen in dem Abfragepufferspeicher entsprechend der gewünschten Zentren zu erzeugen. In der bevorzugten Ausführungsform ist die Start-Subpixelposition, an der die Adreßerzeugungslogik beginnt, Adressen zu erzeugen, programmierbar. Die Einheit zur Umrechnung von Abfrage zu Pixel 170 ist derart betreibbar, daß sie selektiv den Anfang der Subpixelposition des Zentrums des Faltungsfilters in einer oder mehreren X- oder Y-Richtungen einstellt und kann das Zentrum des Faltungsfilters einstellen, um einen Subpixelabstand relativ zu dem Zentrum, das in einem vorherigen Einzelbild verwendet wurde. Die Adreßerzeugungslogik beinhaltet ebenso eine Pixelschrittgröße, die programmierbar ist, jedoch vorzugsweise konstant bleibt. Die Pixelschrittgröße entspricht einem Abstand bzw. Zwischenraum zwischen den Pixeln, der im allgemeinen einen relative Veränderung in dem Abstand zwischen den Pixeln relativ zu entweder einem vorherigen Abstand oder zu einem ausgewählten Koordinatensystem, wie z.B. den Schirmraum, betrifft.
  • Um eine Filtereinstellung zu implementieren, kann (können) die Darstellungseinheiten) 150 in dem Grafiksystem betrieben werden, um zusätzliche Abfragen außerhalb des unmittelbar sichtbaren Bereichs darzustellen, so daß diese Abfragen für die gewünschten Einstellungen verfügbar sind. In einer Ausführungsform hat das Grafiksystem vor dem Darstellen der Abfragen in den Abfragepufferspeicher bereits die Erscheinung des nachfolgenden Einzelbildes abgeschätzt (z.B. hat es die gewünschte Verschiebung in dem Faltungszentrum abgeschätzt). Wenn beispielsweise die gewünschte Filtereinstellung das Verschieben der Faltungszentren um ein halbes Pixel nach rechts beinhaltet, können zusätzliche Abfragen in den Abfragepufferspeicher dargestellt werden an Orten, die zumindest einem halben Pixel in Bezug auf den vorher sichtbaren Bereich entsprechen, so daß diese Abfragen bei der Erzeugung von Pixeln an der rechten Kante der Anzeige verwendet werden können. Anderenfalls wären manche Abfragedaten für die Ausgangspixel an der rechten Kante der Anzeige nicht verfügbar und unerwünschte Artefakte könnten an der rechten Kante der Anzeige entstehen. In einer ähnlichen Art und Weise können, wenn die gewünschte Filtereinstellung die Verschiebung der Faltungszentren um ein halbes Pixel nach links beinhaltet, zusätzliche Abfragen an Orten, die zumindest ein halbes Pixel nach links des vorher sichtbaren Bereichs entsprechen, in den Abfragepufferspeicher dargestellt werden, so daß diese Abfragen bei der Erzeugung von Pixeln an der linken Kante der Anzeige verwendet werden können. Wo eine Verschiebung der Faltungszentren nach oben oder nach unten gewünscht ist, kann das System ebenso betrieben werden, um zusätzliche Abfra gen oberhalb bzw. unterhalb des unmittelbar sichtbaren Bereichs darzustellen, so daß diese Abfragen für die gewünschte Einstellung verfügbar sind.
  • In einer Ausführungsform hat das Grafiksystem vor der Darstellung von Abfragen in den Abfragepufferspeicher bereits die Erscheinung des nachfolgenden Einzelbildes abgeschätzt (z.B. hat es die gewünschte Verschiebung der Faltungszentren abgeschätzt) und zusätzliche Abfragen werden in den Abfragepufferspeicher basierend auf dieser Verschiebungsschätzung dargestellt. Alternativ dazu können die Darstellungseinheiten 150, wenn das zusätzliche Darstellen wenig Kosten oder Verzögerung hinzufügt, zusätzliche Abfragen um alle Kanten des Abfragepufferspeichers darstellen und das Grafiksystem kann somit die gewünschte Verschiebung der Faltungszentren mitten in dem nächsten Einzelbild bestimmen.
  • Die Einheit zur Umrechnung von Abfrage zu Pixel 170 kann ebenso andere Parameter einstellen, wie z.B. den Filtertyp, die verwendeten Gewichtungsfaktoren, den Filterradius oder andere Filterparameter, um zu versuchen, Artefakte zwischen aufeinanderfolgenden Einzelbildern zu reduzieren. Wo der Radius des Filters eingestellt wird, um Artefakte zu entfernen, können verschwommene Abschnitte mit hoher Auflösung "verwackeln", wodurch Artefakte entfernt werden, jedoch möglicherweise auf Kosten der empfundenen Auflösung.
  • Einstellung des Videotaktes
  • Das Grafiksystem ist ebenso derart betreibbar, daß es selektiv den Videotakt einstellt, um die Einstellung des Zentrums des Faltungsfilters während des Filterns von gespeicherten Abfragen zu kompensieren. Wie oben unter Bezug auf die Diskussion der DACs 178A–B in 3 erwähnt wurde, arbeitet die Einheit zur Umrechnung von Abfrage zu Pixel 170, wenn die Einheit zur Umrechnung von Abfrage zu Pixel 170 die Faltungszentren in einem Einzelbild relativ zu einem vorherigen Einzelbild horizontal oder vertikal einstellt, wie oben erwähnt wurde, ebenso derart, daß sie die Phase des Pixeltaktes, der den DACs 178A-B zur Verfügung gestellt wird, verschiebt oder einstellt. Dies ist notwendig aufgrund der Einstellung der Faltungszentren in einem Einzelbild relativ zu einem vorherigen Einzelbild, um ein bemerkbares "Wackeln" des Bildes zu verhindern. Im allgemeinen korreliert eine Verschiebung der Faltungszentren um einen Bruchteil eines Pixels direkt mit einer entsprechenden Taktverschiebung.
  • Die Einheit zur Umrechnung von Abfrage zu Pixel 170 kann arbeiten, um die Faltungszentren in einem Einzelbild horizontal oder vertikal einzustellen. Wenn die Faltungszentren vertikal um eine gesamte Abtastzeile verschoben werden, dann können die Pixel um eine gesamte Abtastzeile verzögert werden mit dem Ergebnis, daß in dem Ausgang eine Verschiebung von einer Abtastzeile des Einzelbildes auftritt. Wenn eine vertikale Verschiebung in den Faltungszentren gewünscht wird, dann wird dies vorzugsweise nur mit einer analogen Anzeige durchgeführt, wie z.B. einer CRT- (Kathodenstrahlrohr-) Anzeige, und vorzugsweise auf Unterzeileninkrementen, wie z.B. einer halben Zeile.
  • Der eingestellte Pixeltakt kann derart arbeiten, daß er eines, das HSYNC-Signal oder das VSYNC-Signal oder beide einstellt. In einer Ausführungsform beinhaltet die programmierbare Takteinheit 182 zumindest einen Multiplexer und beinhaltet Verzögerungselemente für die Erzeugung von einem oder mehreren verzögerten und voreilenden Versionen des Pixeltaktes. Diese unterschiedlichen Versionen des Pixeltaktes werden basierend auf dem Typ und der Größe der Einstellung der Faltungszentren ausgewählt. Die programmierbare Takteinheit 182 kann ebenso entsprechend einer Zustandsmaschine, die den Videotakt steuert, arbeiten.
  • Es sei bemerkt, daß für manche Anzeigen es nicht ausreichend sein kann, einfach ein oder mehrere der Taktsignale, die der Anzeige zur Verfügung gestellt werden, zu verändern, wie z.B. das Einstellen des horizontalen Startpulses, da hochwertigere Anzeigen in der Lage sein können, dies zu kompensieren. Somit wird der Pixeltakt, der den DACs oder anderen Ausgangsschaltkreisen zur Verfügung gestellt wird, eingestellt.
  • 15 Einstellen des Filterns in einem Einzelbild
  • 15 ist ein Flußdiagramm, das den Betrieb der Einheit zur Umrechnung von Abfrage zu Pixel 170 bei der Einstellung des Filterns der Abfragen in einem gegenwärtigen Einzelbild veranschaulicht, um zu versuchen, Artefakte zu entfernen oder um gewünschte Anzeigeeffekte zu erzeugen. Es wird hier angenommen, daß zusätzliche Abfragen vorher in dem Abfragepuffer dargestellt wurden an Orten, an denen die gewünschte Einstellung auftreten wird.
  • Wie gezeigt programmiert in Schritt 402 das Verfahren vor dem Start der Erzeugung von Ausgangspixeln für ein gegenwärtiges Einzelbild die Startadresse eines ersten Faltungszentrums für jede Einheit zur Umrechnung von Abfrage zu Pixel (ebenso als "Faltungspipeline" bezeichnet). Wenn eine einzelne Faltungspipeline verwendet wird, kann das Verfahren die Startadresse des Faltungszentrums für das untere linke Pixel, das auf der Anzeigevorrichtung angezeigt wird, programmieren. Wenn mehrere Faltungspipelines parallel arbeiten, so wie in 11 gezeigt ist, kann das Verfahren arbeiten, um die Startadresse des Faltungszentrums für jede entsprechende Faltungspipeline zu programmieren, z.B. das Faltungszentrum für das untere linke Startpixel für jede Faltungspipeline.
  • In Schritt 404 kann das Verfahren den Pixelschrittwert für jede Faltungspipeline programmieren. Der Pixelschrittwert kann sowohl einen Schrittwert in der horizontalen X-Richtung als auch einen Schrittwert in der vertikalen Y-Richtung beinhalten. Der Pixelschrittwert entspricht dem Abstand zwischen einem Faltungszentrum und dem nächsten darauffolgenden Faltungszentrum für das benachbarte Pixel. In einer Ausführungsform werden die Faltungszentren für jedes der Ausgangspixel durch die Startadresse des Faltungszentrums und den entsprechenden Pixelschrittwert, der für ein gesamtes Einzelbild (oder mehrere Einzelbilder) konstant bleiben kann, bestimmt.
  • In einer Ausführungsform bleibt der Pixelschrittwert konstant und muß daher nicht programmiert werden. Nimmt man einen konstanten Pixelschrittwert an, führt eine Veränderung in der Startadresse des Faltungszentrums zu einer Verschiebung der Faltungszentren für jedes der Pixel in Bezug auf die Faltungszentren, die für die Pixel in dem vorherigen Einzelbild verwendet wurden, wobei die Verschiebung die gleiche für jedes der Pixel relativ zu den Pixeln in dem vorherigen Einzelbild ist. Somit programmiert das Verfahren, um die Faltungszentren konsistent für jedes der Ausgangspixel in einem gegenwärtigen Einzelbild einzustellen, vorzugsweise eine unterschiedliche Startadresse des Faltungszentrums relativ zu dem vorherigen Einzelbild, im allgemeinen für jede Faltungspipeline oder Einheit zur Umrechnung von Abfrage zu Pixel 170 und behält den gleichen Pixelschrittwert wie das vorherige Einzelbild bei. Wie erwähnt, führt dies für jedes Pixel in dem gegenwärtigen Einzelbild zu um dieselbe Größe verschobenen Faltungszentren in Bezug auf die Faltungszentren, die für Pixel verwendet wurden von dem vorherigen Einzelbild.
  • In einer anderen Ausführungsform arbeitet das Verfahren derart, daß es die Pixelschrittgröße auf einer per Einzelbild- oder sogar einer Pixelbasis einstellt, wodurch variierende Verschiebungen in den Faltungszentren für jedes der Pixel in Bezug auf die Faltungszentren, die für die Pixel in dem vorherigen Einzelbild verwendet wurden, erzeugt werden. Beispielsweise kann die Pixelschrittgröße selektiv auf einer Pixelbasis eingestellt werden für jedes von zumindest einer Untergruppe von Pixeln in dem Einzelbild, wie z.B. durch eine stochastische Einstellung, die von –0,25 und +0,25 Subpixeln reicht. Dies kann ebenso die Entfernung von Artefakten in verschiedenen Abschnitten eines Bildes herbeiführen.
  • Wo dieses Verfahren der vorliegenden Erfindung verwendet wird, um Anzeigeeftekte, wie z.B. das Zoomen, zu erzeugen, kann der Pixelschrittwert auf einen unterschiedlichen Wert relativ zu dem vorherigen Einzelbild programmiert werden, um entweder ein "Heranzoomen" oder ein "Herauszoomen" zu implementieren. Beispielsweise wird der Pixelschrittwert auf einen kleineren Schrittwert programmiert, um in ein Bild hineinzuzoomen, und wird auf einen größeren Schrittwert programmiert, um aus einem Bild herauszuzoomen. Die Erzeugung von Anzeigeeffekten wird weiter unten erörtert.
  • In Schritt 406 beginnt das Verfahren mit der Faltung an der Startadresse, die in Schritt 402 programmiert wurde. Dies beinhaltet das Anwenden des Faltungsfilters auf Abfragen in den Abfragepufferspeicher an den Faltungszentren, die von der Startadresse in Schritt 402 spezifiziert sind, um das erste Ausgangspixel für die Anzeige zu erzeugen.
  • In Schritt 408 schreitet das Verfahren zu dem nächsten Faltungszentrum fort unter Verwendung des in Schritt 404 programmierten Schrittwertes.
  • In Schritt 410 führt das Verfahren eine Faltung auf Abfragen in dem Abfragepufferspeicher an dem nächsten Faltungszentrum, wie es in Schritt 408 bestimmt wurde, durch. Dies be inhaltet erneut das Erzeugen eines Ausgangspixels durch Anwenden eines Faltungsfilters auf Abfragen in dem Abfragepufferspeicher basierend auf diesem Faltungszentrum.
  • Wie gezeigt werden die Schritte 408 und 410 für jedes der Ausgangspixel für die entsprechende Faltungspipeline wiederholt. Es sei ebenso bemerkt, daß die Schritte 406, 408 und 410 von jeder der entsprechenden Faltungspipelines oder Einheiten zur Umrechnung von Abfrage zu Pixel durchgeführt werden kann, wenn mehr als eine vorhanden ist, vorzugsweise parallel. Somit arbeitet das Verfahren durch einfaches Verändern der Startadresse des Faltungszentrums für jede der einen oder mehreren Einheiten zur Umrechnung von Abfrage zu Pixel oder der Faltungspipelines, um die Faltungszentren für jedes der Ausgangspixel für ein gegenwärtiges Einzelbild relativ zu den Faltungszentren, die in einem vorherigen Einzelbild verwendet wurden, einzustellen. Wie oben beschrieben wurde, kann dies durchgeführt werden, um zu versuchen, Artefakte zwischen benachbarten Einzelbildern zu entfernen, wie z.B. wenn die Abfragedaten identisch oder gleich Abfragedaten von einem vorherigen Einzelbild sind. Dies kann ebenso durchgeführt werden, um verschiedene Typen von Anzeigeeffekten zu erzeugen, wie unten beschrieben wird.
  • 16 und 17 Beispielhafte Einstellung von Faltungszentren
  • Die 16A16B und 17A und 17B stellen ein Beispiel der Funktion der vorliegenden Erfindung dar. 16A stellt einen repräsentativen Satz von Abfragen von dem Abfragepufferspeicher dar, in dem die Zentren der Faltungsfilter um jeweilige Behälter in dem Abfragepufferspeicher zentriert sind. Wie gezeigt ist, kann, wenn der Faltungsfilter unter Verwendung dieser Faltungszentren auf entsprechende Abfragen angewendet wird, um Ausgangspixel für die Anzeige zu erzeugen, eine Kante mit einem Alias oder Artefakt produziert werden, wie in 16B gezeigt ist.
  • 17A stellt den gleichen Satz von Abfragedaten dar, in dem die Faltungszentren relativ zu den Faltungsfiltern in 16A verschoben wurden. Wie in 17A gezeigt ist, sind die Faltungszentren um näherungsweise ein halbes Pixel nach links verschoben. Die Faltungsfilter, die an diese neuen Faltungszentren angelegt werden, werden im allgemeinen einen gegenüber den Faltungsfiltern, die unter Verwendung der Faltungszentren von 16A angewendet wurden, unterschiedlichen Satz von Abfragen verwenden. Obgleich einige der Abfragen in jedem der Faltungsfilter der 16A und 17A verwendet werden können, wird jedoch die Verschiebung der Faltungszentren dazu führen, daß für die Erzeugung der Ausgangspixel in 17A zumindest teilweise andere Abfragen verwendet werden als diejenigen, die in 16A verwendet wurden.
  • Wie in 17B gezeigt ist, können die Artefakte nicht länger erscheinen, wenn Ausgangspixel in Antwort auf denselben Satz von Abfragen erzeugt werden unter Verwendung von Faltungsfiltern mit unterschiedlichen oder verschobenen Faltungszentren, wie in 17A gezeigt ist. Es sei bemerkt, daß andere Artefakte in anderen Abschnitten des gezeichneten zeigt ist. Es sei bemerkt, daß andere Artefakte in anderen Abschnitten des gezeichneten Bildes auftreten können. Diese würden jedoch typischerweise weniger bemerkbar sein als Situationen, in denen Artefakte in derselben Position für zwei oder mehrere aufeinanderfolgende Einzelbilder erscheinen.
  • Die vorliegende Erfindung kann angewendet werden, wo die Einheit zur Umrechnung von Einzelbild zu Pixel 170 Ausgangspixel mit derselben Rate erzeugt wie der Grafikprozessor Abfragen in den Abfragepufferspeicher darstellt. Dort, wo die Einheit zur Umrechnung von Abfrage zu Pixel 170 Ausgangspixel mit derselben Rate darstellt wie der Grafikprozessor Abfragen in den Abfragepufferspeicher darstellt, enthält im allgemeinen der Abfragepufferspeicher bei jeder Aktualisierung bzw. Wiederholung der Anzeige neue Abfragedaten.
  • In dieser Ausführungsform kann das Grafiksystem Informationen von dem graphischen Softwaretreiber oder der Grafikanwendung betreffend die Ähnlichkeit von Abfragedaten in benachbarten Einzelbildern empfangen. Wenn einer oder mehrere der Grafiksoftwaretreiber die Grafikanwendung oder die Einheit zur Umrechnung von Abfrage zu Pixel bestimmt, daß die Abfragedaten in benachbarten Einzelbildern genügend ähnlich sind, dann kann die Einheit zur Umrechnung von Abfrage zu Pixel derart betrieben werden, um das Filtern für das gegenwärtige Einzelbild von Abfragedaten einzustellen, um zu versuchen, jegliche Artefakte, die zwischen benachbarten Einzelbildern erscheinen können, zu entfernen. Auf andere Weise gesagt, wenn der graphische Softwaretreiber und/oder die graphische Anwendung und/oder die Einheit zur Umrechnung von Abfrage zu Pixel bestimmt, daß die Abfragedaten in einem gegenwärtigen Einzelbild ausreichend ähnlich zu Abfragedaten von einem unmittelbar vorherigen Einzelbild sind, dann kann die Einheit zur Umrechnung von Abfrage zu Pixel derart betrieben werden, daß sie das Filtern für das gegenwärtige Einzelbild von Abfragedaten einstellt, um zu versuchen, jegliche Artefakte, die zwischen den benachbarten Einzelbildern auftauchen können, zu entfernen.
  • Die Bestimmung, ob Abfragedaten "ausreichend ähnlich" sind, um eine Einstellung bzw. Verstellung des Filterns zu garantieren, kann Informationen beinhalten, die von der Anwendung empfangen werden mit Veränderungen des Knotenpunktes der Kamera oder kann auf Kriterien basieren, die von dem Grafiktreiber verwendet werden.
  • Wenn beispielsweise ein gegenwärtiger Satz von gespeicherten Abfragewerten als ähnlich oder identisch zu einem vorherigen Satz von abgespeicherten Abfragewerten, die vorher bei der Erzeugung von Ausgangspixeln in einem vorherigen Einzelbild verwendet wurde, bestimmt werden, kann die Einheit zur Umrechung von Abfrage zu Pixel selektiv das Filtern des gegenwärtigen Satzes von gespeicherten Abfragen in einem gegenwärtigen Einzelbild einstellen, um Artefakte zu reduzieren. Auf andere Art ausgedrückt, wenn ein Satz von gespeicherten Abfragewerten vorher verwendet wurde bei der Erzeugung von ersten Ausgangspixeln in einem ersten Einzelbild, kann die Einheit zur Umrechnung von Abfrage zu Pixel selektiv das Filtern eines ähnlichen Satzes (oder des gleichen Satzes) von abgespeicherten Abfragewerten einstellen, um unterschiedliche Pixel in einem nachfolgenden Einzelbild zu erzeugen, um Artefakte zu reduzieren. In Situationen, in denen der Knotenpunkt der Kamera im wesentlichen fix bleibt, arbeitet somit die vorliegende Erfindung, indem sie den Knotenpunkt der Kamera auf subtile Weise variiert, um jegliche Artefakte, die zwischen benachbarten Einzelbildern auftreten können, zu entfernen.
  • Die vorliegende Erfindung kann ebenso angewendet werden, wo die Einheit zur Umrechnung von Abfrage in Pixel Ausgangspixel mit der gleichen Rate erzeugt wie der Grafikprozessor Abfragen in dem Abfragepufferspeicher darstellt bzw. bereitstellt, ungeachtet davon, ob der gegenwärtige Satz von gespeicherten Abfragewerten als ähnlich oder gleich zu einem vorherigen Satz von abgelegten Abfragen bestimmt wird. Beispielsweise können der graphische Softwaretreiber und/oder die graphische Anwendung und/oder die Einheit zur Umrechnung von Abfrage zu Pixel derart betrieben werden, daß sie das Filtern für ein gegenwärtiges Einzelbild von Abfragedaten einstellen basierend auf anderen Kriterientypen, wie z.B. der relativen Nähe von Objekten in dem Bild zu dem Betrachter oder auf anderen Kriterien, um zu versuchen, alle Artefakte zu entfernen.
  • Die vorliegende Erfindung beinhaltet ebenso ein Grafiksystem wie oben beschrieben wurde, in dem die Einheit zur Umrechnung von Abfrage zu Pixel 170 mit einer unterschiedlichen (z.B. höheren) Rate arbeiten kann als die Darstellungsrate. Die Einheit zur Umrechnung von Abfrage zu Pixel 10 kann somit Ausgangspixel mit einer unterschiedlichen Rate darstellen als der Grafikprozessor Abfragen zu dem Abfragepufferspeicher darstellt; z.B. ist der Grafikprozessor betreibbar, um die Mehrzahl von Abfragen zu dem Abfragepufferspeicher mit einer ersten Rate darzustellen, und die Einheit zur Umrechnung von Abfrage zu Pixel ist derart betreibbar, daß sie Ausgangspixel mit einer zweiten, größeren Rate erzeugt. Beispielsweise kann die Einheit zur Umrechnung von Abfrage zu Pixel mit einer hohen Aktualisierungsrate, z.B. 60 Hz bis 84 Hz, arbeiten und mit dieser Rate "on-the-fly" bzw. mit der Übertragung falten, wobei die Darstellungsrate die Hälfte oder ein Viertel der Faltungsrate sein kann.
  • Dies erlaubt es der einen oder den mehreren Faltungspipelines oder den Einheiten zur Umrechnung von Abfrage zu Pixel 170 on the fly unabhängig von der Darstellungsrate zu arbeiten. In diesem System ist die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betreibbar, daß sie selektiv das Filtern von gespeicherten Abfragen zwischen benachbarten Einzelbildern einstellt, wie oben beschrieben wurde, um Artefakte zu reduzieren. Mit anderen Worten, wo bestimmt wird, daß ein erster Satz von gespeicherten Abfragen früher bei der Erzeugung von Ausgangspixeln in einem ersten Einzelbild verwendet wurde, ist die Einheit zur Umrechnung von Abfrage zu Pixel derart betreibbar, daß sie selektiv das Filtern des ersten Satzes von gespeicherten Abfragen in einem nachfolgenden Einzelbild einstellt, um Artefakte zu reduzieren. Die Abfragen können somit einmal erzeugt werden und dann zwei- oder mehrere Male mit unterschiedlichen Filtern gefaltet werden, um Artefakte zu entfernen, bis der Grafikprozessor neue Abfragen in dem Abfragepuffer darstellt.
  • In dieser Ausführungsform kann das Grafiksystem Information von dem graphischen Softwaretreiber oder der graphischen Anwendung enthalten, ob derselbe Satz von Abfragedaten in benachbarten Einzelbildern verwendet wird. Alternativ dazu kann (können) die Darstellungseinheiten) und/oder die Einheiten) zur Umrechnung von Abfrage zu Pixel ein oder mehrere Bits setzen/löschen, die anzeigen, ob ein Einzelbild von dargestellten Abfragen erneut verwendet wird, um Ausgangspixel zu erzeugen, das heißt ein Einzelbild von Abfragen, die verwendet wurden, um Ausgangspixel in einem vorherigen Einzelbild zu erzeugen, ebenso verwendet werden, um Ausgangspixel in einem nachfolgenden Einzelbild zu verwenden. Wenn diese Bedingung erfaßt wird, kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 auf die Einstellung bzw. die Verstellung des Filterns für das gegenwärtige Einzelbild von Abfragedaten gerichtet werden, um zu versuchen, alle Artefakte, die zwischen den benachbarten Einzelbildern auftreten können, zu entfernen.
  • Wenn somit der graphische Softwaretreiber und/oder die graphische Anwendung und/oder die Einheit zur Umrechnung von Abfrage zu Pixel bestimmt, daß der gleiche Satz von Abfragedaten verwendet wird, um Ausgangspixel in benachbarten Einzelbildern zu erzeugen, dann kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 das Filtern für das gegenwärtige Einzelbild von Abfragedaten einstellen, um zu versuchen, alle Artefakte, die zwischen den benachbarten Einzelbildern auftreten können, zu entfernen.
  • Filtereinstellung, um einen Anzeigeeffekt zu implementieren
  • In einer anderen Ausführungsform ist die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betreibbar, daß sie das Filtern von gespeicherten Abfragen einstellt, um einen Anzeigeeffekt zu implementieren. Mehr im speziellen ist die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betreibbar, um selektiv das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern einzustellen, um einen Anzeigeeffekt zwischen den benachbarten Einzelbildern zu implementieren. Das Verfahren, das in 15 beschrieben wurde, kann somit verwendet werden, um einen Anzeigeeffekt zu implementieren. Der Anzeigeeffekt kann das Schwenken, das Zoomen, das Drehen oder das Bewegen von Szenen und andere umfassen.
  • Um Anzeigeeffekte korrekt zu implementieren, stellt (stellen) die Darstellungseinheiten) 150 die geeigneten Abfragen in den Abfragepufferspeicher dar, um sicherzustellen, daß Abfragen für den gewünschten Anzeigeeffekt vorhanden sind, z.B. Schwenken, Zoomen, Drehen, Bewegen der Szenen oder andere Funktionen. Dies bringt im wesentlichen die Darstellung von Abfragewerten mit sich, die nicht direkt anzeigbar sind, da sie außerhalb des gegenwärtig angezeigten Bereichs sind, die jedoch in einem Schwenk- oder Zoomeffekt in einem nachfolgenden Einzelbild verwendet werden würden, um zu ermöglichen, daß dieser Anzeigeeffekt korrekt arbeitet. Wenn beispielsweise ein Schwenk nach rechts gewünscht ist, kann die geeignete Anzahl von Abfragen, die rechts des gegenwärtig angezeigten Bildes positioniert sind, in den Abfragepufferspeicher dargestellt werden, so daß diese Abfragen verfügbar sind, um den Schwenkeffekt auf dem nachfolgenden Einzelbild zu implementieren.
  • Der Abfragepufferspeicher kann somit in dieser Ausführungsform Abfragen speichern entsprechend eines Bereichs, der größer als ein sichtbarer Bereich der Anzeige ist, und eine oder mehrere Abfragen von außerhalb des sichtbaren Bereichs der Anzeige können verwendet werden, um den Anzeigeeffekt zu implementieren. Im Fall eines "Hineinzoomens" können zusätzliche Abfragen außerhalb des sichtbaren Bereichs der Anzeige nicht notwendig sein. Für "Herauszoomvorgänge" und Schwenkvorgänge stellt (stellen) die Darstellungseinheiten) vorzugsweise zusätzliche Abfragen in dem Abfragepufferspeicher dar als Vorwegnahme dieser Anzeigeeffekte. Dies würde die Berechnung oder die Darstellung eines Bildes etwas breiter oder größer als ursprünglich nötig beinhalten, das heißt die Erzeugung von Abfragen außerhalb des unmittelbar anzuzeigenden Bereichs, worin die Einheit zur Umrechnung von Abfrage zu Pixel 170 arbeiten würde, um diese Anzeigeeffekte für den zweiten Faltungszyklus auf diesem Satz von Abfragedaten unter Verwendung der zusätzlichen Abfragen zu implementieren.
  • In einer Ausführungsform hat das graphische System vor dem Darstellen der Abfragen in den Abfragepufferspeicher bereits die Erscheinung des nachfolgenden Einzelbildes (z.B. den gewünschten Anzeigeeffekt) abgeschätzt, und hat somit bereits die gewünschte Verschiebung der Faltungszentren abgeschätzt. Die Darstellungseinheit 150 weiß somit a priori von dem gewünschten Anzeigeeffekt, so daß die korrekten Abfragen in den Abfragepufferspeicher dargestellt werden können. Dies führt dazu, daß nur die notwendigen zusätzlichen Daten dargestellt werden. In einer anderen Ausführungsform kann die Darstellungseinheit 150 in einer Art vorprogrammiert sein, so daß sie immer eine Anzahl von Abfragen außerhalb des gegenwärtig sichtbaren Bereichs in zwei oder mehr Richtungen, z.B. links, rechts, oben und/oder unten, darstellt, um sicherzustellen, daß Abfragen, die notwendig sind, um irgendeinen gewünschten Effekt zu implementieren, wie z.B. das Linksschwenken, das nach rechts Schwenken, das nach oben Schwenken, das nach unten Schwenken, das Herauszoomen und die Drehung und andere. Wenn die zusätzliche Darstellung ein wenig Kosten oder Verzögerung addiert, können die Darstellungseinheiten zusätzliche Abfragen um alle Kanten des Abfragepufferspeichers darstellen und das graphische System kann somit den gewünschten Anzeigeeffekt bestimmen und somit die gewünschte Verschiebung in den Faltungszentren während des nächsten Einzelbildes bestimmen.
  • Die Einheit zur Umrechnung von Abfrage zu Pixel kann das Filtern einstellen durch Einstellen einer oder mehrerer der Positionen (Zentren) der Pixel, des Filterradius und des Abstandes zwischen den Pixeln. Die Einheit zur Umrechnung von Abfrage zu Pixel kann ebenso das Filtern von gespeicherten Abfragen einstellen, um den Anzeigeeffekt auf einer Bruchteilspixelgrenze zu implementieren. Beispielsweise kann die Einheit zur Umrechnung von grenze zu implementieren. Beispielsweise kann die Einheit zur Umrechnung von Abfrage zu Pixel selektiv das Filtern von gespeicherten Abfragen in benachbarten Einzelbildern einstellen, um das Schwenken oder das Zoomen zwischen den benachbarten Einzelbildern auf einer Bruchteilpixelgrenze zu bewirken. Wenn ein Anzeigeeffekt auf einer Bruchteilpixelgrenze implementiert wird, bedeutet dies, daß der Anzeigeeffekt nicht auf ganze Pixelbewegungen eingeschränkt ist, sondern stattdessen durch eine Anzahl von ganzen und Bruchteilpixeln implementiert werden kann, z.B. ein Schwenk nach rechts um 0,25 Pixel, 0,5 Pixel oder 10,25 Pixel.
  • Ein Vorteil dieser Erfindung ist ein glatteres Schwenken oder Zoomen, wenn z.B. die Abfragen mit einer geringeren Rate als die Faltung dargestellt werden. Man nehme beispielsweise eine Situation an, bei der die Kamera in einer bestimmten Richtung verschwenkt wird oder heran- oder herausgezoomt wird und die Abfragen mit der halben Rate der Faltungsoperation dargestellt werden. In diesem Fall können im Stand der Technik zwei Faltungsoperationen auf denselben Abfragedaten durchgeführt werden und dann tritt ein Sprung zu der nächsten Schwenkposition in dem nächsten dargestellten Einzelbild auf. Entsprechend der vorliegenden Erfindung kann die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betrieben werden, daß sie die Faltungszentren in dem zweiten Faltungszyklus auf dem Satz von Abfragedaten einstellt (z.B. die Faltungszentren um 10,5 Pixel nach rechts bewegt), um die Schwenkoperation zu bewirken, selbst wenn neue Abfragedaten entsprechend dem Schwenk noch nicht in dem Abfragepufferspeicher dargestellt wurden. Hier ist es wünschenswert, daß zusätzliche Abfragedaten ursprünglich in dem Abfragepufferspeicher rechts von dem gegenwärtig sichtbaren Bereich in Vorwegnahme des Anzeigeeffekts dargestellt wurden, was während der zweiten Faltung der Abfragedaten implementiert wurde. Beispielsweise kann die Darstellungseinheit zumindest zusätzliche 10,5 Pixel rechts von dem gegenwärtig sichtbaren Bereich darstellen, um sicherzustellen, daß Abfragen vorhanden sind, um den Schwenk nach rechts um 10,5 Pixel zu implementieren.
  • Wenn ein Anzeigeeffekt gewünscht wird und wenn ein erster Satz von gespeicherten Abfragen verwendet wurde bei der Erzeugung von Ausgangspixeln in einem ersten Einzelbild, ist somit die Einheit zur Umrechnung von Abfrage zu Pixel 170 derart betreibbar, daß sie selektiv das Filtern des ersten Satzes von gespeicherten Abfragen in einem nachfolgenden Einzelbild einstellt, um den Anzeigeeffekt in dem nachfolgenden Einzelbild zu implementieren.
  • 18 und 19 Beispielhafte Einstellung von Faltunaszentren und des Radius um ein Zoomen zu implementieren
  • Die 18 und 19 stellen ein Beispiel dar, wo die Filtereinstellung der vorliegenden Erfindung verwendet werden kann, um einen Zoomanzeigeeffekt zu implementieren. 18 stellt einen repräsentativen Abschnitt von Abfragen von dem Abfragepufferspeicher dar, in dem die Faltungszentren auf entsprechenden Behältern zentriert sind und eine erste Radiusgröße haben. 19 stellt das Filtern dar, das auf ein nachfolgendes Einzelbild angewendet wird, indem dieselben oder unterschiedliche Abfragedaten verwendet werden können, und indem das Faltungszentrum und die Radiusgröße eingestellt wurden, um einen "Heranzoom"-Effekt zu implementieren. Wie in 19 gezeigt ist, wird durch Veränderung der Zentren der Faltungsfilter und des Radius der Faltungsfilter ein unterschiedlicher Anzeigeeftekt erzeugt, ohne daß irgendeine neue Darstellung von unterschiedlichen Abfragedaten in dem Abfragepufferspeicher erforderlich ist. Mit anderen Worten können die existierenden Abfragen in dem Abfragepufferspeicher in Verbindung mit einem unterschiedlichen Filtertyp verwendet werden, um unterschiedliche Anzeigeeffekte, wie z.B. das Zoomen, das Drehen, das Schwenken und das Bewegen der Szene und andere zu bewirken.
  • Die Typen der Filtervariablen, die unabhängig verändert werden können, beinhalten den Abstand zwischen den Pixeln, die Positionen der Pixel, z.B. die Faltungszentren, und den Radius der Filter und andere. Das System und das Verfahren der vorliegenden Erfindung kann verwendet werden, um diese Anzeigeeffekte auf Bruchteilpixelgrenzen zu implementieren, z.B. sind diese Effekte nicht auf ganze Pixelbewegungen beschränkt, sondern können auf einer Subpixel- oder Bruchteilpixelgrenze implementiert werden.
  • Es sei bemerkt, daß in dieser Ausführungsform es nicht notwendig sein muß, den Videotakt einzustellen, wenn das Bild sich tatsächlich bewegt. In einer anderen Ausführungsform kann das Verfahren den Videotakt einstellen, wie z.B. um ein "herangezoomtes" Bild auf einem bestimmten Ort auf der Anzeige zu positionieren oder um die Veränderung der Faltungszentren zu ergänzen, wenn sie entgegengesetzt ist, um der Gegenwirkung der Veränderung der Faltungszentren entgegenzuwirken.
  • Dieses Verfahren des Einstellens der Filterung, um einen Anzeigeeftekt zu implementieren, kann in Verbindung mit kopfverfolgenden oder augenverfolgenden Anzeigen verwendet werden. Wenn beispielsweise ein Betrachter mit einer kopfverfolgenden oder augenverfolgenden Anzeige seinen Kopf schnell wendet, kann das Verfahren auf einem gegenwärtigen Satz von dargestellten Abfragen implementiert werden, um den gewünschten Anzeigeeffekt, wie z.B. das Schwenken entsprechend der Bewegung des Benutzers, zu implementieren. Dies kann Software auf einem höheren Niveau erfordern, wie z.B. die Anwendungssoftware oder den Grafiktreiber, z.B. den Java-3D-Grafiktreiber, um Kenntnis betreffend der Grenzen, wo diese Anzeigeeffekte implementiert werden können, zu haben, einschließlich Information, wie z.B. die minimale Abschneiddistanz, den Typ der Bewegung und möglicherweise den Anzeigetyp, der verwendet wird. Somit kann der Softwaretreiber oder andere graphische Software bestimmen, wo diese Anzeigeeffekte implementiert werden können. Wenn der Anzeigeeffekt implementiert werden kann, kann das Verfahren die Bewegung in eine Kombination aus einem Schwenk und/oder einer Skalierung aufteilen, um den gewünschten Effekt zu implementieren. Beispielsweise würde der Grafiktreiber, wie z.B. ein Java-3D-Grafiktreiber, Kenntnis haben betreffend der Orientierung der Kameraposition von Einzelbild zu Einzelbild und ebenso Kenntnis haben entsprechend der Grafikumgebung. Wenn der Grafiktreiber lernt, daß die Kamera bei einem Einzelbild in einer Position ist und in dem nächsten Einzelbild exakt in derselben Position ist mit dem einzigen Unterschied, daß die Kamera gedreht wird, dann kann der Grafiktreiber das Grafiksystem derart instruieren, daß dies durch einen Schwenk oder durch einen Schwenk und eine Skalierung durch die Einstellung der Faltungszentren oder anderer Filtervariablen approximiert wird.
  • Der gewünschte Grad eines Schwenks oder einer Drehbewegung, um einen Anzeigeeffekt zu implementieren, kann von der relativen Nähe des involvierten Objektes abhängen. In einer Ausführungsform kann die Software den Grad der Verschiebung basierend auf nahen und fernen Objekten berechnen. Wo die Objekte bei einem unendlichen oder bei einem konstanten Abstand sind, wird der Grad der Verschiebung relativ einfach berechnet. Wenn die Objekte, die auf der Anzeige präsent sind, eine Mischung von Abständen haben, dann kann die Grafiksoftware den Grad der Verschiebung berechnen basierend auf einer Mittelung von ausgewählten Objekten oder basierend auf einer Augenverfolgungsinformation in Bezug auf die Konvergenz des Betrachters. Als ein Beispiel kann der Grafiktreiber bei einer einfachen Gebäudedurchwanderung vorprogrammiert werden oder "wissen", daß die meisten Objekte relativ nahe zu dem Betrachter sind und daher kann dieses Merkmal während des gesamten Durchgangs aktiviert sein. Das Grafiksystem und/oder die Software kann ebenso auf einer Einzelbildbasis den Bereich von Abständen bestimmen, um zu bestimmen, ob diese Anzeigeeffekte implementiert werden können. Wo diese Anzeigeeffekte zuviel Störung erzeugen, haben entweder die graphische Treibersoftware oder der Benutzer die Fähigkeit, dieses Merkmal abzuschalten. Es sei bemerkt, daß diese Technik am besten auf Bildern arbeitet, die einen Fokus bei einer großen Distanz relativ zu der Skalierung der inkrementellen Kamerabewegung ist. Es sei weiterhin bemerkt, daß manche perspektivischen Probleme für Bilder mit einem Fokus bei einem relativ nahen Abstand zu dem Bild auftreten.
  • 20
  • 20 ist ein Flußdiagramm, das eine Ausführungsform der Erzeugung eines Anzeigeeffekts entsprechend der vorliegenden Erfindung darstellt. Wie in Schritt 442 gezeigt ist, bestimmt das Verfahren eine Veränderung in der Position und Orientierung des dargestellten Bildes. Dieser Schritt kann durchgeführt werden durch die graphische Treibersoftware, die auf der Host-CPU ausgeführt wird, oder durch das Grafiksystem 112. In Schritt 444 bestimmt das Verfahren einen Schwenk- und/oder Skalierungswert basierend auf einem spezifizierten Punkt in dem Bild unter Verwendung der ermittelten Veränderung in der Position und der Orientierung von Schritt 442. Schritt 444 kann ebenso entweder von der Host-CPU oder von dem Grafiksystem 112 durchgeführt werden. In Antwort auf die Schritte 442 und 444 erzeugt das Verfahren in Schritt 446 die Startadresse des Faltungszentrums, die Schrittgröße und/oder den Filterradius basierend auf dem in Schritt 444 bestimmten Schwenk- und Skalierungswert. In Schritt 446 kann das Verfahren ebenso andere Filtervariablenwerte programmieren, die verwendet werden, um den gewünschten Schwenk-, Skalierungs-, Dreh- oder anderen Anzeigeeffekt zu implementieren, sofern benötigt.
  • Obgleich die Ausführungsformen oben in beachtlichem Detail beschrieben wurden, sind andere Versionen möglich. Zahlreiche Variationen und Modifikationen ergeben sich dem Fachmann, sobald die obige Offenbarung voll gewürdigt wird.

Claims (36)

  1. Grafiksystem mit einem Grafikprozessor, der so betreibbar ist, daß er eine Mehrzahl von Momentwerten bzw. Abtastungen vornimmt, einen Abfragepufferspeicher, der mit dem Grafikprozessor verbunden ist, um die Momentwerte bzw. Abfragen zu speichern, und eine Einheit zur Berechnung bzw. Umrechnung von Momentwert auf Pixel, die mit dem Momentwertpufferspeicher verbunden ist, wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist, daß sie gespeicherte Momentwerte auswählt und filtert, um Ausgangspixel für die Anzeige zu erzeugen, wobei die Einheit zur Berechnung von Momentwert auf Pixel so betreibbar ist, daß sie zumindest einen ersten der Ausgangspixel erzeugt durch Auswahl und Filtern eines Bereiches der gespeicherten Momentwerte, der eine Filterausdehnung abdeckt, die größer oder kleiner als ein einzelner Pixelbereich in dem Abfragepufferspeicher ist, wobei die Einheit zur Berechnung von Momentwert auf Pixel derart betreibbar ist, daß sie einstellt einen oder mehrere der (i) Filterzentrumsorte, an denen die Filterung der gespeicherten Momentwerte angewendet wird, der (ii) Filterwichtungsfaktoren, die in der Filterung der gespeicherten Momentwerte verwendet werden, und (iii) einen Radius der Filterausdehnung zwischen benachbarten Einzelbildern, um Artefakte zu reduzieren.
  2. Grafiksystem nach Anspruch 1, in dem die Einheit zur Berechnung von Momentwert zu Pixel derart betreibbar ist, daß sie die gespeicherten Momentwerte auswählt und filtert und die Ausgangspixel erzeugt, die direkt einer Anzeige bereitgestellt werden, ohne daß ein Einzelbildpufferspeicher dazwischengeschaltet ist.
  3. Grafiksystem nach Anspruch 1, wobei die Einheit zur Umrechnung von Momentwert auf Pixel derart ausgelegt ist, daß sie die gespeicherten Momentwerte auswählt und filtert, um die Ausgangspixel auf einer Echtzeitbasis zu bilden.
  4. Grafiksystem nach Anspruch 1, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart ausgelegt ist, daß sie die gespeicherten Momentwerte auswählt und filtert, um die Ausgangspixel während der Übertragung zu bilden.
  5. Grafiksystem nach Anspruch 1, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie die Ausgangspixel mit einer Geschwindigkeit erzeugt, die unterschiedlich zu der Entrichtung der Mehrzahl von Abtastungen des Grafikprozessors zu dem Momentwertpufferspeicher ist.
  6. Grafiksystem nach Anspruch 1, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie die Ausgangspixel mit derselben Geschwindigkeit erzeugt wie der Grafikprozessor die Mehrzahl von Momentwerten bzw. Abtastungen des Grafikprozessors zu dem Momentwertpufferspeicher ablegt.
  7. Grafiksystem nach einem der Ansprüche 1 bis 6, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie einen ersten Satz der gespeicherten Momentwerte auswählt und filtert, um erste Ausgangspixel für die Anzeige unter Verwendung eines ersten Filters zu erzeugen, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie einen zweiten Satz von gespeicherten Momentwerten auswählt und filtert, um zweite Ausgangspixel für die Anzeige unter Verwendung eines zweiten Filters, der sich von dem ersten Filter unterscheidet, zu erzeugen.
  8. Grafiksystem nach einem der Ansprüche 1 bis 6, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie wahlweise die Filterung der gespeicherten Momentwerte in den benachbarten Einzelbildern einstellt, um das Schwanken zwischen den benachbarten Einzelbildern zu bewirken, wodurch Artefakte zwischen den benachbarten Einzelbildern reduziert werden.
  9. Grafiksystem nach einem der Ansprüche 1 bis 6, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie wahlweise die Filterung der gespeicherten Momentwerte in den benachbarten Einzelbildern einstellt, um das Vergrößern bzw. Zoomen zwischen den benachbarten Einzelbildern zu bewirken, wodurch Artefakte zwischen den benachbarten Einzelbildern reduziert werden.
  10. Grafiksystem nach einem der Ansprüche 1 bis 6, in dem, wenn ein gegenwärtiger bzw. aktueller Satz der gespeicherten Momentwerte ähnlich zu einem vorherigen Satz der gespeicherten Momentwerte ist, die vorher bei der Erzeugung der Ausgangspixel in einem vorherigen Einzelbild verwendet wurden, die Einheit zur Umrechnung von Momentwert zu Pixel derart be treibbar ist, daß sie das Filtern des gegenwärtigen Satzes von gespeicherten Momentwerten in einem gegenwärtigen Einzelbild selektiv einstellt, um Artefakte zu reduzieren.
  11. Grafiksystem nach einem der Ansprüche 1 bis 6, in dem, wenn ein erster Satz der gespeicherten Momentwerte vorher bei der Erzeugung von ersten Ausgangspixeln in einem ersten Einzelbild verwendet wurde, die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie selektiv das Filtern des ersten Satzes der abgelegten Momentwerte einstellt, um unterschiedliche Ausgangspixel in einem nachfolgenden Einzelbild zu erzeugen, um Artefakte zu reduzieren.
  12. Grafiksystem nach einem der Ansprüche 1 bis 6, wobei die Einheit zur Umrechnung von Einzelwert zu Pixel derart betreibbar ist, daß sie: bestimmt, wenn ein gegenwärtiger Satz der gespeicherten Momentwerte vorher beim Erzeugen der Ausgangspixel in einem vorherigen Einzelbild verwendet wurde, selektiv das Filtern des gegenwärtigen Satzes der gespeicherten Momentwerte in einem gegenwärtigen Einzelbild einstellt, um Artefakte zu reduzieren, wenn der gegenwärtige Satz der gespeicherten Momentwerte vorher bei der Erzeugung der Ausgangspixel in dem vorherigen Bild verwendet wurde.
  13. Grafiksystem nach einem der Ansprüche 1 bis 6, wobei die Einheit zur Umrechnung von Momentwert zu Pixel einen Filter bei der Filterung der gespeicherten Momentwerte benutzt, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie selektiv die Filterzentrumspositionen, an denen der Filter während der Filterung der abgespeicherten Momentwerte angelegt wird, einstellt, um Artefakte zu reduzieren.
  14. Grafiksystem nach Anspruch 13, wobei das Grafiksystem derart betreibbar ist, daß es selektiv die Videozeitsteuerung einstellt, um die wahlweise Einstellung der Filterzentrumsstellen zu kompensieren.
  15. Grafiksystem nach Anspruch 13, bei dem die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie wahlweise die Filterzentrumsstellen in einer oder mehreren der X- oder Y-Richtungen einstellt.
  16. Grafiksystem nach Anspruch 13, wobei die Einheit zur Umrechnung von Momentwert zu Pixel derart betreibbar ist, daß sie wahlweise die Filterzentrumsstellen durch einen Subpixelabstand relativ zu den Filterzentrumsstellen einstellt, die in einem früheren Einzelbild verwendet wurden.
  17. Grafiksystem nach Anspruch 13, wobei das Grafiksystem eine Anzeige umfaßt, wobei der Momentwertpufferspeicher Momentwerte speichert, die einem Bereich entsprechen, der größer ist als ein sichtbarer Bereich der Anzeige, wobei einer oder mehrere Momentwerte außerhalb des sichtbaren Bereichs der Anzeige in einem früheren Einzelbild verwendet werden, um Ausgangspixel in einem aktuellen Bild zu erzeugen.
  18. Grafiksystem nach Anspruch 14, wobei die Einheit zur Umrechnung von Momentwert auf Pixel eine Adreßerzeugungslogik umfaßt, um Adressen zu erzeugen, welche den Filterzentrumsstellen in dem Momentwertpuffer entsprechen, wobei die Adreßerzeugungslogik so programmierbar ist, daß sie die Adresse in ausgewählten Subpixelpositionen in dem Momentwertpufferspeichererzeugt.
  19. Grafiksystem nach Anspruch 14, in dem der Filter ein Faltungsfilter ist.
  20. Verfahren zum Erzeugen von Pixeln für die Anzeige in einem Grafiksystem, wobei das Verfahren aufweist: Erfassen einer Mehrzahl von Momentwerten in einem Momentwertpufferspeicher, Auswählen und Filtern von gespeicherten Momentwerten von dem Momentwertpuffer, um Ausgangspixel für die Anzeige zu erzeugen, wobei das Filtern das Filtern eines Abschnittes der gespeicherten Momentwerte umfaßt, der eine Filterausdehnung abdeckt, die größer oder kleiner eines einzelnen Pixelbereich in dem Momentwertpufferspeicher ist, um zumindest ein erstes der Ausgangspixel zu erzeugen, wobei das Filtern weiterhin aufweist das Einstellen von einem oder mehreren der (i) Filterzentrumsorte, an denen das Filtern der gespeicherten Momentwerte angewendet wird, (ii) Filtergewichtungsfaktoren, die bei der Filterung der gespeicherten Momentwerte verwendet werden, und (iii) eines Radius der Filterausdehnung zwischen benachbarten Einzelbildern, um Artefakte zu reduzieren.
  21. Verfahren nach Anspruch 20, das weiterhin aufweist das Bereitstellen der Ausgangspixel zu einem Anzeigegerät ohne das Pufferspeichern in einem Einzelbildpufferspeicher, der zwischen der Filterung und dem Zurverfügungstellen auftritt.
  22. Verfahren nach Anspruch 20, wobei das Auswählen und Filtern der gespeicherten Momentwerte, um die Ausgangspixel zu erzeugen, auf einer Echtzeitbasis durchgeführt werden.
  23. Verfahren nach Anspruch 20, wobei das Auswählen und Filtern der gespeicherten Momentwerte, um die Ausgangspixel zu erzeugen, während der Übertragung durchgeführt werden.
  24. Verfahren nach einem der Ansprüche 20 bis 23, wobei das Auswählen und Filtern der gespeicherten Momentwerte aufweist: das Auswählen und Filtern eines ersten Satzes der gespeicherten Momentwerte, um erste Ausgangspixel für die Anzeige unter Verwendung eines ersten Filters zu erzeugen, das Auswählen und Filtern eines zweiten Satzes der gespeicherten Momentwerte, um zweite Ausgangspixel für die Anzeige zu erzeugen unter Verwendung eines zweiten Filters, der sich von dem ersten Filter unterscheidet.
  25. Verfahren nach einem der Ansprüche 20 bis 23, wobei das Filtern der gespeicherten Momentwerte das wahlweise Einstellen des Filterns der gespeicherten Momentwerte in den benachbarten Einzelbildern aufweist, um das Schwanken zwischen benachbarten Einzelbildern zu verwirklichen, wodurch Artefakte zwischen benachbarten bzw. nachfolgenden Einzelbildern reduziert werden.
  26. Verfahren nach einem der Ansprüche 20 bis 23, wobei das Filtern der gespeicherten Momentwerte aufweist das wahlweise Einstellen der Filterung der gespeicherten Momentwerte in aufeinanderfolgenden Einzelbildern, um das Vergrößern bzw. Zoomen zwischen den aufeinanderfolgenden Einzelbildern zu bewerkstelligen, wodurch Artefakte zwischen den aufeinanderfolgenden Einzelbildern reduziert werden.
  27. Verfahren nach einem der Ansprüche 20 bis 23, in dem, wenn ein gegenwärtiger Satz der gespeicherten Momentwerte ähnlich einem vorherigen Satz der gespeicherten Momentwerte ist, der vorher bei der Erzeugung der Ausgangspixel in einem vorherigen Einzelbild verwendet wurde, dann das Filtern der gespeicherten Momentwerte das wahlweise Einstellen des Filterns des gegenwärtigen Satzes der gespeicherten Momentwerte in einem gegenwärtigen Einzelbild aufweist, um Artefakte zu reduzieren.
  28. Verfahren nach einem der Ansprüche 20 bis 23, wobei dann, wenn ein erster Satz gespeicherter Momentwerte zuvor verwendet worden ist, um erste Ausgangspixel in einem ersten Einzelbild zu erzeugen, das Filtern der gespeicherten Momentwerte aufweist das wahlweise Einstellen des Filterns des ersten Satzes der gespeicherten Momentwerte, um unterschiedliche Ausgangspixel in einem nachfolgenden Einzelbild zu erzeugen, um Artefakte zu reduzieren.
  29. Verfahren nach einem der Ansprüche 20 bis 23, wobei das Erzeugen von Ausgangspixeln umfaßt: Bestimmen, ob ein aktueller Satz von gespeicherten Momentwerten zuvor beim Erzeugen der Ausgangspixel in einem früheren Einzelbild verwendet worden ist, wahlweises Einstellen des Filterns des aktuellen Satzes von gespeicherten Momentwerten in einem aktuellen Einzelbild, um Artefakte zu reduzieren, wenn der aktuelle Satz von gespeicherten Momentwerten zuvor bereits verwendet worden ist, um Ausgangspixel in dem früheren Einzelbild zu erzeugen.
  30. Verfahren nach einem der Ansprüche 20 bis 23, wobei das Filtern der gespeicherten Momentwerte, um Ausgangspixel zu erzeugen, einen Filter auf den gespeicherten Momentwerten benutzt, wobei das Filtern der gespeicherten Momentwerte, um die Ausgangspixel zu erzeugen, das wahlweise Einstellen der Filterzentrumsorte umfaßt, an denen das Filtern zwischen den benachbarten Einzelbildern verwendet wird, um Artefakte zu reduzieren.
  31. Verfahren nach Anspruch 30, das weiterhin aufweist das selektive Einstellen der Videozeitsteuerung, um die wahlweise Einstellung der Filterzentrumsorte zu kompensieren.
  32. Verfahren nach Anspruch 30, bei dem das wahlweise Einstellen der Filterzentrumsorte das wahlweise Einstellen der Filterzentrumsorte in eine oder mehrere der X-Richtung oder der Y-Richtung beinhaltet.
  33. Verfahren nach Anspruch 32, in dem das wahlweise Einstellen der Filterzentrumsorte das Einstellen der Filterzentrumsorte um einen Subpixelabstand relativ zu den in einem früheren Einzelbild verwendeten Zentralstellen aufweist.
  34. Verfahren nach Anspruch 32, in dem das Grafiksystem eine Anzeige umfaßt, wobei das Erfassen das Erfassen der Momentwerte in dem Momentwertpufferspeicher einschließt, welche einem Bereich bzw. einer Fläche entsprechen, die größer als ein sichtbarer Bereich der Anzeige ist, wobei das Filtern der gespeicherten Momentwerte die Verwendung von einem oder mehreren Momentwerten von außerhalb des sichtbaren Bereichs der Anzeige in einem vorherigen Einzelbild umfaßt, um Ausgangspixel in einem gegenwärtigen Einzelbild zu erzeugen.
  35. Verfahren nach Anspruch 32, wobei das Filtern der gespeicherten Momentwerte das Erzeugen von Adressen in dem Momentwertpufferspeicher umfaßt entsprechend den Filterzentrumsorten an ausgewählten Subpixelpositionen.
  36. Verfahren nach Anspruch 32, wobei der Filter, der bei der Filterung der gespeicherten Momentwerte verwendet wird, ein Faltungsfilter ist.
DE60000686T 1999-02-17 2000-02-17 Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung Expired - Fee Related DE60000686T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US251453 1999-02-17
US09/251,453 US6424343B1 (en) 1998-02-17 1999-02-17 Graphics system with programmable real-time sample filtering
US413104 1999-10-06
US09/413,104 US6496186B1 (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 reduced artifacts
PCT/US2000/004149 WO2000049578A1 (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 reduced artifacts

Publications (2)

Publication Number Publication Date
DE60000686D1 DE60000686D1 (de) 2002-12-05
DE60000686T2 true DE60000686T2 (de) 2004-09-16

Family

ID=26941623

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60000686T Expired - Fee Related DE60000686T2 (de) 1999-02-17 2000-02-17 Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung

Country Status (7)

Country Link
US (1) US6496186B1 (de)
EP (1) EP1161745B1 (de)
JP (1) JP2002537615A (de)
AU (1) AU3368500A (de)
CA (1) CA2362362A1 (de)
DE (1) DE60000686T2 (de)
WO (1) WO2000049578A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636222B1 (en) 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US6661422B1 (en) 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6853385B1 (en) 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6573905B1 (en) 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US7982740B2 (en) 1998-11-09 2011-07-19 Broadcom Corporation Low resolution graphics mode support using window descriptors
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US7446774B1 (en) 1998-11-09 2008-11-04 Broadcom Corporation Video and graphics system with an integrated system bridge controller
US6630945B1 (en) 1998-11-09 2003-10-07 Broadcom Corporation Graphics display system with graphics window control mechanism
US9668011B2 (en) 2001-02-05 2017-05-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Single chip set-top box system
US6975324B1 (en) 1999-11-09 2005-12-13 Broadcom Corporation Video and graphics system with a video transport processor
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
JP4029253B2 (ja) * 2000-04-10 2008-01-09 富士フイルム株式会社 画像リサイズ装置及びその方法
US6864894B1 (en) * 2000-11-17 2005-03-08 Hewlett-Packard Development Company, L.P. Single logical screen system and method for rendering graphical data
US6791553B1 (en) * 2000-11-17 2004-09-14 Hewlett-Packard Development Company, L.P. System and method for efficiently rendering a jitter enhanced graphical image
US6766063B2 (en) * 2001-02-02 2004-07-20 Avid Technology, Inc. Generation adaptive filtering for subsampling component video as input to a nonlinear editing system
US20020140706A1 (en) * 2001-03-30 2002-10-03 Peterson James R. Multi-sample method and system for rendering antialiased images
US7145577B2 (en) * 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
US6924799B2 (en) 2002-02-28 2005-08-02 Hewlett-Packard Development Company, L.P. Method, node, and network for compositing a three-dimensional stereo image from a non-stereo application
US6922199B2 (en) * 2002-08-28 2005-07-26 Micron Technology, Inc. Full-scene anti-aliasing method and system
US7443402B2 (en) * 2002-11-25 2008-10-28 Mentorwave Technologies Ltd. Method and apparatus for virtual walkthrough
US8063916B2 (en) 2003-10-22 2011-11-22 Broadcom Corporation Graphics layer reduction for video composition
US7359007B2 (en) * 2004-10-12 2008-04-15 Mediatek Inc. System for format conversion using clock adjuster and method of the same
US7330193B2 (en) * 2005-07-08 2008-02-12 Seiko Epson Corporation Low noise dithering and color palette designs
US8675004B2 (en) 2010-01-11 2014-03-18 Apple Inc. Buffer underrun handling
US20120169711A1 (en) * 2011-01-05 2012-07-05 Nokia Corporation Method and apparatus for removing image artifacts in display related mode changes
US9664539B2 (en) 2012-11-30 2017-05-30 Blackberry Limited Time stamping a sensor sample
US9265458B2 (en) 2012-12-04 2016-02-23 Sync-Think, Inc. Application of smooth pursuit cognitive testing paradigms to clinical drug development
TWI623776B (zh) * 2012-12-17 2018-05-11 Lg Innotek Co., Ltd. 設計光學基板的方法
US9380976B2 (en) 2013-03-11 2016-07-05 Sync-Think, Inc. Optical neuroinformatics
US11551636B1 (en) * 2020-09-28 2023-01-10 Meta Platforms Technologies, Llc Constrained rendering

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0313101A3 (de) 1982-07-30 1989-12-06 Honeywell Inc. Fraktionierte Pixelabbildung in einem rechnergesteuerten Abbildungssystem
DE69032932T2 (de) * 1989-11-17 1999-09-16 Digital Equipment Corp., Maynard System und Verfahren zum unverfälschten Polygonenzeichnen
US5123085A (en) 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons
US5117289A (en) 1990-04-26 1992-05-26 Lyon-Lamb Video Animation Real-time video image converter
EP0463700B1 (de) 1990-06-29 1997-09-03 Philips Electronics Uk Limited Verfahren und Gerät zur Bilderzeugung
JP3318680B2 (ja) 1992-04-28 2002-08-26 サン・マイクロシステムズ・インコーポレーテッド 画像生成方法及び画像生成装置
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
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
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
US5638176A (en) 1996-06-25 1997-06-10 International Business Machines Corporation Inexpensive interferometric eye tracking system
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

Also Published As

Publication number Publication date
DE60000686D1 (de) 2002-12-05
EP1161745A1 (de) 2001-12-12
JP2002537615A (ja) 2002-11-05
AU3368500A (en) 2000-09-04
US6496186B1 (en) 2002-12-17
WO2000049578A1 (en) 2000-08-24
EP1161745B1 (de) 2002-10-30
CA2362362A1 (en) 2000-08-24

Similar Documents

Publication Publication Date Title
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
DE60000447T2 (de) Graphisches system das muster in einem musterpuffer darstellt und in anhängigkeit von gespeicherten mustern pixel erzeugt
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
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE69610341T2 (de) 3-D-Bildertexturierung und -schattierung
DE112022003721T5 (de) Mikro-netze, eine strukturierte geometrie für computergrafik
DE60103535T2 (de) Graphisches system
DE60000450T2 (de) Graphisches system mit überabgetastetem musterpuffer mit erzeugung von ausgangspixeln unter benutzung von selektiver justierung der filterung zur implementierung von anzeigeeffekten
DE69130545T2 (de) System zur Erzeugung einer texturierten Perspektivsicht
DE69602728T2 (de) Vorrichtung zur bildmanipulation und -generation
DE69130132T2 (de) Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE60311359T2 (de) Vorrichtungen und Verfahren zur kontrollierbaren Texturabtastung
DE69901542T2 (de) Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen
DE69224499T2 (de) Dreidimensionale graphische Verarbeitung
DE69917799T2 (de) Texturierungssysteme zur verwendung in drei-dimensionalen abbildungssystemen
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
EP0984397A2 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE69606177T2 (de) Verfahren und gerät zur texturabbildung
DE3854619T2 (de) Quadratische interpolation zur schattierten bilderzeugung.
DE69428858T2 (de) Verfahren und Gerät zum Füllen von Polygonen
DE60000681T2 (de) Graphisches system mit superabtastungspuffer mit speicherung von abtastpositionsinformation
DE602004011234T2 (de) Verfahren und Vorrichtung zur Erzeugung dreidimensionaler Bilder

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee