DE69909437T2 - Graphisches system mit superabtasten mit veränderlicher auflösung - Google Patents

Graphisches system mit superabtasten mit veränderlicher auflösung Download PDF

Info

Publication number
DE69909437T2
DE69909437T2 DE1999609437 DE69909437T DE69909437T2 DE 69909437 T2 DE69909437 T2 DE 69909437T2 DE 1999609437 DE1999609437 DE 1999609437 DE 69909437 T DE69909437 T DE 69909437T DE 69909437 T2 DE69909437 T2 DE 69909437T2
Authority
DE
Germany
Prior art keywords
query
queries
pixels
pixel
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE1999609437
Other languages
English (en)
Other versions
DE69909437D1 (de
Inventor
F. Michael DEERING
Scott Nelson
David N. NAEGLE
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
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69909437D1 publication Critical patent/DE69909437D1/de
Application granted granted Critical
Publication of DE69909437T2 publication Critical patent/DE69909437T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration by the use of local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/18Eye characteristics, e.g. of the iris
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61BDIAGNOSIS; SURGERY; IDENTIFICATION
    • A61B3/00Apparatus for testing the eyes; Instruments for examining the eyes
    • A61B3/10Objective types, i.e. instruments for examining the eyes independent of the patients' perceptions or reactions
    • A61B3/113Objective types, i.e. instruments for examining the eyes independent of the patients' perceptions or reactions for determining or recording eye movement
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61BDIAGNOSIS; SURGERY; IDENTIFICATION
    • A61B5/00Measuring for diagnostic purposes; Identification of persons
    • A61B5/24Detecting, measuring or recording bioelectric or biomagnetic signals of the body or parts thereof
    • A61B5/316Modalities, i.e. specific diagnostic methods
    • A61B5/398Electrooculography [EOG], e.g. detecting nystagmus; Electroretinography [ERG]
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61BDIAGNOSIS; SURGERY; IDENTIFICATION
    • A61B5/00Measuring for diagnostic purposes; Identification of persons
    • A61B5/72Signal processing specially adapted for physiological signals or for diagnostic purposes
    • A61B5/7232Signal processing specially adapted for physiological signals or for diagnostic purposes involving compression of the physiological signal, e.g. to extend the signal recording period

Description

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

Claims (18)

  1. Grafiksystem, das aufweist: einen Grafikprozessor, der derart konfiguriert ist, daß er 3D-Grafikdaten empfängt, wobei der Grafikprozessor derart konfiguriert ist, daß er eine Mehrzahl von Abfragewerten bzw. Momentwerten aus den 3D-Grafikdaten erzeugt, wobei mehr Abfragewerte als Ausgangspixel erzeugt werden können, einen Abfragewertpuffer, der derart angeschlossen ist, daß er die Abfragen von dem Grafikprozessor empfängt und speichert, wobei der Abfragepufferspeicher derart konfiguriert ist, daß er zumindest einen Teil der gespeicherten Abfragewerte doppelt pufferspeichert, und ein oder mehrere Einheiten zur Umrechnung von Abfrage in Pixel, die derart angeschlossen sind, daß sie Abfragewerte von dem Abfragepufferspeicher empfangen, wobei die Einheiten zur Umrechnung von Abfrage in Pixel derart konfiguriert sind, daß sie die Ausgangspixel aus den gespeicherten Abfragewerten filtern und die Ausgangspixel zu einer Anzeigevorrichtung leiten, ohne die Ausgangspixel in einem dazwischen liegenden Einzelbildpufferspeicher abzulegen.
  2. Grafiksystem nach Anspruch 1, wobei der Abfragepufferspeicher derart konfiguriert ist, daß er zumindest einen Teil von jedem abgelegten Abfragewert doppelt pufferspeichert.
  3. Grafiksystem nach Anspruch 1 oder 2, wobei jede Einheit zur Umrechnung von Abfrage in Pixel derart konfiguriert ist, daß sie die Ausgangspixel in Echtzeit bildet.
  4. Grafiksystem nach einem der Ansprüche 1 bis 3, wobei jede Einheit zur Umrechnung von Abfrage in Pixel derart konfiguriert ist, daß jedes Ausgangspixel einmal je Bildwiederholzyklus der Anzeigevorrichtung gebildet wird.
  5. Grafiksystem nach einem der Ansprüche 1 bis 4, wobei jede Einheit zur Umrechnung von Abfrage in Pixel programmierbar ist, um die Parameter, die das Filtern, das von der Einheit zur Umrechnung von Abfrage in Pixel durchgeführt wird, auf einer Einzelbild-zu-Einzelbild-Basis zu verändern.
  6. Grafiksystem nach einem der Ansprüche 1 bis 5, wobei jede Einheit zur Umrechnung von Abfrage zu Pixel derart konfiguriert ist, daß sie Abfragen entsprechend einer bestimmten Region des Abfragepufferspeichers empfängt.
  7. Grafiksystem nach Anspruch 6, wobei sich die bestimmten Regionen überlappen.
  8. Grafiksystem nach einem der Ansprüche 1 bis 7, wobei die Abfragen in dem Abfragepufferspeicher in Behältern abgelegt sind, wobei jeder Behälter die näherungsweise Position von jeder Abfrage innerhalb des Behälters definiert, wobei die präzise Position von jeder Abfrage innerhalb des Behälters bestimmt wird durch Addition von X-Offsetwerten und Y-Oftsetwerten, die mit den Abfragewerten verknüpft sind, zu der Behälterposition der Abfrage, und wobei der X-Offsetwert und der Y-Offsetwert von jeder Abfrage in dem Abfragepufferspeicher abgelegt ist.
  9. Grafiksystem nach einem der Ansprüche 1 bis 8, wobei die Einheit zur Umrechnung von Abfrage zu Pixel derart konfiguriert ist, daß sie die Farbwerte eines bestimmten Ausgangspixels bestimmt durch: Multiplikation jeder Abfrage, die in eine vorbestimmte Region um das Zentrum eines bestimmten Ausgangspixels fällt, mit einem Gewichtungsfaktor, und Summation der gewichteten Abfragewerte.
  10. Verfahren für den Betrieb eines Grafiksystems, das aufweist: Empfangen von 3D-Grafikdaten, wobei die 3D-Grafikdaten eine Mehrzahl von graphischen Grundelementen aufweisen, Berechnen einer Mehrzahl von Abfragepositionen, Bestimmung, welche Abfragepositionen innerhalb der graphischen Grundelemente liegen, Darstellen der Abfragen, die innerhalb der graphischen Grundelemente sind, Speichern der dargestellten Abfragen in einem Abfragepufferspeicher, wobei zumindest ein Teil der abgelegten Abfragen doppelt puffergespeichert ist, und Filtern der abgelegten Abfragen, um ein Ausgangspixel zu erzeugen, und Ausgeben der Ausgangspixel ohne Speichern der Ausgangspixel in einem dazwischen liegenden Einzelbildpufferspeicher.
  11. Verfahren nach Anspruch 10, wobei das Filtern aufweist: Lesen einer Gruppe von Abfragen von dem Abfragepufferspeicher, Bestimmen, welche Abfragen innerhalb der Gruppe innerhalb einer vorbestimmten Region oder innerhalb eines Abstandes von dem Zentrum des zu erzeugenden Ausgangspixels lokalisiert sind, Anwenden eines Skalierungsfaktors auf jede Abfrage innerhalb der vorbestimmten Region oder des vorbestimmten Abstandes, Summierung der skalierten Abfragen, um die Ausgangspixel zu bilden, und Normalisieren der Ausgangspixel.
  12. Verfahren nach Anspruch 11, wobei der Skalierungsfaktor als eine Funktion der Position der Abfrage relativ zu dem Zentrum des Ausgangspixels variiert.
  13. Verfahren nach einem der Ansprüche 10 bis 12, wobei der Filter veränderbar, und zwar zumindest so häufig wie der Bildwiederholzyklus des Schirms.
  14. Verfahren nach einem der Ansprüche 10 bis 13, wobei das Speichern das Speichern der Abfragen in Behältern beinhaltet, wobei die Position jeder Abfrage bestimmt wird durch Addition eines X-Offsets und eines Y-Offsets zu der Position des Behälters.
  15. Verfahren nach Anspruch 14, wobei das Filtern das Lesen zumindest eines Teils von einer oder mehreren Spalten von Behältern von dem Abfragepufferspeicher aufweist, wobei die Spalten sich überlappen, wobei mehr als eine der Spalten parallel gefiltert werden.
  16. System oder Verfahren nach einem der Ansprüche 1 bis 15, wobei die Anzahl von Abfragen, die zu jedem Ausgangspixel beitragen, innerhalb eines einzelnen Einzelbildes variiert.
  17. Computersystem, das aufweist: einen Mikroprozessor, einen Hauptspeicher, einen Bus, der den Mikroprozessor und den Hauptspeicher verbindet, und ein Grafiksystem nach einem der Ansprüche 1 bis 9.
  18. Computersoftwareprogramm, das auf einem Trägermedium verkörpert ist, wobei das Softwareprogramm eine Mehrzahl von Befehlen aufweist, die derart konfiguriert sind, daß sie einen Grafikprozessor anweisen, das Verfahren nach einem der Ansprüche 10 bis 16 durchzuführen.
DE1999609437 1998-02-17 1999-02-17 Graphisches system mit superabtasten mit veränderlicher auflösung Expired - Fee Related DE69909437T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US7483698P 1998-02-17 1998-02-17
US74836P 1998-02-17
PCT/US1999/003270 WO1999041706A1 (en) 1998-02-17 1999-02-17 Graphics system with variable resolution super-sampling

Publications (2)

Publication Number Publication Date
DE69909437D1 DE69909437D1 (de) 2003-08-14
DE69909437T2 true DE69909437T2 (de) 2004-04-15

Family

ID=22121961

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1999609437 Expired - Fee Related DE69909437T2 (de) 1998-02-17 1999-02-17 Graphisches system mit superabtasten mit veränderlicher auflösung

Country Status (6)

Country Link
US (2) US6424343B1 (de)
EP (1) EP1055201B1 (de)
JP (1) JP2002503855A (de)
AU (1) AU2868199A (de)
DE (1) DE69909437T2 (de)
WO (1) WO1999041706A1 (de)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6577312B2 (en) 1998-02-17 2003-06-10 Sun Microsystems, Inc. Graphics system configured to filter samples using a variable support filter
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US7982740B2 (en) 1998-11-09 2011-07-19 Broadcom Corporation Low resolution graphics mode support using window descriptors
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US7911483B1 (en) 1998-11-09 2011-03-22 Broadcom Corporation Graphics display system with window soft horizontal scrolling mechanism
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6661422B1 (en) * 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
US6700672B1 (en) * 1999-07-30 2004-03-02 Mitsubishi Electric Research Labs, Inc. Anti-aliasing with line samples
CA2316611A1 (en) * 1999-08-31 2001-02-28 Nintendo Co. Ltd. Method and apparatus for providing depth blur effects within a 3d videographics system
JP2001109905A (ja) * 1999-10-01 2001-04-20 Mitsubishi Electric Inf Technol Center America Inc ボリューム・レンダリング・システムにおけるボリューム・データ・セットのレンダリング方法
US7209140B1 (en) 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US6947057B2 (en) * 2000-01-11 2005-09-20 Sun Microsystems, Inc. Rendering lines with sample weighting
US7106322B2 (en) 2000-01-11 2006-09-12 Sun Microsystems, Inc. Dynamically adjusting a sample-to-pixel filter to compensate for the effects of negative lobes
US6664955B1 (en) * 2000-03-15 2003-12-16 Sun Microsystems, Inc. Graphics system configured to interpolate pixel values
US7079157B2 (en) * 2000-03-17 2006-07-18 Sun Microsystems, Inc. Matching the edges of multiple overlapping screen images
US6771272B2 (en) 2000-03-17 2004-08-03 Sun Microsystems, Inc. Graphics system having a super-sampled sample buffer with hot spot correction
US6940529B2 (en) * 2000-03-17 2005-09-06 Sun Microsystems, Inc. Graphics system configured to perform distortion correction
US6924816B2 (en) * 2000-03-17 2005-08-02 Sun Microsystems, Inc. Compensating for the chromatic distortion of displayed images
US7002589B2 (en) * 2000-03-17 2006-02-21 Sun Microsystems, Inc. Blending the edges of multiple overlapping screen images
US6828983B1 (en) 2000-05-12 2004-12-07 S3 Graphics Co., Ltd. Selective super-sampling/adaptive anti-aliasing of complex 3D data
US6766281B1 (en) * 2000-05-12 2004-07-20 S3 Graphics Co., Ltd. Matched texture filter design for rendering multi-rate data samples
AU2001264640A1 (en) * 2000-05-16 2001-11-26 Sun Microsystems, Inc. Graphics system using a blur filter
GB0014671D0 (en) * 2000-06-15 2000-08-09 Seos Displays Ltd Head slaved area of interest (HSAOI) using framestore demultiplexing
US6801202B2 (en) 2000-06-29 2004-10-05 Sun Microsystems, Inc. Graphics system configured to parallel-process graphics data using multiple pipelines
JP4683760B2 (ja) * 2000-08-23 2011-05-18 任天堂株式会社 再構成可能なピクセルフォーマットを有する組み込みフレームバッファを有するグラフィックスシステム
US6999100B1 (en) * 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7113194B2 (en) * 2001-01-30 2006-09-26 Ati International Srl Method and apparatus for rotating an image on a display
US8390639B2 (en) * 2001-01-30 2013-03-05 Qualcomm Incorporated Method and apparatus for rotating an image on a display
US6731300B2 (en) 2001-05-18 2004-05-04 Sun Microsystems, Inc. Efficient anti-aliased dot rasterization
US6956582B2 (en) * 2001-08-23 2005-10-18 Evans & Sutherland Computer Corporation System and method for auto-adjusting image filtering
US6924820B2 (en) * 2001-09-25 2005-08-02 Sun Microsystems, Inc. Over-evaluating samples during rasterization for improved datapath utilization
EP1456830A1 (de) * 2001-11-14 2004-09-15 The Henry M. Jackson Foundation Haptische schnittstelleneinrichtung für eine mehrfachberührungsanzeige
JP4313527B2 (ja) * 2001-11-21 2009-08-12 富士通マイクロエレクトロニクス株式会社 画像描画装置
US6753870B2 (en) 2002-01-30 2004-06-22 Sun Microsystems, Inc. Graphics system configured to switch between multiple sample buffer contexts
US6914609B2 (en) * 2002-02-28 2005-07-05 Sun Microsystems, Inc. Multiple scan line sample filtering
US6819320B2 (en) 2002-03-04 2004-11-16 Sun Microsystems, Inc. Reading or writing a non-super sampled image into a super sampled buffer
US6975317B2 (en) * 2002-03-12 2005-12-13 Sun Microsystems, Inc. Method for reduction of possible renderable graphics primitive shapes for rasterization
DE60317001D1 (de) * 2002-03-12 2007-12-06 Sun Microsystems Inc Dynamische Anpassung der Musterdichte und/oder der Anzahl der Wiedergabedurchgänge in einem Graphiksystem
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
US7010169B2 (en) * 2002-04-15 2006-03-07 Sbc Technology Resources, Inc. Multi-point predictive foveation for bandwidth reduction of moving images
US7499594B2 (en) * 2002-04-15 2009-03-03 At&T Intellectual Property 1, L.P. Multi-resolution predictive foveation for bandwidth reduction of moving images
US6870542B2 (en) * 2002-06-28 2005-03-22 Nvidia Corporation System and method for filtering graphics data on scanout to a monitor
US6982719B2 (en) * 2002-07-15 2006-01-03 Sun Microsystems, Inc. Switching sample buffer context in response to sample requests for real-time sample filtering and video generation
US6985153B2 (en) * 2002-07-15 2006-01-10 Sun Microsystems, Inc. Sample request mechanism for supplying a filtering engine
US7009604B2 (en) * 2002-07-19 2006-03-07 Sun Microsystems, Inc. Frame detector for use in graphics systems
US20040083430A1 (en) * 2002-10-29 2004-04-29 Boonen Paul J. J. Method and apparatus to process portable document format data containing transparency
EP1437898A1 (de) * 2002-12-30 2004-07-14 Koninklijke Philips Electronics N.V. Videofilterung für Stereobilder
US20040176143A1 (en) * 2003-02-07 2004-09-09 Willins Bruce A. System and method for wireless collection and presentation of data
US6879328B2 (en) 2003-03-03 2005-04-12 Sun Microsystems, Inc. Support of multi-layer transparency
US7106352B2 (en) 2003-03-03 2006-09-12 Sun Microsystems, Inc. Automatic gain control, brightness compression, and super-intensity samples
US6976960B2 (en) * 2003-06-10 2005-12-20 Siemens Medical Solutions Usa, Inc. Automatic velocity anti-aliased ultrasound methods and systems
US7824566B2 (en) 2003-07-08 2010-11-02 Scheidler Karl J Methods and compositions for improving light-fade resistance and soil repellency of textiles and leathers
US20050183303A1 (en) * 2003-08-15 2005-08-25 Simonsen Peter A. Method and an arrangement for adveratising or promoting
US7266255B1 (en) 2003-09-26 2007-09-04 Sun Microsystems, Inc. Distributed multi-sample convolution
US8063916B2 (en) 2003-10-22 2011-11-22 Broadcom Corporation Graphics layer reduction for video composition
EP1727093A1 (de) * 2003-12-19 2006-11-29 Tdvision Corporation S.A. DE C.V. 3d-videospiel-system
US7737971B2 (en) 2004-07-01 2010-06-15 Panasonic Corporation Image drawing device, vertex selecting method, vertex selecting program, and integrated circuit
US20060277461A1 (en) * 2005-06-07 2006-12-07 Britt Clinton D Real time parallel interface configuration and device representation method and system
US20070055386A1 (en) * 2004-11-03 2007-03-08 Rockwell Automation Technologies, Inc. Abstracted display building method and system
US20070033538A1 (en) * 2004-11-03 2007-02-08 Rockwell Automation Technologies, Inc. Real time parallel interface configuration and device representation method and system
GB0426170D0 (en) * 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
JP4600011B2 (ja) * 2004-11-29 2010-12-15 ソニー株式会社 画像処理装置および方法、記録媒体、並びにプログラム
CA2589696A1 (en) * 2004-12-08 2006-06-15 Unilever Plc Food or beverage product comprising theanine and caffeine for enhancing mental alertness
US7586492B2 (en) * 2004-12-20 2009-09-08 Nvidia Corporation Real-time display post-processing using programmable hardware
US7557817B2 (en) * 2005-08-23 2009-07-07 Seiko Epson Corporation Method and apparatus for overlaying reduced color resolution images
EP2104930A2 (de) 2006-12-12 2009-09-30 Evans & Sutherland Computer Corporation System und methode zum ausgleichen des rgb-licht in einem monomodulator projektor
US8044971B2 (en) * 2008-01-31 2011-10-25 Arm Norway As Methods of and apparatus for processing computer graphics
US8115783B2 (en) * 2008-01-31 2012-02-14 Arm Norway As Methods of and apparatus for processing computer graphics
US8358317B2 (en) 2008-05-23 2013-01-22 Evans & Sutherland Computer Corporation System and method for displaying a planar image on a curved surface
US8702248B1 (en) 2008-06-11 2014-04-22 Evans & Sutherland Computer Corporation Projection method for reducing interpixel gaps on a viewing surface
US7850306B2 (en) 2008-08-28 2010-12-14 Nokia Corporation Visual cognition aware display and visual data transmission architecture
GB0819570D0 (en) * 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US8077378B1 (en) 2008-11-12 2011-12-13 Evans & Sutherland Computer Corporation Calibration system and method for light modulation device
US9053681B2 (en) * 2010-07-07 2015-06-09 Fotonation Limited Real-time video frame pre-processing hardware
US20120013624A1 (en) * 2010-07-19 2012-01-19 Advanced Micro Devices, Inc. Split Storage of Anti-Aliased Samples
KR20120047055A (ko) * 2010-11-03 2012-05-11 삼성전자주식회사 디스플레이 장치 및 이에 적용되는 그래픽 영상 제공방법
US8624911B1 (en) * 2011-01-05 2014-01-07 Google Inc. Texture-based polygon antialiasing
US9641826B1 (en) 2011-10-06 2017-05-02 Evans & Sutherland Computer Corporation System and method for displaying distant 3-D stereo on a dome surface
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
US10152820B2 (en) * 2013-03-15 2018-12-11 Intel Corporation Texture address mode discarding filter taps
US9230362B2 (en) * 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9230363B2 (en) * 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
JP6229386B2 (ja) * 2013-09-12 2017-11-15 富士通株式会社 シミュレーション方法、シミュレーションプログラム及びシミュレーション装置
US9437040B2 (en) 2013-11-15 2016-09-06 Nvidia Corporation System, method, and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
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
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
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America 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
US10564715B2 (en) * 2016-11-14 2020-02-18 Google Llc Dual-path foveated graphics pipeline
US10262387B2 (en) 2016-11-14 2019-04-16 Google Llc Early sub-pixel rendering
US10049437B2 (en) * 2016-11-21 2018-08-14 Microsoft Technology Licensing, Llc Cleartype resolution recovery resampling
US10607399B2 (en) * 2017-05-22 2020-03-31 Htc Corporation Head-mounted display system, method for adaptively adjusting hidden area mask, and computer readable medium
US10692273B2 (en) * 2017-06-01 2020-06-23 Siemens Healthcare Gmbh In-context photorealistic 3D visualization for surgical decision support
US10853918B2 (en) * 2017-06-09 2020-12-01 Sony Interactive Entertainment Inc. Foveal adaptation of temporal anti-aliasing
US10510181B2 (en) 2017-06-27 2019-12-17 Samsung Electronics Co., Ltd. System and method for cache management using a cache status table
US10319114B2 (en) * 2017-07-13 2019-06-11 Google Llc Foveated compression of display streams
CN108111784B (zh) * 2017-12-22 2020-06-26 成都先锋材料有限公司 一种生物活体影像监控系统
CN110324705A (zh) * 2018-03-30 2019-10-11 深圳市掌网科技股份有限公司 一种基于头戴显示设备的图像处理方法和系统
US11625973B2 (en) * 2020-04-22 2023-04-11 Igt Multi-user gaze detection at electronic gaming devices

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB278524A (en) 1926-10-06 1927-10-13 Victor Herbert Gregory Improvements in recording instruments and the like
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
DE69127516T2 (de) 1990-06-29 1998-02-26 Philips Electronics Nv Verfahren und Gerät zur Bilderzeugung
US5173948A (en) 1991-03-29 1992-12-22 The Grass Valley Group, Inc. Video image mapping system
JP3318680B2 (ja) 1992-04-28 2002-08-26 サン・マイクロシステムズ・インコーポレーテッド 画像生成方法及び画像生成装置
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5684939A (en) * 1993-07-09 1997-11-04 Silicon Graphics, Inc. Antialiased imaging with improved pixel supersampling
US5774110A (en) * 1994-01-04 1998-06-30 Edelson; Steven D. Filter RAMDAC with hardware 11/2-D zoom function
JP2637920B2 (ja) * 1994-08-11 1997-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・グラフィック・システム及びフレーム・バッファ使用方法
US5668940A (en) * 1994-08-19 1997-09-16 Martin Marietta Corporation Method and apparatus for anti-aliasing polygon edges in a computer imaging system
US5594854A (en) 1995-03-24 1997-01-14 3Dlabs Inc. Ltd. Graphics subsystem with coarse subpixel correction
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US5742277A (en) * 1995-10-06 1998-04-21 Silicon Graphics, Inc. Antialiasing of silhouette edges
US5638176A (en) 1996-06-25 1997-06-10 International Business Machines Corporation Inexpensive interferometric eye tracking system
AU3718497A (en) * 1996-06-28 1998-01-21 Resolution Technologies, Inc. Fly-through computer aided design method and apparatus
US6128001A (en) * 1997-04-04 2000-10-03 Avid Technology, Inc. Methods and apparatus for changing a color of an image
US6072498A (en) * 1997-07-31 2000-06-06 Autodesk, Inc. User selectable adaptive degradation for interactive computer rendering system
US6204859B1 (en) * 1997-10-15 2001-03-20 Digital Equipment Corporation Method and apparatus for compositing colors of images with memory constraints for storing pixel data
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
JP2002503855A (ja) 2002-02-05
US6466206B1 (en) 2002-10-15
AU2868199A (en) 1999-08-30
DE69909437D1 (de) 2003-08-14
US6424343B1 (en) 2002-07-23
EP1055201A1 (de) 2000-11-29
EP1055201B1 (de) 2003-07-09
WO1999041706A1 (en) 1999-08-19

Similar Documents

Publication Publication Date Title
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
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
US6956576B1 (en) Graphics system using sample masks for motion blur, depth of field, and transparency
US7474308B2 (en) Graphics system having a variable density super-sampled sample buffer
US6417861B1 (en) Graphics system with programmable sample positions
US7106322B2 (en) Dynamically adjusting a sample-to-pixel filter to compensate for the effects of negative lobes
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
EP1155386B1 (de) Graphisches system das muster in einem musterpuffer darstellt und in anhängigkeit von gespeicherten mustern pixel erzeugt
AU763011B2 (en) Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects
EP1155385B1 (de) Graphisches system mit superabtastungspuffer mit speicherung von abtastpositionsinformation
EP1205882A2 (de) Graphisches System mit Superabtasten mit veränderlicher Auflösung
Kim et al. Selective foveated ray tracing for head-mounted displays
EP1290643A2 (de) Graphisches system mit einem verzerrungsfilter
KR20020031097A (ko) 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee