DE60000335T2 - Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern - Google Patents

Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern

Info

Publication number
DE60000335T2
DE60000335T2 DE60000335T DE60000335T DE60000335T2 DE 60000335 T2 DE60000335 T2 DE 60000335T2 DE 60000335 T DE60000335 T DE 60000335T DE 60000335 T DE60000335 T DE 60000335T DE 60000335 T2 DE60000335 T2 DE 60000335T2
Authority
DE
Germany
Prior art keywords
sample
samples
pixel
sample buffer
query
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 - Lifetime
Application number
DE60000335T
Other languages
English (en)
Other versions
DE60000335D1 (de
Inventor
F. Deering
David Naegle
R. Nelson
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,844 external-priority patent/US6466206B1/en
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60000335D1 publication Critical patent/DE60000335D1/de
Publication of DE60000335T2 publication Critical patent/DE60000335T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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)
  • Image Processing (AREA)

Description

    TECHNISCHER HINTERGRUND DER ERFINDUNG 1. Technisches Gebiet
  • Diese Erfindung betrifft im allgemeinen das Gebiet der Computergrafik und insbesondere Grafiksysteme mit hoher Leistung.
  • 2. Stand 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. Stattdessen kann die CPU eine Anforderung an die Videokarte schicken, die besagt "zeichne eine Box bei diesen Koordinaten". Das Grafiksystem zeichnet dann die Box, was den Prozessor entlastet, so daß er andere Aufgaben leisten kann.
  • Im allgemeinen ist ein Grafiksystem in einem Computer (ebenso als Grafiksystem bezeichnet) ein Typ eines Videoadapters, der seinen eigenen Prozessor enthält, um das Leistungsniveau zu verstärken. Diese Prozessoren sind für die Berechnung von graphischen Transformationen spezialisiert, so daß sie dazu tendieren, bessere Resultate zu erzielen als die Universal-CPU, die von dem Computersystem verwendet wird. Zusätzlich entlasten sie die CPU des Computers, um andere Befehle auszuführen, während das Grafiksystem die graphischen Berechnungen handhabt. Die Popularität von graphischen Anwendungen und insbesondere von Multimediaanwendungen hat dazu geführt, daß Grafiksysteme mit hoher Leistung ein gemeinsames Merkmal von Computersystemen sind. Die meisten Computerhersteller packen nun ein Grafiksystem mit hoher Leistung in ihre Systeme.
  • Da Grafiksysteme typischerweise nur einen begrenzten Satz von Funktionen durchführen, können sie angepaßt werden und daher weit effizienter bei graphischen Operationen sein 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 schart 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 Darstellungspufferspeicher ablegen. Die Filterhardware liest dann die Abfragen aus dem Darstellungspufferspeicher, filtert die Abfragen, um Pixel zu erzeugen und legt dann die Pixel in einem traditionellen Einzelbildpufferspeicher ab. Der traditionelle Einzelbildpufferspeicher ist typischerweise doppelt puffergespeichert, wobei eine Seite verwendet wird für die Aktualisierung der Anzeigevorrichtung, währen 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 Anzeigevorrichitung 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,844 mit dem Titel "Graphics System with a Variable Resolution Sample Buffer" zeigt ein graphisches Computersystem, das einen supergesampleten Abfragepufferspeicher und eine Einheit zur Umrechnung von Abfrage in Pixel für das Aktualisieren der Anzeige verwendet. Der Grafikprozessor erzeugt eine Mehrzahl von Abfragen und legt diese in einen Abfragepufferspeicher ab. Der Grafikprozessor erzeugt und speichert vorzugsweise mehr als eine Abfrage für zumindest eine Untermenge der Pixelorte auf der Anzeige. Der Abfragewertpufferspeicher ist somit ein supergesampleter Abfragewertpufferspeicher, der eine Anzahl von Abfragewerten speichert, die weit größer als die Anzahl von Pixelorten auf der Anzeige sein kann. Die Einheit zur Umrechnung von Abfragewert in Pixel ist derart ausgelegt, daß sie die Abfragewerte von dem supergesampleten Abfragewertpufferspeicher liest und die Abfragewerte filtert oder faltet in entsprechende Ausgangspixel, wobei die Ausgangspixel dann bereitgestellt werden, um die Anzeige zu aktualisieren. Die Einheit zur Umrechnung von Abfragewert in Pixel wählt einen oder mehrere. Abfragewerte aus und filtert sie, um ein Ausgangspixel zu erzeugen. Die Einheit zur Umrechnung von Abfragewert in Pixel kann betrieben werden, um Abfragewerte zu erhalten und Pixel zu erzeugen, die direkt der Anzeige zur Verfügung gestellt werden, ohne daß ein Einzelbildipufferspeicher 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.
  • OFFENBARUNG DER ERFINDUNG
  • Der erste Aspekt der Erfindung stellt ein graphisches System zur Verfügung mit: einem oder mehreren Prozessoren, die derart konfiguriert sind, daß sie einen Satz von graphischen Daten empfangen und eine Mehrzahl von Abfragen, die auf den graphischen Daten basieren, rendern bzw. darstellen, einem Abfragepufferspeicher, der derart konfiguriert ist, daß er die Mehrzahl von Abfragen speichert, und einer Mehrzahl von Einheiten zur Umrechnung von Abfrage zu Pixel, wobei die Einheiten zur Umrechnung von Abfrage zu Pixel derart konfiguriert sind, daß sie Abfragewerte von dem Abfragepufferspeicher auswählen und filtern, um Ausgabepixel zu erzeugen, wobei die Ausgabepixel verwendbar sind, um ein Bild auf einem Anzeigegerät zu bilden, wobei jede der Einheiten zur Umrechnung von Abfrage zu Pixel derart konfiguriert ist, daß sie Abfragen von einer entsprechenden Region des Abfragepufferspeichers auswählt und filtert, um einen entsprechenden Untersatz bzw. Teilsatz von den Ausgabepixeln zu erzeugen, wobei die Einheiten zur Umrechnung von Abfragewert zu Pixel derart betreibbar sind, daß sie die Regionen des Abfragepufferspeichers auf einer Einzelbild-per-Einzelbild-Basis variieren.
  • Ein anderer Aspekt der Erfindung stellt ein Verfahren für das Rendering bzw. das Darstellen eines Satzes von graphischen Daten zur Verfügung, wobei das Verfahren aufweist: das Empfangen von graphischen Daten und das Erzeugen einer Mehrzahl von Abfragen basierend auf den graphischen Daten, das Ablegen der Abfragen in einem Ablagepufferspeicher, das Auswählen und Filtern von Abfragen von dem Abfragepufferspeicher, um Ausgabepixel zu erzeugen, wobei die Ausgabepixel verwendbar sind, um ein Bild auf einer Anzeigevorrichtung zu bilden, wobei das Auswählen und Filtern das parallele Auswählen und Filtern von Abfragen von einer Mehrzahl von Regionen des Abfragepufferspeichers umfaßt, um parallel entsprechende Teilsätze von Ausgabepixeln zu erzeugen, und das Variieren der Abfragepufferspeicherregionen auf einer Einzelbild-per-Einzelbild-Basis.
  • Ausführungsformen der Erfindung stellen ein Grafiksystem zur Verfügung, das derart ausgelegt ist, daß es einen Abfragepufferspeicher und eine Mehrzahl von parallelen Einheiten zur Umrechnung von Abfrage zu Pixel verwendet, wobei die Einheiten zur Umrechnung von Abfrage in Pixel derart konfiguriert sind, daß sie parallel auf unterschiedliche Abschnitte des Abfragepufferspeichers zugreifen. Mit Vorteil kann diese Konfiguration (abhängig von der Ausführungsform) ebenso dem Grafiksystem gestatten, einen Abfragepufferspeicher neben einem traditionellen Einzelbildpufferspeicher zu verwenden, der Pixel speichert. Da die Einheiten zur Umrechnung von Abfrage in Pixel konfiguriert werden können, um parallel zu arbeiten, kann die Latenzzeit des Grafiksystems in manchen Ausführungsformen reduziert werden.
  • In einer Ausführungsform kann das Grafiksystem einen oder mehrere Grafikprozessoren, einen Abfragepufferspeicher und eine Mehrzahl von Einheiten zur Umrechnung von Abfrage zu Pixel beinhalten. Die Grafikprozessoren können derart konfiguriert sein, daß sie einen Satz von dreidimensionalen Grafikdaten empfangen und eine Mehrzahl von Abfragen basierend auf den graphischen Daten darstellen. Der Abfragepufferspeicher kann derart konfiguriert sein, daß er die Mehrzahl von Abfragen (z.B. in einer doppelt puffergespeicherten Konfiguration) für die Einheiten zur Umrechnung von Abfrage in Pixel ablegt, die derart konfiguriert sind, daß sie Abfragewerte von dem Abfragepufferspeicher empfangen und filtern, um Ausgangspixel zu erzeugen. Die Ausgangspixel sind verwendbar, um ein Bild auf einer Anzeigevorrichtung zu bilden. Jede der Einheiten zur Umrechnung von Abfrage in Pixel ist derart konfiguriert, daß sie Pixel entsprechend einer unterschiedlichen Region des Bildes erzeugt. Die Region kann ein vertikaler Streifen (das heißt eine Säule) des Bildes, ein horizontaler Streifen (das heißt eine Zeile) des Bildes oder ein rechteckiger Abschnitt des Bildes sein. Es sei bemerkt, daß die hier verwendeten Ausdrücke "horizontale Zeile" und "horizontaler Streifen" austauschbar verwendet werden, ebenso die Ausdrücke "vertikale Spalte" und "vertikaler Streifen". Jeder Bereich kann die anderen Regionen des Bildes überlappen, um visuelle Aberrationen zu verhindern (z.B. Fugen, Linien oder Risse in dem Bild). Wie vorher bemerkt wurde, kann jede der Einheiten zur Umrechnung von Abfrage auf Pixel mit Vorteil derart konfiguriert sein, daß sie parallel auf ihrem eigenen Bereich oder ihren Regionen arbeitet. Die Einheiten zur Umrechnung von Abfrage zu Pixel sind derart konfiguriert, daß sie die Abfragen verarbeiten durch (i) Bestimmen, welche Abfragen innerhalb einer vorbestimmten Filtereinhüllenden sind, (ii) Multiplizieren derjenigen Abfragen mit einer Wichtung, (iii) Summieren der resultierenden Werte und (iv) normalisieren der Ergebnisse um Ausgangspixel zu bilden. Die Wichtungswerte können in Bezug auf die Positionen der Abfragen innerhalb der Filtereinhüllenden variieren (z.B. können die Wichtungsfaktoren kleiner werden, wenn die Abfragen sich weiter von dem Zentrum der Filtereinhüllenden entfernen). In manchen Ausführungsformen können die Wichtungsfaktoren normalisiert oder vornormalisiert werden, wobei in diesem Fall das resultierende Ausgangspixel nicht durch Normalisierung verarbeitet wird, da der Ausgang bereits normalisiert sein wird. Normalisierte Wichtungsfaktoren werden eingestellt, um sicherzustellen, daß Pixel, die mit weniger beitragenden Abfragen erzeugt wurden, nicht Pixel überdecken, die mit mehr beitragenden Abfragen erzeugt wurden. Wenn im Gegensatz dazu nicht normalisierte Wichtungsfaktoren verwendet werden, wird das resultierende Pixel typischerweise über Normalisierung verarbeitet. Normalisierung wird typischerweise durchgeführt in Ausführungsformen des Grafiksystems, die einer variablen Anzahl von Abfragen erlauben, zu jedem Ausgangspixel beizutragen. Normalisierung kann ebenso in Systemen durchgeführt werden, die variable Abfragemuster erlauben und in Systemen, in denen der Abstand der Filterzentren in Bezug auf die Abfragemuster stark variiert.
  • In manchen Ausführungsformen kann das Grafiksystem derart konfiguriert sein, daß es dynamisch die Größe oder den Typ der verwendeten Regionen verwendet (z.B. die Veränderung der Breite der vertikalen Spalte, die auf einer Einzelbild-per-Einzelbild-Basis verwendet wird). Manche Ausführungsformen des Grafiksystems können einen Einzelwertpufferspeicher mit variabler Auflösung oder variabler Dichte unterstützen. In diesen Konfigurationen ist das Grafiksystem derart ausgelegt, daß es Abfragen in bestimmten Bereichen des Bildes (z.B. dem Zentrum des Bildes oder dem Abschnitt des Bildes, auf den die Aufmerksamkeit des Betrachters am wahrscheinlichsten fokussiert ist) dichter darstellt. Mit Vorteil kann die Fähigkeit des dynamischen Variierens der Größe und/oder Form der verwendeten Bereiche erlauben, daß das Grafiksystem die Anzahl der Abfragen, die jede Einheit zur Umrechnung von Abfrage in Pixel für ein spezielles Einzelbild verarbeitet, ausgleicht (oder näher an den Ausgleich herankommt).
  • Die Abfragen können Farbkomponenten und Alpha-Komponenten (z.B. Transparenz) enthalten und können in "Behältern" gespeichert werden, um den Prozeß des Speicherns und Abfragens von Abfragewerten von dem Abfragepufferspeicher zu vereinfachen. Wie unten in größerem Detail beschrieben wird, sind Behälter ein Mittel für das Organisieren und Teilen der Abfragepufferspeicher in kleinere Sätze von Speicherorten. Zusätzlich können in manchen Ausführungsformen die dreidimensionalen graphischen Daten in einer komprimierten Form empfangen werden (z.B. unter Verwendung der geometrischen Kompression). In diesen Ausführungsformen kann das Grafiksystem derart konfiguriert sein, daß es die dreidimensionalen graphischen Daten vor der Darstellung der Abfragen dekomprimiert. Der Begriff "Farbkomponenten", so wie er hier verwendet wird, beinhaltet Information auf einer per Einzelwert- oder einer per Pixel-Basis, die verwendbar ist, um die Farbe des Pixels oder der Abfrage zu bestimmen. Beispielsweise können RGB-Information und Transparenzinformation Farbkomponenten sein.
  • In einer Ausführungsform eines Verfahrens zum Darstellen eines Satzes von dreidimensionalen graphischen Daten beinhaltet dies: (i) das Empfangen der dreidimensionalen graphischen Daten, (ii) das Erzeugen von einer oder mehreren Abfragen basierend auf den graphischen Daten, (iii) Speichern der Abfragen, (iv) Auswählen der gespeicherten Abfragen und (v) paralleles Filtern der ausgewählten Abfragen, um Ausgangspixel zu bilden. Die gespeicherten Abfragen können entsprechend einer Mehrzahl von Regionen ausgewählt werden, wie oben beschrieben wurde.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Das vorhergehende und auch die anderen Ziele, Merkmale und Vorteile dieser Erfindung können vollständiger verstanden werden unter Bezug auf die folgende detaillierte Beschreibung, wenn sie zusammen mit den begleitenden Figuren gelesen wird, in denen:
  • Fig. 1A eine Ausführungsform eines Computersystems darstellt, das eine Ausführungsform eines Grafiksystems enthält,
  • Fig. 1B eine andere Ausführungsform eines Computersystems darstellt, das ein Grafiksystem enthält,
  • Fig. 1C eine andere Ausführungsform eines Computersystems darstellt, das Teil einer virtuellen-Realität-Workstation ist,
  • Fig. 2 eine Ausführungsform eines Netzwerkes darstellt, an das die Computersysteme der Fig. 1A bis C angeschlossen werden können,
  • Fig. 3A ein Diagramm ist, das eine andere Ausführungsform des Grafiksystems von Fig. 1 als eine Workstation mit virtueller Realität darstellt,
  • Fig. 3B ein detaillierteres Diagramm ist, das eine Ausführungsform eines Grafiksystems mit einem Abfragewertpufferspeicher darstellt,
  • Fig. 4 eine traditionelle Pixelberechnung darstellt,
  • Fig. 5A eine Ausführungsform des Supersamplings darstellt,
  • Fig. 5B eine Zufallsverteilung von Abfragewerten darstellt,
  • Fig. 6 Details einer Ausführungsform eines Grafiksystems darstellt mit einer Ausführungsform eines supergesampleten Abfragepufferspeichers variabler Auflösung,
  • Fig. 7 Details einer anderen Ausführungsform eines Grafiksystems mit einer Ausführungsform eines supergesampleten Abfragewertpufferspeichers mit variabler Auflösung und einem doppelt gepufferten Abfragewertpositionsspeicher darstellt,
  • Fig. 8 Details von drei unterschiedlichen Ausführungsformen von Abfragewertpositionsschemata darstellt,
  • Fig. 9 Details einer Ausführungsform eines Abfragewertpositionierungsschemas darstellt,
  • Fig. 10 Details einer anderen Ausführungsform eines Abfragewertpositionierungsschemas darstellt,
  • Fig. 11A Details einer Ausführungsform eines Grafiksystems darstellt, das derart konfiguriert ist, daß es parallel Abfragewerte in Pixel unter Verwendung von vertikalen Schirmstreifen (Spalten) umwandelt,
  • Fig. 11B Details einer anderen Ausführungsform eines Grafiksystems darstellt, das derart konfiguriert ist, daß es parallel Abfragen in Pixel unter Verwendung von vertikalen Schirmstreifen (Spalten) umwandelt,
  • Fig. 12 Details einer anderen Ausführungsform eines Grafiksystems darstellt, das derart konfiguriert ist, daß es parallel Abfragewerte in Pixel unter Verwendung von horizontalen Schirmstreifen (Zeilen) umwandelt,
  • Fig. 13 Details einer anderen Ausführungsform eines (Grafiksystems darstellt, das derart konfiguriert ist, daß es parallel Abfragen in Pixel unter Verwendung von rechteckigen Bereichen umwandelt,
  • Fig. 14 Details eines Verfahrens zum Lesen von Abfragen von einem Abfragepufferspeicher darstellt,
  • Fig. 15 Details einer Ausführungsform eines Verfahrens für das Handeln mit Grenzbedingungen darstellt,
  • Fig. 16 Details einer anderen Ausführungsform eines Verfahrens für das Handeln mit Grenzbedingungen darstellt,
  • Fig. 17 ein Flußdiagramm ist, das eine Ausführungsfarm eines Verfahrens zum Zeichnen von Abfragen in einen supergesampleten Abfragepufferspeicher darstellt,
  • Fig. 18 eine Ausführungsform eines Verfahrens für die Codierung von Dreieck-Eckpunkten darstellt,
  • Fig. 19 eine Ausführungsform eines Verfahrens zum Berechnen von Pixeln aus Abfragewerten darstellt,
  • Fig. 20 Details einer Ausführungsform einer Umrechnung von Abfrage in Pixel für einen Beispielsatz von Abfragen darstellt,
  • Fig. 21 eine Ausführungsform eines Verfahrens für die Variation der Abfragedichte darstellt,
  • Fig. 22 eine andere Ausführungsform eines Verfahrens zum Variieren der Dichte der Abfragen darstellt,
  • Fig. 23 noch eine andere Ausführungsform eines Verfahrens zum Variieren der Dichte von Abfragen darstellt,
  • Fig. 24A-B Details einer Ausführungsform eines Verfahrens für die Verwendung der Augenverfolgung darstellt, um die Dichte von Abfragen zu variieren, und
  • Fig. 25A-B Details einer Ausführungsform eines Verfahrens für die Verwendung der Augenverfolgung aufweist, um die Dichte der Abfragen zu variieren.
  • Während die Erfindung verschiedene Modifikationen und alternative Formen zuläßt, sind die spezifischen Ausführungsformen hiervon in den Zeichnungen beispielhaft gezeigt und werden hier im Detail beschrieben.
  • ART(EN) FÜR DAS AUSFÜHREN DER ERFINDUNG Computersystem - Fig. 1A
  • In Fig. 1A ist eine Ausführungsform eines Computersystems 80 gezeigt, das ein dreidimensionales (3D-) Grafiksystem beinhaltet. Das 3D-Grafiksystem kann in irgendeinem von verschiedenen Systemen enthalten sein, einschließlich eines Computersystems, eines Netzwerk-PCs, einer Internetanwendung, einem Fernseher, einschließlich HDTV-Systemen und interaktiven Fernsehsystemen, persönlichen digitalen Assistenten (PDAs) und anderen Geräten, die unter anderem 2D- und/oder 3D-Grafik anzeigen.
  • Wie gezeigt, weist das Computersystem 80 eine Systemeinheit 82 und einen Videomonitor oder ein Anzeigegerät 84 auf, das mit der Systemeinheit 82 verbunden ist. Das Anzeigegerät 84 kann einer von verschiedenen Typen von Anzeigemonitoren oder Geräten sein (z.B. ein CRT-, LCD- oder Plasmaschirm). Verschiedene Eingabegeräte können mit dem Computersystem verbunden sein, einschließlich einer Tastatur 86 und/oder einer Maus 88 oder einem anderen Eingabegerät (z.B. einem Trackball, einem Digitalisiertablett, einem Tablett, Eingabegeräten mit sechs Freiheitsgraden, Kopfverfolger, Augenverfolger, Datenhandschuh, Körpersensoren usw.). Anwendungssoftware kann von dem Computersystem 80 ausgeführt werden, um 3D-Grafikobjekte auf dem Anzeigegerät 84 anzuzeigen. Wie weiter unten beschrieben wird, beinhaltet das 3D-Grafiksystem in dem Computersystem 80 einen supergesampleten Abfragewertpufferspeicher mit einer programmierbaren Einheit zur Umrechnung von Abfrage zu Pixel in Echtzeit, um die Qualität und den Realismus der auf der Anzeigevorrichtung 84 dargestellten Bilder zu verbessern.
  • Das Computersystem 80 kann ebenso einen Augenverfolgungssensor 92 und/oder eine 3D- Brille 90 beinhalten. 3D-Brillen 90 können aktiv (z.B. vom LCD-Blendentyp) oder passiv (z.B. polarisiert, rot-grün usw.) sein und können dem Benutzer erlauben, ein dreidimensionales Bild auf dem Anzeigegerät 84 zu sehen. Mit der Brille 90 empfängt jedes Auge ein leicht unterschiedliches Bild, was das Gehirn des Betrachters als eine "wahre" dreidimensionale Ansicht interpretiert. Der Sensor 92 kann derart konfiguriert sein, daß er bestimmt, auf welchen Teil des Bildes auf dem Anzeigegerät 84 der Betrachter blickt (das heißt, daß das Sichtfeld des Betrachters hierauf zentriert ist). Die Information, die von dem Sensor 92 zur Verfügung gestellt wird, kann in einer Anzahl von unterschiedlichen Arten und Weisen verwendet werden, wie unten beschrieben werden wird.
  • Computersystem mit virtueller Realität - Fig. 1B
  • Fig. 1B stellt eine andere Ausführungsform eines Computersystems 70 dar. In dieser Ausführungsform weist das System eine am Kopf montierte Anzeigevorrichtung 72, Kopfverfolgungssensoren 74 und einen Datenhandschuh 26 auf. Die am Kopf montierte Anzeige 72 kann mit einer Systemeinheit 82 über eine optische Faserverbindung 94 oder eine oder mehrere der folgenden Verbindungen verbunden sein: eine elektrisch konduktive Verbindung, eine Infrarotverbindung oder eine Funk- (z.B. Hochfrequenz-) Verbindung. Andere Ausführungsformen sind möglich und wurden in Betracht gezogen.
  • Computernetzwerk - Fig. 2
  • In Fig. 2 ist ein Computernetzwerk 500 gezeigt, das zumindest einen Servercomputer 502 und einen oder mehrere Clientcomputer 506A-N aufweist. (In der Ausführungsform, die in Fig. 4 gezeigt ist, sind die Clientcomputer 506A-B dargestellt.) Eines oder mehrere der Clientsysteme kann (können) ähnlich wie das Computersystem 80 konfiguriert sein, wobei jedes eines oder mehrere Grafiksysteme 112 hat, wie oben beschrieben wurde. Der Server 502 und der (die) Client(s) 506 können über eine Vielzahl von Verbindungen 504, wie z.B. ein lokales Netzwerk (LAN), ein Weitbereichsnetz (WAN) oder eine Internetverbindung miteinander verbunden sein. In einer Ausführungsform kann der Server 502 3D-geometrische Daten (die komprimiert sein können) speichern und zu einem oder mehreren Clients 506 übertragen. Die Clients 506 empfangen die komprimierten 3D- geometrischen Daten, dekomprimieren sie (sofern notwendig) und stellen dann die geometrischen Daten dar. Das dargestellte Bild wird dann auf der Anzeigevorrichtung des Clients angezeigt. Die Clients stellen die geometrischen Daten dar und zeigen das Bild an unter Verwendung von supergesampleten Abfragepufferspeicher- und Echtzeitfiltertechniken, die oben beschrieben wurden. In einer anderen Ausführungsform können die komprimierten 3D-geometrischen Daten zwischen den Clientcomputern 506 übertragen werden.
  • Blockdiagramm des Computersystems - Fig. 3A
  • Fig. 3A stellt ein vereinfachtes Blockdiagramm für ein Computersystem 80 dar. Die Elemente des Computersystems 80, die nicht für ein Verständnis der vorliegenden Erfindung notwendig sind, sind aus Gründen der Bequemlichkeit unterdrückt worden. Das Computersystem 80 weist eine Host-Hauptprozessoreinheit (CPU) 102 und ein 3D-Grafiksystem 112 auf, die mit dem Systembus 104 verbunden sind. Ein Systemspeicher 106 kann ebenso mit dem Systembus 104 verbunden sein.
  • Die Host-CPU 102 kann durch irgendeine einer Vielzahl von Prozessortechnologien realisiert sein. Beispielsweise kann die Host-CPU 102 einen oder mehrere Universal-Mikroprozessoren, Parallelprozessoren, Vektorprozessoren, digitale Signalprozessoren usw. oder irgendeine Kombination hieraus aufweisen. Der Systemspeicher 106 kann ein oder mehrere Speichersubsysteme beinhalten, die unterschiedliche Typen von Speichertechnologie darstellen. Beispielsweise kann der Systemspeicher 106 Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM) - wie z.B. statischer Direktzugriffsspeicher (SRAM), synchron-dynamischer Direktzugriffsspeicher (SDRAM) und dynamischer Rambus-Direktzugriffsspeicher (RDRAM) - und Massenspeichergeräte beinhalten.
  • Der Systembus 104 kann einen oder mehrere Kommunikationsbusse oder Host- Computerbusse (für die Datenkommunikation zwischen den Host-Prozessoren und den Speichersubsystemen) aufweisen. Zusätzlich können verschiedene externe Geräte und externe Busse mit dem Systembus 104 verbunden sein.
  • Das Grafiksystem 112 ist entsprechend den Prinzipien der vorliegenden Erfindung konfiguriert und kann mit dem Systembus 104 mittels eines Kreuzschienenwählers bzw. Koordinatenschalters oder irgendeines anderen Typs von Busverbindungslogik verbunden sein. Das Grafiksystem 112 treibt jedes der Projektionsgeräte PD&sub1;-PDL und das Anzeigegerät 84 mit einem entsprechenden Videosignal an.
  • Es sei bemerkt, daß das 3D-Grafiksystem 112 zusätzlich zu der Verbindung mit dem Systembus 104 mit einem oder mehreren Bussen von verschiedenen Typen verbunden sein kann. Darüber hinaus kann das 3D-Grafiksystem 112 mit einem Kommunikationsanschluß verbunden sein und dadurch direkt von einer externen Quelle (wie z.B. dem Internet oder einem lokalen Netzwerk) graphische Daten empfangen.
  • Die Host-CPU 102 kann Informationen zu/von dem Grafiksystem 112 entsprechend einem programmierten Eingabe-/Ausgabe- (I/O-) Protokoll über den Systembus 104 übertragen. Alternativ dazu kann das Grafiksystem 112 auf den Systemspeicher 106 entsprechend einem Direktzugriffsspeicher (DMA-) oder ein intelligentes Busmastering zugreifen.
  • Ein Grafikanwendungsprogramm, das den Standard einer Anwendungsprogrammierschnittstelle (API) erfüllt, wie z.B. OpenGL® (eine eingetragene Marke von Silicon Graphics, Inc.) oder Java3DTM (ein Warenzeichen der Sun Microsystems, Inc.), kann auf der Host-CPU 102 ausgeführt werden und Befehle und Daten erzeugen, die ein geometrisches Grundelement, wie z.B. ein Polygon, für die Ausgabe auf den Projektionsgeräten PD&sub1; bis POL und/oder der Anzeigevorrichtung 84 definieren. Die Host-CPU 102 kann diese Grafikdaten zu dem Systemspeicher 106 übertragen. Die Host-CPU 102 kann daher die Grafikdaten zu dem Grafiksystem 112 über den Systembus 104 übertragen. In einer anderen Ausführungsform kann das Grafiksystem 112 die geometrische Datenanordnung von dem Systemspeicher 106 unter Verwendung von DMA-Zugriffszyklen einlesen. In noch einer anderen Ausführungsform kann das Grafiksystem 112 über einen direkten Anschluß, wie z.B. ein verbesserter Grafikanschluß (AGP), wie er von Intel Corporation vertrieben wird, verbunden sein.
  • Das Grafiksystem 112 kann graphische Daten von irgendeiner Quelle erhalten einschließlich der Host-CPU 102, dem Systemspeicher 106 oder irgendeinem anderen Speicher, externen Quellen, wie z.B. einem Netzwerk (z.B. das Internet) oder einem Sendemedium (z.B. Fernsehen).
  • 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.
  • Während das Grafiksystem 112 als Teil des Computersystems 80 dargestellt worden ist, kann das Grafiksystem 112 ebenso auch als Einzelgerät konfiguriert sein. Das Grafiksystem 112 kann ebenso als ein 1-Chip-Gerät oder als Teil eines Systems auf einem Chip oder als ein Mehrfachchipmodul konfiguriert sein.
  • Das Grafiksystem 112 kann in irgendeinem einer Vielzahl von Systemen aufgenommen sein, einschließlich einem Netzwerk-PC, einer Internetanwendung, einem Fernseher (einschließlich eines HDTV-Systems oder eines interaktiven Fernsehsystems), einem persönlichen digitalen Assistenten (PDA) oder anderen Geräten, die 2D- und/oder 3D-Grafik anzeigen.
  • Wie unten weiter beschrieben wird, beinhaltet das 3D-Grafiksystem innerhalb des Computersystems 80 einen supergesampleten Abfragewertpufferspeicher und eine Mehrzahl von programmierbaren Einheiten zum Umrechnen von Abfrage zu Pixel, um die Qualität und den Realismus der durch die Anzeigegeräte PD&sub1; bis PDL und/oder des Anzeigegerätes 84 dargestellten Bildern zu verbessern. Jede Einheit zur Umrechnung von Abfrage in Pixel kann eine Filter- (z.B. Faltungs-) Pipeline oder andere Hardware für die Erzeugung von Pixelwerten (z.B. Rot-, Grün- und Blauwerten) basierend auf den Abfragen in dem Abfragepufferspeicher beinhalten. Jede Einheit zur Umrechnung von Abfragewert in Pixel kann Abfragen von dem Abfragepufferspeicher erhalten und Pixelwerte erzeugen, die irgendeinem der Projektionsgeräte PD&sub1; bis PDL oder der Anzeigevorrichtung 84 bereitgestellt werden. Die Einheiten zur Umrechnung von Abfrage in Pixel können in einer "Echtzeit"- Art und Weise oder in einer "on the fly" Art und Weise bzw. während der Übertragung betrieben werden.
  • Die Begriffe "Filter" und "Faltung" werden hier untereinander austauschbar verwendet. Der Begriff "Echtzeit", wie er hier verwendet wird, bezieht sich auf ein Verfahren oder eine Operation, die bei oder nahezu bei der Bildwiederholfrequenz der Projektionsgeräte PD&sub1; bis PDL oder des Anzeigegeräts 84 durchgeführt wird. Der Begriff "on the fly" bezieht sich auf ein Verfahren oder eine Operation, die Bilder mit einer Rate erzeugt, die nahe oder oberhalb der minimalen Rate ist, die erforderlich ist für die angezeigte Bewegung, um glatt (das heißt mit Bewegungsverschmelzung) zu erscheinen, und für die Lichtintensität, um kontinuierlich (das heißt mit Flackerfusion) zu erscheinen. Diese Konzepte werden weiter beschrieben in dem Buch "Spacial Vision" von Russel L. De Valois und Karen K. De Valois, Oxford University Press, 1988.
  • Grafiksystem - Fig. 3B
  • Fig. 3B stellt ein Blockdiagramm für eine Ausführungsform eines Grafiksystems 112 gemäß der vorliegenden Erfindung dar. Das Grafiksystem 112 kann eine Grafikverarbeitungseinheit (GPU) 90, einen oder mehrere supergesamplete Abfragewertpufferspeicher 162 und eine oder mehrere Einheiten 170-1 bis 170-V zur Umrechnung von Abfrage zu Pixel aufweisen. Das Grafiksystem 112 kann ebenso einen oder mehrere Digital-/Analog-Wandler (DACs) 178-1 bis 178-L aufweisen. Die grafikverarbeitende Einheit 90 kann ebenso irgendeine Kombination der Prozessortechnologien aufweisen. Beispielsweise kann die grafikverarbeitende Einheit 90 spezialisierte Grafikprozessoren oder Berechnungseinheiten, Multimediaprozessoren, DSPs oder Allzweckprozessoren aufweisen.
  • In einer Ausführungsform kann die grafikverarbeitende Einheit 90 eine oder mehrere Darstellungseinheiten 150A-D aufweisen. Die grafikverarbeitende Einheit 90 kann ebenso eine oder mehrere Steuereinheiten 140, einen oder mehrere Datenspeicher 152A-D und eine oder mehrere Verzeichniseinheiten 154 aufweisen. Der Abfragepufferspeicher 162 kann einen oder mehrere Abfragespeicher 160A-160N aufweisen.
  • A. Steuereinheit 140
  • 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. Die graphische Datenkomprimierung kann mit Vorteil die erforderliche Übertragungsbandbreite zwischen dem Computersystem 80 und dem Grafiksystem 112 reduzieren. In einer Ausführungsform kann die Steuereinheit 140 derart konfiguriert sein, daß sie den empfangenen Datenstrom aufteilt und zu den Darstellungseinheiten 150A-D in komprimierter Form leitet.
  • Die Grafikdaten können eines oder mehrere graphische Grundelemente enthalten. Der Begriff "graphische Grundelemente" beinhaltet, wie er hier verwendet wird, Polygone, parametrische Oberflächen, Splines, NURBS (nicht gleichförmige, rationale B-Splines), unterteilte Oberflächen, Fraktale, Volumengrundelemente und Teilchensysteme. Diese graphischen Grundelemente sind im Detail in dem Lehrbuch beschrieben mit dem Titel "Computer Graphics: Principles and Practice" von James D. Foley et al., veröffentlicht von Addison-Wesley Publishing Co., Inc., 1996.
  • Es sei bemerkt, daß die Ausführungsformen und Beispiele der Erfindung, die hier dargestellt sind, aus Gründen der Einfachheit mit Polygonen beschrieben sind. Es kann jedoch stattdessen oder zusätzlich zu den Polygonen in diesen Ausführungsformen und Beispielen jeder Typ von graphischem Grundelement verwendet werden.
  • B. Darstellungseinheiten
  • Die Darstellungseinheiten 150A-D (ebenso hier als Zeicheneinheiten bezeichnet) sind derart ausgelegt, daß sie Grafikbefehle und Daten von der Steuereinheit 140 empfangen und dann eine Anzahl von Funktionen durchführen, die von der genauen Implementierung abhängen. Beispielsweise können die Darstellungseinheiten 150A-D derart konfiguriert sein, daß sie die Dekomprimierung (wenn die empfangenen Daten in komprimierter Form präsentiert werden), die Transformation, das Clipping, das Lighting, die Texturdarstellung, die Tiefeninformation, die Transparenzverarbeitung, die Einstellung bzw. den Set-Up, die Bestimmung des sichtbaren Objektes und die virtuelle Schirmdarstellung von verschiedenen graphischen Grundelementen, die innerhalb der graphischen Daten auftreten, durchführen.
  • 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, Voxel oder Freiformoberflächen in drei Dimensionen). Jede Darstellungseinheit 150 kann irgendein geeigneter Typ von Hochleistungsprozessor sein (z.B. ein spezialisierter Grafikprozessor oder Berechnungseinheit, ein Multimediaprozessor, ein digitaler Signalprozessor oder ein Allzweckprozessor).
  • Transformation bzw. Umwandlung bezieht sich auf die Anwendung einer geometrischen Operation auf ein Grundelement oder ein Objekt, das einen Satz von Grundelementen aufweist. Beispielsweise kann ein Objekt, das durch einen Satz von Eckpunkten in einem lokalen Koordinatensystem dargestellt wird, in dem Welt-Raum mit willkürlicher Position, Orientierung und Größe eingebettet sein unter Verwendung einer geeigneten Abfolge von Translations-, Rotations- und Skalierungstransformationen. Die Transformation kann ebenso die Reflexion, das Verzerren oder jede andere affine Transformation umfassen. Allgemeiner gesagt können Transformationen nicht lineare Operationen aufweisen.
  • Lighting bzw. Beleuchtung bezieht sich auf die Berechnung der Illumination von Objekten. Lighting-Berechnungen resultieren in einer Zuweisung von Farbe und/oder Helligkeit zu Objekten oder zu ausgewählten Punkten (z.B. Eckpunkten) auf Objekten. Abhängig von dem verwendeten Schattierungsalgorithmus (z.B. konstant, Gourand- oder Phong-Schattierung) kann das Lighting an einer Anzahl von unterschiedlichen Orten beurteilt werden. Wenn beispielsweise konstante Schattierung verwendet wird (das heißt, die beleuchtete Oberfläche eines Polygons wird einem konstanten Beleuchtungswert zugewiesen), 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 Abfragewertbasis.
  • Clipping bzw. Abschneiden bezieht sich auf die Eliminierung von graphischen Grundelementen oder von Abschnitten von graphischen Grundelementen, die außerhalb eines dreidimensionalen Sichtvolumens in dem Welt-Raum liegen. Das 3D-Sichtvolumen kann den Abschnitt des Welt- Raumes darstellen, der für einen virtuellen Beobachter, der in dem Welt-Raum liegt, sichtbar ist. Beispielsweise kann das Sichtvolumen ein Vollkonus sein, der von einem 2D-Sichtfenster und einem Sichtpunkt, der in dem Welt-Raum lokalisiert ist, erzeugt wird. Der Vollkonus kann als die Vereinigung von allen Strahlen, die von dem Sichtpunkt ausgehen und durch das Sichtfenster treten, vorgestellt werden. Der Sichtpunkt kann den Ort des virtuellen Beobachters im Welt-Raum darstellen. Grundelemente oder Teile von Grundelementen, die außerhalb des 3D-Sichtvolumens liegen, sind gegenwärtig nicht sichtbar und können von der weiteren Verarbeitung eliminiert werden. Grundelemente oder Teile von Grundelementen, die innerhalb des 3D-Sichtvolumens liegen, sind Kandidaten für die Projektion auf das 2D-Sichtfenster.
  • Um die Clipping- und Projektionsberechnungen zu vereinfachen, können Grundelemente in ein zweites, einfacheres Koordinatensystem transformiert werden, das hier als das Darstellungsfensterkoordinatensystem bezeichnet wird in Darstellungsfensterkoordinaten ist das Sichtvolumen auf ein kanonisches 3D-Darstellungsfenster abgebildet, das für das Clipping bequemer ist. Der Begriff Setup bzw. Einstellung bezieht sich auf diese Abbildung von graphischen Grundelementen auf Darstellungsfensterkoordinaten.
  • Graphische Grundelemente oder Teile von Grundelementen, die die Clipping-Berechnung überleben, können auf ein 2D-Darstellungsfenster projiziert werden, abhängig von dem Ergebnis der Sichtbarkeitsberechnung. Anstelle des Clippings in 3D können graphische Grundelemente auf eine 2D-Sichtebene (welche das 2D-Darstellungsfenster beinhaltet) projiziert werden und dann unter Bezug auf das 2D-Darstellungsfenster abgeschnitten werden.
  • Die virtuelle Anzeigedarstellung bezieht sich auf die Berechnungen, die durchgeführt werden, um Abfragewerte für projizierte graphische Grundelemente zu erzeugen. Beispielsweise können die Eckpunkte eines Dreiecks in 3D auf das 2D-Darstellungsfenster projiziert werden. Das projizierte Dreieck kann mit Abfragen bevölkert sein und Werte (z.B. Rot-, Grün-, Blau- und z-Werte) können den Abfragen zugewiesen sein, basierend auf den entsprechenden Werten, die bereits für die projizierten Eckpunkte bestimmt wurden. Beispielsweise kann der Rotwert für jede Abfrage in dem projizierten Dreieck aus den bekannten Rotwerten der Eckpunkte interpoliert werden. Diese Werte der Abfrage für das projizierte Dreieck können in dem Abfragepufferspeicher 162 abgelegt werden. Abhängig von der Ausführungsform speichert der Abfragepufferspeicher 16 ebenso einen z- Wert für jede Abfrage. Dieser z-Wert wird aus einer Anzahl von Gründen, einschließlich des tiefen Pufferspeicherns, mit der Abfrage abgelegt. Wenn Abfragen für aufeinanderfolgende Grundelemente dargestellt werden, wird ein virtuelles Bild in dem Abfragepufferspeicher 162 gesammelt. Das 2D- Darstellungsfenster wird somit als virtueller Schirm bezeichnet, auf dem das virtuelle Bild dargestellt wird. Die Abfragewerte, die das virtuelle Bild aufweisen, werden ün dem Abfragepufferspeicher 162 abgelegt. Punkte in dem 2D-Darstellungsfenster werden in Form von virtuellen Schirmkoordinaten X und Y beschrieben und es wird gesagt, daß sie in dem virtuellen Schirmraum residieren.
  • Wenn das virtuelle Bild vollständig ist, das heißt, wenn alle graphischen Grundelemente dargestellt wurden, können die Einheiten 170 zur Umrechnung von Abfrage zu Pixel auf die Abfragen zugreifen, die das virtuelle Bild umfassen, und die Abfragen filtern, um die Pixelwerte zu erzeugen. Mit anderen Worten können die Einheiten 170 zur Umrechnung von Abfrage zu Pixel eine örtliche Faltung des virtuellen Bildes in Bezug auf einen Faltungskern f(x,y) durchführen, um Pixelwerte zu erzeugen. Beispielsweise kann ein Rotwert Rp für ein Pixel P an jedem Ort (Xp, Yp) in dem virtuellen Schirmraum berechnet werden, basierend auf der Beziehung
  • wobei die Summation über die Abfragen (Xk, Yk) in der Nachbarschaft des Ortes (Xp, Yp) durchgeführt wird. Da der Faltungskern f(X,Y) nur in einer Nachbarschaft des Ursprungs nicht null ist, kann der verschobene Kern f(X-Xp,Y-Yp) nur in einer Nachbarschaft des Ortes (Xp, Yp) einen Wert ungleich null einnehmen. Der Wert E ist ein Normalisierungswert, der entsprechend der Beziehung
  • E = f(Xk - Xp,Yk - Yp)
  • berechnet werden kann, wobei die Summation in derselben Nachbarschaft wie oben durchgeführt wird. Die Summation für den normalisierten Wert E kann parallel mit der Summation für den roten Pixelwert Rp durchgeführt werden. Der Ort (Xp, Yp) kann als ein Pixelzentrum oder Pixelursprung bezeichnet werden. In dem Fall, in dem der Faltungskern f(X,Y) symmetrisch in Bezug auf den Ursprung (0,0) ist, kann der Begriff Pixelzentrum verwendet werden.
  • Die Pixelwerte können den Projektionsgeräten PD&sub1; bis PDL für die Anzeige auf dem Projektionsschirm SCR angeboten werden. Die Projektionsgeräte erzeugen jeweils einen Abschnitt eines integrierten Bildes IMG. Die Einheiten 170 zur Umrechnung von Abfrage zu Pixel können ebenso Pixelwerte für die Anzeige auf dem Anzeigegerät 84 erzeugen.
  • In der Ausführungsform des Grafiksystems 112, das in Fig. 3 gezeigt ist, berechnen die Darstellungseinheiten 150A-D Abfragewerte anstelle von Pixelwerten. Dies erlaubt es den Darstellungseinheiten 150A-D, das Supersampling durchzuführen, das heißt, mehr als eine Abfrage pro Pixel zu berechnen. Supersampling in dem Kontext der vorliegenden Erfindung wird unten gründlicher diskutiert. Mehr Details über das Supersampling werden in den folgenden Büchern diskutiert: "Principles of Digital Image Synthesis" von Andrew Glassner, 1995, Morgan Kaufman Publishing (Band 1), und "Renderman Companion:" von Steve Upstill, 1990, Addison-Wesley Publishing.
  • Der Abfragepufferspeicher 162 kann doppelt gepuffert sein, so daß die Darstellungseinheiten 150A-D Abfragen für ein erstes virtuelles Bild in einem ersten Abschnitt des Abfragepufferspeichers 162 schreiben können, während ein zweites virtuelles Bild gleichzeitig von einem zweiten Abschnitt des Abfragepufferspeichers 162 durch die Einheiten 170 zur Umrechnung von Abfrage zu Pixel gelesen wird.
  • Es sei bemerkt, daß das 2D-Darstellungsfenster und das virtuelle Bild, das mit Abfragen in dem Abfragepufferspeicher 162 dargestellt wird, einer Fläche entsprechen kann, die größer ist als die Fläche, die physikalisch als integriertes Bild IMG oder Anzeigebild DIM dargestellt wird. Beispielsweise kann das 2D-Darstellungsfenster ein sichtbares Unterfenster beinhalten. Das sichtbare Unterfenster kann dem integrierten Bild IMG und/oder dem Anzeiciebild DIM entsprechen, während die Randfläche des 2D-Darstellungsfensters (außerhalb des sichtbaren Unterfensters) verschiedene Effekte erlauben kann, wie z.B. das Schwenken und Zoomen. Mit anderen Worten wird nur der Teil des virtuellen Bildes physikalisch dargestellt, der innerhalb des sichtbaren Unterfensters liegt. In einer Ausführungsform ist das sichtbare Unterfenster gleich dem gesamten 2D-Darstellungsfenster. In diesem Fall wird alles von dem virtuellen Bild physikalisch angezeigt.
  • Es sei bemerkt, daß die Darstellungseinheiten 150A-D eine Anzahl von kleineren und spezialisierteren funktionalen Einheiten aufweisen können, z.B. eine oder mehrere Setup- /Dekomprimierungseinheiten und eine oder mehrere Belichtungseinheiten.
  • C. Datenspeicher
  • Jede der Darstellungseinheiten 150A-D kann mit einem der entsprechenden Befehls- und Datenspeicher 152A-D verbunden sein. In einer Ausführungsform kann jeder der Speicher 152A-D derart konfiguriert sein, daß er sowohl Daten als auch Befehle für eine entsprechende Darstellungseinheit 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 jeder Darstellungseinheit zu unterstützen. Datenspeicher 152A-D können ebenso als Textur- und Darstellungsspeicher 152A-D bezeichnet werden.
  • 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ähler implementiert sein.
  • E. Abfragespeicher
  • Der supergesamplete Abfragepufferspeicher 162 weist Abfragespeicher 160A-160N auf, die derart konfiguriert sind, daß sie die Mehrzahl der Abfragen, die von den Darstellungseinheiten 150A- D erzeugt wurden, speichern. Der Begriff "Abfragepufferspeicher" wie er hier verwendet wird, bezieht sich auf einen oder mehrere Speicher, die Abfragen ablegen. Wie vorher erwähnt wurde, können Abfragen gefiltert sein, um jeden Ausgangspixelwert zu bilden. Die Ausgangspixelwerte können Projektionsgeräten PD&sub1; bis PDL für die Anzeige auf einem Projektionsschirm SCR bereitgestellt werden. Die Ausgangspixelwerte können ebenso an einem Anzeigegerät 84 zur Verfügung gestellt werden. Der Abfragepufferspeicher 162 kann derart konfiguriert sein, daß er Supersampling, kritisches Sampling oder Subsampling in Bezug auf die Pixelauflösung unterstützt. Mit anderen Worten kann der durchschnittliche Abstand zwischen Abfragen (Xk, Yk) in dem virtuellen Bild (gespeichert in dem Abfragepufferspeicher 162) kleiner, gleich oder größer als der durchschnittliche Abstand zwischen den Pixelzentren im virtuellen Schirmraum sein. Weiterhin kann, da der Faltungskern f(X,Y) in einer Nachbarschaft bzw. Umgebung, die sich über einige Pixelzentren erstreckt, einen Funktionalwert von ungleich null annehmen kann, eine einzelne Abfrage zu mehreren Ausgangspixelwerten beitragen.
  • Abfragespeicher 160A-160N können irgendeinen von verschiedenen Typen von Speichern in variierenden Größen aufweisen (z.B. SDRAMs, RDRAMs, 3DRAMs oder 3DRAMs der nächsten Generation). In einer Ausführungsform ist jede Verzeichniseinheit 154 mit vier Bänken von Abfragespeichern gekoppelt, wobei jede Bank vier 3DRAM-64-Speicher aufweist. Die 3DRAM-64-Speicher können einen 116 Bit tiefen, supergesampleten Abfragepufferspeicher bilden, der mehrere Abfragen je Pixel speichert. Beispielsweise kann in einer Ausführungsform jeder Abfragespeicher 160A-160N bis zu 16 Abfragen je Pixel speichern.
  • 3DRAM-64-Speicher sind spezialisierte Speicher, die derart konfiguriert sind, daß sie volles internes Doppelpufferspeichern mit einzelnem gepuffertem z in einem Chip unterstützen. Der doppelt gepufferte Teil weist zwei RGBX-Pufferspeicher auf, wobei X ein vierter Kanal ist, der verwendet werden kann, um andere Informationen (z.B. alpha) zu speichern. 3DRAM-64-Speicher haben ebenso eine Verweistabelle, die Fenster-ID-Information einträgt und steuert einen inneren 2-1- oder 3-1-Multiplexer, der auswählt, welche Inhalte des Pufferspeichers ausgegeben werden. 3DRAM-64- Speicher sind 3DRAM-Speicher der nächsten Generation, die bald verfügbar sein können von der Mitsubishi Electric Corporation's Semiconductor Group. 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 3DRAM-64-Speicher intern doppelt puffergespeichert sind, sind die Eingangsanschlußstifte für jeden der zwei Einzelbildpufferspeicher in dem doppelt puffergespeicherten System im Zeitmultiplexverfahren übertragen (unter Verwendung von Multiplexern innerhalb der Speicher). 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 die Verwendung von 3DRAM-64-Sepicher die Konfiguration des Abfragepufferspeichers 162 vereinfachen. Der Abfragepufferspeicher 162 kann beispielsweise weniger oder keine Auswahllogik auf der Ausgangsseite der 3DRAM-64-Speicher erfordern. Die 3DRAM-64-Speicher reduzieren ebenso die Speicherbandbreite, da Information in den 3DRAM-64-Speicher geschrieben werden kann ohne das traditionelle Verfahren des Auslesens von Daten, des Durchführens eines z-Vergleichas und dann das Zurückschreiben der Daten. Stattdessen können die Daten einfach in den 3DRAM-134-Speicher 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.
  • Die grafikverarbeitende Einheit 90 kann derart konfiguriert sein, daß sie eine Vielzahl von Abfragepositionen erzeugt entsprechend eines bestimmten Abfragepositionierungsschemas (z.B. ein reguläres Gitter, ein gestörtes reguläres Gitter usw.). Alternativ können die Abfragepositionen (oder die Verschiebungen, die zu den regulären Gitterpositionen addiert werden, um die Abfragepositionen zu bilden) von einem Abfragepositionsspeicher (z.B. eine RAM-/ROM-Tabelle) gelesen werden. Mit Empfang eines Polygons, das darzustellen ist, bestimmt die grafikverarbeitende Einheit 90, welche Abfragen innerhalb des Polygons fallen, basierend auf den Abfragepositionen. Die grafikverarbeitende Einheit 90 stellt die Abfragen, die innerhalb des Polygons fallen, dar, und speichert die dargestellten Abfragen in dem Abfragespeicher 160A-N. Es sei bemerkt, daß die Begriffe darstellen und zeichnen, wie sie hier verwendet werden, miteinander austauschbar verwendet werden und sich auf die Berechnung von Farbwerten für Abfragen beziehen. Tiefenwerte, alpha-Werte und andere Werte je Abfrage können ebenso in dem Darstellungs- oder Zeichenprozeß berechnet werden.
  • F. Einheiten zur Umrechnung von Abfrage zu Pixel
  • Die Einheiten 170-1 bis 170-V zur Umrechnung von Abfrage zu Pixel (gemeinsam als Einheiten 170 zur Umrechnung von Abfrage zu Pixel bezeichnet) können zwischen den Abfragespeichern 160A-N und den DACs 178-1 bis 178-L geschaltet sein. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel sind derart konfiguriert, daß sie ausgewählte Abfragen von den Abfragespeichern 160A-N lesen und dann eine Faltung (das heißt eine Filteroperation) auf den Abfragen durchführen, um die Ausgangspixelwerte zu erzeugen, die den DACs 178-1 bis 178-L zur Verfügung gestellt werden. Die Einheiten 170 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 170 zur Umrechnung von Abfrage in Pixel einen 5 · 5 supergesamplete Rekonstruktionsbandpaßfilter implementieren, um die supergesampleten Abfragepufferspeicherdaten (die in den Abfragespeichern 160A-N abgelegt sind) in Pixelwerte umzuwandeln. In anderen Ausführungsformen können die Berechnungseinheiten 170 eine ausgewählte Anzahl von Abfragen filtern, um ein Ausgangspixel zu berechnen. Die ausgewählten Abfragen können mit einer örtlichen Gewichtsfunktion multipliziert werden, die den Abfragen eine Gewichtung gibt basierend auf ihrer Position in Bezug auf das Zentrum des zu berechnenden Pixels. Die Filteroperation kann irgendeine einer Vielzahl von Filtern, entweder allein oder in Kombination, verwenden. Beispielsweise kann die Faltungsoperation einsetzen einen Tent-Filter, einen zirkularen Filter, einen elliptischen Filter, einen Mitchell-Filter, einen Bandpaßfilter, einen Synchronisationsfunktionsfilter usw.
  • Die Einheiten 170 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, programmierbare Gammaverschlüsselung und optionale Farbraumkonversion. Andere Merkmale von Einheiten 170 zur Umrechnung von Abfrage in Pixel können programmierbare Videozeitgeneratoren, programmierbare Pixeltaktsynthesizer, Kanten-Blending-Funktionen, Hot-Spot-Korrekturfunktionen, Farbraum- und Kreuzschienenfunktionen beinhalten. Nachdem die Einheiten zur Umrechnung von Abfrage in Pixel einmal den Takt und die Farbe jedes Pixels manipuliert haben, werden die Pixel zu den DACs 178-1 bis 178-L ausgegeben.
  • 6. DACs
  • Die Digital-/Analog-Wandler (DACs) 178-1 bis 178-L (gemeinsam als DACs 178 bezeichnet) fungieren als die finale Ausgangsstufe des Grafiksystems 112. Die DACs 178 übersetzen die digitalen Pixeldaten, die von den Berechnungseinheiten 170 empfangen wurden, in analoge Videosignale. Jeder der DACs 178-1 bis 178-L kann mit einem entsprechenden der Projektionsgeräte PD&sub1; bis PDL verbunden sein. Der DAC 178-1 empfängt einen ersten Strom von digitalen Pixeldaten von einer oder mehreren Berechnungseinheiten 170 und wandelt den erster Strom in ein erstes Videosignal um. Das erste Videosignal wird dem Projektionsgerät PD&sub1; zur Verfügung gestellt. In gleicher Weise empfängt jeder der DACs 178-1 bis 178-L einen entsprechenden Strom von digitalen Pixeldaten und wandelt den digitalen Pixeldatenstrom in ein entsprechendes analoges Videosignal um, das einem entsprechenden der Projektionsgeräte PD&sub1; bis PDL zur Verfügung gestellt wird.
  • Es sei bemerkt, daß in einer Ausführungsform die DACs 178 umgangen oder völlig ausgelassen werden können, um digitale Pixeldaten neben den analogen Videosignalen auszugeben. Dies kann nützlich sein, wenn Projektionsgeräte PD&sub1; bis PDL auf einer digitalen Technologie basieren (z.B. eine LCD-Typ-Anzeige oder eine digitale Mikrospiegelanzeige).
  • Supersampling - Fig. 4-5
  • Fig. 4 stellt einen Teil des virtuellen Schirmraums in einem nicht supergesampleten Beispiel dar. Die Punkte symbolisieren Abfrageorte und die rechteckigen Boxen, die dem virtuellen Schirmraum überlagert sind, definieren Pixelgrenzen. Eine Abfrage ist im Zentrum jedes Pixels lokalisiert und Werte von Rot, Grün, Blau, z usw. werden für die Abfrage berechnet. Beispielsweise wird die Abfrage 74 dem Zentrum des Pixels 70 zugewiesen. Obgleich Darstellungseinheiten 150 Werte für nur eine Abfrage pro Pixel berechnen können, können Einheiten 170 zur Umrechnung von Abfrage in Pixel noch Ausgangspixelwerte berechnen basierend auf mehreren Abfragen, z.B. durch Verwendung eines Faltungsfilters, dessen Unterstützung sich über mehrere Pixel erstreckt.
  • In Fig. 5A ist ein Beispiel einer Ausführungsform des Supersamplings dargestellt. In dieser Ausführungsform werden zwei Abfragen pro Pixel berechnet. Die Abfragen sind entsprechend eines regelmäßigen Gitters verteilt. Obgleich es mehr Abfragen als Pixel in der Figur gibt, könnten die Ausgangspixelwerte berechnet werden unter Verwendung von einer Abfrage pro Pixel, z.B. durch Verwerfen aller Abfragen außer der Abfrage, die dem Zentrum jedes Pixels am nächsten ist. Es ergeben sich jedoch eine Anzahl von Vorteilen aus der Berechnung von Pixelwerten basierend auf mehreren Abfragen.
  • Ein Unterstützungsbereich 72 ist dem Pixel 70 überlagert und stellt die Stütze bzw. die Unterstützung eines Filters dar, der bei dem Pixel 70 lokalisiert ist. Die Unterstützung eines Filters ist der Satz von Orten, über den der Filter (das heißt der Filterkern) Werte annimmt, die nicht null sind. In diesem Beispiel ist die Unterstützungsregion 72 eine kreisförmige Scheibe. Die Ausgangspixelwerte (z.B. Rot-, Grün-, Blau- und z-Werte) für das Pixel 70 werden nur durch die Abfragen 74A und 74B bestimmt, da dies die einzigen Abfragen sind, die in die Unterstützungsregion 72 fallen. Diese Filteroperation kann mit Vorteil den Realismus eines angezeigten Bildes verbessern durch das Ebnen von abrupten Kanten in dem angezeigten Bild (z.B. durch Durchführen des Anti-Aliasings). Die Filteroperation kann einfach die Werte der Abfragen 74A-B mitteln, um die entsprechenden Ausgangswerte der Pixel 70 zu bilden oder sie kann den Beitrag der Abfrage 74B (am Zentrum von Pixel 70) erhöhen und den Beitrag der Abfrage 74A (das heißt die Abfrage, die von dem Pixelzentrum 70 weiter entfernt ist) erniedrigen. Der Filter, und damit die Unterstützungsregion 72, wird für jeden Ausgangspixel, der berechnet wird, derart neu positioniert, daß das Zentrum der Unterstützungsregion 72 mit der Zentrumsposition des Pixels, der berechnet wird, zusammenfällt. Andere Filter und Filterpositionierungsschemata sind ebenso möglich und wurden in Betracht gezogen.
  • In dem Beispiel von Fig. 5A gibt es zwei Abfragen pro Pixel. Im allgemeinen gibt es jedoch kein Erfordernis, daß die Anzahl von Abfragen mit der Anzahl von Pixeln in Beziehung stehen muß. Die Anzahl von Abfragen kann völlig unabhängig von der Anzahl von Pixeln sein. Beispielsweise kann die Anzahl von Abfragen kleiner als die Anzahl von Pixeln sein. (Dies ist der Zustand, der das Untersampling bzw. Subsampling definiert.)
  • In Fig. 5B ist eine andere Ausführungsform des Supersamplings dargestellt. In dieser Ausführungsform sind die Abfragen zufällig positioniert. Somit kann die Anzahl von Abfragen, die verwendet werden, um die Ausgangspixelwerte zu berechnen, von Pixel zu Pixel variieren. Die Darstellungseinheiten 150A-D berechnen die Farbinformation an jeder Abfrageposition.
  • Supergesampleter Abfragepufferspeicher mit Umrechnung von Abfrage in Pixel in Echtzeit - Fig. 6-10
  • Fig. 6 stellt eine mögliche Konfiguration für den Datenfluß durch eine Ausführungsform des Grafiksystems 112 dar. Wie die Figur zeigt, werden geometrische Daten 350 von dem Grafiksystem 112 empfangen und verwendet, um den Zeichenprozeß 352 durchzuführen. Der Zeichenprozeß 352 wird durch eine oder mehrere Steuereinheiten 140, Darstellungseinheiten 150, Datenspeicher 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 von mehreren Polygonen gemeinsam verwendet werden können. Daten, wie z.B. X-, Y- und Z-Koordinaten, Farbdaten, Beleuchtungsdaten und Texturabbildungsinformation kann für jeden Eckpunkt eingeschlossen sein.
  • Zusätzlich zu den Eckpunktdaten empfängt der Zeichenprozeß 352 (der durch die Darstellungseinheiten 150A-D durchgeführt werden kann) ebenso Abfragepositionsinformation von einem Abfragepositionsspeicher 354. Die Abfragepositionsinformation bestimmt den Ort der Abfragen im virtuellen Schirmraum, das heißt in dem 2D-Darstellungsfenster. Der Zeichenprozeß 352 wählt die Abfragen aus, die innerhalb des gegenwärtig darzustellenden Polygons liegen, berechnet einen Satz von Werten (z.B. Rot, Grün, Blau, z, Alpha und/oder die Tiefe der Feldinformation) für jede der Abfragen basierend auf ihrer jeweiligen Position innerhalb des Polygons. Beispielsweise kann der z- Wert eine Abfrage, die innerhalb eines Dreiecks liegt, von den bekannten z-Werten der Dreieckpunkte interpoliert werden. Jeder Satz von berechneten Abfragewerten wird in dem Abfragepufferspeicher 162 gespeichert.
  • In einer Ausführungsform ist der Abfragepositionsspeicher 354 innerhalb der Darstellungseinheiten 150A-D verkörpert. In einer anderen Ausführungsform kann der Abfragepositionsspeicher 354 als Teil der Speicher 152A-152D als ein getrennter Speicher realisiert werden.
  • Der Abfragepositionsspeicher 354 kann Abfragepositionen speichern in Form ihrer virtuellen Schirmkoordinaten (X, Y). Alternativ dazu kann der Abfragepositionsspeicher 354 derart konfiguriert sein, daß er für die Abfragen nur Verschiebungen dX und dY bezüglich der Positionen auf einem regulären Gitter speichert. Das Speichern nur der Verschiebungen kann weniger Speicherplatz verwenden als das Speichern der gesamten Koordinaten (X, Y) für jede Abfrage. Die Abfragepositionsinformation, die in dem Abfragepositionsspeicher 354 abgelegt ist, kann durch eine reservierte Abfragepositionsberechnungseinheit (nicht gezeigt) gelesen werden und verarbeitet werden, um die Abfragepositionen für die grafikverarbeitende Einheit 90 zu berechnen. Detailliertere Information über die Berechnung von Abfragepositionen ist unten aufgenommen (siehe die Beschreibung der Fig. 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 reservierte Hardware aufweisen, um einen oder mehrere unterschiedliche Typen von regulären Gittern zu erzeugen. Diese Hardware kann programmierbar sein. Die gespeicherten Zufallszahlen können als Verschiebungen zu den regulären Gitterpositionen, die von der Hardware erzeugt wurden, addiert werden. In einer Ausführungsform kann der Abfragepositionsspeicher 354 derart programmiert werden, daß er auf die Zufallszahlentabelle in einer Anzahl von unterschiedlichen Wegen zugreift oder sie "entfaltet", und kann somit eine geeignetere Zufälligkeit für eine gegebene Länge der Zufallszahlentabelle liefern. Somit kann eine kleinere Tabelle verwendet werden, ohne die visuellen Artefakte zu erzeugen, die durch die einfache Wiederholung von Abfragepositionsverschiebungen verursacht werden.
  • Der Prozeß zur Umrechnung von Abfrage zu Pixel 360 verwendet dieselben Abfragepositionen wie der Zeichenprozeß 352. Somit kann in einer Ausführungsform der Abfragepositionsspeicher 354 eine Abfolge von zufälligen Verschiebungen erzeugen, um Abfragepositionen für den Zeichenprozeß 352 zu berechnen und kann im folgenden dieselbe Abfolge von Zufallsverschiebungen erneut erzeugen, um dieselben Abfragepositionen für den Prozeß zur Umrechnung von Abfrage in Pixel 360 zu berechnen. Mit anderen Worten kann das Entfalten der Zufallszahlentabelle wiederholbar sein. Es muß daher nicht notwendig sein, die Abfragepositionen zu der Zeit ihrer Erzeugung für den Zeichenprozeß 352 zu speichern.
  • Wie in Fig. 6 gezeigt ist, kann der Abfragepositionsspeicher 354 derart konfiguriert sein, daß er Abfrageverschiebungen speichert, die entsprechend einer Anzahl von unterschiedlichen Schemata erzeugt wurden, wie z.B. ein reguläres quadratisches Gitter, ein reguläre hexagonales Gitter, ein gestörtes reguläres Gitter oder eine zufällige (stochastische) Teilung. Das graphische System 112 kann eine Anzeige von dem Betriebssystem, dem Gerätetreiber oder den geometrischen Daten 350 empfangen, die anzeigt, welcher Typ von Abfragepositionierungsschema verwendet wird. Der Abfragepositionsspeicher 354 ist somit konfigurierbar oder programmierbar, um die Positionsinformation entsprechend einem oder mehreren unterschiedlichen Schemata zu erzeugen. Detailliertere Information über verschiedene Abfragepositionierungsschemata werden weiter unten beschrieben (siehe die Beschreibung von Fig. 8).
  • In einer Ausführungsform kann der Abfragepositionsspeicher 354 ein RAM/ROM enthalten, das stochastisch bestimmte Abfragepunkte oder Abfrageverschiebungen enthält. Die Dichte der Abfragen im virtuellen Schirmraum kann somit nicht gleichförmig sein, wenn sie mit einer kleinen Skalierung betrachtet werden. Zwei Behälter mit gleicher Fläche, die bei unterschiedlichen Orten in dem virtuellen Schirmraum zentriert sind, können eine unterschiedliche Anzahl von Abfragen enthalten. Der Begriff "Behälter", wie er hier verwendet wird, bezieht sich auf eine Region oder eine Fläche in dem virtuellen Schirmraum.
  • Eine Anordnung von Behältern kann dem virtuellen Schirmraum überlagert sein, das heißt, dem 2D-Darstellungsfenster, und die Speicherung der Abfragen im Abfragepufferspeicher 162 kann entsprechend der Behälter organisiert sein. Der Abfragepufferspeicher 162 kann eine Anordnung von Speicherblöcken, die den Behältern entsprechen, aufweisen. Jeder Speicherblock kann die Abfragewerte (z.B. Rot, Grün, Blau, z, Alpha usw.) für die Abfragen speichern, die in den entsprechenden Behälter fallen. Der näherungsweise Ort einer Abfrage wird von dem Behälter gegeben, in dem sie steht. Die Speicherblöcke können Adressen haben, die leicht aus den entsprechenden Behälterorten in dem virtuellen Schirmraum berechnet werden können und umgekehrt. Die Verwendung von Behältern kann somit die Speicherung und den Zugriff auf Abfragewerte in dem Abfragepufferspeicher 162 vereinfachen.
  • Die Behälter können das 2D-Darstellungsfenster in eine reguläre Anordnung aufteilen, z.B. in eine quadratische Anordnung, eine rechteckige Anordnung, eine Dreiecksanordnung, eine hexagonale Anordnung usw. oder in eine irreguläre Anordnung. Behälter können in einer Vielfalt von Größen und Formen auftreten. Die Größen und Formen können programmierbar sein. Die maximale Anzahl von Abfragen, die einen Behälter bevölkern können, wird durch den Speicherplatz, der dem entsprechenden Speicherblock zugewiesen wird, bestimmt. Diese maximale Anzahl von Abfragen wird hier als die Behälterabfragekapazität oder einfach als die Behälterkapazität bezeichnet. Die Behälterkapazität kann irgendeinen einer Vielzahl von Werten annehmen. Der Behälterkapazitätswert kann programmierbar sein. Von nun an werden die Speicherblöcke im Abfragepufferspeicher 162, die den Behälter im virtuellen Schirmraum entsprechen, als Speicherbehälter bezeichnen.
  • Die spezifische Position jeder Abfrage innerhalb eines Behälters kann bestimmt werden durch Nachschlagen der Verschiebung der Abfrage in der RAM-/ROM-Tabelle, das heißt, die Verschiebung der Abfragen bezüglich der Behälterposition (z.B. die untere linke Ecke oder das Zentrum des Behälters usw.). Abhängig von der Implementierung kann jedoch nicht jede Auswahl für die Behälterkapazität einen einzigartigen Satz von Verschiebungen haben, der in der RAM-/ROM- Tabelle abgelegt ist. Verschiebungen für einen ersten Behälterkapazitätswert können bestimmt werden durch Zugriff auf einen Untersatz der für einen zweiten, größeren Behälterkapazitätswert gespeicherten Verschiebungen. In einer Ausführungsform unterstützt jeder Behälterkapazitätswert zumindest vier unterschiedliche Abfragepositionierschemata. Die Verwendung von unterschiedlichen Abfragepositionierungsschemata kann die endgültigen Bildartefakte aufgrund der Wiederholung von Abfragepositionen reduzieren.
  • In einer Ausführungsform kann der Abfragepositionsspeicher 354 Paare von 8-Bit-Zahlen speichern, wobei jedes Paar einen X-Offset bzw. eine X-Verschiebung und einen Y-Offset, bzw. eine Y-Verschiebung aufweist. (Andere Verschiebungen sind ebenso möglich, z.B. ein Zeit-Offset, ein z- Offset usw.) Jedes Paar definiert, wenn es zu einer Behälterposition addiert wird, eine bestimmte Position im virtuellen Schirmraum, das heißt, dem 2D-Darstellungsfenster. Um die Lesezugriffszeiten zu verbessern, kann der Abfragepositionsspeicher 354 in einer breiten/parallelen Art und Weise konstruiert sein, so daß er dem Speicher erlaubt, mehr als einen Abfrageort je Lesezyklus auszugeben.
  • Nachdem die Abfragepositionen einmal von dem Abfragepositionsspeicher 354 gelesen wurden, wählt der Zeichenprozeß 352 die Abfragen aus, die in das gegenwärtig darzustellende Polygon fallen. Der Zeichenprozeß 352 berechnet dann die z- und Farbinformation (die Alpha oder andere Tiefen der Feldinformationswerte beinhalten können) für jede dieser Abfragen und speichert die Daten in dem Abfragepufferspeicher 162. In einer Ausführungsform kann der Abfragepufferspeicher 162 z-Werte (und vielleicht Alpha-Werte) nur einfachpufferspeichern, während andere Abfragekomponenten, wie z.B. die Farbe, doppelt puffergespeichert werden. Im Gegensatz zu Systemen des Standes der Technik kann das Grafiksystem 112 die doppelte Pufferspeicherung für alle Abfragen verwenden (obwohl nicht alle Komponenten der Abfragen doppelt puffergespeichert sein können, das heißt, die Abfragen können Komponenten haben, die nicht doppelt puffergespeichert sind). In einer Ausführungsform sind die Abfragen in dem Abfragepufferspeicher 162 in Behältern gespeichert. In manchen Ausführungsformen kann die Behälterkapazität von Einzelbild zu Einzelbild variieren. Darüber hinaus kann die Behälterkapazität örtlich für Behälter innerhalb eines einzelnen in dem Abfragepufferspeicher 162 dargestellten Bild variieren. Beispielsweise können Behälter an der Kante des 2D-Darstellungsfensters eine kleinere Behälterkapazität haben als Behälter, die dem Zentrum des 2D-Darstellungsfensters entsprechen. Da Betrachter wahrscheinlich ihre Aufmerksamkeit im wesentlichen auf das Zentrum des Schirms SCR oder des Anzeigebildes DIM konzentrieren, kann mehr Verarbeitungsbandbreite dem Bereitstellen von erhöhter Bildqualität in dem Zentrum des 2D- Darstellungsfensters gewidmet werden. Es sei bemerkt, daß die Größe und die Form der Behälter ebenso von Region zu Region variieren kann oder von Einzelbild zu Einzelbild. Die Verwendung von Behältern wird unten in größerem Detail beschrieben.
  • Parallel zu und unabhängig von dem Zeichenprozeß 352 ist der Filterprozeß 360 derart konfiguriert, daß er (a) Abfragepositionen von dem Abfragepositionsspeicher 354 liest, (b) die entsprechenden Abfragewerte von dem Abfragepufferspeicher 162 liest, (c) die Abfragewerte filtert und (d) die resultierenden Ausgangspixelwerte zu einem oder mehreren der Projektionsgeräte PD1 bis PDL und/oder dem Anzeigegerät 84 ausgibt. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel implementieren den Filterprozeß 360. Der Filterprozeß 360 ist derart betreibbar, daß er die Rot-, Grün- und Blauwerte für ein Ausgangspixel basierend auf einer Ortsfilterung der entsprechenden Daten für eine ausgewählte Mehrzahl von Abfragen erzeugt, z.B. Abfragen, die in die Nachbarschaft des Pixelzentrums fallen. Andere Werte, wie z.B. Alpha, können ebenso erzeugt werden. In einer Ausführungsform ist der Filterprozeß 360 derart konfiguriert, daß er: (i) den Abstand von jeder Abfrage von dem Pixelzentrum bestimmt, (ii) die Attributwerte (z.B. rot, grün, blau, alpha) von jeder Abfrage mit einem Filtergewicht multipliziert, das eine spezifische (programmierbare) Funktion des Abstandes der Abfrage ist, (iii) die Summe der gewichteten Attributwerte erzeugt, nämlich eine Summe pro Attribut (z.B. eine Summe für rot, eine Summe für grün usw.) und (iv) die Summen normalisiert, um die entsprechenden Pixelattributwerte zu erzeugen. Der Filterprozeß 360 wird unten in größerem Detail beschrieben (siehe die Beschreibung der begleitenden Fig. 11, 12 und 14).
  • In der gerade beschriebenen Ausführungsform ist der Filterkern eine Funktion des Abstandes von dem Pixelzentrum, und daher radial symmetrisch. In alternativen Ausführungsformen kann jedoch der Filterkern eine allgemeinere Funktion von den X- und Y-Verschiebungen von dem Pixelzentrum sein. Die Unterstützung des Filters, das heißt, die 2D-Nachbarschaft, über die der Filterkern einen Wert von nicht Null annimmt, muß somit nicht eine kreisförmige Schreibe sein. Jede Abfrage, die in die Unterstützung des Filterkerns fällt, kann sich auf das zu berechnende Ausgangspixel auswirken.
  • Wendet man sich nun Fig. 7 zu, so ist ein Diagramm gezeigt, das eine alternative Ausführungsform des Grafiksystems 112 zeigt. In dieser Ausführungsform werden zwei oder mehrere Abfragepositionsspeicher 354A und 3548 benutzt. Die Abfragepositionsspeicher 354A-B sind im wesentlichen doppelt puffergespeichert. Wenn die Abfragepositionen, von Einzelbild zu Einzelbild die gleichen bleiben, dann können die Abfragepositionen einfach puffergespeichert sein. Wenn jedoch die Abfragepositionen von Einzelbild zu Einzelbild variieren, dann kann das Grafiksystem 112 mit Vorteil derart konfiguriert sein, daß es die Abfragepositionen doppelt pufferspeichert. Die Abfragepositionen können auf der Darstellungsseite (das heißt der Speicher 354A kann doppelt puffergespeichert sein) und/oder der Filterseite (das heißt der Speicher 35413 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 erlaubt es, daß eine Seite des Speichers 3548 durch den Zeichenprozeß 352 aktualisiert wird, während auf die andere Seite des Speichers 354B durch den Filterprozeß 360 zugegriffen wird. In dieser Konfiguration kann das Grafiksystem 112 die Abfragepositionierungsschemata auf einer Einzelbildbasis verändern durch Verschieben der Abfragepositionen (oder Verschiebungen) von dem Speicher 354A in den doppelt puffergespeicherten Speicher 354B, wenn jedes Einzelbild dargestellt wird. Die Abfragepositionen, die in dem Speicher 354A gespeichert sind und von dem Zeichenprozeß 352 verwendet werden, um die Abfragewerte darzustellen, können somit in den Speicher 3MB für die Verwendung durch den Filterprozeß 360 kopiert werden. Nachdem Abfragepositionsinformation einmal in den Speicher 354B kopiert wurden, kann der Positionsspeicher 354A dann mit neuen Abfragepositionen (oder Verschiebungen) beladen werden, die für ein zweites Einzelbild, das dargestellt wird, verwendet werden. In dieser Art und Weise folgen die Abfragepositionsinformationen den Abfragewerten von dem Zeichenprozeß 352 zu dem Filterprozeß 360.
  • Noch eine andere alternative Ausführungsform kann Anzeiger zu den Offsets mit den Abfragewerten in dem supergesampleten Abfragepufferspeicher 162 speichern. Diese Anzeiger können verwendet werden, um die Verschiebungen (das heißt, die Störungen) dX und dY nachzuschlagen, die mit jeder bestimmten Abfrage verknüpft sind.
  • Abfragepositionierungsschemata
  • Fig. 8 stellt eine Anzahl von unterschiedlichen Abfragepositionierungsschemata dar. In dem regulären Positionierungsschema 190 sind die Abfragen bei festen Positionen bezüglich eines regulären Gitters positioniert, das dem 2D-Darstellungsfenster überlagert ist. Beispielsweise können die Abfragen an den Zentren des Rechtecks positioniert sein, das von dem regulären Gitter erzeugt wird. Ganz allgemein kann jedes Teilen des 2D-Darstellungsfensters ein reguläres Positionierungsschema erzeugen. Beispielsweise kann das 2D-Darstellungsfenster mit Dreiecken gekachelt sein bzw. in Dreiecke aufgeteilt sein und die Abfragen können somit an den Zentren (oder den Eckpunkten) der dreieckigen Kacheln positioniert sein. Hexagonales Kacheln, logarithmisches Kacheln und halbreguläres Kacheln, wie z.B. Penrose-Kacheln, wurden ebenso in Betracht gezogen.
  • Im gestörten regulären Positionierungsschema 192 sind die Abfragepositionen in Abhängigkeit von den Abweichungen von einem Satz von festen Positionen auf einem regulären Gitter oder auf Kacheln definiert. In einer Ausführungsform können die Abfragen von ihren entsprechenden fixierten Gitterpositionen um zufällige X- und Y-Offsets abweichen oder um zufällige Winkel (von 0 bis 360º reichend) und zufällige Radien (von 0 bis zu einem maximalen Radius reichend) verschoben sein. Die Offsets können in einer Anzahl von Arten erzeugt worden, z.B. durch Hardware basierend auf einer Anzahl von Kernen durch Einlesen einer Tabelle von gespeicherten Offsets oder durch Verwendung einer Pseudozufallsfunktion. Erneut kann das gestörte reguläre Gitterschema 192 auf jedem Typ von regulärem Gitter oder Kacheln basieren. Abfragen, die durch Störungen in Bezug auf ein Gitter erzeugt wurden (z.B. hexagonales Kacheln kann insbesondere wünschenswert sein aufgrund der geometrischen Eigenschaften dieser Konfiguration).
  • 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 das 2D-Darstellungsfenster. Die zufällige Positionierung von Abfragen kann durch eine Anzahl von verschiedenen Verfahren erzielt werden, z.B. unter Verwendung eines Zufallszahlengenerators, wie z.B. einem internen Takt, um Pseudozufallszahlen zu erzeugen. Zufallszahlen oder Positionen können ebenso vorherberechnet und in dem Speicher abgelegt werden. Es sei bemerkt, daß Zufallspositionen, wie sie in dieser Anmeldung verwendet werden, von einer statistischen Population ausgewählt werden können (z.B. eine Poisson- Scheibenverteilung). Verschiedene Typen von Zufalls- und Pseudozufallspositionen werden in größerem Detail in Kapitel 10 in Band 1 der Abhandlung mit dem Titel "Principles of Digital Image Synthesis" von Andrew S. Glassner, Morgan Kaufman Publishers, 1995, beschrieben.
  • Wendet man sich nun Fig. 9 zu, so sind Details einer Ausführungsform eines gestörten regulären Positionierungsschemas 192 gezeigt. In dieser Ausführungsform sind die Abfragen zufällig von einem regulären quadratischen Gitter mit 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 X-Offset 134 und Y-Offset 136 können auf einen bestimmten Bereich von Werten begrenzt sein. Beispielsweise kann der X-Offset auf einen Bereich von 0 bis Xmax begrenzt sein, wobei Xmax die Breite eines Gitterrechtecks ist. In gleicher Weise kann der Y-Offset auf den Bereich von 0 bis Ymax begrenzt sein, wobei Ymax die Höhe eines Gitterrechtecks ist. Der zufällige Offset kann ebenso als ein Winkel und ein Radius in Bezug auf den Gitterschnittpunkt 196 spezifiziert sein.
  • Fig. 10 stellt Details einer anderen Ausführungsform des gestörten regulären Gitterschemas 192 dar. In dieser Ausführungsform sind die Abfragen in rechteckigen Behältern 138A-D gruppiert. In dieser Ausführungsform weist jeder Behälter neun Abfragen auf, das heißt, er hat eine Behälterkapazität von 9. Unterschiedliche Behälterkapazitäten können in anderen Ausführungsformen verwendet werden (z.B. Behälter, die vier Abfragen, 16 Abfragen usw. speichern). Jede Position der Abfrage kann bestimmt werden durch einen X- und Y-Offset relativ zu dem Ursprung des Behälters, in dem sie liegt. Der Ursprung eines Behälters kann als die untere linke Ecke des Behälters gewählt werden (oder jeder andere praktische Ort innerhalb des Behälters). Die Position der Abfrage 188 wird beispielsweise durch Summation des X-Offsets 124 bzw. des Y-Offsets 126 mit den X- und Y- Koordinaten des Ursprungs 132 jedes Behälters 138D bestimmt. Wie vorher bemerkt wurde, kann dies die Größe des Abfragepositionsspeichers 354, der in manchen Ausführungsformen verwendet wird, reduzieren.
  • Fig. 11 - Umwandeln von Abfragen in Pixel
  • Wie früher diskutiert wurde, kann das 2D-Darstellungsfenster von einer Anordnung von örtlichen Behältern bedeckt sein. Jeder örtliche Behälter kann mit Abfragen bevölkert sein, deren Positionen durch den Abfragepositionsspeicher 354 bestimmt werden. Jeder örtliche Behälter entspricht einem Speicherbehälter in dem Abfragepufferspeicher 162. Ein Speicherbehälter speichert die Abfragewerte (z.B. Rot, Grün, Blau, z, Alpha usw.) für die Abfragen, die in dem entsprechenden Ortsbehälter liegen. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel (ebenso als Faltungseinheiten 170 bezeichnet) sind derart konfiguriert, daß sie die Speicherbehälter von dem Abfragepufferspeicher 162 einlesen und die Abfragewerte, die in den Speicherbehältern enthalten sind, in Pixelwerte umwandeln.
  • Paralleles Abfrage-zu-Pixel-Filtern unter Verwendung von Spalten - Fig. 11A-11B
  • Die Fig. 11A stellt ein Verfahren für das schnelle Umwandeln von Abfragewerten, die in dem Abfragepufferspeicher 162 abgelegt sind, in Pixelwerte dar. Die Ortsbehälter, die das 2D- Darstellungsfenster bedecken, können in Spalten organisiert sein (z.B. Spalten 1-4). Jede Spalte weist ein zweidimensionales Unterarray von Ortsbehältern auf. Die Spalten können derart konfiguriert sein, daß sie sich horizontal überlappen (z.B. um einen oder zwei Behälter). Jede der Einheiten 170-1 bis 170-4 zur Umrechnung von Abfrage zu Pixel kann derart konfiguriert sein, daß sie auf die Speicherbehälter entsprechend einer der Spalten zugreift. Beispielsweise kann die Einheit 170-1 zur Umrechnung von Abfrage zu Pixel derart konfiguriert sein, daß sie auf die Speicherbehälter zugreift, die den Ortsbehältern von Spalte 1 entsprechen. Die Datenpfade zwischen dem Abfragepufferspeicher 162 und der Einheit 170 zur Umrechnung von Abfrage in Pixel können optimiert sein, um diese spaltenweise Korrespondenz zu unterstützen.
  • Die Größe des Überlapps zwischen Spalten kann von dem horizontalen Durchmesser der Filterunterstützung für den verwendeten Filterkern abhängen. Das in Fig. 11A gezeigte Beispiel zeigt 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 enthält. Mit Vorteil kann diese Konfiguration den Einheiten 170 zur Umrechnung von Abfrage zu Pixel erlauben, unabhängig und parallel zu arbeiten, wobei jede der Einheiten 170 zur Umrechnung von Abfrage in Pixel Abfragen, die in den Speicherbehältern der entsprechenden Spalte liegen, empfangen und falten. Das Überlappen der Spalten wird sichtbare Bänder oder andere Artefakte daran hindern, an den Spaltengrenzen zu erscheinen für jeden Operator, der eine Größe hat, die größer als ein Pixel ist.
  • Die Ausführungsform von Fig. 11A beinhaltet weiterhin eine Mehrzahl von Behältercachespeichern 176, die mit dem Abfragepufferspeicher 162 verbunden sind. Zusätzlich ist jeder der Behältercachespeicher 176 mit einer entsprechenden Einheit 170 zur Umrechnung von Abfrage in Pixel verbunden. Der generische Behältercachespeicher 176-I (wobei I irgendeinen positiven ganzen Wert annimmt) speichert eine Sammlung von Speicherbehältern entsprechend der Spalte I und dient als ein Cachespeicher für die Einheit 170-I zur Umrechnung von Abfrage zu Pixel. Der generische Behältercachespeicher 176-I kann eine optimierte Verbindung mit dem Abfragepufferspeicher 162 haben, die den Zugriff auf die Speicherbehälter für die Spate I erleichtert. Da die Umrechnung von Abfrage zu Pixel für zwei benachbarte Ausgangspixel viele der gleichen Behälter beinhalten kann, können Behältercachespeicher 176 die Gesamtzugriffsbandbreite auf den Abfragepufferspeicher 162 erhöhen. Die Einheiten 170 zur Umrechnung von Abfrage zu Behälter können auf einer Anzahl von unterschiedlichen Wegen implementiert werden, einschließlich der Verwendung einer Hochleistungs-ALU- (arithmetisch-logische Einheit-) Kernen, funktionalen Einheiten von einem Mikroprozessor oder DSP oder eine individuell angefertigte Konstruktion, die Hardwarevervielfältiger und Addierer verwendet.
  • Wendet man sich nun Fig. 11B zu, so ist ein anderes Verfahren zur Durchführung der parallelen Berechnung von Abfrage zu Pixel gezeigt. In dieser Ausführungsform ist der Abfragepufferspeicher 162 in eine Mehrzahl von vertikalen Spalten oder Streifen aufgeteilt, wie in der vorher beschriebenen Ausführungsform. Die Spalten in dieser Ausführungsfarm sind jedoch nicht von gleicher Größe oder Breite. Beispielsweise kann die Spalte 1 signifikant weniger Behälter von Abfragen haben als Spalte 4. Diese Ausführungsform kann insbesondere nützlich sein in Konfigurationen des Grafiksystems, die variable Abfragedichten unterstützen. Wie vorher bemerkt wurde und wie unten in größerem Detail beschrieben wird, kann das Grafiksystem mehr Abfragen (z.B. eine höhere Abfragedichte) für Bereiche des Abfragepufferspeichers 162 verwenden, die Bereichen des endgültigen Bildes entsprechen, die am meisten von den höheren Abfragedichten profitieren würden, z.B. Bereiche von besonderem Interesse für den Betrachter oder Bereite des Bildes, die dem Foveationspunkt des Betrachters entsprechen (unten in größerem Detail beschrieben). In diesen Systemen, die variable Abfragedichten unterstützen, kann die Fähigkeit, die Breiten der Spalten zu variieren, dem Grafiksystem mit Vorteil erlauben, die Anzahl von Abfragen, die von jeder der Einheiten zur Umrechnung von Abfrage zu Pixel gefiltert werden, auszugleichen. Beispielsweise kann Spalte 1 jeder rechteckige Bereich dem Bild entsprechen, das von einem einer Mehrzahl von Projektoren (z.B. LCD-Projektoren) projiziert wird. In anderen Ausführungsformen kann jeder rechteckige Bereich einen bestimmten Abschnitt eines einzelnen Bildes entsprechen, das projiziert wird oder auf einem einzelnen Anzeigegerät angezeigt wird. Wie bei den vorherigen Ausführungsformen können die Einheiten 170 zur Umrechnung von Abfrage in Pixel mit Vorteil derart konfiguriert sein, daß sie unabhängig und parallel zueinander betrieben werden, wodurch die Latenzzeit des Grafiksystems reduziert wird. Wie vorher erwähnt wurde, müssen die rechteckigen Bereiche, die in Fig. 13 dargestellt werden, nicht eine einheitliche Größe und/oder Form haben.
  • In Ausführungsformen des Grafiksystems, die variierende Bereichsgrößen oder Streifenbreiten haben, kann ebenso die Größe des Überlapps dynamisch auf einer Einzelbild-per-Einzelbild- oder einer Untereinzelbild-Basis variieren. Es sei bemerkt, daß andere Formen für die Regionen, in die der Einzelbildpufferspeicher 162 aufgeteilt werden kann, möglich sind und in Betracht gezogen wurden. In manchen Ausführungsformen kann beispielsweise jede Einheit zur Umrechnung von Abfrage in Pixel, Behälter (und Abfragen) von mehreren kleinen Regionen oder Streifen empfangen.
  • In manchen Ausführungsformen können die Abfragecachespeicher 176 nicht genügend Speicherplatz haben, um eine gesamte horizontale Abtastzeile zu speichern. Aus diesem Grund kann das Aufteilen des Abfragepufferspeichers in Regionen nützlich sein. Abhängig von dem Anzeigegerät können die Regionen nur einzelne Teile oder sogar nur Abtastzeilen sein. In manchen Systemen, z.B. denjenigen mit mehreren Anzeigegeräten, kann jede Region zu einem einzelnen Anzeigegerät oder zu einem Quadranten eines darzustellenden Bildes korrespondieren. Angenommen beispielsweise, daß die Bilder, die von vier Projektoren gebildet werden, zusammengesetzt sind, um ein einzelnes, großes Bild zu bilden, dann könnte jede Einheit zur Umrechnung von Abfrage zu Pixel Abfragen empfangen entsprechend den von einem bestimmten Projektor dargestellten Pixeln. In manchen Ausführungsformen könnten die überlappenden Bereiche der Region zweifach gespeichert werden, wodurch jeder Einheit zur Umrechnung von Abfrage in Pixel exklusiver Zugriff auf eine bestimmte Region des Abfragepufferspeichers gestattet wird. Dies könnte Taktprobleme verhindern, wenn zwei unterschiedliche Einheiten zur Umrechnung von Abfrage in Pixel (oder zwei Abfragecachespeichercontroller) versuchen, auf denselben Satz von Speicherorten zur selben Zeit zuzugreifen. In anderen Ausführungsformen kann der Abfragepufferspeicher mehrere Anschlüsse haben, um einen oder mehrere gleichzeitige Mehrfachzugriffe auf dieselben Speicherorte zu erlauben.
  • Wie vorher bemerkt wurde, sind in manchen Ausführungsformen die Abfragecachespeicher derart konfiguriert, daß sie Abfragen von dem Abfragepufferspeicher lesen. In manchen Ausführungsformen können die Abfragen auf einer Behälter-per-Behälter-Basis von dem Abfragepufferspeicher gelesen werden. Der Abfragecachespeicher und/oder der Abfragepufferspeicher können eine Steuerlogik enthalten, die derart konfiguriert ist, daß sie sicherstellt, daß alle Abfragen, die das Potential haben, zu einem oder mehreren Pixeln beizutragen, die gefiltert werden (oder von denen beabsichtigt ist, daß sie gefiltert werden) für die entsprechende Einheit zur Umrechnung von Abfrage zu Pixel verfügbar ist. In manchen Implementierungen können die Abfragecachespeicher groß genug sein, um eine vorbestimmte Anordnung von Behältern zu speichern, wie z.B. 5 · 5-Behälter (z.B. für eine Anpassung an die maximale Filtergröße). In einer anderen Ausführungsform können die Abfragecachespeicher anstelle eines 5 · 5-Behältercachespeichens derart konfiguriert sein, daß sie Pixel ausgeben, wie sie in einer Reihe von mehreren Akkumulatoren gesammelt werden. In dieser Ausführungsform wird ein unterschiedlicher Koeffizient für jeden Pixel erzeugt abhängig von der Anzahl von Abfragen und ihrer Gewichtung.
  • Verfahren zum Lesen von Abfragen von dem Abfragepufferspeicher - Fig. 14
  • In Fig. 14 sind mehr Details einer Ausführungsform eines Verfahrens zum Einlesen von Abfragewerten von einem supergesampleten Abfragepufferspeicher gezeigt. Wie die Figuren darstellen, wandert der Abfragewert-zu-Pixel-Filterkern 400 über die Spalte I (in Richtung des Pfeiles 406), um Ausgangspixelwerte zu erzeugen, wobei der Index I irgendeinen Wert in dem Bereich zwischen eins bis vier einnimmt. Die Einheit 170-I zur Umrechnung von Abfrage in Pixel kann den Abfrage-zu-Pixel-Filterkern 400 implementieren. Der Behältercachespeicher 176-I kann verwendet werden, um schnellen Zugriff auf die Speicherbehälter bereitzustellen, die Spalte I entsprechen. Der Behältercachespeicher 176-I kann beispielsweise eine Kapazität größer als oder gleich 25 Speicherbehältern haben, da die Unterstützung des Abfrage-zu-Pixel-Filterkerns 400 eine 5 · 5- Anordnung von Ortsbehältern abdeckt. Wenn die Abfrage-zu-Pixel-Operation durchlaufen wird, werden Speicherbehälter von dem supergesampleten Abfragepufferspeicher 162 gelesen und in dem Behältercachespeicher 176-I abgelegt. Behälter, die nicht länger benötigt werden, z.B. die Behälter 410, werden in einer Ausführungsform in dem Behältercachespeicher 176-I mit neuen Behältern überschrieben. Wenn jedes Ausgangspixel erzeugt ist, verschiebt sich der Abfrage-zu-Pixel- Filterkern 400. Man kann sich vorstellen, daß der Kern 400 in einer sequentiellen Art und Weise innerhalb der Spalte I in dem durch den Pfeil 406 angezeigten Fehler fortschreitet. Wenn der Kern 400 die rechte Grenze 404 der Spalte I erreicht, kann er eine oder mehrere Zeilen von Behältern nach unten schieben und dann mit der horizontalen Verarbeitung beginnend von der linken Spaltengrenze 402 fortfahren. Die Abfrage-zu-Pixel-Operation fährt dann in einer Abtastzeilen-Art und Weise fort, wobei sukzessive Zeilen von Ausgangspixel für die Anzeige erzeugt werden.
  • Fig. 15 stellt mögliche Randbedingungen in der Berechnung von Ausgangspixelwerten dar. Das 2D-Darstellungsfenster 420 ist als ein Rechteck dargestellt, das mit einer rechteckigen Anordnung von Ortsbehältern überdeckt ist. Man erinnere sich, daß jeder Ortsbehälter einem Speicherbehälter in dem Abfragepufferspeicher 162 entspricht. Der Speicherbehälter speichert die Abfragewerte und/oder die Abfragepositionen für Abfragen, die in dem entsprechenden Ortsbehälter liegen. Wie oben beschrieben wurde, fragt die Einheit 170 zur Umrechnung von Abfragen zu Pixeln die Nachbarschaft eines Pixelzentrums ab, um Ausgangspixelwerte (z.B. Rot, Grün, Blau usw.) zu erzeugen. Das Pixelzentrum PC&sub0; ist nahe genug an der unteren Grenze (Y = 0) des 2D-Darstellungsfensters 420, so daß seine Filterunterstützung 400 nicht vollständig in dem 2D-Darstellungsfenster enthalten ist. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel können Abfragepositionen und/oder Abfragewerte für den Randabschnitt der Filterunterstützung 400 (das heißt den Abschnitt, der außerhalb des 2D-Darstellungsfensters 420 liegt) gemäß einer Vielzahl von Verfahren erzeugen.
  • In einer Ausführungsform können die Einheiten zur Umrechnung von Abfrage zu Pixel 170 einen oder mehrere Scheinbehälter erzeugen, um die Randfläche der Filterunterstützung 400 abzudecken. Abfragepositionen für die Scheinbehälter können erzeugt werden durch Reflektieren der Abfragepositionen der Ortsbehälter über die 2D-Darstellungsfenstergrenzen. Beispielsweise können den Scheinbehältern F, G, H, I und J Abfragepositionen zugewiesen werden durch Reflektieren der Abfragepositionen entsprechend der Ortsbehälter A, B, C, D bzw. E über die Grenzlinie Y = 0. Vorbestimmte Farbwerte können mit diesen Scheinabfragen in den Scheinbehältern verknüpft sein. Beispielsweise kann der Wert (0, 0, 0) für den RGB-Farbvektor jeder Scheinabfrage zugewiesen werden. Wenn sich das Pixelzentrum PC&sub0; nach unten bewegt (das heißt in Richtung der Grenze Y = 0 und darüber hinaus), können zusätzliche Scheinbehälter mit Scheinabfragen erzeugt werden, um die Filterunterstützung 400 (die sich zusammen mit dem Pixelzentrum PC&sub0; bewegt) abzudecken. Die Anzahl von Scheinabfragen, die in die Filterunterstützung 400 fallen, steigt an und erreicht ein Maximum, wenn sich die Filterunterstützung 400 völlig außerhalb des 2D-Darstellungsfensters 420 bewegt hat. Der Farbwert, der basierend auf der Filterunterstützung 400 berechnet wird, erreicht somit die vorbestimmte Hintergrundfarbe, wenn das Pixelzentrum PC&sub0; die Grenze überquert.
  • Ein Pixelzentrum kann außerhalb des 2D-Darstellungsfensters 420 liegen und noch nahe genug an den Darstellungsfenstergrenzen sein, so daß ein Teil seiner Filterunterstützung innerhalb des 2D-Darstellungsfensters 420 liegt. Die Filterunterstützung 401 korrespondiert zu einem solchen Pixelzentrum. Die Einheiten 170 zur Umrechnung von Abfrage zu Pixel können Scheinbehälter Q, R, S, T, U und V erzeugen, um die äußeren Teile der Filterunterstützung 401 abzudecken (das heißt den äußeren Teil des 2D-Darstellungsfensters). Die Scheinbehälter Q, R und S können Abfragepositionen zugewiesen sein basierend auf den Abfragepositionen von Ortsbehältern N, O und P und/oder Ortsbehältern K, L und M.
  • Die Abfragepositionen für Scheinbehälter können ebenso durch Übersetzen der Abfragepositionen entsprechend den Ortsbehältern über den Darstellungsfenstergrenzen oder durch Erzeugen von Abfragepositionen während der Übertragung entsprechend einem regulären, einem gestört regulären oder einem stochastischen Abfragepositionierungsschema erzeugt werden.
  • Fig. 16 stellt eine alternative Ausführungsform eines Verfahrens zur Durchführung von Pixelwertberechnungen dar. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel führen Pixelwertberechnungen durch unter Verwendung eines sichtbaren Unterfensters 422 des 2D- Darstellungsfensters 420. Das sichtbare Unterfenster ist als ein Rechteck dargestellt mit einer unteren linken Ecke bei (X&sub1;, Y&sub1;) und einer oberen rechten Ecke bei (X&sub2;, Y&sub2;) im virtuellen Schirmraum. Es sei bemerkt, daß in manchen Ausführungsformen der Filter autonormalisiert oder vornormalisiert sein kann, um die Anzahl von Berechnungen, die erforderlich sind für die Bestimmung des finalen Pixelwertes, zu reduzieren.
  • Darstellen von Abfragen in einem supergesampleten Abfragenpufferspeicher - Fig. 17
  • Fig. 17 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens für das Zeichnen oder Darstellen von Abfragen in einem supergesampleten Abfragepufferspeicher. Bestimmte Schritte von Fig. 17 können gleichzeitig oder in anderer Ordnung auftreten. In Schritt 200 empfängt das Grafiksystem graphische Befehle und Grafikdaten von der Host-CPU 102 oder direkt von dem Systemspeicher 106. In Schritt 202 werden die Befehle und die Daten zu einer oder mehreren der Darstellungseinheiten 150A-D geleitet. In Schritt 204 bestimmen die Darstellungseinheiten 150A-D, ob die Grafikdaten komprimiert sind. Wenn die Grafikdaten komprimiert sind, dekomprimieren die Darstellungseinheiten 150A-D die Grafikdaten in ein nutzbares Format, z.B. Dreiecke, wie in Schritt 206 gezeigt ist. Als nächstes werden die Dreiecke verarbeitet, z.B. von dem Modellraum in den Welt- Raum umgewandelt, beleuchtet und transformiert (Schritt 208A).
  • Wenn das Grafiksystem Supersampling mit variabler Auflösung implementiert, dann werden die Dreiecke mit einem Satz von Bereichsgrenzen der Abfragedichte (Schritt 208B) verglichen. Bei dem Supersampling mit variabler Auflösung können unterschiedliche Regionen des 2D- Darstellungsfensters unterschiedlicher Abfragedichte zugewiesen werden basierend auf einer Anzahl von Faktoren (z.B. dem Zentrum der Aufmerksamkeit eines Beobachters auf dem Projektionsschirm SCR, wie von einer Augen- oder Kopfverfolgung bestimmt). Abfragedichteregionen werden in größerem Detail unten 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). Die Polygone können weiter unterteilt werden in Dreiecke, wenn dies notwendig ist (da das generische Zerschneiden eines Dreiecks ein Dreieck und ein Trapezoid ergibt). Somit kann jedes neu gebildete Dreieck einer einzelnen Abfragedichte zugewiesen werden. In einer Ausführungsform kann das Grafiksystem 112 derart konfiguriert sein, daß es das ursprüngliche Dreieck zweimal darstellt, das heißt einmal mit jeder Abfragedichte, und dann die beiden Versionen abschneidet, so daß sie in die zwei entsprechenden Abfragedichteregionen passen.
  • In Schritt 214 wird eines der Abfragepositionierungsschemata (z.B. regulär, gestört regulär oder stochastisch) aus dem Abfragepositionsspeicher 354 ausgewählt. Das Abfragepositionsschema wird im allgemeinen vorprogrammiert in dem Abfragepositionsspeicher 354 sein, kann jedoch auch "on the fly" bzw. während der Übertragung ausgewählt werden. In Schritt 216 bestimmen die Darstellungseinheiten 150A-D, welche Ortsbehälter Abfragen enthalten können, die innerhalb der Grenzen des Dreiecks lokalisiert sind, basierend auf dem ausgewählten Abfragepositionierungsschema und der Größe und der Form der Ortsbehälter. In Schritt 218 werden dann die Verschiebungen dX und dY für die Abfragen innerhalb dieser Ortsbehälter von dem Abfragepositionsspeicher 354 gelesen. In Schritt 220 wird dann jede Position der Abfrage unter Verwendung der Verschiebungen dX und dY und der Koordinaten des entsprechenden Behälterursprungs berechnet und mit den Eckpunkten des Dreiecks verglichen, um zu bestimmen, ob die Abfrage sich innerhalb des Dreiecks befindet. Schritt 220 wird unten in größerem Detail erörtert.
  • Für jede Abfrage, für die bestimmt wird, daß sie im Dreieck ist, zeichnet die Darstellungseinheit die Abfrage durch Berechnen der Farb-, Alpha- und anderer Attribute der Abfrage. Dies kann eine Beleuchtungsberechnung und eine Interpolation basierend auf der Farb- und Texturabbildungsinformation geschehen, die mit den Eckpunkten des Dreiecks verknüpft ist. Nachdem die Abfrage dargestellt ist, kann sie zu der Verzeichniseinheit 154 weitergereicht werden, die dann die Abfrage in dem Abfragepufferspeicher 162 speichert (Schritt 224).
  • Es sei bemerkt, daß die Ausführungsform des oben beschriebenen Darstellungsverfahrens nur aus Darstellungszwecken verwendet wurde und nicht begrenzend zu verstehen ist. Beispielsweise können in manchen Ausführungsformen die Schritte, die in Fig. 13 als nacheinander auftretend gezeigt sind, parallel implementiert werden. Weiterhin können manche Schritts reduziert oder eliminiert werden in bestimmten Ausführungsformen des Grafiksystems (z.B. die Schritte 204 bis 206 in Ausführungsformen, die keine geometrische Komprimierung implementieren, oder die Schritte 210 bis 212 in Ausführungsformen, die nicht einen supergesampleten Abfragepufferspeicher mit variabler Auflösung implementieren).
  • Bestimmung, welche Abfragen in dem darzustellenden Polygon sind - Fig. 18
  • Die Bestimmung, 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-Komponenten). Eine dritte Bedingung kann zugefügt werden, die bestimmt, ob der Vektor ein X-major-Vektor (Vektor, der mehr horizontal als vertikal verläuft) oder ein Y-major-Vektor (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 Fig. 18 gezeigt ist.
  • Als nächstes werden drei Ungleichungen verwendet, um das Innere des Dreiecks zu definieren. Die Kanten selbst können als Linien beschrieben werden in einer (oder beiden) der Formen y = mx + b oder x = ry + c, wobei rm = 1 ist. Um den numerischen Bereich, der benötigt wird, um die Steigung auszudrücken, zu reduzieren, kann entweder die X-major- oder die Y-major-Form für eine Kantengleichung verwendet werden (so daß der absolute Wert der Steigung in dem Bereich zwischen 0 und 1 liegt). Die Kanten- (oder Halbebenen-) Ungleichungen können somit in einer der zwei korrespondierenden Formen ausgedrückt werden:
  • X-major: y-m·x-b < 0, wenn der Punkt (x, y) unterhalb der Kante liegt,
  • Y-major: x-r·y-c < 0, wenn der Punkt (x, y) links von der Kante liegt.
  • Die X-major-Ungleichung erzeugt einen logischen wahr-Wert (das heißt das Vorzeichenbit ist gleich 1), wenn der in Frage stehende Punkt (x,y) unter der durch eine Kante definierten Linie liegt. Die Y-major-Gleichung produziert einen logischen wahr-Wert, wenn der in Frage stehende Punkt (x,y) links von der durch eine Kante definierten Linie liegt. Die Seite, die das Innere des Dreiecks umfaßt, ist für jede der linearen Ungleichungen bekannt und kann durch eine Boolesche Variable, die hier als das Akzeptierungsbit bezeichnet wird, spezifiziert werden. Somit ist eine Abfrage (x,y) auf der inneren Seite einer Kante, wenn
  • X-major: (y-m·x-b < 0) < xor> accept = wahr,
  • Y-major: (x-m·y-b < 0) < xor> accept = wahr.
  • Das Akzeptierungs- bzw. Annahmebit für eine gegebene Kante kann entsprechend der folgenden Tabelle berechnet werden, die basiert auf (a) dem Bereich (0-7), in dem der Kanten-Delta- Vektor liegt, und (b) der Umlaufsinn der Kanten, wobei der Umlauf im Uhrzeigersinn durch cw = 1 angezeigt wird und der Umlauf im Gegenuhrzeigersinn durch cw = D angezeigt wird. Die Notation "!" bezeichnet das logische Komplement.
  • 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 die Koordinatenachsen derart definiert werden, so daß sie zu dem positiven Oktanten gehören). In gleicher Weise kann X-major derart 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 Kantenungleichung auf den dritten Eckpunkt des Dreiecks bestimmt werden (das heißt den 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 vermieden werden können.
  • 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 zwei Kanten können verglichen werden. Angenommen, daß 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 beispielsweise das Dreieck 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 rechtsläufig. Wenn die Kante 23 eine Delta-Richtung von i 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 Kombinationen der Kante 12 und Kante 23 Delta-Richtungen angewandt werden, wobei in jedem Fall die richtige faced-ness bestimmt wird. Wenn im Grenzfall die Steigungen die gleichen 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. Dieser Fall kann jedoch früher in der Pipeline erfaßt werden (z.B. wenn das Vorderebenen- und das Rückebenen-Abschneiden durchgeführt wird).
  • Man bemerke, daß in den meisten Fällen nur eine Seite eines Dreiecks dargestellt wird. Wenn die faced-ness eines Dreiecks, die durch die obige Analyse bestimmt wird, somit diejenige ist, die zurückgewiesen wird, dann kann das Dreieck eliminiert werden (das heißt Gegenstand keiner weiteren Verarbeitung mit keinen erzeugten Abfragen sein). 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 (aber bei früheren Stufen der Einstellberechnungen).
  • Erzeugen von Ausgangspixelwerten von Abfragewerten - Fig. 19
  • Fig. 19 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens für das Auswählen und Filtern von in dem supergesampleten Abfragepufferspeicher 162 gespeicherten Abfragen, um Ausgangspixelwerte zu erzeugen. In Schritt 250 wird ein Strom von Speicherbehältern von dem supergesampleten Abfragepufferspeicher 162 gelesen. Diese Speicherbehälter werden in Schritt 252 in einem oder mehreren Behältercachespeichern 176 gespeichert, um den Einheiten zur Umrechnung von Abfrage zu Pixel einen leichten Zugriff auf die Abfragewerte während der Abfrage-zu- Pixel-Operation zu ermöglichen. In Schritt 252 werden die Speicherbehälter untersucht, um zu bestimmen, welcher der Speicherbehälter Abfragen enthalten kann, die zu dem gegenwärtig erzeugten Ausgangspixelwert beitragen können. Jede Abfrage, die in einem Behälter ist, der zu dem Ausgangspixel beitragen kann, wird dann einzeln untersucht, um zu bestimmen, ob die Abfrage tatsächlich beiträgt (Schritte 256-258). Die 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 gemäß der Filterausdehnung (Schritt 260) zu indexieren. In einer anderen Ausführungsform wird jedoch die wahrscheinlich aufwendige Berechnung für die Bestimmung des Abstandes zwischen dem Pixelzentrum und der Abfrage (was typischerweise eine Quadratwurzelfunktion erfordert) 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 Distanzberechnung 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 im ROM implementiert werden. Es können jedoch ebenso RAM-Tabellen verwendet werden. RAM-Tabellen können mit Vorteil in manchen Ausführungsformen dem Grafiksystem erlauben die Filterkoeffizienten auf einer Einzelbildbasis zu variieren. Die Filterkoeffizienten können beispielsweise variiert werden, um bekannte Fehler zu kompensieren oder für die persönlichen Vorlieben des Benutzers. In manchen Ausführungsformen kann die Verwendung von RAM-Tabellen dem Benutzer erlauben, verschiedene Filter auszuwählen (z.B. über eine Schärfesteuerung auf der Anzeigevorrichtung oder in einem Fenstersystemsteuerpanel). Eine Anzahl von unterschiedlichen Filtern kann implementiert werden, um die gewünschten Schärfegrade basierend auf unterschiedlichen Anzeigetypen zu erzeugen. Beispielsweise kann das Steuerpanel eine Einstellung haben, die optimiert für LCD-Anzeigen ist, und eine andere Einstellung haben, die optimiert für CRT-Anzeigen ist. Das Grafiksystem kann ebenso die Filterkoeffizienten auf einer Schirmbereichsbasis innerhalb eines Einzelbildes oder auf einer per-Ausgangspixel-Basis variieren. Eine andere alternative Ausführungsform kann tatsächlich die gewünschten Filtergewichte für jede Abfrage unter Verwendung von spezialisierter Hardware (z.B. Multiplizierer und Addierer) berechnen. Die Filtergewichte für Abfragen außerhalb der Grenzen des Abfrage-zu-Pixel-Filters 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 gewichteten Abfragen können dann in einer laufenden Summe summiert werden, um den Farbwert des endgültigen Ausgangspixels zu bestimmen (Schritt 266). Die Filtergewichte können ebenso zu einem laufenden Summen- Pixelfiltergewicht addiert werden (Schritt 268), das verwendet wird, um die gefilterten Pixel zu normalisieren. Die Normalisierung verhindert mit Vorteil, daß die 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 Abfrage-zu-Pixel-Berechnungsprozeß eingeführt wurde. Nachdem all die beitragenden Abfragen gewichtet und summiert wurden, kann das Gesamtpixelfiltergewicht 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 und/oder verarbeitet werden über einen oder mehrere der folgenden Prozesse (nicht notwendigerweise in dieser Ordnung): Gamma-Korrektur, Farbnachschlagung unter Verwendung von Pseudofarbtabellen, direkte Farbe, inverse Gammakorrektur, programmierbare Gamma-Verschlüsselung, Farbraumumwandlung und Digital-/Analog-Umwandlung, bevor sie letztendlich dargestellt werden (Schritt 274).
  • In manchen Ausführungsformen kann das Grafiksystem konfiguriert sein, so daß es jede Alpha-Information der Abfrage verwendet, um eine Maske zu erzeugen, die mit der Abfrage ausgegeben wird. Die Maske kann verwendet werden, um Echtzeitweichkanten-Blue-Screen-Effekte durchzuführen. Beispielsweise kann die Maske verwendet werden, um anzuzeigen, welche Teile des dargestellten Bildes maskiert werden sollten (und wieviel). Diese Maske könnte von dem Grafiksystem oder externer Hardware verwendet werden, um das dargestellte Bild mit einem anderen Bild (z.B. einem Signal von einer Videokamera) zu mischen, um einen Blue-Screen-Effekt zu erzeugen, der eben ist (anti-aliased unter Bezug auf die überlappenden Bereiche der zwei Bilder) oder einen Geister-Effekt (z.B. das Überlagern eines teilweise transparenten Objektes sanft über ein anderes Objekt, eine Szene oder einen Videostrom).
  • Beispielhafte Ausganaspixelberechnung - Fig. 20
  • Fig. 20 stellt ein vereinfachtes Beispiel einer Ausgangspixelfaltung dar. Wie die Figur zeigt, enthalten vier Behälter 288A-D Abfragen, die möglicherweise zu dem Ausgangspixel beitragen können. In diesem Beispiel ist das Zentrum des Ausgangspixels an der Grenze der Behälter 288A-288D 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, bestimmt der Abstand von jeder Abfrage von dem Pixelzentrum, welcher Filterwert auf die Abfrage angewendet wird. Beispielsweise ist die Abfrage 296 relativ nahe an dem Pixelzentrum und fällt somit in den Bereich des Filters mit einem Filterwert von 8. In gleicher Weise fallen die Abfragen 294 und 292 in die Regionen des Filters mit Filterwerten von 4 bzw. 2. Die Abfrage 290 fällt jedoch außerhalb der maximalen Filterausdehnung und erhält somit einen Filterwert von 0. Die Abfrage 290 wird daher nicht zu dem Wert des Ausgangspixels beitragen. Dieser Typ von Filter stellt sicher, daß die Abfragen, die am nächsten an dem Pixelzentrum lokalisiert sind, am meisten beitragen, während Pixel, die weiter von dem Pixelzentrum entfernt lokalisiert sind, weniger zu den endgültigen Ausgangspixelwerten beitragen. Dieser Typ der Filterung führt automatisch das Anti-Aliasing durch Ebnen jeder plötzlichen Veränderung in dem Bild (z.B. von einer schwarzen Linie zu einem hellen Hintergrund) durch. Ein anderer insbesondere 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 abgezogen werden, die berechnet 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 Rot-, Grün-, Blau- und Alpha-Werte auf zusätzlich zu den Positionsdaten der Abfrage. Der Block 310 stellt die Berechnung von jedem Pixelkomponentenwert für das nicht normalisierte Ausgangspixel dar. Wie Block 310 anzeigt, wird mögliche unerwünschte Verstärkung in die endgültigen Pixelwerte eingeführt (das heißt ein Ausgangspixel mit einem Rotkomponentenwert von 2000 ist viel größer als irgendeiner der Rotkomponentenwerte in der Abfrage). Wie vorher bemerkt wurde, können die Filterwerte summiert werden, um einen Normalisierungswert 308 zu erhalten. Der Normalisierungswert 308 wird verwendet, um die unerwünschte Verstärkung aus dem Ausgangspixel heraus zu teilen. Der Block 312 veranschaulicht diesen Prozeß und die endgültigen normalisierten Beispielpixelwerte.
  • Es sei bemerkt, daß die hier verwendeten Werte nur aus Zwecken der Beschreibung ausgewählt wurden und nicht als begrenzend verstanden werden. Beispielsweise kann der Filter eine große Anzahl von Regionen jeweils mit unterschiedlichen Filterwerten 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. Man bemerke ebenso, daß Gleitkommazahlen für erhöhte Genauigkeit verwendet werden können. Eine Vielfalt von Filtern kann verwendet werden, z.B. Box, Tent, Zylinder, Konus, Gauss, Catmull-Rom, Mitchell und Netravalli, Sinc mit Fenstern usw.
  • Es sei ebenso bemerkt, daß die Filtergewichte keine Potenzen von zwei sein müssen, wie in der Figur gezeigt ist. Das Beispiel in der Figur ist vereinfacht aus Zwecken der Erklärung. Eine Tabelle mit Filtergewichten kann verwendet werden (z.B. mit einer großen Anzahl von Einträgen, die indiziert sind basierend auf dem Abstand der Abfrage von dem Pixel- oder Filterzentrum). Weiterhin kann in manchen Ausführungsformen jede Abfrage in jedem Behälter summiert werden, um den Pixelwert zu bilden (obgleich manche Abfragen innerhalb des Behälters einen Gewichtungsfaktor von 0 haben können und dennoch nicht zu dem endgültigen Pixelwert beitragen.
  • 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 den Zweck 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 konfiguriert sein, um das Vollschirm-Anti-Aliasing durch stochastisches Abfragen von bis zu 16 Abfragen je Ausgangspixel gefiltert mit einem 5 · 5-Faltungsfilter zu implementieren.
  • Supersampling mit variabler Auflösung - Fig. 21-25
  • In Fig. 21 ist ein Diagramm eines möglichen Schemas für das Aufteilen des Abfragepufferspeichers 162 gezeigt. In dieser Ausführungsform ist der Abfragepufferspeicher 162 in die folgenden drei ineinandergeschachtelten Bereiche aufgeteilt: fovealer Bereich 354, medialer Bereich 352 und peripherer Bereich 350. Jeder dieser Bereiche hat eine rechteckig geformte Außengrenze, aber der mediale und der periphere Bereich haben ein rechteckig geformtes Loch in ihrem Zentrum. Jeder Bereich kann mit bestimmten konstanten Eigenschaften (je Einzelbild) konfiguriert sein (z.B. eine konstante Abfragedichte und eine konstante Größe des Pixelbehälters. In einer Ausführungsform kann der gesamte Dichtebereich 256 sein, das heißt, ein Bereich kann zwischen einer Abfrage alle 16 Schirmpixel (4 · 4) und 16 Abfragen für jedes Schirmpixel unterstützen. In anderen Ausführungsformen kann der Gesamtdichtebereich auf andere Werte, z.B. 64, begrenzt sein. In einer Ausführungsform variiert die Abfragedichte entweder linear oder nicht linear über einen entsprechenden Bereich. Es sei bemerkt, daß in anderen Ausführungsformen die Anzeige in eine Mehrzahl von Bereichen mit konstanter Größe aufgeteilt sein können (z.B. Quadrate, die eine Größe von 4 · 4 Pixeln oder 40 · 40 Pixeln haben).
  • Um die Berechnungen für Polygone, die eine oder mehrere Regionkanten (z.B. eine Kante der fovealen Region) umfassen, einfach durchzuführen, kann der Abfragepufferspeicher weiter in eine Mehrzahl von Unterbereiche aufgeteilt sein. In Fig. 21 ist eine Ausführungsform des Abfragepufferspeichers 162 in Unterregionen aufgeteilt gezeigt. Alle diese Unterregionen sind rechteckig, was dem Grafiksystem 112 erlaubt, eine 2D-Adresse mit einer Unterregion in eine lineare Adresse in dem Abfragepufferspeicher 162 zu übersetzen. In manchen Ausführungsformen hat somit jede Unterregion eine Speicherbasisadresse, die anzeigt, wo der Speicher für die Pixel innerhalb der Unterregion beginnt. Jede Unterregion kann ebenso einen "Stride"-Parameter bzw. Schrittparameter haben, der mit seiner Breite verknüpft ist.
  • Eine andere mögliche Teilung des supergesampleten Abfragepufferspeichers ist zirkular. In Fig. 22 ist solch eine Ausführungsform dargestellt. Beispielsweise kann jede Region zwei Radien haben, die hiermit verknüpft sind (z.B. 360-368), die die Region in drei konzentrische zirkulare Bereiche aufteilt. Die zirkularen Bereiche können alle um denselben Schirmpunkt, den Foveazentrumspunkt zentriert sein. Es sei jedoch bemerkt, daß der Foveazentrumspunkt nicht immer in dem Zentrum der fovealen Region lokalisiert sein muß. In manchen Beispielen kann er sogar außerhalb des Schirms (das heißt an der Seite der sichtbaren Anzeigefläche des Anzeigegeräts) lokalisiert sein. Während die Ausführungsform Unterstützung von bis zu sieben verschiedenen zirkularen Regionen darstellt, ist es möglich, daß manche der Kreise über zwei unterschiedliche Regionen gemeinsam genutzt werden, wodurch sich die verschiedenen zirkularen Bereiche auf fünf oder weniger reduzieren.
  • Die zirkularen Bereiche können Bereiche von tatsächlich genutzter konstanter Abfragedichte skizzieren. Beispielsweise kann in dem in der Figur dargestellten Beispiel die foveale Region 354 eine Abfragepufferspeicherdichte von acht Abfragen pro Schirmpixel zuweisen, jedoch außerhalb des innersten Kreises 368 kann sie nur vier Abfragen pro Pixel zuweisen und außerhalb des nächsten Kreises 366 kann sie nur zwei Abfragen pro Pixel zuweisen. In dieser Ausführungsform müssen somit die Ringe nicht notwendigerweise tatsächlichen Speicher sparen (die Bereiche tun dies), aber sie können möglicherweise Speicherbandbreite in den und aus dem Abfragepufferspeicher (wie auch Pixelfaltungsbandbreite) einsparen. Zusätzlich zu dem Anzeigen einer unterschiedlichen effektiven Abfragedichte können die Ringe ebenso verwendet werden, um ein unterschiedliches Abfragepositionsschema anzuzeigen, das eingesetzt wird. Wie vorher erwähnt wurde, können die Abfragepositionsschemata in einem RAM/ROM auf dem Chip oder in einem programmierbaren Speicher abgelegt werden.
  • Wie vorher diskutiert wurde, kann in manchen Ausführungsformen der supergesamplete Abfragepufferspeicher 162 weiter in Behälter aufgeteilt werden. Beispielsweise kann ein Behälter eine einzelne Abfrage oder eine Anordnung von Abfragen (z.B. 2 · 2 oder 4 · 2 Abfragen) speichern. In einer Ausführungsform kann jeder Behälter zwischen einem und 16 Abfragepunkten speichern, obwohl andere Konfigurationen möglich sind und in Betracht gezogen wurden. Jeder Bereich kann mit einer bestimmten Behältergröße konfiguriert sein sowie auch mit einer konstanten Speicherabfragedichte. Es sei bemerkt, daß die Bereiche mit niedriger Dichte nicht notwendigerweise größere Behältergrößen haben. In einer Ausführungsform sind die Bereiche (oder zumindest die inneren Bereiche) exakte ganzzahlige Vielfache der Behältergröße, der den Bereich einschließt. Dies gestattet eine effizientere Verwendung des Abfragepufferspeichers in manchen Ausführungsformen.
  • Das Supersampling mit variabler Auflösung beinhaltet das Berechnen einer variablen Anzahl von Abfragen für jedes Pixel, das auf der Anzeigevorrichtung angezeigt wird. Bestimmte Bereiche eines Bildes können von einer größeren Anzahl von Abfragen (z.B. nahe Objektkarten) profitieren, während andere Bereiche zusätzliche Abfragen nicht benötigen (z.B. ebene Bereiche mit einer konstanten Farbe und Helligkeit). Um Speicher und Bandbreite einzusparen, können zusätzliche Abfragen nur in Bereichen verwendet werden, die von einer erhöhten Auflösung profitieren. Wenn beispielsweise ein Teil der Anzeige mit einer konstanten Farbe blau (z.B. in einem Hintergrund) eingefärbt ist, dann können zusätzliche Abfragen nicht besonders sinnvoll sein, da sie alle einfach denselben konstanten Wert haben (gleich der dargestellten Hintergrundfarbe). Wenn dagegen ein zweiter Bereich auf dem Schirm ein dreidimensional dargestelltes Objekt mit komplexen Texturen und Kanten anzeigt, kann die Verwendung von zusätzlichen Abfragen nützlich sein bei der Vermeidung bestimmter Artefakte, wie z.B. das Aliasing. Eine Anzahl unterschiedlicher Verfahren kann verwendet werden, um zu bestimmen oder vorherzusagen, welche Bereiche eines Bildes von einer höheren Abfragedichte profitieren würden. Beispielsweise könnte eine Kantenanalyse durchgeführt werden auf dem endgültigen Bild und diese Information könnte verwendet werden, um vorherzusagen, wie die Abfragedichten verteilt sein sollten. Die Softwareanwendung kann ebenso in der Lage sein, anzuzeigen, welchen Bereichen eines Einzelbildes eine höhere Abfragedichte zugewiesen werden sollte.
  • Eine Anzahl unterschiedlicher Verfahren kann verwendet werden, um das Supersampling mit variabler Auflösung zu implementieren. Diese Verfahren tendieren dazu, in die zwei folgenden allgemeinen Kategorien zu fallen: (1) diejenigen Verfahren, die den Zeichen- oder Darstellungsprozeß betreffen und (2) diejenigen Verfahren, die den Faltungsprozeß betreffen. Beispielsweise können Abfragen in dem supergesampleten Abfragepufferspeicher 162 dargestellt werden unter Verwendung eines der folgenden Verfahren:
  • 1) eine gleichförmige Abfragedichte,
  • 2) eine variierende Abfragedichte auf einer Bereichsbasis (z.B. medial, foveal und peripher) und
  • 3) variierende Abfragedichte durch Veränderung der Dichte auf einer Abfragezeilenbasis (oder auf einer kleinen Anzahl von Abfragezeilenbasis).
  • Das Variieren der Abfragedichte auf einer Abfragezeilenbasis kann erzielt werden durch Verwendung einer Nachschlagetabelle von Dichten. Beispielsweise kann die Tabelle spezifizieren, daß die ersten fünf Pixel einer bestimmten Abfragezeile jeweils drei Abfragen haben, während die nächsten vier Pixel jeweils zwei Abfragen haben usw.
  • Auf der Faltungsseite sind die folgenden Verfahren möglich:
  • 1) ein gleichförmiger Faltungsfilter,
  • 2) ein kontinuierlich variabler Faltungsfilter und
  • 3) ein Faltungsfilter, der bei verschiedenen Ortsfrequenzen arbeitet.
  • Ein gleichförmiger Faltungsfilter kann beispielsweise eine konstante Ausdehnung (oder Zahl von ausgewählten Abfragen) für jedes berechnete Pixel aufweisen. Im Gegensatz dazu kann ein kontinuierlich variabler Faltungsfilter die Anzahl verwendeter Abfragen, die verwendet werden, um ein Pixel zu berechnen, allmählich verändern. Die Funktion kann kontinuierlich variieren von einem Maximum am Zentrum des Interesses zu einem Minimum in peripheren Gebieten.
  • Unterschiedliche Kombinationen dieser Verfahren (sowohl auf der Darstellungsseite als auch auf der Faltungsseite) sind ebenso möglich. Beispielsweise kann eine konstante Abfragedichte verwendet werden auf der Darstellungsseite, während ein kontinuierlich variabler Faltungsfilter auf den Abfragen verwendet wird.
  • Verschiedene Verfahren für die Bestimmung, welchen Bereichen des Bildes mehr Abfragen pro Pixel zugewiesen werden, sind ebenso in Betracht gezogen worden. In einer Ausführungsform können, wenn das Bild auf dem Schirm einen Hauptbrennpunkt hat (z.B. einen Charakter wie Mario in einem Computerspiel), dann mehr Abfragen für das Gebiet um Mario herum berechnet werden und weniger Abfragen können für Pixel in anderen Gebieten (z.B. um den Hintergrund oder nahe den Kanten des Schirms) berechnet werden.
  • In einer anderen Ausführungsform kann der Foveationspunkt des Betrachters bestimmt werden durch Augen-/Kopf-/Hand-Verfolgung. In Kopfverfolgungsausführungsformen wird die Richtung des Blicks des Betrachters bestimmt oder abgeschätzt aus der Orientierung des Kopfes des Betrachters, die unter Verwendung einer Vielzahl von Mechanismen gemessen wird. Beispielsweise kann ein Helm oder ein Visier, das von dem Betrachter getragen wird (mit Augen-/Kopfvertolgung) allein oder in Kombination mit einem Handverfolgungsmechanismus, einem Handlesekopf oder einem Augenverfolgungssensor verwendet werden, um die Orientierungsinformation dem Grafiksystem 112 zur Verfügung zu stellen. Andere Alternativen beinhalten die Kopfverfolgung unter Verwendung eines reflektierenden Infrarotpunktes, der auf der Stirn des Benutzers plaziert wird oder unter Verwendung einer Brille mit eingebauten Kopf und/oder Augenverfolgungssensoren. Ein Verfahren für das Verwenden der Kopf- und Handverfolgung ist im US-Patent 5,446,834 (mit dem Titel "Method and Apparatus for High Resolution Virtual Reality Systems Using Head Tracked Display" von Michael Deering, ausgestellt am 29. August 1995) beschrieben. Andere Verfahren für die Kopfverfolgung sind ebenso möglich und in Betracht gezogen worden (z.B. Infrarotsensoren, elektromagnetische Sensoren, kapazitive Sensoren, Videokameras, Schall- und Ultraschalldetektoren, kleidungsbasierte Sensoren, Videoverfolgungsgeräte, leitfähige Tinten, Dehnungsmesser, Kraftrückkopplungsdetektoren, faseroptische Sensoren, pneumatische Sensoren, magnetische Verfolgungsgeräte und mechanische Schalter).
  • Wie vorher erwähnt wurde, kann die Augenverfolgung besonders vorteilhaft sein, wenn sie in Verbindung mit der Kopfverfolgung verwendet wird. In augenverfolgenden Ausführungsformen wird die Richtung des Blicks des Betrachters direkt durch Erfassen der Orientierung der Augen des Betrachters in Relation zu dem Kopf zu dem Betrachter gemessen. Diese Information, wenn sie mit anderer Information betreffend die Position und die Orientierung des Kopfes des Betrachters in Bezug auf das Anzeigegerät kombiniert wird, kann eine genaue Messung des Foveationspunktes des Benutzers (oder der Foveationspunkte, wenn zwei augenverfolgende Sensoren verwendet werden) erlauben. Ein mögliches Verfahren für die Augenverfolgung ist in dem US-Patent Nr. 5,638,176 beschrieben (mit dem Titel "Inexpensive Interferometric Eye Tracking System"). Andere Verfahren für die Augenverfolgung sind ebenso möglich und wurden in Betracht gezogen (z.B. die oben aufgelisteten Verfahren für die Kopfverfolgung).
  • Ungeachtet dessen, welches Verfahren verwendet wird, wenn der Foveationspunkt des Betrachters seine Position ändert, so tut dies auch die Verteilung der Abfragen. Wenn beispielsweise der Blick des Betrachters auf die obere linke Ecke des Schirms fixiert ist, dann können den Pixeln, die der oberen linken Ecke des Schirms entsprechen, jeweils acht oder 16 Abfragen zugewiesen werden, während den Pixeln in der entgegengesetzten Ecke (das heißt der unteren rechten Ecke des Schirms) nur eine oder zwei Abfragen pro Pixel zugewiesen werden. Wenn sich der Blick des Betrachters verändert, dann tut dies auch die Zuteilung von Abfragen pro Pixel. Wenn sich der Blick des Betrachters zu der unteren rechten Ecke des Schirms bewegt können den Pixeln in der oberen linken Ecke des Schirms nur eine oder zwei Abfragen pro Pixel zugewiesen werden. Somit kann die Anzahl von Abfragen pro Pixel aktiv für unterschiedliche Regionen des Schirms verändert werden in Bezug auf den Foveationspunkt des Betrachters. Es sei bemerkt, daß in manchen Ausführungsformen mehrere Benutzer jeweils einen Kopf-/Augen-/Hand-Verfolgungsmechanismus haben können, der einen Eingang zu dem Grafiksystem 112 bereitstellt. In diesen Ausführungsfirmen kann es denkbarerweise zwei oder mehr Foveationspunkte auf dem Schirm geben mit entsprechenden Bereichen mit hoher und niedriger Abfragedichte. Wie vorher bemerkt wurde, können sich die Abfragedichten nur auf den Darstellungsprozeß, nur auf den Filterprozeß oder auf beide Prozesse auswirken.
  • In den Fig. 24A-B ist eine Ausführungsform eines Verfahrens für das Zuteilen einer Anzahl von Abfragen pro Pixel gezeigt. Das Verfahren teilt die Anzahl von Abfragen basierend auf dem Ort des Pixels relativ zu einem oder mehreren Foveationspunkten zu. In Fig. 24A wird ein Augen- oder Kopfverfolgungsgerät 360 verwendet, um den Foveationspunkt 362 (das heißt den Fokuspunkt des Blickes eines Betrachters) zu bestimmen. Dies kann bestimmt werden durch Verwendung eines Verfolgungsgerätes 360, um die Richtung zu bestimmen, in die die Augen des Betrachters (dargestellt als 364 in der Figur) blicken. Wie die Figur darstellt, werden in dieser Ausführungsform die Pixel in die foveale Region 534 (die um den Punkt der Foveation 362 zentriert sein kann), die mediale Region 352 und die periphere Region 350 aufgeteilt.
  • Drei Abfragepixel sind in der Figur angezeigt. Das Abfragepixel 374 ist innerhalb des fovealen Bereichs 314 angeordnet. Angenommen, der foveale Bereich 314 ist konfiguriert mit Behältern mit acht Abfragen und angenommen, der Faltungsradius für jedes Pixel berührt vier Behälter, dann kann ein Maximum von 32 Abfragen zu jedem Pixel beitragen. Das Abfragepixel 372 ist innerhalb des medialen Bereichs 352 lokalisiert. Angenommen, der mediale Bereich 352 ist mit Behältern mit vier Abfragen konfiguriert und angenommen, der Faltungsradius für jedes Pixel berührt vier Behälter, dann kann ein Maximum von 16 Abfragen zu jedem Pixel beitragen. Das Abfragepixel 370 ist innerhalb des peripheren Bereichs 350 lokalisiert. Angenommen, der periphere Bereich 370 ist mit Behältern mit jeweils einer Abfrage konfiguriert und angenommen, der Faltungsradius für jedes Pixel berührt einen Behälter, dann gibt es eine Abfrage-zu-Pixel-Korrelation für Pixel in dem peripheren Bereich 350. Man bemerke, daß diese Werte lediglich Beispiele sind und eine unterschiedliche Anzahl von Regionen, Abfragen pro Behälter und Faltungsradius verwendet werden kann.
  • In Fig. 24B ist das gleiche Beispiel gezeigt, jedoch mit einem unterschiedlichen Foveationspunkt 362. Wie die Figur darstellt, wenn das Verfolgungsgerät 360 eine Veränderung in der Position des Foveationspunktes 362 erfaßt, stellt es einen Eingang zu dem Grafiksystem zur Verfügung, der dann die Position des fovealen Bereichs 354 und des medialen Bereichs 352 einstellt. In manchen Ausführungsformen können sich Teile von einigen der Regionen (z.B. der medialen Region 352) über die Kante des Anzeigegeräts 84 hinaus erstrecken. In diesem Beispiel ist nun das Pixel 370 innerhalb des fovealen Bereichs 354, während die Pixel 372 und 374 nun innerhalb des peripheren Bereichs sind. Angenommen, die Abfragekonfiguration ist wie bei dem Beispiel in Fig. 24A, dann kann ein Maximum von 32 Abfragen zu dem Pixel 370 beitragen, während nur eine Abfrage zu den Pixeln 372 und 374 beitragen wird. Mit Vorteil wird diese Konfiguration mehr Abfragen den Bereichen zuweisen, die nahe des Foveationspunktes sind (das heißt dem Fokuspunkt des Blickes des Betrachters). Dies kann dem Betrachter ein realistischeres Bild zur Verfügung stellen, ohne daß es notwendig ist, eine größere Anzahl von Abfragen für jedes Pixel auf dem Anzeigegerät 84 zur Verfügung zu stellen.
  • In den Fig. 25A-B ist eine andere Ausführungsform eines Computersystems gezeigt, das mit einem supergesampleten Abfragepufferspeicher mit variabler Auflösung konfiguriert ist. In dieser Ausführungsform wird das Zentrum der Aufmerksamkeit des Betrachters bestimmt durch die Position eines Hauptcharakters 362. Mediale und foveale Bereiche sind um den Hauptcharakter 362 zentriert, wenn er sich über den Schirm bewegt. In manchen Ausführungsformen kann der Hauptcharakter ein einfacher Cursor sein (z.B. wie er durch eine Tastatureingabe oder eine Maus bewegt wird).
  • In noch einer anderen Ausführungsform können Bereiche mit höherer Abfragedichte um den Mittelpunkt des Schirms der Anzeigevorrichtung 84 zentriert sein. Dies kann mit Vorteil weniger Steuersoftware und Hardware erfordern, während immer noch ein schärferes Bild in dem Zentrum des Schirms (wo die Aufmerksamkeit des Betrachters während des Großteils der Zeit fokussiert sein kann) zur Verfügung stellt.
  • Obgleich die obigen Ausführungsformen in bemerkenswertem Detail beschrieben wurden, sind andere Versionen möglich. Zahllose Variationen und Modifikationen ergeben sich dem Fachmann, sobald er die obige Offenbarung voll verstanden hat.
  • Gewerbliche Anwendbarkeit
  • Wie von dem Fachmann nach dem Studieren der Beschreibung und der begleitenden Zeichnungen verstanden wird, sind die Systeme und Verfahren, die hier offenbar wurden, auf einer Anzahl von unterschiedlichen Feldern anwendbar, einschließlich, jedoch nicht hierauf begrenzt, auf Grafiksysteme und Untersysteme, Computer, Rechengeräte, Set-Top-Boxen, Spielkonsolen, persönliche digitale Assistenten, digitale Fernseher, Videoprozessoren, Grafikprozessoren, Multimediasysteme und Prozessoren, Systeme mit virtueller Realität und andere Systeme, die Grafikdaten darstellen und/oder anzeigen.

Claims (21)

1. Graphisches System, das aufweist:
einen oder mehrere Prozessoren (352), die derart konfiguriert sind, daß sie einen Satz von graphischen Daten empfangen und eine Mehrzahl von Abfragen, die auf den graphischen Daten basieren, rendern bzw. wiedergeben,
einen Abfragepufferspeicher (162), der derart konfiguriert ist, daß er die Mehrzahl von Abfragen speichert, und
eine Mehrzahl von Abfrage-zu-Pixel-Berechnungseinheiten (360), wobei die Abfrage-zu- Pixel-Berechnungseinheiten derart konfiguriert sind, daß sie Abfragen von dem Abfragepufferspeicher auswählen und filtern, um Ausgabepixel zu erzeugen, wobei die Ausgabepixel verwendbar sind, um ein Bild auf einem Anzeigegerät zu bilden, wobei jede der Abfrage-zu-Pixel- Berechnungseinheiten derart konfiguriert ist, daß sie Abfragen von einer entsprechenden Region des Abfragepufferspeichers auswählt und filtert, um einen entsprechenden Untersatz bzw. Teilsatz von den Ausgabepixeln zu erzeugen, wobei die Abfrage-zu-Pixel-Berechnungseinheiten derart betreibbar sind, daß sie die Abfrage-Pufferspeicherregionen auf einer Einzelbild-per-Einzelbild-Basis variieren.
2. Verfahren für das Rendering bzw. Wiedergeben eines Satzes von graphischen Daten, wobei das Verfahren aufweist:
das Empfangen von graphischen Daten und das Erzeugen einer Mehrzahl von Abfragen basierend auf den graphischen Daten,
Ablage der Abfragen in einem Ablagepufferspeicher,
Auswählen und Filtern von Abfragen von dem Abfragepufferspeicher, um Ausgabepixel zu erzeugen, wobei die Ausgabepixel verwendbar sind, um ein Bild auf einer Anzeigevorrichtung zu bilden, wobei das Auswählen und Filtern das parallele Auswählen und Filtern von Abfragen von einer Mehrzahl von Regionen des Abfragepufferspeichers umfaßt, um parallel entsprechende Teilsätze von Ausgabepixeln zu erzeugen, und
das Variieren der Abfrage-Pufferspeicherregionen auf einer Einzelbild-per-Einzelbild-Basis.
3. Verfahren nach Anspruch 2, wobei jede Abfrage Farbkomponenten umfaßt und wobei das Filtern umfaßt:
das Bestimmen, welche Abfragen innerhalb einer vorbestimmten Filtereinhüllenden liegen,
das Multiplizieren jeder Abfrage innerhalb der vorbestimmten Filtereinhüllenden mit einem oder mehreren Wichtungsfaktoren, wobei
die Wichtungsfaktoren in Abhängigkeit von der Position der Abfrage relativ zu dem Zentrum der Filtereinhüllenden variieren, und
Aufsummieren der gewichteten Abfragen, um eines der Ausgabepixel zu bilden.
4. Computersystem, das aufweist:
ein Anzeigegerät (84),
eine Einrichtung für das Empfangen eines Satzes von graphischen Daten und ein graphisches System nach Anspruch 1.
5. System nach Anspruch 1 oder Anspruch 4, wobei jede Abfrage Farbkomponenten aufweist und wobei die Abfrage-zu-Pixel-Berechnungseinheiten derart konfiguriert sind, daß sie bestimmen, welche Abfragen innerhalb einer vorbestimmten Filtereinhüllenden sind, die Abfragen innerhalb der vorbestimmten Filtereinhüllenden mit einem oder mehreren Wichtungsfaktoren multiplizieren, wobei die Wichtungsfaktoren in Abhängigkeit von der relativen Position der Abfrage zu dem Zentrum der Filtereinhüllenden variieren und die gewichteten Abfragen summieren, um ein oder mehrere Ausgangspixel zu bilden.
6. System oder Verfahren nach einem der Ansprüche 1 bis 5, wobei zumindest zwei der Abfrage-Pufferspeieherregionen in dem Abfragepufferspeicher überlappen.
7. System oder Verfahren nach einem der Ansprüche 1 bis 5, wobei jede Abfrage- Pufferspeicherregion einem unterschiedlichen vertikalen oder horizontalen Streifen des Abfragepufferspeichers entspricht.
8. System oder Verfahren nach einem der Ansprüche 1 bis 5, wobei jede Abfrage- Pufferspeicherregion zu einer oder mehreren ungeraden oder einer oder mehreren geraden Abtastzeilen des Bildes korrespondiert.
9. System oder Verfahren nach einem der Ansprüche 1 bis 5, wobei jede Abfrage- Pufferspeicherregion einen unterschiedlichen Quadranten des Abfragepufferspeichers umfaßt.
10. System oder Verfahren nach einem der Ansprüche 1 bis 9, wobei die Anzeigevorrichtung eine Mehrzahl von einzelnen Anzeigevorrichtungen umfaßt und wobei jede Abfrage- Pufferspeicherregion einer einzelnen der Mehrzahl von einzelnen Anzeigevorrichtungen entspricht.
11. System oder Verfahren nach einem der Ansprüche 1 bis 9, wobei die Anzeigevorrichtung eine Mehrzahl von individuellen Anzeigevorrichtungen umfaßt und wobei jede Abfrage- Pufferspeicherregion zu einer anderen Anzeigevorrichtung aus der Mehrzahl von individuellen Anzeigevorrichtungen korrespondiert.
12. System oder Verfahren nach einem der Ansprüche 1 bis 11, wobei die Abfrage- Pufferspeicherregionen in der Dimension auf einer Einzelbild-per-Einzelbild-Basis variieren.
13. System oder Verfahren nach einem der Ansprüche 1 und 4 bis 11, wobei die Abfrage- Pufferspeicherregionen in der Dimension auf einer Einzelbild-per-Einzelbild-Basis variieren, um die Anzahl von Abfragen, die von jedem der Abfrage-zu-Pixel-Berechnungseinheiten gefiltert wurde, auszugleichen.
14. System oder Verfahren nach einem der Ansprüche 1 bis 5, 9 bis 13, wobei jede Abfrage- Pufferspeicherregion einem unterschiedlichen rechteckigen Abschnitt des Abfragepufferspeichers entspricht.
15. System oder Verfahren nach einem der Ansprüche 1 bis 14, wobei jede Abfrage eine Z- Komponente umfaßt.
16. System oder Verfahren nach einem der Ansprüche 1 bis 15, wobei die Abfragen, die in dem Abfragepufferspeicher abgelegt sind, doppelt gepuffert sind.
17. System oder Verfahren nach einem der Ansprüche 1 bis 16, wobei die Abfrage- Pufferspeicherregionen über die Zeit in der Größe variieren.
18. System oder Verfahren nach einem der Ansprüche 1 und 4 bis 17, wobei jede Abfrage- Pufferspeicherregion in der Größe auf einer Einzelbild-per-Einzelbild-Basis variiert, um die Anzahl von von jeder der Abfrage-zu-Pixel-Berechnungseinheiten gefilterten Abfragen auszugleichen.
19. System oder Verfahren nach einem der Ansprüche 1 bis 18, wobei jede Abfrage- Pufferspeicherregion in der Größe auf einer Einzelbild-per-Einzelbild-Basis variiert, um die Anzahl von Abfragen in jeder Abfrage-Pufferspeicherregion auszugleichen.
20. System oder Verfahren nach einem der Ansprüche 1 bis 19, wobei die Abfragen, die in dem Abfragepufferspeicher abgelegt sind, als binäre Files abgelegt sind.
21. System oder Verfahren nach einem der Ansprüche 1 bis 20, wobei die Anzahl von Abfragen, die für jedes Pixel gefiltert wurden, über dem Abfragepufferspeicher variieren.
DE60000335T 1999-02-17 2000-02-17 Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern Expired - Lifetime DE60000335T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/251,844 US6466206B1 (en) 1998-02-17 1999-02-17 Graphics system with programmable real-time alpha key generation
US09/472,940 US6496187B1 (en) 1998-02-17 1999-12-27 Graphics system configured to perform parallel sample to pixel calculation
PCT/US2000/004148 WO2000049577A1 (en) 1999-02-17 2000-02-17 A graphics system configured to perform parallel sample to pixel calculation

Publications (2)

Publication Number Publication Date
DE60000335D1 DE60000335D1 (de) 2002-09-19
DE60000335T2 true DE60000335T2 (de) 2002-12-05

Family

ID=26941855

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60000335T Expired - Lifetime DE60000335T2 (de) 1999-02-17 2000-02-17 Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern

Country Status (7)

Country Link
US (1) US6496187B1 (de)
EP (1) EP1161743B1 (de)
JP (1) JP2002537614A (de)
AU (1) AU771752B2 (de)
CA (1) CA2362353A1 (de)
DE (1) DE60000335T2 (de)
WO (1) WO2000049577A1 (de)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850236B2 (en) 1998-02-17 2005-02-01 Sun Microsystems, Inc. Dynamically adjusting a sample-to-pixel filter in response to user input and/or sensor input
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6664955B1 (en) * 2000-03-15 2003-12-16 Sun Microsystems, Inc. Graphics system configured to interpolate pixel values
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US6999100B1 (en) * 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
JP2002140722A (ja) * 2000-08-23 2002-05-17 Sony Computer Entertainment Inc エイリアシングを除去した画像を描画する装置及び方法
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6885378B1 (en) * 2000-09-28 2005-04-26 Intel Corporation Method and apparatus for the implementation of full-scene anti-aliasing supersampling
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US6915338B1 (en) * 2000-10-24 2005-07-05 Microsoft Corporation System and method providing automatic policy enforcement in a multi-computer service application
US6907395B1 (en) 2000-10-24 2005-06-14 Microsoft Corporation System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model
US7093288B1 (en) 2000-10-24 2006-08-15 Microsoft Corporation Using packet filters and network virtualization to restrict network communications
US7113900B1 (en) 2000-10-24 2006-09-26 Microsoft Corporation System and method for logical modeling of distributed computer systems
US6886038B1 (en) 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
US20030063095A1 (en) * 2000-12-29 2003-04-03 Sun Microsystems, Inc. Statistic logic for collecting a histogram of pixel exponent values
US6826311B2 (en) * 2001-01-04 2004-11-30 Microsoft Corporation Hough transform supporting methods and arrangements
US20020140706A1 (en) * 2001-03-30 2002-10-03 Peterson James R. Multi-sample method and system for rendering antialiased images
US7243374B2 (en) 2001-08-08 2007-07-10 Microsoft Corporation Rapid application security threat analysis
US7145577B2 (en) * 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
CN100410725C (zh) 2001-09-12 2008-08-13 麦克罗尼克激光***公司 使用空间光调制器的改进方法和装置
US7302111B2 (en) 2001-09-12 2007-11-27 Micronic Laser Systems A.B. Graphics engine for high precision lithography
JP3792149B2 (ja) * 2001-11-12 2006-07-05 任天堂株式会社 画像処理装置および画像処理プログラム
US6618185B2 (en) 2001-11-28 2003-09-09 Micronic Laser Systems Ab Defective pixel compensation method
US7106490B2 (en) 2001-12-14 2006-09-12 Micronic Laser Systems Ab Methods and systems for improved boundary contrast
US6999087B2 (en) 2002-03-12 2006-02-14 Sun Microsystems, Inc. Dynamically adjusting sample density in a graphics system
US6975322B2 (en) 2002-03-12 2005-12-13 Sun Microsystems, Inc. Dynamically adjusting a number of rendering passes in a graphics system
JP2004348169A (ja) * 2002-03-12 2004-12-09 Sun Microsyst Inc グラフィック・システムにおけるサンプル密度および/またはいくつかのレンダリング・パスの動的な調整
US6922199B2 (en) 2002-08-28 2005-07-26 Micron Technology, Inc. Full-scene anti-aliasing method and system
CN1723384A (zh) 2003-01-15 2006-01-18 麦克罗尼克激光***公司 检测缺陷像素的方法
US7266255B1 (en) 2003-09-26 2007-09-04 Sun Microsystems, Inc. Distributed multi-sample convolution
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
JP2007512613A (ja) 2003-11-19 2007-05-17 ルシッド インフォメーション テクノロジー リミテッド Pcバス上の多重3−dグラフィックパイプラインのための方法およびシステム
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US7812844B2 (en) 2004-01-28 2010-10-12 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip having a routing unit and a control unit for parallelizing multiple GPU-driven pipeline cores according to the object division mode of parallel operation during the running of a graphics application
US20090027383A1 (en) 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US8497865B2 (en) * 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US20080088631A1 (en) 2003-11-19 2008-04-17 Reuven Bakalash Multi-mode parallel graphics rendering and display system supporting real-time detection of scene profile indices programmed within pre-profiled scenes of the graphics-based application
WO2005059842A1 (es) * 2003-12-19 2005-06-30 Tdvision Corporation S.A. De C.V. Sistema de videojuegos 3d
EP1719018A1 (de) 2004-02-25 2006-11-08 Micronic Laser Systems Ab Verfahren zum belichten von strukturen und zum emulieren von masken bei der optischen maskenlosen lithographie
JP2005310243A (ja) * 2004-04-20 2005-11-04 Seiko Epson Corp メモリコントローラ、半導体集積回路装置、半導体装置、マイクロコンピュータ及び電子機器
JP2005339144A (ja) * 2004-05-26 2005-12-08 Sharp Corp 画像処理回路及び液晶表示装置
US20060177122A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
US7616207B1 (en) * 2005-04-25 2009-11-10 Nvidia Corporation Graphics processing system including at least three bus devices
US10026140B2 (en) * 2005-06-10 2018-07-17 Nvidia Corporation Using a scalable graphics system to enable a general-purpose multi-user computer system
US8893016B2 (en) * 2005-06-10 2014-11-18 Nvidia Corporation Using a graphics system to enable a multi-user computer system
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US7973797B2 (en) * 2006-10-19 2011-07-05 Qualcomm Incorporated Programmable blending in a graphics processing unit
US7889205B1 (en) 2006-10-24 2011-02-15 Adobe Systems Incorporated Frame buffer based transparency group computation on a GPU without context switching
US20080252652A1 (en) * 2007-04-13 2008-10-16 Guofang Jiao Programmable graphics processing element
US7675524B1 (en) * 2007-05-17 2010-03-09 Adobe Systems, Incorporated Image processing using enclosed block convolution
KR20090054835A (ko) * 2007-11-27 2009-06-01 삼성전자주식회사 3차원 영상 처리방법 및 그 장치
KR100980449B1 (ko) * 2007-12-17 2010-09-07 한국전자통신연구원 병렬 전역조명 렌더링 방법 및 시스템
US8077377B2 (en) 2008-04-24 2011-12-13 Micronic Mydata AB Spatial light modulator with structured mirror surfaces
KR101477538B1 (ko) * 2008-08-06 2014-12-30 삼성전자주식회사 디지털 이미지 처리장치, 그 제어방법 및 제어방법을실행하기 위한 프로그램을 저장한 기록매체
JP5195250B2 (ja) * 2008-10-03 2013-05-08 ソニー株式会社 画像表示システム及び画像表示装置
CA2684513A1 (en) * 2008-11-17 2010-05-17 X6D Limited Improved performance 3d glasses
US20100128046A1 (en) * 2008-11-26 2010-05-27 Microsoft Corporation Parallel poisson disk sampling
EP2359192B1 (de) * 2008-12-05 2013-02-13 Micronic Mydata AB Gradientgestützte Bildwiederauftastung für die Mikrolithographie
US8406553B2 (en) * 2009-07-17 2013-03-26 Microsoft Corporation Poisson disk sample maps
US8102305B2 (en) * 2010-01-13 2012-01-24 Raytheon Company Filtering sensor data to provide estimates of structures
US8928690B2 (en) * 2012-03-20 2015-01-06 Advanced Micro Devices, Inc. Methods and systems for enhanced quality anti-aliasing
US9251555B2 (en) 2012-06-08 2016-02-02 2236008 Ontario, Inc. Tiled viewport composition
US8817044B2 (en) * 2012-06-12 2014-08-26 Christie Digital Systems Usa, Inc. Method, system and apparatus for blending overlapping images
US9265458B2 (en) 2012-12-04 2016-02-23 Sync-Think, Inc. Application of smooth pursuit cognitive testing paradigms to clinical drug development
US9380976B2 (en) 2013-03-11 2016-07-05 Sync-Think, Inc. Optical neuroinformatics
US10528127B2 (en) 2013-12-09 2020-01-07 Apple Inc. Method for operating an eye tracking device and eye tracking device for providing an active power management
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9710957B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9569811B2 (en) * 2014-06-26 2017-02-14 Qualcomm Incorporated Rendering graphics to overlapping bins
US10475370B2 (en) * 2016-02-17 2019-11-12 Google Llc Foveally-rendered display
US10319114B2 (en) 2017-07-13 2019-06-11 Google Llc Foveated compression of display streams
CN114387647B (zh) * 2021-12-29 2023-04-28 北京瑞莱智慧科技有限公司 对抗扰动生成方法、装置及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0430501B1 (de) * 1989-11-17 1999-02-03 Digital Equipment Corporation 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
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
US5742277A (en) * 1995-10-06 1998-04-21 Silicon Graphics, Inc. Antialiasing of silhouette edges
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
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
EP1055199B1 (de) * 1998-02-17 2002-05-22 Sun Microsystems, Inc. Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen

Also Published As

Publication number Publication date
JP2002537614A (ja) 2002-11-05
AU771752B2 (en) 2004-04-01
CA2362353A1 (en) 2000-08-24
WO2000049577A1 (en) 2000-08-24
US6496187B1 (en) 2002-12-17
EP1161743A1 (de) 2001-12-12
EP1161743B1 (de) 2002-08-14
DE60000335D1 (de) 2002-09-19
AU3235600A (en) 2000-09-04

Similar Documents

Publication Publication Date Title
DE60000335T2 (de) Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern
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
DE60000447T2 (de) Graphisches system das muster in einem musterpuffer darstellt und in anhängigkeit von gespeicherten mustern pixel erzeugt
US7106322B2 (en) Dynamically adjusting a sample-to-pixel filter to compensate for the effects of negative lobes
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
DE60103535T2 (de) Graphisches system
US6664955B1 (en) Graphics system configured to interpolate pixel values
US6417861B1 (en) Graphics system with programmable sample positions
US7474308B2 (en) Graphics system having a variable density super-sampled sample buffer
US6801202B2 (en) Graphics system configured to parallel-process graphics data using multiple pipelines
US6781585B2 (en) Graphics system having a super-sampled sample buffer and having single sample per pixel support
DE60000450T2 (de) Graphisches system mit überabgetastetem musterpuffer mit erzeugung von ausgangspixeln unter benutzung von selektiver justierung der filterung zur implementierung von anzeigeeffekten
DE60000681T2 (de) Graphisches system mit superabtastungspuffer mit speicherung von abtastpositionsinformation
EP1205881A2 (de) Graphisches System mit Superabtasten mit veränderlicher Auflösung
EP1290643A2 (de) Graphisches system mit einem verzerrungsfilter
KR20020031097A (ko) 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템
KR20010113669A (ko) 병렬적 샘플-픽셀 연산을 수행하도록 구성된 그래픽 시스템

Legal Events

Date Code Title Description
8364 No opposition during term of opposition