DE60100452T2 - Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang - Google Patents

Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang Download PDF

Info

Publication number
DE60100452T2
DE60100452T2 DE60100452T DE60100452T DE60100452T2 DE 60100452 T2 DE60100452 T2 DE 60100452T2 DE 60100452 T DE60100452 T DE 60100452T DE 60100452 T DE60100452 T DE 60100452T DE 60100452 T2 DE60100452 T2 DE 60100452T2
Authority
DE
Germany
Prior art keywords
filter
query
pixel
pixels
queries
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
DE60100452T
Other languages
English (en)
Other versions
DE60100452D1 (de
Inventor
F. Michael DEERING
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60100452D1 publication Critical patent/DE60100452D1/de
Publication of DE60100452T2 publication Critical patent/DE60100452T2/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Color Television Image Signal Generators (AREA)
  • User Interface Of Digital Computer (AREA)
  • Color Image Communication Systems (AREA)
  • Transforming Light Signals Into Electric Signals (AREA)

Description

  • 1. Technisches Gebiet
  • 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 diesen Ausgang auf dem Schirm darzustellen. Im wesentlichen fungierten sie als einfache Übersetzer oder Schnittstellen. Moderne Grafiksysteme enthalten jedoch Grafikprozessoren mit einer sehr hohen Verarbeitungsleistung. Sie fungieren nun eher wie Coprozessoren anstelle von einfachen Übersetzern. Diese Veränderung erfolgte aufgrund eines kürzlichen Anstiegs sowohl in der Komplexität als auch der Datenmenge, die zu der Anzeigevorrichtung gesendet wird. Beispielsweise haben moderne Computeranzeigen viel mehr Pixel, eine größere Farbtiefe und sind in der Lage, komplexere Bilder mit höherer Bildwiederholfrequenz darzustellen als frühere Modelle. In gleicher Weise sind die angezeigten Bilder nun komplexer und können fortgeschrittene Techniken, wie z.B. das Anti-Aliasing und das prozedurale Zeichnen von Textur (texture mapping) beinhalten.
  • Im Ergebnis würde die CPU ohne die beträchtliche Verarbeitungsleistung in dem Grafiksystem eine lange Zeit damit zubringen, die Grafikberechnungen durchzuführen. Dies könnte dem Computersystem die Verarbeitungsleistung rauben, die für die Durchführung anderer Aufgaben, die mit der Programmausführung verknüpft sind, benötigt wird, und dadurch die Gesamtsystemleistung dramatisch reduzieren. Mit einem leistungsfähigen Grafiksystem wird jedoch, wenn die CPU instruiert wird, einen Kasten auf dem Schirm darzustellen, diese davon entlastet, die Position und Farbe jedes Pixels zu berechnen. Stattdessen kann die CPU eine Anforderung an die Videokarte schicken, die besagt "zeichne eine Box bei diesen Koordinaten". Das Grafiksystem zeichnet dann die Box, was den Prozessor entlastet, so daß er andere Aufgaben leisten kann.
  • Im allgemeinen ist ein Grafiksystem in einem Computer (ebenso als Grafiksystem bezeichnet) ein Typ eines Videoadapters, der seinen eigenen Prozessor enthält, um das Leistungsniveau zu verstärken. Diese Prozessoren sind für die Berechnung von graphischen Transformationen spezialisiert, so daß sie dazu tendieren, bessere Resultate zu erzielen als die Universal-CPU, die von dem Computersystem verwendet wird. Zusätzlich entlasten sie die CPU des Computers, um andere Befehle auszuführen, während das Grafiksystem die graphischen Berechnungen handhabt. Die Popularität von graphischen Anwendungen und insbesondere von Multimediaanwendungen hat dazu geführt, daß Grafiksysteme mit hoher Leistung ein gemeinsames Merkmal von Computersystemen sind. Die meisten Computerhersteller packen nun ein Grafiksystem mit hoher Leistung in ihre Systeme.
  • Da Grafiksysteme typischerweise nur einen begrenzten Satz von Funktionen durchführen, können sie angepaßt werden und daher weit effizienter bei graphischen Operationen sein als der Universalprozessor des Computers. Während frühere Grafiksysteme auf das Ausführen von zweidimensionalen (2D-) Grafiken begrenzt waren, hat sich ihre Funktionalität erhöht, so daß sie dreidimensionale (3D-) Drahtmodellgrafiken, 3D-Volumenmodelle unterstützen und nun die Unterstützung für dreidimensionale (3D-) Grafik beinhalten mit Textur und Spezialeffekten, wie z.B. das fortgeschrittene Shading bzw. Schattieren, das Fogging bzw. Schleiern, das Alpha-Blending bzw. das Alpha-Mischen und das spiegelartige Hervorheben.
  • Die Verarbeitungsleistung von dreidimensionalen Grafiksystemen hat sich mit einem halsbrecherischen Tempo verbessert. Vor wenigen Jahren konnten schattierte Bilder von einfachen Objekten nur mit wenigen Einzelbildern pro Sekunde wiedergegeben werden, während heutige Systeme die Wiedergabe von komplexen Objekten mit 60Hz oder mehr unterstützen. Bei dieser Wachstumsrate ist es in nicht allzu ferner Zukunft möglich, daß Grafiksysteme buchstäblich in der Lage sind, mehr Pixel wiederzugeben als ein einzelnes menschliches Sehsystem wahrnehmen kann.
  • Während 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 größeren 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. Eine andere Technik, die 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 ge genwä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 Grafikeffekte, wie z.B. das Anti-Aliasing, zu verbessern.
  • Grafiksysteme des Standes der Technik haben im allgemeinen diese Ziele nicht erreicht. Grafiksysteme des Standes der Technik verwenden einen konventionellen Einzelbildpufferspeicher für das Aktualisieren der Pixel-/Videodaten auf der Anzeige. Der Einzelbildpufferspeicher speichert Zeilen und Spalten von Pixeln, die exakt den entsprechenden Zeilen- und Spaltenorten auf der Anzeige entsprechen. Grafiksysteme des Standes der Technik stellen 2D- und/oder 3D-Bilder oder Objekte in dem Einzelbildpufferspeicher in der Pixelform dar und lesen dann die Pixel von dem Einzelbildpufferspeicher während einer Bildwiederholung ein, um die Anzeige zu aktualisieren. Somit speichert der Einzelbildpufferspeicher die Ausgangspixel, die dem Display bzw. der Anzeige bereitgestellt werden. Um visuelle Artefakte zu reduzieren, die durch Aktualisieren des Schirms zu derselben Zeit, zu der der Einzelbildpufferspeicher aktualisiert wird, erzeugt werden können, sind die meisten Einzelbildpufferspeicher der Grafiksysteme doppelt puffergespeichert.
  • Um realistischere Bilder zu erzielen, sind manche Grafiksysteme des Standes der Technik weitergegangen durch Erzeugung von mehr als einer Abfrage bzw. einem Momentwert pro Pixel. Der Begriff "Abfrage" bzw. "Momentwert", wie er hier verwendet wird, bezieht sich auf die berechnete Farbinformation, die die Farbe, die Tiefe (z), die Transparenz und mögliche andere Informationen eines bestimmten Punktes auf einem Objekt oder Bild anzeigt. Beispielsweise kann eine Abfrage die folgenden Komponentwerte haben: einen Rotwert, einen Grünwert, einen Blauwert, einen z-Wert und einen alpha-Wert (der z.B. die Transparenz der Abfrage darstellt). Eine Abfrage kann ebenso andere Informationen beinhalten, wie z.B. einen z-Tiefenwert, einen Unschärfewert, einen Intensitätswert, eine "brighter-than-bright"-Information (Helligkeitsübersteuerung) und einen Anzeiger, daß die Abfrage teilweise oder vollständig aus Steuerinformation anstelle von Farbinformation besteht (z.B. "Abfragesteuerinformation"). Durch Berechnung von mehr Abfragen als Pixeln (das heißt durch Supersampling) wird ein detaillierteres Bild berechnet als auf der Anzeigevorrichtung dargestellt werden kann. Beispielsweise kann ein Grafiksystem vier Abfragen für jedes an die Anzeigevorrichtung auszugebende Pixel berechnen. Nachdem die Abfragen berechnet wurden, werden sie dann kombiniert oder gefiltert, um die Pixel zu bilden, die in dem Einzelwertpufferspeicher abgelegt werden und dann zu der Anzeigevorrichtung gefördert werden. Die Verwendung von Pixeln, die in die ser Art und Weise gebildet sind, kann ein realistischeres Endbild kreieren, da allzu abrupte Veränderungen in dem Bild durch den Filterungsprozeß geglättet werden können.
  • Diese Supersampling-Systeme des Standes der Technik erzeugen typischerweise eine Anzahl von Abfragen, die weit größer als die Anzahl von Pixelorten auf der Anzeige sind. Diese Systeme des Standes der Technik haben typischerweise Darstellungsprozessoren, die die Abfragen berechnen und sie in einem Darstellungspufferspeicher ablegen. Die Filterhardware liest dann die Abfragen aus dem Darstellungspufferspeicher, filtert die Abfragen, um Pixel zu erzeugen und legt dann die Pixel in einem traditionellen Einzelbildpufferspeicher ab. Der traditionelle Einzelbildpufferspeicher ist typischerweise doppelt puffergespeichert, wobei eine Seite verwendet wird für die Aktualisierung der Anzeigevorrichtung, währen die andere Seite von der Filterhardware aktualisiert wird. Nachdem die Abfragen gefiltert wurden, werden die resultierenden Pixel in einem traditionellen Einzelwertpufferspeicher abgelegt, der verwendet wird, um die 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.
  • Obgleich die Effekte des Filterns zu Bildern führen, die typischerweise für das Auge angenehmer sind, kann das Filtern ebenso unerwünschte Artefakte erzeugen. In manchen Situationen kann ein Filter mit negativen Gewichten sowie positiven Gewichten verwendet werden. Beispielsweise haben Filter, wie z.B. der mit Fenstern versehene Sinc-Filter, der Mitchell-Netravali-Filter usw. negative Lappen sowie einen oder mehrere positive Lappen. Ein negativer Lappen ist ein Abschnitt des Filters, bei dem die Filterfunktion negative Werte erzielt. Ein positiver Lappen ist ein Abschnitt des Filters, bei dem die Filterfunktion positive Werte erzielt.
  • Tiefpassfilter können verwendet werden, um hohe Ortsfrequenzen in einem abgefragten Bild zu entfernen. Der ideale Tiefpassfilter entspricht einer unendlichen Sinc-Funktion im x-y-Raum und einem Zylinder in dem Ortsfrequenzraum. Die Ortsbreite (z.B. die Breite des positiven Hauptlappens) der Sinc-Funktion bestimmt im wesentlichen die örtliche Abschneidefrequenz des Tiefpassfilters. Viele Tiefpassfilter haben negative Lappen im Bestreben, ein Teil der Struktur der Sinc-Funktion über eine endliche Unterstützung nachzubilden. Natürlich haben alle realisierbaren Filter eine endliche Unterstützung (z.B. die Ausdehnung im x-y-Raum).
  • In der Folge der Verwendung von Filtern mit negativen Lappen und endlicher Unterstützung können Pixel mit negativen Intensitätswerten erzeugt werden. Negative Intensitätswerte können auf einer Anzeigevorrichtung nicht realisiert werden. Eine typische Lösung für diese negativen Intensitätswerte in Systemen des Standes der Technik ist es, diese Werte auf Null abzuschneiden, was bedeutet, daß das Pixel als schwarz dargestellt wird. In der Folge dieses Abschneidens können unerwünschte Artefakte sichtbar werden, wie z.B. Ringbildung bzw. Bildverdopplung oder Ausfransung (d.h. entweder helle oder dunkle Bänder, die die Kanten von großen Übergängen in den Intensitäten wiedergeben). Es wird somit ein Grafiksystem gewünscht, das die Vorteile der Echtzeitfilterung von Abfragen beibehält, während die unerwünschten Effekte negativer Lappen reduziert oder eliminiert werden.
  • Zusätzlich zu den negativen Lappen ist ein anderes Hindernis für realistische Bilder die variable Natur gegenwärtiger Anzeigevorrichtungen. Unterschiedliche Anzeigen (z.B. unterschiedlich durch die Anzeigetechnologie, das Alter oder den Hersteller) haben unterschiedliche Eigenschaften. Beispielsweise kann ein CRT Pixel haben, die eher eine gaußförmige Intensitätsaufspreizung um das Pixel haben. Auf der anderen Seite können LCDs eher eine Rechteckintensitätsverteilung bei ihren Pixeln haben. Darüber hinaus wird diese Situation noch weiter verkompliziert durch verschiedene Benutzer mit unterschiedlichen Vorlieben für die visuelle Erscheinung angezeigter Bilder. Beispielsweise könnte das, was einem Benutzer als annehmbar scharfes Bild erscheint, einem anderen als übermäßig geglättet erscheinen. Es ist somit ein Grafiksystem wünschenswert, das in Antwort auf die Eingabe eines Benutzers dynamisch den Filtertyp, die Filterfunktion und/oder die Filterunterstützung einstellen kann. Zusätzlich ist ein Grafiksystem mit der Fähigkeit wünschenswert, den Ausgang der Anzeigeeinrichtung zu erfassen und die Filter in Antwort hierauf dynamisch einzustellen.
  • Zusammenfassung der Erfindung
  • Ein Computergrafiksystem, das einen Grafikprozessor, einen Abfragepufferspeicher und eine oder mehrere Einheiten zur Umrechnung von Abfrage in Pixel für das Aktualisieren einer Anzeige verwendet, wird in Betracht gezogen. Der Grafikprozessor erzeugt eine Mehrzahl von Abfragen in Antwort auf einen Eingangsstrom aus 3D-Grafikdaten und speichert die Abfragen in dem Abfragepufferspeicher. Der Grafikprozessor erzeugt vorzugsweise mehr als eine Abfrage für zumindest eine Untergruppe der Pixelorte auf der Anzeige und speichert diese. Der Abfragepufferspeicher kann somit ein supergesampleter Abfragepufferspeicher sein, der eine Anzahl von Abfragen speichert, die in einigen Ausführungsformen weit größer als die Anzahl von Pixelorten auf der Anzeige sein können. In anderen Ausführungsformen kann die Gesamtzahl von Abfragen näher an der Gesamtzahl von Pixelorten auf der Anzeigevorrichtung sein oder gleich dieser sein oder sogar geringer sein, jedoch die Abfragen können in bestimmten Bereichen dichter positioniert sein und in anderen Bereichen weniger dicht positioniert sein.
  • Die Einheiten zur Umrechnung von Abfrage in Pixel sind derart konfiguriert, daß sie die Abfragen von dem supergesampleten Abfragepufferspeicher lesen und die Abfragen filtern oder falten, um Ausgangspixel zu erzeugen. Die Ausgangspixel werden dann bereitgestellt, um die Anzeige zu aktualisieren. Es sei bemerkt, daß der Begriff "Filter", so wie er hier verwendet wird, sich auf die mathematische Manipulation einer oder mehrerer Abfragen bezieht, um ein Pixel zu erzeugen (z.B. durch Mitteln, Falten, Summieren, Anwenden einer Filterfunktion, Gewichten der Abfragen und dann Manipulieren dieser, Anwenden einer Zufallsfunktion usw.). Die Einheiten zur Umrechnung von Abfrage in Pixel wählen eine oder mehrere Abfragen aus und filtern diese, um ein Ausgangspixel zu erzeugen. Es sei bemerkt, daß die Anzahl von einer gegebenen Einheit zur Umrechnung von Abfrage in Pixel ausgewählten und/oder gefilterten Abfragen Eins sein kann oder, wie in der bevorzugten Ausführungsform, größer als Eins sein kann.
  • In einigen Ausführungsformen kann das Grafiksystem ohne einen konventionellen Einzelbildpufferspeicher arbeiten. Mit anderen Worten kann der Ausgangspixelstrom, der von den Einheiten zur Umrechnung von Abfrage in Pixel erzeugt wird, zu der Anzeigeeinrichtung geliefert werden ohne einen dazwischengeschalteten Einzelbildpufferspeicher. Es sei bemerkt, daß manche Anzeigen einen internen Einzelbildpufferspeicher haben können, diese werden jedoch als integraler Teil der Anzeigeeinrichtung und nicht des Grafiksystems angesehen. Somit können die Einheiten zur Umrechnung von Abfrage in Pixel jedes Pixel für jede Schirmaktualisierung auf einer Echtzeitbasis berechnen. Der Begriff "Echtzeit", so wie er hier verwendet wird, bezieht sich auf eine Funktion, die mit der Geschwindigkeit der Aktualisierungsrate der Anzeigeeinrichtung oder nahe dieser durchgeführt wird. "Mit der Übertragung" bedeutet nahe oder oberhalb der Aufnahmefähigkeiten des menschlichen Visualisierungssystems für die Bewegungsverschmelzung (wie häufig ein Bild verändert werden muß, um die Illusion einer kontinuierlichen Bewegung zu erwecken) und/oder Flackerverschmelzung (wie häufig die Lichtintensität verändert werden muß, um die Illusion einer kontinuierlichen Illumination zu verursachen). Diese Konzepte sind in der Monographie "Spatial Vision" von Russel L. De Valois und Karen K. De Valois, Oxford University Press, 1988, weiter beschrieben.
  • In einigen Ausführungsformen kann das Grafiksystem derart betreibbar sein, daß es den Filter, der für das Erzeugen der Ausgangspixel verwendet wird, in Antwort auf eine Untergruppe der Ausgangspixel mit negativen Werten dynamisch einstellt. Pixel mit negativen Werten können beispielsweise als Folge der Verwendung eines Filters mit negativen Lappen erzeugt werden. Das Grafiksystem kann eine Einheit zur Berechnung der Negativität beinhalten, die derart konfiguriert ist, daß sie die Ausgangspixel von den Einheiten zur Umrechnung von Abfrage in Pixel empfängt und einen Negativitätswert des Einzelbildes berechnet basierend auf den negativen Pixeln (oder einer Untergruppe der negativen Pixel) in einem Einzelbild. Die Einheit zur Berechnung der Negativität kann den Einzelbildnegativitätswert parallel zu der Erzeugung der Ausgangspixel berechnen.
  • In einem Satz von Ausführungsformen erzeugt die Negativitätsberechnungseinheit zunächst ein Histogramm der negativen Pixelwerte. Ein konventionelles Histogramm kann verwendet werden oder ein Histogramm mit Binärzellenbreite kann verwendet werden. Der Einzelbildnegativitätswert kann berechnet werden durch Bilden eines gewichteten Durchschnitts aller Zellgrößen in dem Histogramm. Zellgrößen entsprechend der Zellen mit niedriger Negativität können weniger gewichtet werden als Zellgrößen entsprechend der Zellen mit hoher Negativität. Der Einzelbildnegativitätswert kann mit einer vorbestimmten Negativitätsgrenze verglichen werden. Es sei bemerkt, daß der Einzelbildnegativitätswert, so wie er hier benutzt wird, eine positive Zahl ist. Der gegenwärtige Filter bleibt in Kraft, wenn der Einzelbildnegativitätswert geringer als die Grenze ist. Wenn der Einzelbildnegativitätswert oberhalb des Grenzwertes liegt, kann das Grafiksystem den Filter dynamisch einstellen, um den Negativitätswert für nachfolgende Einzelbilder zu reduzieren.
  • In einer Ausführungsform können die Einheiten zur Umrechnung von Abfrage in Pixel den eingestellten Filter auf die Filtrierung der Abfragen beginnend mit dem nächsten Einzelbild anwenden. In anderen Ausführungsformen können die Einheiten zur Umrechnung von Abfrage in Pixel die eingestellten Filter auf das Filtern von Abfragen anwenden beginnend mit dem Einzelbild nach dem nächsten Einzelbild oder allgemeiner gesprochen mit dem N-ten nachfolgenden Einzelbild. In manchen Ausführungsformen kann das Grafikform einen Hysteresegrad einsetzen, um das Flackern zu vermeiden.
  • Das Grafiksystem kann damit fortsetzen, den Einzelbildnegativitätswert zu überwachen, und damit fortsetzen, den Filter erneut einzustellen. In einer Ausführungsform kann das Grafiksystem die Filterkoeffizienten in Antwort auf einen Einzelbildnegativitätswert, der kontinuierlich ansteigt, modifizieren.
  • In manchen Ausführungsformen kann der Filter dynamisch in Antwort auf den Empfang einer Benutzereingabe eingestellt werden. Verschiedene Benutzer können unterschiedliche Vorlieben betreffend die Bildqualität haben. Manche Benutzer können beispielsweise ein Bild bevorzugen, das schärfer ist, während andere Benutzer ein Bild bevorzugen könnten, das weniger schart und weicher ist. Weiterhin können verschiedene Anzeigen eine unterschiedliche Antwort auf denselben Pixelwert haben. Beispielsweise hat ein CRT eine gaußartige Intensitätsverteilung um jedes Pixel, während ein LCD eine rechteckige Intensitätsverteilung mit einer scharfen Grenze der Intensität um jedes Pixel herum hat. Somit kann ein Benutzer in der Lage sein, denselben visuellen Effekt von einem CRT und einem LCD zu erhalten durch beispielsweise dynamisches Einstellen des Filtertyps, der Filterfunktion und/oder der Filterunterstützung.
  • In einer Ausführungsform kann der Benutzer in der Lage sein, den Filtertyp, die Filterfunktion und/oder die Filterunterstützung auf einer regionalen Basis zu verändern. Beispielsweise kann eine Hintergrundszene durch die Verwendung eines weicheren Filters geeigneter dargestellt werden als die Vordergrundabschnitte der Szene.
  • In einer zweiten Ausführungsform kann das Grafiksystem derart betrieben werden, daß es den Filtertyp, die Filterfunktion und/oder die Filterunterstützung in Antwort auf Messungen, die von einem Anzeigeüberwachungssystem, das mit dem Grafiksystem verbunden ist, erhalten werden, dynamisch einstellt. Ein Beispiel eines Anzeigeüberwachungssystems kann eine Videokamera sein, die derart konfiguriert ist, daß sie das Bild, das von der Anzeigeeinrichtung dargestellt wird, aufnimmt. In einer Ausführungsform berechnet das Grafiksystem nach der Aufnahme der Einzelbilder von der Videokamera einen Bildschärfewert für jedes der aufgenommenen Einzelbilder. Das Grafiksystem kann ebenso einen Bildschärfewert für jedes übernächste Einzelbild, jedes drittnächste Einzelbild usw. berechnen, wenn die Rechenleistung begrenzt ist.
  • Das Grafiksystem kann weiterhin derart konfiguriert sein, daß es den berechneten Bildschärfewert mit einem gewünschten Bildschärfewert vergleicht. Als Reaktion auf einen berechneten Bildschärfewert, der oberhalb oder unterhalb des gewünschten Wertes ist, kann das Grafiksystem den Filtertyp, die Filterfunktion und/oder die Filterunterstützung dynamisch einstellen, um wieder zu einem Bildschärfewert innerhalb eines bestimmten prozentualen Bereichs des gewünschten Wertes zurückzukehren. Beispielsweise kann das Grafiksystem dies erreichen durch Auswählen verschiedener Filtertypen und/oder durch Einstellen der Filterparameter, wie z.B. durch Erhöhen oder Erniedrigen der Filterkoeffizienten, Einstellen der Breite des Filters oder Erweitern oder Verkleinern der Unterstützung des Filters (z.B. der Grenzen des Filters).
  • In einer anderen Ausführungsform kann das Grafiksystem derart konfiguriert sein, daß es einen Ähnlichkeitswert für jedes Einzelbild berechnet durch Vergleichen des aufgenommenen Bildes, das von der Anzeigeüberwachungseinrichtung bereitgestellt wird, mit den erzeugten Ausgangspixeln. Das Grafiksystem kann weiterhin derart konfiguriert sein, daß es den Ähnlichkeitswert mit einem gewünschten Ähnlichkeitswert vergleicht. Als Reaktion auf einen Ähnlichkeitswert, der unterhalb einer gewünschten Grenze liegt, kann das Grafiksystem dynamisch den Filtertyp und/oder die Filterparameter einstellen, um für nachfolgende Einzelbilder einen Ähnlichkeitswert zu erzielen, der oberhalb der gewünschten Grenze ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Das vorgehende und auch die anderen Ziele, Merkmale und Vorteile dieser Erfindung können umfassender verstanden werden unter Bezug auf die folgende detaillierte Beschreibung, wenn sie zusammen mit den begleitenden Figuren gelesen wird, in denen:
  • 1 eine Ausführungsform eines Computersystems darstellt, das eine Ausführungsform eines Grafiksystems enthält,
  • 1A stellt ein Computernetzwerk dar, das zumindest einen Servercomputer und ein oder mehrere Clientcomputer aufweist, wobei die Clientcomputer eine Ausführungsform eines Grafiksystems beinhalten,
  • 2 ist ein vereinfachtes Blockdiagramm des Computersystems von 1,
  • 3 ist ein Blockdiagramm, das mehr Details einer Ausführungsform des Grafiksystems von 1 darstellt,
  • 4 ist ein Diagramm, das eine 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 für das Aufteilen eines supergesampleten Abfragepufferspeichers in Regionen darstellt,
  • 16 ist ein Diagramm, das eine andere Ausführungsform eines Verfahrens für das Aufteilen eines supergesampleten Abfragepufferspeichers in Regionen darstellt,
  • 17 ist ein Diagramm, das noch eine andere Ausführungsform eines Verfahrens für das Aufteilen eines supergesampleten Abfragepufferspeichers in Regionen darstellt,
  • 18A-B sind Diagramme, die eine Ausführungsform eines Grafiksystems darstellen, das derart konfiguriert ist, daß es den Eingang von einer augenverfolgenden oder einer kopfverfolgenden Einrichtung verwendet,
  • 19A-D sind Diagramme, die eine Ausführungsform eines Grafiksystems darstellen, das derart konfiguriert ist, daß es die Regionsposition entsprechend der Position eines Cursors oder eines sichtbaren Objekts variiert,
  • 20 ist ein Diagramm einer Ausführungsform eines Computernetzwerkes, das mehrere Computer verbindet,
  • 21 zeigt eine Ausführungsform eines Histogramms aus Pixelnegativitätswerten, die verwendet werden, um den Einzelbildnegativitätswert für ein gegenwärtiges Einzelbild zu berechnen,
  • 22 zeigt eine andere Ausführungsform eines Histogramms mit Zellgrenzen mit aufeinanderfolgenden Zweier-Potenzen,
  • 23A zeigt eine Ausführungsform eines abgeschnittenen Sinc-Filters als eine Funktion des Radius,
  • 23B zeigt eine Ausführungsform eines Catmull-Rom-Filters als eine Funktion des Radius,
  • 23C zeigt eine Ausführungsform eines kubischen B-Spline-Filters,
  • 23D zeigt ein Parameterquadrat für die Mitchell-Netravali-Filterfamilie,
  • 23E zeigt einen kubischen Kardinal-Spline-Filter, d.h. einen Mitchell-Netravali-Filter mit Parametern B = 0 und C = 1,
  • 24 zeigt einen nach oben verschobenen und abgeschnittenen Sinc-Filter, wobei das Minimum des Filters auf das Niveau der horizontalen Achse angehoben wurde,
  • 25 stellt eine Ausführungsform eines Grafiksystems dar, das derart konfiguriert ist, daß es dynamisch Filter zur Berechnung von Abfrage in Pixel basierend auf der Einzelbildnegativität einstellt,
  • 26 zeigt ein Flußdiagramm, das eine Ausführungsform eines Verfahrens beschreibt für das Einstellen des Filters in Antwort auf die Größe des Einzelbildnegativitätswertes, der oberhalb einer bestimmten Grenze liegt,
  • 27 zeigt ein Computersystem, in dem ein Benutzer unter Verwendung einer Filtersteuerschnittstelle 702 den Filtertyp, die Filterfunktion und/oder die Filterunterstützung einstellen kann,
  • 28 zeigt eine Ausführungsform eines Grafiksystems, das es einem Benutzer ermöglicht, den Filtertyp, die Filterfunktion und/oder die Filterunterstützung dynamisch zu steuern,
  • 29 zeigt ein Flußdiagramm, das eine Ausführungsform eines Verfahrens für das Einstellen des Filtertyps, der Filterfunktion und/oder der Filterunterstützung in Antwort auf den Empfang einer Benutzereingabe beschreibt,
  • 30 zeigt eine Ausführungsform eines Anzeigeüberwachungssystems für das Aufnehmen angezeigter Bilder und das Einstellen von Filtereigenschaften in Antwort auf die aufgenommenen Bilder,
  • 31 zeigt ein Flußdiagramm, das eine Ausführungsform eines Verfahrens für das Einstellen des Filtertyps, der Filterfunktion und/oder der Filterunterstützung in Antwort auf eine Anzeigeüberwachungseinrichtung, die angezeigte Bilder erfaßt, beschreibt.
  • Während die Erfindung verschiedenen Modifikationen und alternativen Formen zugänglich ist, sind in den Figuren beispielhaft spezifische Ausführungsformen hiervon gezeigt und werden hier im Detail beschrieben. Es sollte jedoch verstanden werden, daß die Zeichnungen und die detaillierte Beschreibung dieser nicht dafür gedacht ist, die Erfindung auf die bestimmten beschriebenen Ausführungsformen zu begrenzen, sondern im Gegenteil soll die Erfindung alle Modifikationen, Äquivalente und Alternativen abdecken, die in den Geist und den Schutzbereich der vorliegenden Erfindung fallen, wie sie durch die angefügten Ansprüche definiert werden. Man bemerke bitte, daß die Abschnittsüberschriften, die hier verwendet werden, lediglich für organisatorische Zwecke verwendet werden und nicht beabsichtigt ist, die Beschreibung oder die Ansprüche dadurch zu beschränken. Das Wort "kann" wird in dieser Anmeldung in einem erlaubenden Sinn (d.h. die Möglichkeit habend, in der Lage sein) und nicht in einer verbindlichen Art und Weise (d.h. muß) verwendet. In gleicher Weise wird das Wort beinhalten und Ableitungen hiervon verwendet im Sinne von "einschließlich, jedoch nicht hierauf begrenzt".
  • 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 Computersystem kann in irgendeinem von verschiedenen Systemen enthalten sein, einschließlich eines traditionellen PCs, eines Netzwerk-PCs, einer Internetanwendung, einem Fernseher, einschließlich HDTV-Systemen und interaktiven Fernsehsy stemen, 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. Verschiedene Eingabegeräte können mit dem Computersystem verbunden sein, einschließlich einer Tastatur 86 und/oder einer Maus 88 oder einem anderen Eingabegerät (zum Beispiel einem Trackball, einem Digitalisiertablett, einem Tablett, Eingabegeräten mit sechs Freiheitsgraden, Kopfverfolger, Augenverfolger, Datenhandschuh, Körpersensoren usw.). Anwendungssoftware kann von dem Computersystem 80 ausgeführt werden, um 3-D-Grafikobjekte auf dem Anzeigegerät 84 anzuzeigen. Wie weiter unten beschrieben wird, beinhaltet das 3-D-Grafiksystem in dem Computersystem 80 einen supergesampleten Abfragewertpufferspeicher mit einer programmierbaren Einheit zur Umrechnung von Abfrage in Pixel, um die Qualität und den Realismus von den Bildern, die auf der Anzeigevorrichtung 84 dargestellt werden, zu verbessern.
  • 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ß verbun den 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 3DTM, kann auf der Host CPU 102 ausgeführt werden und Befehle und Daten erzeugen, die ein graphisches 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 der verbesserte Grafikanschluß (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 GPU 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) oder als Teil einer anderen Einrichtung, wie z.B. einem PDA, einem Fernseher oder irgendeiner anderen Einrichtung mit Anzeigefähigkeiten, ausgebildet sein kann. Das Grafiksystem 112 kann ebenso als ein Einzelchipgerät oder als Teil eines Systems auf einem Chip oder eines Mehrfachchipmoduls konfiguriert sein.
  • Grafiksystem 3
  • 3 ist ein Blockdiagramm, das Details einer Ausführungsform des Grafiksystems 112 darstellt. Wie in der Figur zu sehen ist, kann das Grafiksystem 112 einen oder mehrere Grafikprozessoren 90, einen oder mehrere supergesamplete Abfragewertpufferspeicher 162 und eine oder mehrere Einheiten zur Umrechnung von Abfragewerte in Pixel 170A–D aufweisen. Das Grafiksy stem 112 kann ebenso einen oder mehrere Digital-Analog-Wandler (DACs) 178A–B aufweisen. Der Grafikprozessor kann irgendein geeigneter Typ eines Hochleistungsprozessors sein (zum Beispiel spezialisierte Grafikprozessoren oder Berechnungseinheiten, Multimediaprozessoren, GSPs oder Allzweckprozessoren). In einer Ausführungsform kann der Grafikprozessor 90 eine oder mehrere Darstellungseinheiten 150A–D aufweisen. In der gezeigten Ausführungsform weist der Grafikprozessor 90 jedoch ebenso eine oder mehrere Steuereinheiten 140, einen oder mehrere Datenspeicher 152A–D und eine oder mehrere Verzeichniseinheiten 154 auf. Der Abfragepufferspeicher 162 kann einen oder mehrere Abfragespeicher 160A bis 160N aufweisen, wie in der Figur gezeigt ist.
  • A. Steuereinheit
  • Die Steuereinheit 140 funktioniert als Schnittstelle zwischen dem Grafiksystem 112 und dem Computersystem 80 durch Steuern der Datenübertragung zwischen dem Grafiksystem 112 und dem Computersystem 80. In den Ausführungsformen des Grafiksystems 112, die zwei oder mehrere Darstellungseinheiten 150A-D aufweisen, kann die Steuereinheit 140 ebenso den Datenstrom, der von dem Computersystem 80 empfangen wird, in eine entsprechende Anzahl von parallelen Strömen aufteilen, die zu den einzelnen Darstellungseinheiten 150A-D gelenkt werden. Die Grafikdaten können von dem Computersystem 80 in einer komprimierten Form erhalten werden. Dies kann mit Vorteil die erforderliche Übertragsbandbreite zwischen dem Computersystem 80 und dem Grafiksystem 112 reduzieren. In einer Ausführungsform kann die Steuereinheit 140 derart konfiguriert sein, daß sie den empfangenen Datenstrom aufteilt und den Darstellungseinheiten 150A-D in komprimierter Form zuleitet.
  • Die Grafikdaten können eines oder mehrere graphische Grundelemente enthalten. Der Begriff der graphischen Grundelemente, so wie er hier verwendet wird, beinhaltet Polygone, parametrische Oberflächen, Splines, NURBS (nicht-gleichförmige, rationale B-Splines), unterteilte Oberflächen, Fraktale, Volumengrundelement und Teilchensysteme. Diese graphischen Grundelemente sind im Detail in dem Lehrbuch beschrieben mit dem Titel „Computer Graphics: Principles and Practice" von James D. Foley et al., veröffentlicht von Addison-Wesley Publishing Co., Inc., 1996. Es sei bemerkt, daß in dieser detaillierten Beschreibung aus Gründen der Einfachheit auf Polygone Bezug genommen wird, die beschriebenen Ausführungsformen und Beispiele jedoch ebenso mit Grafikdaten verwendet werden können, die andere graphische Grundelementtypen verwenden.
  • B. Darstellungseinheiten
  • Die Darstellungseinheiten 150A-D (ebenso hier als Zeicheneinheiten bezeichnet) sind derart konfiguriert, daß sie Grafikbefehle und Daten von der Steuereinheit 140 empfangen und dann eine Anzahl von Funktionen durchführen, die von der genauen Implementierung abhängen. Beispielsweise können die Darstellungseinheiten 150A-D derart konfiguriert sein, daß sie die Dekomprimierung (wenn die Daten komprimiert sind), die Transformation, das Clipping, das Lighting, die Texturdarstellung, die Tiefeninformation, die Transparenzverarbeitung, die Einstellung bzw. den 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 150A-D derart konfiguriert sein, daß sie arithmetische Decodierung, die Lauflängendecodierung, die Huffman-Decodierung und die Wörterbuchdecodierung (z.B. LZ77, LZSS, LZ78 und LZW) durchführen. In einer anderen Ausführungsform können die Einstellungseinheiten 150A-D derart ausgelegt sein, daß sie die graphischen Daten, die unter Verwendung von geometrischer Komprimierung komprimiert wurden, decodieren. Die geometrische Komprimierung von 3D-Grafikdaten kann signifikante Reduktionen in der Datengröße erreichen, während der größte Teil der Bildqualität beibehalten wird. Zwei Verfahren für die Komprimierung und Dekomprimierung der 3D-Geometrie sind beschrieben in US-Patent Nr. 5,793,371, Anmeldungsnr. 08/511,294 (eingereicht am 4. August 1995 mit dem Titel "Method and Apparatus for Geometric Compression of Three-Dimensional Graphics Data", Anwaltsakte Nr. 5181-05900) und US-Patentanmeldung Nr. 09/095,777 (eingereicht am 11. Juni 1998 mit dem Titel "Compression of Three-Dimensional Geometry Data Representing a Regularly Tiled Surface Portion of a Graphical Object", Anwaltsakte Nr. 5181-06602). In den Ausführungsformen des Grafiksystems 112, die Dekomprimierung unterstützen, werden die Grafikdaten, die von jeder Darstellungseinheit 150 empfangen werden, in eines oder mehrere graphische "Grundelemente" dekomprimiert, die dann dargestellt werden können. Der Begriff "Grundelement" bezieht sich auf Komponenten von Objekten, die seine Form definieren (z.B. Punkte, Linien, Dreiecke, Polygone in zwei oder drei Dimensionen, Polyeder oder Freiformoberflächen in drei Dimensionen). Die Darstellungseinheiten 150 können irgendein geeigneter Typ von Hochleistungsprozessor sein (z.B. ein spezialisierter Grafikprozessor oder Berechnungseinheiten, Multimediaprozessoren, DSPs oder Allzweckprozessoren).
  • Die Transformation bzw. Umwandlung bezieht sich auf das Manipulieren eines Objekts und beinhaltet die Translation des Objekts (d.h. die Bewegung des Objekts zu einem anderen Ort), die Skalierung des Objekts (d.h. das Strecken oder Schrumpfen) und das Drehen des Objekts (z. B. im dreidimensionalen Raum oder im „3-space").
  • 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.
  • Clipping bezieht sich auf die Eliminierung von graphischen Grundelementen oder Abschnitten von graphischen Grundelementen, die außerhalb eines 3D-Sichtvolumens im Weltraum bzw. world space liegen. Das 3D-Sichtvolumen kann den Abschnitt des Weltraums darstellen, der für einen virtuellen Betrachter sichtbar ist, der im Weltraum situiert ist. Beispielsweise kann das Sichtvo lumen eine feste abgeschnittene Pyramide sein, die von einem 2D-Ansichtsfenster und einem Betrachtungspunkt erzeugt wurde, der im Weltraum lokalisiert ist. Der Pyramidenstumpf kann dann als die Vereinigung aller Strahlen verstanden werden, die von dem Betrachtungspunkt ausgehen und durch das Sichtfenster treten. Der Betrachtungspunkt bzw. Sichtpunkt kann den Weltraumort des virtuellen Betrachters darstellen. Grundelemente oder Abschnitte von Grundelementen, die außerhalb des 3D-Sichtvolumens liegen, sind gegenwärtig nicht sichtbar und können von der weiteren Verarbeitung ausgeschlossen werden. Grundelemente oder Abschnitte von Grundelementen, die innerhalb des 3D-Sichtvolumens liegen, sind Kandidaten für die Projektion auf das 2D-Sichtfenster.
  • Um die Clipping- und Projektionsberechnungen zu vereinfachen, können Grundelemente in ein zweites, einfacheres Koordinatensystem transformiert werden, das hier als das Darstellungsfeld-Koordinatensystem bezeichnet wird. In den Darstellungsfeldkoordinaten wird das Sichtvolumen auf ein kanonisches 3D-Darstellungsfeld abgebildet, das für das Clipping bequemer ist.
  • Graphische Grundelemente oder Abschnitte von Grundelementen, die die Clipping-Berechnung überstehen, können abhängig von den Ergebnissen einer Sichtbarkeitsberechnung auf das 2D-Darstellungsfeld projiziert werden. Anstelle des Clippings in 3D können graphische Grundelemente auf eine 2D-Sichtebene (die das 2D-Darstellungsfeld beinhaltet) projiziert werden und dann unter Bezug auf das 2D-Darstellungsfeld geclippt bzw. abgeschnitten werden.
  • Schirmraumdarstellung bezieht sich auf die Berechnungen, die durchgeführt werden, um die Daten, die zur Erzeugung jedes darzustellenden Pixels verwendet werden, tatsächlich zu berechnen. In Systemen des Standes der Technik wird jedes Pixel berechnet und dann in einem Einzelbildpufferspeicher abgelegt. Die Inhalte des Einzelbildpufferspeichers werden dann an die Anzeigevorrichtung ausgegeben, um das Endbild zu erzeugen. In der Ausführungsform des Grafiksystems 112, das in der Figur gezeigt ist, berechnen jedoch die Darstellungseinheiten 150A-D „Abfragewerte" anstelle von tatsächlichen Pixeldaten. Dies erlaubt den Darstellungseinheiten 150A-D, mehr als eine Abfrage je Pixel zu „supersamplen" oder zu berechnen. Das Supersampling wird detaillierter unten beschrieben. Die Darstellungseinheiten 150A-D können ebenso einen größeren Bereich von Abfragen erzeugen als der sichtbare Bereich der Anzeige 84 für verschiedene Effekte, wie zum Beispiel das Schwenken und das Zoomen. Es sei bemerkt, daß die Darstellungseinheiten 150A-D eine Anzahl von kleineren funktionalen Einheiten, zum Beispiel eine getrennte Einstell-/Dekomprimiereinheit und eine Lighting-Einheit aufweisen kann.
  • Mehr Details über das Supersampling sind in den folgenden Büchern erörtert:
    „Principles of Digital Image Synthesis" von Andrew Glassner, 1995, Morgan Kaufman Publishing (Band 1),
    „The Renderman Companion": von Steve Upstill, 1990, Addison Wesley Publishing und
    "Advanced Renderman: Beyond the Companion" von Anthony A. Apodaca.
  • C. Datenspeicher
  • Jede Darstellungseinheit 150A-D kann mit einem der entsprechenden Befehls- und Datenspeicher 152A-D verbunden sein. In einer Ausführungsform kann jeder Speicher 152A-D derart konfiguriert sein, daß er sowohl Daten als auch Befehle für die Darstellungseinheiten 150A-D speichert. Während die Implementierungen variieren können, kann in einer Ausführungsform jeder Datenspeicher 152A-D zwei 8-MByte SDRAMs aufweisen, die insgesamt 16 MByte Speicher für jede Darstellungseinheit 150A-D zur Verfügung stellen. In einer anderen Ausführungsform können RDRAMs (Rambus-DRAMs) verwendet werden, um die Dekomprimierung und die Einstelloperationen von jeder Darstellungseinheit zu unterstützen, während SDRAMs verwendet werden können, um die Zeichenfunktionen von den Darstellungseinheit zu unterstützen.
  • D. Verzeichniseinheit
  • Die Verzeichniseinheit 154 kann zwischen die Darstellungseinheiten 150A-D und die Abfragespeicher 160A-N geschaltet sein. Die Verzeichniseinheit 154 ist derart konfiguriert, daß sie die vervollständigten Abfragen sequentiell ordnet und sie in den Abfragespeichern 160A-N speichert. Es sei bemerkt, daß in größeren Konfigurationen mehrere Verzeichniseinheiten 154 parallel verwendet werden können. In einer Ausführungsform kann die Verzeichniseinheit 154 als Kreuzschienenwähler implementiert sein.
  • E. Abfragespeicher
  • Der supergesamplete Abfragepufferspeicher 162 weist Abfragespeicher 160A-160N auf, die derart konfiguriert sind, daß sie die Mehrzahl der Abfragen, die von den Darstellungseinheiten 150A-D erzeugt wurden, speichern. Der Begriff "Abfragepufferspeicher", wie er hier verwendet wird, bezieht sich auf einen oder mehrere Speicher, die Abfragen ablegen. Wie vorher erwähnt wurde, werden die Abfragen in dem Abfragepufferspeicher 162 an Positionen in dem Abfragepufferspeicher abgelegt, die Orten im Schirmraum auf der Anzeige entsprechen. Die Positionen können unter Verwendung verschiedener Verfahren, wie z.B. der gitterbasierten Positionserzeugung, der stochastischen Positionserzeugung oder der gestörten Gitterpositionserzeugung unter anderem berechnet werden. Die Positionen können berechnet oder programmatisch bestimmt werden auf einer Einzelbildbasis, einer Behälterbasis oder sogar auf einer Abfragebasis. In einer Ausführungsform wird die Abfragepositionsinformation mit den Abfragen in dem Abfragepufferspeicher abgelegt.
  • Eine oder mehrere Abfragen werden dann gefiltert, um jedes 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 bestimmten Ausgangspixel zu erzeugen, das auf der Anzeigevorrichtung dargestellt wird. Jeder gegebene Abfragewert kann zu einem oder mehreren Ausgangspixeln beitragen.
  • Die Abfragespeicher 160A bis 160N können irgendeine einer Anzahl von unterschiedlichen Speichertypen (zum Beispiel SDRAMs, SRAMs, RDRAMs, 3DRAMs oder 3DRAMs der nächsten Generation) in verschiedenen Größen aufweisen. In einer Ausführungsform ist jede Verzeichniseinheit 154 mit vier Bänken von Abfragespeichern verbunden, wobei jede Bank vier 3DRAM-64-Speicher aufweist. Die 3DRAM-64-Speicher können zusammen einen supergesampleten 116 bit tiefen Abfragepufferspeicher bilden, der mehrere Abfragewerte pro Pixel speichert. In einer Ausführungsform kann beispielsweise jeder Abfragespeicher 160A bis 160N bis zu sechzehn Abfragen je Pixel speichern.
  • 3DRAM-64-Speicher sind spezialisierte Speicher, die derart konfiguriert sind, daß sie das volle interne Doppeltpuffern mit einzeln gepuffertem Z in einem Chip unterstützen. Der doppeltgepufferte Abschnitt weist zwei RGBX Pufferspeicher auf, wobei X ein vierter Kanal ist, der verwendet werden kann, um andere Information (zum Beispiel alpha) zu speichern. 3DRAM-64-Speicher haben ebenso eine Verweistabelle, die eine Window ID Information aufnimmt und einen internen 2-1 oder 3-1 Multiplexer steuert, der auswählt, welche Inhalte des Pufferspeichers ausgegeben werden. 3DRAM-64-Speicher sind 3DRAM-Speicher der nächsten Generation, die in Bälde von Mitsubishi Electric Corporation's Semiconductor Group erhältlich sein können. In einer Ausführungsform sind 32 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 Einzelbildpufterspeicher 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, stochastisch usw.). Die Abfragepositionsinformation für jede der Abfragen kann für die spätere Verwendung durch die Einheiten) zur Umrechnung von Abfrage in Pixel abgelegt werden. Beispielsweise kann der Grafikprozessor 90 die Abfragepositionsinformation in dem Abfragepufferspeicher mit den Abfragen speichern oder kann die Abfragepositionsinformation in einem getrennten Abfragepositionsspeicher speichern. Alternativ dazu können die Abfragepositionen (oder die Positionsinformation (z.B. die Offsetwerte, die zu den regelmäßigen Gitterpositionen addiert werden, um die Abfragepositionen zu bilden)) vorbestimmt oder vorberechnet werden unter Verwendung eines der obigen Schemata und einfaches Lesen aus dem Abfragepositionsspeicher (z.B. eine RAM/ROM-Tabelle). Die Abfragepositionsinformation kann vorberechnet werden durch den Grafikprozessor, durch die Host-CPU oder durch eine andere Logik.
  • Die Abfragepositionsinformation kann Koordinaten relativ zu einem Abfragepufferkoordinatensystem aufweisen, z.B. Koordinatenwerte relativ zu dem Anzeigeschirmraum. Die Abfragepositionsinformation kann ebenso Offsetwerte aufweisen, wobei die Offsetwerte relativ zu vorbestimmten Orten in dem Abfragepufferspeicher, wie z.B. einem vorbestimmten regelmäßigen Gitter, vorbestimmten Behältern oder Pixelzentrumkoordinaten definiert sind.
  • Mit dem Empfang eines Polygons, das darzustellen ist, bestimmt der Grafikprozessor 90, basierend auf der Abfragepositionsinformation, welche Abfragen sich innerhalb des Polygons befinden. Der Grafikprozessor 90 stellt die Abfragen dar, die sich im Polygon befinden und speichert die dargestellten Abfragen in dem Abfragespeichern 160A-N. Es sei bemerkt, daß die Begriffe "darstellen" und "zeichnen", so wie sie hier verwendet werden, austauschbar benutzt werden und sich auf das Berechnen von Farbwerten für die Abfragen beziehen. Tiefenabfragen einschließlich eines oder mehrerer Farbwerte, Tiefenwerte, Alphawerte, Unschärfewerte und anderer Werte pro Abfrage können ebenso in dem Darstellungs- oder Zeichenprozeß berechnet werden.
  • F. Einheiten zur Umrechnung von Abfrage zu Pixel
  • Die Einheiten 170A-D zur Umrechnung von Abfrage in Pixel (manchmal zusammen als Einheit 170 zur Umrechnung von Abfrage in Pixel bezeichnet) können zwischen den Abfragespeichern 160A-D und den DACs 178A-B geschaltet sein. Die Einheiten 170A-D zur Umrechnung von Abfrage in Pixel sind derart konfiguriert, daß sie ausgewählte Abfragen von den Abfragespeichern 160A-N lesen, wobei die 160A-N Abfragen basierend auf der Positionsinformation der Abfragen ausgewählt werden, und dann eine Faltung zum Beispiel eine Filterungs- und Gewichtungsfunktion oder eine Tiefpaßfilterung) auf den Abfragen durchführen, um die Ausgangspixelwerte zu erzeugen, die zu den DACs 178A-B ausgegeben werden. Die Einheiten 170A-D zur Umrechnung von Abfrage in Pixel können programmierbar sein, um ihnen zu erlauben, verschiedene Filterfunktionen zu unterschiedlichen Zeiten durchzuführen, abhängig von dem gewünschten Ausgangstyp.
  • In einer Ausführungsform können die Einheiten 170A-D zur Umrechnung von Abfrage in Pixel einen 5 × 5 supergesampleten Rekonstruktionsbandpaßfilter implementieren, um die supergesampleten Abfragepufferspeicherdaten (die in den Abfragespeichern 160A-N abgelegt sind) in einzelne Pixelwerte umzuwandeln. Die Unterstützung des Bandpassfilters kann einen rechteckigen Bereich mit einer Höhe von M Pixeln und einer Breite von N Pixeln abdecken. Die Anzahl von Abfragen, die somit von dem Bandpassfilter abgedeckt werden, ist näherungsweise gleich M·N·S, wobei S die Anzahl der Abfragen pro Pixel ist. Eine Vielzahl von Werten für M, N und S wurde in Betracht gezogen. Beispielsweise ist in einer Ausführungsform des Bandpassfilters M = N = 5. Es sei bemerkt, daß mit einigen Abfragepositionsschemata die Anzahl von Abfragen, die in die Filterunterstützung fällt, variieren kann, wenn sich das Zentrum des Filters (d.h. das Pixelzentrum) bewegt.
  • In anderen Ausführungsformen können die Berechnungseinheiten 170A-D eine ausgewählte Anzahl von Abfragen filtern, um ein Ausgangspixel zu berechnen. Die ausgewählten Abfragen können mit einer örtlichen Wichtungsfunktion multipliziert werden, die den Abfragen basierend auf ihrer Position in Bezug auf das Zentrum des zu berechnenden Pixels ein Gewicht gibt.
  • Die Filteroperationen, die von den Einheiten 170 zur Umrechnung von Abfrage in Pixel durchgeführt werden, können irgendeinen einer Vielzahl von Filtern verwenden, und zwar entweder allein oder in Kombination. Beispielsweise können die Filteroperationen die Faltung mit einem Boxfilter, einem Zeltfilter, einem zylindrischen Filter, einem Konusfilter, einem Gaußfilter, irgendeinem Filter der Mitchell-Netravali-Familie (d.h. dem Catmull-Rom-Filter), einem mit Fenster versehenen Sinc-Filter usw. aufweisen. Weiterhin kann die Unterstützung der von den Einheiten 170 zur Umrechnung von Abfrage in Pixel verwendeten Filter kreisförmig, elliptisch, rechteckig (z.B. quadratisch), dreieckig, hexagonal usw. sein.
  • Die Einheiten 170A-D zur Umrechnung von Abfrage in Pixel können ebenso mit einem oder mehreren der folgenden Merkmale konfiguriert sein: Farbnachschlagen unter Verwendung von Farbpseudotabellen, direkte Farbe, inverse Gammakorrektur, Filtern von Abfragen in Pixel und Umwandlung von Pixeln in den nicht-linearen Lichtraum. Andere Merkmale von Einheiten 170A-D zur Umrechnung von Abfrage in Pixel können programmierbare Videozeitgeneratoren, programmierbare Pixeltaktsynthesizer, Farbraumwandler und Kreuzschienenfunktionen beinhalten. Nachdem die Einheiten zur Umrechnung von Abfrage in Pixel den Takt und die Farbe von jedem Pixels manipuliert haben, werden die Pixel zu den DACs 178A-B ausgegeben.
  • G. DACs
  • Die DACs 178A-B arbeiten als die Ausgangsendstufe des Grafiksystems 112. Die DACs 178A-B dienen dazu, die digitalen Pixeldaten, die von den Kreuzeinheiten 174A-B empfangen wurden, in analoge Videosignale zu übersetzen, die dann zu der Anzeigevorrichtung gesendet werden. Es sei bemerkt, daß in einer Ausführungsform die DACs 178A-B umgangen werden können oder vollständig unterdrückt werden können, um digitale Ausgangspixeldaten neben den analogen Video signalen auszugeben. Dies kann nützlich sein, wenn die Anzeigevorrichtung 84 auf einer digitalen Technologie basiert (zum Beispiel ein LCD-Typ Anzeige, eine LCOS-Anzeige oder eine digitale Mikrospiegelanzeige).
  • Supersampling 4-5
  • 4 stellt ein Beispiel einer traditionellen, nicht supergesampleten Pixelwertberechnung dar. Jedes Pixel hat exakt einen Datenpunkt, der für es berechnet wurde, und der einzelne Datenpunkt ist bei dem Zentrum des Pixels angeordnet. Beispielsweise trägt nur ein Datenpunkt (d.h. Abfrage 74) zu dem Wert des Pixels 70 bei.
  • Man wende sich nun 5A zu, in der ein Beispiel einer Ausführungsform des Supersamplings dargestellt ist. In dieser Ausführungsform werden eine Anzahl von Abfragen berechnet. Die Anzahl von Abfragen kann mit der Anzahl von Pixeln verknüpft sein oder völlig unabhängig von der Anzahl von Pixeln sein. In diesem Beispiel gibt es achtzehn Abfragen, die in einem regulären Gitter über neun Pixel verteilt sind. Selbst mit all den Abfragen, die in der Figur präsent sind, könnte eine einfache 1:1 Korrelation durchgeführt werden (zum Beispiel durch Verwerfen aller Abfragen außer derjenigen Abfrage, die dem Zentrum von jedem Pixel am nächsten liegt). Der am meisten interessante Fall ist jedoch die Durchführung einer Filterungsfunktion auf mehreren Abfragewerten, um die Pixelendwerte zu bestimmen. Wie oben bemerkt wurde, kann ebenso eine einzelne Abfrage verwendet werden, um eine Mehrzahl von Ausgangspixeln zu erzeugen, d.h. das sogenannte Untersampling oder Subsampling.
  • Ein zirkularer Filter 72 ist in der Figur dargestellt. In diesem Beispiel tragen die Abfragen 74A-B beide zu dem Endwert des Pixels 70 bei. Dieser Filterungsprozeß kann mit Vorteil den Realismus des angezeigten Bildes verbessern durch das Glätten von abrupten Kanten in dem angezeigten Bild (zum Beispiel durch Durchführen des Anti-Aliasings). Der Filter 72 kann einfach die Abfragen 74A-B mitteln, um den Endwert des Ausgangspixels 70 zu bilden, oder er kann den Beitrag der Abfrage 74B (an dem Zentrum des Pixels 70) erhöhen und den Beitrag der Abfrage 74A (d.h. die Abfrage, die von dem Pixelzentrum 70 weiter entfernt ist) erniedrigen. Der zirkulare Filter wird für jeden zu berechnenden Ausgangspixel erneut positioniert, so daß das Zentrum des Filters 72 mit der Zentrumsposition des zu berechnenden Pixels zusammenfällt. Andere Filter und Filterpositionierungsschemata sind ebenso möglich und wurden in Betracht gezogen.
  • In 5B ist eine andere Ausführungsform des Supersamplings dargestellt. In dieser Ausführungsform sind jedoch die Abfragen zufällig positioniert. Genauer gesagt, werden unterschiedliche Abfragepositionen ausgewählt und dem Grafikprozessor 90 (und den Darstellungseinheiten 150A-D) zur Verfügung gestellt, die die Farbinformation berechnen, um Abfragen an diesen unterschiedlichen Orten zu bilden. Somit kann die Anzahl von Abfragen, die in den Filter 72 fallen, von Pixel zu Pixel variieren.
  • Supergesampleter Abfragepufferspeicher mit Faltung in Echtzeit 6-13
  • Die 6A, 6B, 7A und 7B stellen mögliche Konfigurationen für den Datenfluß durch eine Ausführungsform des Grafiksystems 112 dar. Wie die Figuren zeigen, werden geometrische Daten 350 von dem Grafiksystem 112 empfangen und verwendet, um den Zeichen- oder Darstellungsprozeß 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 Abfragepositionsinformation von einem Abfragepositionsspeicher 354. Der Zeichenprozeß 352 wählt die Abfragen aus, die in das gegenwärtig darzustellende Polygon fallen und berechnet einen Satz von Werten (z.B. Rot, Grün, Blau, Z, Alpha und/oder die Tiefe der Feldinformation) für jede dieser Abfragen basierend auf ihren entsprechenden Positionen innerhalb des Polygons. Beispielsweise kann der Z-Wert eine Abfrage, die in ein Dreieck fällt, aus den bekannten Z-Werten der drei Vertices interpoliert werden. Jeder Satz von berechneten Abfragewerten wird in dem Abfragepufferspeicher 162 abgelegt.
  • In einer Ausführungsform ist der Abfragepositionsspeicher 354 innerhalb der Darstellungseinheiten 150A-D ausgebildet. In einer anderen Ausführungsform kann der Abfragepositionsspeicher 354 als Teil der Speicher 152A bis 152D oder als getrennter Speicher realisiert werden.
  • Der Abfragepositionsspeicher 354 kann Abfragepositionen in Form ihrer Abfrage- (virtuellen) Schirmkoordinaten (X, Y) speichern. Alternativ dazu kann der Abfragepositionsspeicher 354 derart konfiguriert sein, daß er nur die Offsetwerte dX und dY für die Abfragen in Bezug auf die Position auf einem regelmäßigen Gitter abspeichert. Das Abspeichern nur der Offsetwerte kann weniger Speicherraum benötigen als das Speichern der gesamten Koordinaten (X, Y) für jede Abfrage. Die Abfragepositionsinformation, die in dem Abfragepositionsspeicher 354 gespeichert wird, kann durch eine geeignete Abfragepositionsberechnungseinheit (nicht gezeigt) gelesen und verarbeitet werden, um die Abfrageposition für die Grafikverarbeitungseinheit 90 zu berechnen.
  • 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", und kann somit eine offensichtlichere Zufälligkeit für eine gegebene Länge der Zufallszahlentabelle liefern. Somit kann eine kleinere Tabelle ohne Erzeugung der visuellen Ar tefakte, die durch die einfache Wiederholung der Offsetwerte der Abfrageposition verursacht wird, verwendet werden.
  • Der Berechnungsprozeß 360 von Abfrage in Pixel verwendet dieselben Abfragepositionen wie der Zeichenprozeß 352. Somit kann in einer Ausführungsform der Abfragepositionsspeicher 354 eine Abfolge von Zufallsoffsetwerten erzeugen, um Abfragepositionen für den Zeichenprozeß 352 zu berechnen, und kann im folgenden dieselbe Sequenz von Zufallsoffsetwerten erneut erzeugen, um dieselben Abfragepositionen für den Umrechnungsprozeß 360 von Abfrage in Pixel zu berechnen. Mit anderen Worten kann das Entfalten der Zufallszahlentabelle wiederholbar sein. Es ist daher nicht notwendig, die Abfrageposition zum Zeitpunkt ihrer Erzeugung für den Zeichenprozeß 352 zu speichern.
  • Wie in den 6A und 6B gezeigt ist, kann die Abfragepositionsinformation in einem getrennten Abfragepositionsspeicher 354 gespeichert werden. Beispielsweise kann die Abfragepositionsinformation (z.B. Offsetwerte, die zu den regelmäßigen Gitterpositionen addiert werden, um die Abfragepositionen zu bilden) vorbestimmt oder vorberechnet werden unter Verwendung eines der obigen Schemata und aus dem Abfragepositionsspeicher 354 (z.B. eine RAM/ROM-Tabelle) während der Darstellung ausgelesen werden. Die Abfragepositionen können von dem Grafikprozessor 90, von der Host-CPU oder von einer anderen Logik, wie oben erwähnt wurde, vorberechnet werden. Alternativ dazu kann der Grafikprozessor 90 die Abfragepositionsinformation während der Darstellung erzeugen und die Abfragepositionsinfonnation speichern. In einer Ausführungsform kann der Abfragepositionsspeicher 354 ein RAM/ROM aufweisen, das stochastische Abfragepunkte (oder -orte) für unterschiedliche Gesamtabfragezahlen pro Behälter enthält. Der Begriff "Behälter", so wie er hier verwendet wird, bezieht sich auf eine Region oder einen Bereich im Schirmraum und enthält so viele Abfragen wie auch immer in diesem Gebiet sind (z.B. kann der Behälter 1 × 1 Pixel in der Fläche, 2 × 2 Pixel in der Fläche usw. sein). Die Verwendung von Behältern kann das Speichern und den Zugriff auf Abfragen im Abfragepufferspeicher 162 vereinfachen. Eine Anzahl unterschiedlicher Behältergrößen kann verwendet werden (z.B. eine Abfrage je Behälter, vier Abfragen je Behälter usw.). In der bevorzugten Ausführungsform hat jeder Behälter eine x-y-Position, die einem bestimmten Ort auf der Anzeige entspricht. Die Behälter sind vorzugsweise regelmäßig beabstandet. In dieser Ausführungsform können die x-y-Positionen der Behälter aus den Speicherorten der Behälter innerhalb des Abfragepufferspeichers 162 bestimmt werden. Die Positionen der Behälter entsprechen den bestimmten Positionen auf der Anzeige. In manchen Ausführungsformen können die Behälterpositionen Pixelzentren entsprechen, während in anderen Ausführungsformen die Behälterpositionen Punkten entsprechen, die zwischen den Pixelzentren lokalisiert sind. Die spezifische Position jeder Abfrage innerhalb eines Behälters kann bestimmt werden durch Nachschlagen des Offsetwertes der Abfrage in der RAM/ROM-Tabelle (die Offsetwerte können relativ zu der entsprechenden Behälterposition gespeichert werden). Abhängig von der Implementierung können jedoch nicht alle Behältergrößen einen eindeutigen RAM/ROM-Eintrag haben. Manche Behältergrößen können einfach eine Untergruppe der größeren Behältergrößeneinträge lesen. In einer Ausführungsform hat jede unterstützte Größe zumindest vier unterschiedliche Abfragepositionsschemavarianten, die die Artefakte des endgültigen Bildes aufgrund der Wiederholung der Abfragepositionen reduzieren können.
  • In einer Ausführungsform kann der Positionsspeicher 354 Paare von 6-Bit-Zahlen speichern, wobei jedes Paar einen x-Offset und einen y-Offset aufweist (andere mögliche Offsets sind ebenso möglich, z.B. ein Zeitoffset, ein z-Offset usw.). Jedes Paar definiert, wenn es zu einer Behälterposition addiert wird, eine bestimmte Position im Schirmraum. Der Begriff "Schirmraum" bezieht sich im allgemeinen auf das Koordinatensystem der Anzeigeeinrichtung. Um die Lesezeiten zu verbessern, kann der Speicher 354 in einer breiten/parallelen Art und Weise konstruiert sein, so daß er es dem Speicher erlaubt, mehr als einen Abfrageort je Taktzyklus auszugeben.
  • Sobald die Abfragepositionen von dem Abfragepositionsspeicher 354 ausgelesen wurden, wählt der Zeichenprozeß 354 die Abfragepositionen aus, die in das gegenwärtig darzustellende Polygon fallen. Der Zeichenprozeß 352 berechnet dann die z- und Farbinformation (die Alpha- oder andere Feldtiefeninformationswerte enthalten kann) für jede dieser Abfragen und speichert die Daten im Abfragepufferspeicher 162. In einer Ausführungsform kann der Abfragepufferspeicher die z-Werte (und vielleicht die Alphawerte) nur einfach pufferspeichern, während andere Abfragekomponenten, wie z.B. die Farbe, doppelt puffergespeichert werden. Im Gegensatz zu Systemen des Standes der Technik kann das Grafiksystem 112 alle Abfragen doppelt pufferspeichern (obgleich nicht alle Abfragekomponenten doppelt puffergespeichert sein können, d.h. die Abfragen können Komponenten haben, die nicht doppelt puffergespeichert sind). In einer Ausführungsform werden die Abfragen in dem Abfragepufferspeicher 162 in Behältern gespeichert. In einigen Ausführungsformen kann die Größe der Behälter, d.h. die Menge von Abfragen innerhalb eines Behälters, von Einzelbild zu Einzelbild variieren und kann ebenso über verschiedenen Bereichen der Anzeigeeinrichtung 84 innerhalb eines einzelnen Einzelbildes variieren. Beispielsweise können Behälter entlang der Kanten der Anzeigeeinrichtung nur eine Abfrage enthalten, während Behälter, die Pixeln nahe des Zentrums der Anzeigeeinrichtung 84 entsprechen, 16 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 detaillierter beschrieben.
  • Parallel und unabhängig zu dem Zeichenprozeß 352 ist der Filterprozeß 360 derart konfiguriert, daß er Abfragen von dem Abfragepufferspeicher 162 ausliest, diese filtert (d.h. filtert) und dann die resultierenden Ausgangspixel zu der Anzeigeeinrichtung 84 ausgibt. Die Einheiten zur Umrechnung von Abfrage in Pixel 160 implementieren den Filterprozeß 380. Somit ist der Filterprozeß für zumindest eine Untergruppe der Ausgangspixel derart betreibbar, daß er eine Mehrzahl von Abfragen filtert, um die entsprechenden Ausgangspixel zu erzeugen. In einer Ausführungsform ist der Filterprozeß 360 derart konfiguriert, daß er: (i) den Abstand jeder Abfrage zum Zentrum des zu filternden Ausgangspixels bestimmt, (ü) die Komponenten (z.B. Farbe und Alpha) der Abfrage mit einem Filterwert, der eine spezifische (programmierbare) Funktion des Abstandes ist, multipliziert, (iii) alle gewichteten Abfragen, die zu dem Ausgangspixel beitragen, summiert und (iv) das resultierende Ausgangspixel normalisiert. Der Filterprozeß 360 wird unten detaillierter beschrieben (siehe Beschreibung der begleitenden 11, 12 und 14). Es sei bemerkt, daß die Ausdehnung der Filter funktion nicht kreisförmig sein muß (d.h. sie kann eine Funktion von x und y statt einer Funktion des Abstands sein), doch selbst wenn die Ausdehnung kreisförmig ist, muß die Filterfunktion nicht kreissymmetrisch sein. Die "Ausdehnung" des Filters ist der Bereich, innerhalb dessen Abfragen das bestimmte Pixel, das mit dem Filter berechnet wird, 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 354A-B sind somit im wesentlichen doppelt puffergespeichert. Wenn die Abfragepositionen von Einzelbild zu Einzelbild die gleichen bleiben, dann können die Abfragepositionen einfach puffergespeichert werden. Wenn jedoch die Abfragepositionen von Einzelbild zu Einzelbild variieren können, dann kann das Grafiksystems 112 mit Vorteil derart konfiguriert sein, daß es die Abfragepositionen doppelt pufferspeichert. Die Abfragepositionen können auf der Darstellungsseite (d.h. der Speicher 354A kann doppelt puffergespeichert sein) und/oder der Filter-/Faltungsseite (d.h. der Speicher 354B kann doppelt puffergespeichert sein) doppelt puffergespeichert sein. Andere Kombinationen sind ebenso möglich. Beispielsweise kann der Speicher 354A einfach puffergespeichert sein, während der Speicher 354B doppelt puffergespeichert ist. Diese Konfiguration kann es erlauben, daß eine Seite des Speichers 354B für die Aktualisierung (zum Beispiel durch den Filter-/Faltungsprozeß 360) für die Bildwiederholung verwendet wird, während die andere Seite des Speichers 354B aktualisiert wird. In dieser Konfiguration kann das Grafiksystem 112 die Abfragepositionierungsschemata auf einer Einzelbasis verändern durch Verschieben der Abfragepositionen (oder der Offsetwerte bzw. der Verschiebungswerte) von dem Speicher 345A in den doppelt puffergespeicherten Speicher 354B, wenn jedes Einzelbild dargestellt wird. Die Positionen, die verwendet werden, um die Abfragewerte (die von dem Speicher 354A gelesen sind) zu berechnen, werden somit zum Speicher 354B kopiert für die Verwendung während des Filterprozesses (d.h. den Umwandlungsprozeß von Abfragewert in Pixel). Nachdem die Positionsinformation einmal in den Speicher 354B kopiert wurde, kann der Positionsspeicher 354A dann mit neuen Abfragepositionsoffsets beladen werden, die für das zweite darzustellende Einzelbild verwendet werden. In dieser Art und Weise folgen die Abfragewertpositionsinformationen den Abfragewerten von dem Zeichen-/Darstellungsprozeß zu dem Filterprozeß.
  • Noch eine andere alternative Ausführungsform kann Anzeiger zu den Offset-Werten mit den Abfragewerten selbst in dem supergesampleten Abfragepufferspeicher 162 speichern. Diese Anzeiger können verwendet werden, um die Offset-Werte/Störungswerte, die mit jeder bestimmten Abfrage verknüpft sind, nachzuschlagen.
  • Abfragepositionierungsschemata
  • 8 stellt eine Anzahl von verschiedenen Abfragepositionierungsschemata dar. In dem regulären Gitterpositionierungsschema 190 ist jede Abfrage an einem Schnittpunkt eines Gitters mit regelmäßigen Abständen positioniert. Es sei jedoch bemerkt, daß der Begriff „reguläres Gitter, so wie er hier verwendet wird, nicht auf quadratische Gitter beschränkt ist. Andere Typen von Gittern werden ebenso als „regulär", so wie der Begriff hier verwendet wird, angesehen, einschließlich, je doch 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 Pseudozufallszahlen zu erzeugen. Zufallszahlen oder Positionen können ebenso vorherberechnet und in dem Speicher abgelegt werden.
  • Wendet man sich nun 9 zu, so sind Details einer Ausführungsform eines Schemas eines gestörten regulären Gitters 192 gezeigt. In dieser Ausführungsform sind die Abfragen zufällig von einem regulären quadratischen Gitter um X- und Y-Offsets verschoben. Wie der vergrößerte Bereich zeigt, hat die Abfrage 198 einen X-Offset 134, der seine horizontale Verschiebung gegenüber seinem entsprechenden Gitterschnittpunkt 196 spezifiziert. In gleicher Weise hat die Abfrage 198 ebenso einen Y-Offset 136, der seine vertikale Abweichung von dem Gitterschnittpunkt 196 spezifiziert. Der zufällige Offset kann ebenso durch einen Winkel und einen Abstand spezifiziert werden. Wie bei der vorher offenbarten Ausführungsform, die Winkel und Abstände verwendet, kann der X-Offset 134 und der Y-Offset 136 auf einen bestimmten minimalen und/oder maximalen Wert oder einen Bereich von Werten begrenzt sein.
  • In 10 sind Details einer anderen Ausführungsform eines gestörten regulären Gitterschemas 192 gezeigt. In dieser Ausführungsform sind die Abfragen in "Behälter" 138A-D gruppiert. In dieser Ausführungsform enthält jeder Behälter neun (das heißt 3 × 3) Abfragen. Unterschiedliche Behältergrößen können in anderen Ausführungsformen verwendet werden (z.B. Behälter, die 2 × 2-Abfragen oder 4 × 4-Abfragen speichern). In der gezeigten Ausführungsform wird die Position jeder Abfrage als ein Offset bzw. als ein Verschiebungswert relativ zu der Position des Behälters bestimmt. Die Position der Behälter kann als irgendeine bequeme Position bezüglich des Gitters defi niert werden, z.B. die unteren linken Ecken 132A-D, wie in der Figur gezeigt ist. Die Position der Abfrage 198 wird beispielsweise bestimmt durch Addition des X-Offsets 124 und des Y-Offsets 126 zu den X- und Y-Koordinaten der Ecke 132B des Behälters 138D. Wie vorher bemerkt wurde, kann dies die Größe des Abfragepositionsspeichers, der in manchen Ausführungsformen verwendet wird, reduzieren.
  • In 11 ist ein mögliches Verfahren für das schnelle Umwandeln von Abfragewerten, die in dem Abfragepufferspeicher 162 abgelegt sind, in Pixel gezeigt. In dieser Ausführungsform sind die Inhalte des Abfragepufferspeichers 162 in Spalten (z.B. die Spalten 1-4) organisiert. Jede Spalte in dem Abfragepufferspeicher 162 kann eine zweidimensionale Anordnung von Behältern aufweisen. Die Spalten können derart konfiguriert sein, daß sie sich in horizontaler Richtung überlappen (z.B. um einen oder mehrere Behälter) und jede Spalte kann einer bestimmten Einheit 170A-D zur Umrechnung von Abfrage in Pixel für den Faltungsprozeß zugewiesen sein. Die Größe des Überlapps kann von der Ausdehnung des zu verwendenden Filters abhängen. Das in der Figur gezeigte Beispiel illustriert einen Überlapp von zwei Behältern (jedes Quadrat, wie z.B. das Quadrat 188, stellt einen einzelnen Behälter dar, der eine oder mehrere Abfragen aufweist). Diese Konfiguration kann mit Vorteil den Einheiten 170A-D zur Umrechnung von Abfrage in Pixel erlauben, parallel und unabhängig zu arbeiten, wobei jede Einheit 170A-D zur Umrechnung von Abfrage in Pixel ihre eigene Spalte empfängt und umwandelt. Das Überlappen der Spalten wird sichtbare Bänder oder andere Artefakte, die an den Spaltengrenzen auftreten für jeden Operator, der größer als ein Pixel in der Ausdehnung ist, eliminieren.
  • In 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 150A-D geleitet (Schritt 202). Wenn die Grafikdaten komprimiert sind (Schritt 204), dann dekomprimieren die Darstellungseinheiten 150A-D die Daten in ein nutzbares Format, z.B. Dreiecke (Schritt 206). Als nächstes werden die Dreiecke verarbeitet, z.B. in den Schirmraum umgewandelt, beleuchtet und transformiert (Schritt 208A). Wenn das Grafiksystem Supersampling mit variabler Auflösung implementiert, dann werden die Dreiecke mit den Bereichsgrenzen der Abfragedichte verglichen (Schritt 208B). Bei Implementierungen des Supersamplings mit variabler Auflösung können unterschiedliche Regionen des Anzeigegeräts unterschiedlichen Abfragedichten zugewiesen werden basierend auf einer Anzahl von Faktoren (z.B. dem Zentrum der Aufmerksamkeit auf dem Schirm, wie es von einer Augen- oder Kopfverfolgung bestimmt wird). Abfragedichteregionen werden unten detaillierter beschrieben (siehe unten den Abschnitt mit dem Titel "Abfragepufferspeicher mit variabler Auflösung"). Wenn das Dreieck eine Abfragedichteregionsgrenze kreuzt (Schritt 210), dann kann das Dreieck in zwei kleinere Polygone entlang der Bereichsgrenze aufgeteilt werden (Schritt 212). Dies kann es jedem neugebildeten Dreieck erlauben, eine einzige Abfragedichte zu haben. In einer Ausführungsform kann das Grafiksystem derart konfiguriert sein, daß es das gesamte Dreieck einfach zweimal (das heißt einmal in jedem Bereich) verwendet und dann eine Begrenzungsbox verwendet, um das Dreieck effektiv abzuschneiden.
  • Als nächstes wird eines der Abfragepositionierungsschemata (z.B. reguläres Gitter, gestörtes reguläres Gitter oder stochastisch) aus dem Abfragepositionsspeicher 184 ausgewählt (Schritt 214). Das Abfragepositionierungsschema wird im allgemeinen vorprogrammiert sein in dem Abfragepositionsspeicher 184, kann jedoch auch "on the fly" bzw. während der Übertragung ausgewählt werden. Basierend auf diesem Abfragepositionierungsschema und der Abfragedichte des Bereichs, der das Dreieck enthält, bestimmen die Darstellungseinheiten 150A-D, welche Behälter Abfragen enthalten können, die in den Grenzen des Dreiecks lokalisiert sind (Schritt 216). Die Verschiebungen für die Abfragen innerhalb dieser Behälter werden dann von dem Abfragepositionsspeicher 184 ausgelesen (Schritt 218). Jede Position der Abfrage wird dann unter Verwendung der Verschiebungen berechnet und wird mit den Endpunkten des Dreiecks verglichen, um zu bestimmen, ob die Abfrage innerhalb des Dreiecks ist (Schritt 220). Schritt 220 wird unten detaillierter erörtert.
  • Für jede Abfrage, für die bestimmt wird, daß sie innerhalb des Dreiecks liegt, zeichnet die Darstellungseinheit die Abfrage durch Berechnung der Farbe, alpha und anderer Attribute der Abfrage. Dies kann die Beleuchtungsberechnung und die Interpolation basierend auf der Farb- und Texturkarteninformation, die mit den Endpunkten des Dreiecks verknüpft sind, beinhalten. Nachdem die Abfragen dargestellt sind, können sie zu der Verzeichniseinheit 154 weitergeleitet werden, die dann die Abfragen in dem Abfragepufferspeicher 162 speichert (Schritt 224).
  • Es sei bemerkt, daß die Ausführungsform des Verfahrens, das oben beschrieben wurde, nur für die Zwecke der Erläuterung verwendet wird und nicht als begrenzend verstanden wird. Beispielsweise können in manchen Ausführungsformen die in der Figur gezeigten Schritte, wo sie seriell auftreten, parallel implementiert werden. Weiterhin können manche Schritte in bestimmten Ausführungsformen des Grafiksystems reduziert oder eliminiert werden (z.B. die Schritte 204-206 in Ausführungsformen, die keine geometrische Kompression implementieren oder die Schritte 210-212 in Ausführungsformen, die keinen supergesampleten Abfragepufferspeicher mit variabler Auflösung implementieren).
  • Bestimmung, welche Abfragen in dem darzustellenden Polygon liegen
  • Der Vergleich 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:
    Figure 00290001
  • Entscheidungsregeln für diese Darstellung können ebenso implementiert werden (z.B. können Koordinatenachsen derart definiert werden, daß sie zu dem positiven Oktanten gehören). In gleicher Weise kann X-major so definiert werden, daß es alle Punkte aufweist, die auf den Winkelhalbierenden liegen.
  • In einer alternativen Ausführungsform kann die Akzeptierungsseite einer Kante durch Anwenden der Kantengleichung auf den dritten Eckpunkt des Dreiecks bestimmt werden (der Eckpunkt, der nicht einer der beiden Eckpunkte ist, die die Kante bilden). Dieses Verfahren kann zusätzliche Kosten einer Vielfachaddition hervorrufen, die durch die oben beschriebene Technik nicht verwendet werden darf.
  • Um die "faced-ness" (das heißt, welche Seite wohin gewandt ist) eines Dreiecks zu bestimmen (das heißt, ob das Dreieck rechtsläufig oder linksläufig ist), können die Delta-Richtungen von zwei Kanten des Dreiecks überprüft werden und die Steigungen der beiden Kanten können verglichen werden. Angenommen, daß beispielsweise die Kante 12 eine Delta-Richtung von 1 hat und die zweite Kante (Kante 23) eine Delta-Richtung von 0, 4 oder 5 hat, dann ist das Dreieck gegenläufig bzw. linksläufig. Wenn jedoch die Kante 23 eine Delta-Richtung von 3, 2 oder 6 hat, dann ist das Dreieck rechtsläufig. Wenn die Kante 23 eine Delta-Richtung von 1 hat (das heißt, dieselbe wie die Kante 12), dann führt der Vergleich der Steigungen der beiden Kanten zur Entscheidung (das heißt, beide sind X-major). Wenn die Kante 12 eine größere Steigung hat, dann ist das Dreieck gegenläufig. Wenn die Kante 23 eine Delta-Richtung von 7 hat (das exakte Gegenteil der Kante 12), dann werden wieder die Steigungen verglichen, jedoch mit dem entgegengesetzten Ergebnis im Hinblick darauf, ob das Dreieck rechtsläufig oder linksläufig ist.
  • Dieselbe Analyse kann erschöpfend auf alle Kombination der Delta-Richtungen der Kante 12 und Kante 23 angewendet werden, wobei in jedem Fall die richtige faced-ness bestimmt wird. Wenn die Steigungen im Grenzfall gleich sind, dann ist das Dreieck entartet (das heißt mit keiner inneren Fläche). Es kann explizit hierauf getestet werden und eliminiert werden oder mit angemessener numerischer Sorgfalt könnte es durchgelassen werden, da es nicht veranlassen wird, daß Abfragen dargestellt werden. Ein Spezialfall tritt auf, wenn ein Dreieck die Sichtebene teilt, dies kann jedoch früher in der Pipeline erfaßt werden (z.B. wenn das Vorderebenen- und das Rückebenenabschneiden durchgeführt wird).
  • Es sei bemerkt, daß in den meisten Fällen nur eine Seite eines Dreiecks dargestellt wird. Wenn somit, nachdem die faced-ness eines Dreiecks bestimmt wurde, die Fläche eine ist, die zurückgewiesen wird, dann kann das Dreieck eliminiert werden (das heißt, es ist nicht Gegenstand weiterer Bearbeitung mit keinen erzeugten Pixeln). Es sei weiterhin bemerkt, daß diese Bestimmung der faced-ness nur einen zusätzlichen Vergleich (das heißt der Steigung der Kante 12 mit der der Kante 23) über die bereits berechneten Faktoren hinaus verwendet. Viele traditionelle Ansätze können komplexere Berechnungen verwenden (bei früheren Stufen der Einstellberechnung).
  • 13 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 256-258). Diese Bestimmung kann auf dem Abstand von der Abfrage zu dem Zentrum des zu erzeugenden Ausgangspixels basieren.
  • In einer Ausführungsform können die Einheiten zur Umrechnung von Abfrage zu Pixel 170 derart konfiguriert sein, daß sie diesen Abstand (das heißt die Ausdehnung oder die Einhüllende des Filters an der Position der Abfrage) berechnen und dann dies verwenden, um in einer Tabelle Spei cherfiltergewichtungswerte 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 288A-D Abfragewerte, die möglicherweise zu dem Ausgangspixel beitragen können. In diesem Beispiel ist das Zentrum des Ausgangspixels an der Grenze der Behälter 288A-D lokalisiert. Jeder Behälter umfaßt 16 Abfragen und eine Anordnung von vier Behältern (2 × 2) wird gefiltert, um das Ausgangspixel zu erzeugen. Angenommen, daß zirkulare Filter verwendet werden, so bestimmt der Abstand von jedem Abfragewert von dem Pixelzentrum, welcher Filterwert auf die Abfrage angewendet wird. Beispielsweise ist Abfrage 296 relativ nahe an dem Pixelzentrum und fällt daher in den Bereich des Filters mit einem Filterwert von B. In gleicher Weise fallen die Abfragen 294 und 292 in Bereiche des Filters mit Filterwerten von 4 bzw. 2. Die Abfrage 290 liegt jedoch außerhalb der maximalen Filterausdehnung und bekommt daher einen Filterwert von 0 verliehen. Die Abfrage 290 wird somit nicht zu dem Wert des Ausgangspixels beitragen. Dieser Filtertyp stellt sicher, daß die Abfragen, die am nächsten an dem Pixelzentrum lokalisiert sind, am meisten beitragen, während Pixel, die von dem Pixelzentrum entfernt angeordnet sind, weniger zu dem endgültigen Ausgangspixelwert beitragen. Dieser Typ des Filterns führt automatisch das Anti-Aliasing durch Glätten jeder abrupten Veränderung in dem Bild durch (z.B. von einer dunklen Linie zu einem hellen Hintergrund). Ein anderer besonders nützlicher Typ von Filter für das Anti-Aliasing ist ein mit Fenster versehener Sinc-Filter. Mit Vorteil enthält der mit Fenster versehene Sinc-Filter negative Keulen, die einige der gemischten oder "verzerrten" Bilder erneut schärft. Negative Keulen sind Flächen, in denen der Filter veranlaßt, daß die Abfragen von den Pixeln, die berechnet werden, abgezogen werden. Im Gegensatz dazu addieren Abfragen auf irgendeiner Seite der negativen Keule sich zu dem Pixel, das berechnet wird.
  • Beispielwerte für die Abfragen 290-296 sind in den Boxen 300-308 dargestellt. In diesem Beispiel weist jede Abfrage einen Rot-, Grün-, Blau- und Alpha-Wert auf zusätzlich zu den Positionierungsdaten der Abfrage. Der Block 310 stellt die Berechnung jedes Pixelkomponentenwerts für den nicht normalisierten Ausgangspixel dar. Wie der Block 310 anzeigt, wird mögliche unerwünschte Verstärkung in die endgültigen Pixelwerte eingeführt (das heißt ein Ausgangspixel mit einem Rot-Komponentenwert von 2000 ist viel größer als irgendeiner der Rot-Komponentenwerte in der Abfrage). Wie vorher bemerkt wurde, können die Filterwerte summiert werden, um einen Normalisierungswert zu erhalten 308. Der Normalisierungswert 308 wird verwendet, um die unerwünschte Verstärkung von dem Ausgangspixel herauszuteilen. Der Block 312 stellt diesen Prozeß und die endgültigen normalisierten Beispielpixelwerte dar.
  • Der in 14 dargestellte Filter ist nur aus Gründen der Beschreibung ausgewählt worden und soll nicht als begrenzend verstanden werden. Eine breite Vielfalt von Filtern kann für die Pixelwertberechnungen verwendet werden abhängig von dem gewünschten Filtereffekt (den gewünschten Filtereffekten). Es ist eine gut bekannte Tatsache, daß der Sinc-Filter einen idealen Bandpassfilter realisiert. Der Sinc-Filter nimmt jedoch über die gesamte x-y-Ebene Werte an, die nicht Null sind. Somit wurden verschiedene Fensternäherungen des Sinc-Filters entwickelt. Einige dieser Näherungen, wie z.B. der Konusfilter oder der Gaußfilter, approximieren nur den zentralen Lappen des Sinc-Filters und erzielen somit einen Glättungseffekt auf dem abgefragten Bild. Bessere Approximierungen, wie z.B. der Mitchell-Netravali-Filter (einschließlich des Catmull-Rom-Filters als Spezialfall) werden erhalten durch Approximieren einiger der negativen Lappen und der positiven Lappen, die den zentralen positiven Lappen des Sinc-Filters umgeben. Die negativen Lappen erlauben es einem Filter, die Ortsfrequenzen effektiver bis zu der Abschneidefrequenz zu speichern und Ortsfrequenzen hinter der Abschneidefrequenz zurückzuweisen. Ein negativer Lappen ist ein Abschnitt eines Filters, wo die Filterwerte negativ sind. Somit können einigen der Abfragen, die in der Unterstützung eines Filters angesiedelt sind, negative Filterwerte (d.h. Filtergewichte) zugewiesen werden.
  • Eine große Vielfalt von Filtern kann für die Pixelwertfaltungen verwendet werden einschließlich Filtern, wie z.B. einem Boxfilter, einem Zeltfilter, einem Zylinderfilter, einem Konusfilter, einem Gaußfilter, einem Catmull-Rom-Filter, einem Mitchell-Netravali-Filter, jede mit Fenster versehene Näherung eines Sinc-Filters usw. Weiterhin kann der Unterstützungsbereich der Filter, die für die Pixelwertfaltungen verwendet werden, kreisförmig, elliptisch, rechteckig (z.B. quadratisch), dreieckig, hexagonal usw. sein.
  • 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 5 × 5-Faltungsfilter.
  • Supersampling mit variabler Auflösung
  • Gegenwärtig würde das Brute-Force-Verfahren der Verwendung einer festen Anzahl von Abfragen pro Pixelort, z.B. ein achtfach supergesampleter Abfragepufferspeicher, die Verwendung von achtmal mehr Speicher, die achtfache Füllrate (d.h. der Speicherbandbreite) und eine Faltungspipe, die in der Lage ist, acht Abfragen pro Pixel zu verarbeiten, bedingen.
  • In einer Ausführungsform kann das Grafiksystem 112 derart konfiguriert sein, daß es diese möglichen Hindernisse durch Implementierung des Supersamplings mit variabler Auflösung überwindet. In dieser Ausführungsform ahmt das Grafiksystem 112 die Merkmale des menschlichen Auges nach 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 Orte auf dem Schirm (z.B. Gebiete, die von dem Foveationspunkt weiter entfernt sind). Abhängig von der Implementierung kann der Foveationspunkt auf vielerlei Art bestimmt werden. In einer Ausführungsform kann der Foveationspunkt ein vorbestimmtes Gebiet um ein bestimmtes Objekt, das auf dem Schirm angezeigt wird, sein. Beispielsweise kann der Bereich um einen sich bewegenden Cursor oder der Hauptcharakter in einem Computerspiel als Foveationspunkt benannt werden. In einer anderen Ausführungsform kann der Foveationspunkt auf dem Schirm durch Kopfverfolgung oder Augenverfolgung bestimmt werden. Selbst wenn augen-/kopf-/handverfolgende, cursorbasierte oder hauptcharakterbasierte Foveationspunkte nicht implementiert werden, kann der Foveationspunkt im Zentrum des Schirms fixiert werden, wo der Großteil der Aufmerksamkeit des Betrachters während des Großteils der Zeit fokussiert wird. Das Supersampling mit variabler Auflösung wird unten detaillierter beschrieben.
  • Supergesampleter Abfragepufferspeicher mit variabler Auflösung 15-19
  • 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 kleinere 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. 360-368), 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 allgemeinen Kategorien zu fallen: (1) diejenigen Verfahren, die den Zeichen- oder Darstellungsprozeß betreffen, und (2) diejenigen Verfahren, die den Faltungsprozeß betreffen. Darstellungsprozeßverfahren beinhalten Verfahren, die Abfragen in dem Abfragepufferspeicher 162 mit einer variablen Abfragedichte darstellen. Beispielsweise kann die Abfragedichte auf einer Regionsbasis (z.B. medial, foveal und peripher) oder auf einer Abtastzeilenbasis (oder auf Basis einer kleinen Anzahl von Abtastzeilen) variiert werden. Das Variieren der Abfragendichte auf einer Abtastzeilenbasis kann verwirklicht werden durch Verwendung einer Nachschlagtabelle von 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. Faltungsprozeßverfahren beinhalten Verfahren, deren Filterabfragen auf einem gleichförmigen Faltungsfilter, einem kontinuierlich variablen Faltungsfilter oder einem Faltungsfilter, der bei mehreren Ortsfrequenzen arbeitet, basieren.
  • 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 kontinuierlich variabler Faltungsfilter die Anzahl von verwendeten Abfragen, 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 Orientierung 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 Interferometric Eye Tracking System"). Andere Verfahren für die Augenverfolgung sind ebenso möglich und wurden in Betracht gezogen (z.B. die oben aufgelisteten Verfahren für die Kopfverfolgung).
  • 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 18A-B 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 19A-B ist eine andere Ausführungsform eines Computersystems gezeigt, das mit einem supergesampleten Abfragepufferspeicher mit variabler Auflösung konfiguriert ist. In dieser Ausführungsform wird das Zentrum der Aufmerksamkeit des Betrachters durch die Position eines Hauptcharakters 362 bestimmt. Der mediale und der foveale Bereich sind auf 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 506A-N aufweist. (In der in 4 gezeigten Ausführungsform sind die Clientcomputer 506A-B 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.
  • Dynamisches Einstellen der Abfrage-zu-Pixel-Filter
  • Das Grafiksystem kann weiterhin derart betreibbar sein, daß es den Filter, der für das Erzeugen der Ausgangspixel verwendet wird, in Antwort auf eine Untergruppe der Ausgangspixel, die negative Werte haben, dynamisch einstellt. Pixel mit negativen Werten können beispielsweise als ein Ergebnis der Verwendung eines Filters mit negativen Lappen erzeugt werden.
  • In einem Satz von Ausführungsformen kann das Grafiksystem derart konfiguriert sein, daß es die Farbwerte für Pixel in einem Einzelbild untersucht und einen Pixelnegativitätswert für jedes Pixel mit einem oder mehreren negativen Farbwerten berechnet. Wenn beispielsweise irgendeine der Farben R, G oder B für ein gegebenes Pixel einen negativen Wert erzielt, kann der Pixelriegativitätswert für das gegebene Pixel berechnet werden als (a) eine Summe derjenigen Farbkomponenten (R, G und/oder B), die negative Werte erreichen, (b) ein Durchschnitt derjenigen Farbkomponenten, die negative Werte erzielen, (c) die Farbkomponente, die den negativsten Wert erzielt oder (d) irgendeine Funktion einer oder mehrerer der Farbkomponenten, die negative Werte erzielen. Die vorliegende Erfindung zieht eine große Vielfalt von Methoden für die Berechnung des Pixelnegativitätswerts basierend auf den Farbkomponenten eines Pixels mit negativem Wert in Betracht.
  • Ein Pixel wird als "negativ" bezeichnet, wenn eine oder mehrere seiner Farbkomponenten negativ sind. Ein Pixel wird als "rot negativ" bezeichnet, wenn seine rote Komponente negativ ist. Ein Pixel wird als "grün negativ" bezeichnet, wenn seine grüne Komponente negativ ist. Ein Pixel wird als "blau negativ" bezeichnet, wenn seine blaue Komponente negativ ist. Der Prozeß der Abfragung von Pixelfarbwerten, um negative Pixel zu bestimmen, wird hier als negatives Pixelscanning bezeichnet. Das negative Pixelscanning kann auf allen Pixeln in einem Einzelbild oder auf einer Untergruppe der Pixel in einem Einzelbild durchgeführt werden. Die Pixelnegativitätsberechnung kann auf denjenigen Pixeln durchgeführt werden, die durch das negative Pixelscanning als negativ bestimmt wurden.
  • In einer Ausführungsform kann das negative Pixelscanning und/oder die Pixelnegativitätsberechnung durch eine oder mehrere Einheiten zur Umrechung von Abfrage in Pixel durchgeführt werden. In einer anderen Ausführungsform kann das negative Pixelscanning und/oder die Pixelnegativitätsberechnung von einer getrennten Negativitätsberechnungseinheit (NCU) berechnet werden, die die Pixeldatenströme empfängt, die von einer oder mehreren Einheiten zur Umrechnung von Abfrage in Pixel erzeugt wurden.
  • Die obige Diskussion des negativen Pixelscannings und der Pixelnegativitätsberechnung läßt sich natürlich auf jedes gewünschte Farbsystem verallgemeinern, d.h. es ist nicht notwendig, das RGB-Farbsystem zu verwenden. Zusätzlich kann ein Pixel andere Attribute, wie z.B. Alpha, beinhalten, die einen negativen Wert erzielen können. Somit kann das negative Pixelscanning und die Pixelnegativitätsberechnung derart erweitert werden, daß sie zusätzliche Pixelattribute beinhaltet.
  • Basierend auf den Pixelnegativitätswerten der negativen Pixel kann das Grafiksystem einen Einzelbildnegativitätswert für das gegebene Einzelbild berechnen. Der Einzelbildnegativitätswert kann (1) eine Summe der Pixelnegativitätswerte, (2) ein Durchschnitt der Pixelnegativitätswerte, (3) eine Statistik, die auf der Population der Pixelnegativitätswerte berechnet wurde, oder (4) das Extremum der Pixelnegativitätswerte (d.h. der Pixelnegativitätswert, der das negativste Pixel darstellt) usw. sein. Beispielsweise kann das Grafiksystem ein Histogramm der Pixelnegativitätswerte erzeugen und auf den Histogrammwerten (d.h. den Populationswerten) arbeiten, um den Einzelbildnegativitätswert zu bestimmen. Der Einzelbildnegativitätswert bemißt somit die Größe der "Negativität", die in einem gegebenen Einzelbild vorhanden ist. Der Einzelbildnegativitätswert kann für jedes Einzelbild oder jedes Nf-te Einzelbild, wobei Nf eine positive ganze Zahl ist, berechnet werden.
  • Es sei bemerkt, daß das Grafiksystem für die Verwendung mit Monochromanzeigen konfiguriert sein kann. Mit anderen Worten kann der Grafikprozessor 90 derart konfiguriert sein, daß er einen einzelnen Intensitätswert pro Abfrage erzeugt. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel können somit dementsprechend einen einzelnen Intensitätswert pro Pixel erzeugen. In diesem Fall muß der Pixelnegativitätswert nicht eine spezielle Berechnung erfordern, d.h. der einzelne Intensitätswert, wenn er negativ ist, kann der Pixelnegativitätswert sein.
  • In einigen Ausführungsformen kann ein getrennter Einzelbildnegativitätswert für jede Farbe (oder allgemeiner für jedes Pixelattribut) berechnet werden. Der rote (grüne, blaue) Einzelbildnegativitätswert kann basierend auf den Rot- (Grün-, Blau-) Werten derjenigen Pixel berechnet werden, die rot negativ (grün negativ, blau negativ) sind. Beispielsweise kann der rote Einzelbildnegativitätswert berechnet werden als (1) eine Summe der Rot-Werte der rot negativen Pixel, (2) ein Durchschnitt der Rot-Werte der rot negativen Pixel, (3) eine Statistik, die auf der Population der Rot-Werte der rot negativen Pixel berechnet wurde, (4) das Extremum der Rot-Werte der rot negativen Pixel oder (5) irgendeine Funktion der Rot-Werte der rot negativen Pixel. Die Einzelbildnegativitätswerte pro Farbe können von einer oder mehreren Einheiten zur Umrechnung von Abfrage in Pixel oder von der Negativitätsberechnungseinheit berechnet werden.
  • In einem Satz von Ausführungsformen werden die Einzelbildnegativitätswerte pro Farbe basierend auf entsprechenden Histogrammen berechnet. Beispielsweise kann der Einzelbildrotnegativitätswert berechnet werden basierend auf einem Histogramm der Rot-Komponenten der rot negativen Pixel. Dieses Histogramm wird als das "Rot-Histogramm" bezeichnet. Eine gewichtete Summe der Rot-Histogrammwerte kann den Rot-Negativitätseinzelbildwert bestimmen. Das Grafiksystem kann somit ein Rot-Histogramm, ein Grün-Histogramm und ein Blau-Histogramm für ein gegebenes Einzelbild erzeugen und jeden der Einzelbildnegativitätswerte pro Farbe aus dem entsprechenden Histogramm berechnen. Das Grafiksystem kann die Histogramme je Farbe und die Einzelbildnegativitätswerte für jedes Einzelbild oder für jedes Nf-te Einzelbild des Videoausgangs berechnen, wobei Nf eine positive ganze Zahl ist.
  • In einem Satz von Ausführungsformen kann der Durchschnitt (oder die Summe) der Pixelattributwerte (z.B. R, G und B) gebildet werden, um zu bestimmen, ob ein Pixel negativ ist. In dieser Ausführungsform wird ein Pixel als "negativ" bezeichnet, wenn der Attributdurchschnitt negativ ist. Ebenso kann der Pixelnegativitätswert als dieser Attributdurchschnitt definiert werden.
  • Wie oben bemerkt wurde, kann nur ein Teil der Pixel in einem Einzelbild Gegenstand des negativen Pixelscannings sein (d.h. untersucht werden, um den positiven/negativen Status zu bestimmen). Beispielsweise können nur diejenigen Pixel, die innerhalb eines bestimmten Fensters oder Pixel innerhalb einer bestimmten Region des Schirms sind, untersucht werden. Zusätzlich kann das Grafiksystem eine bestimmte Untergruppe der Pixel in dem Einzelbild, beispielsweise Pixel auf einem Gitter (d.h. Pixel auf den Schnittpunkten der vertikalen und horizontalen Gitterlinien) eines von zwei Pixeln, jedes dritte Pixel oder jedes NSC-te Pixel, wobei NSC eine positive ganze Zahl ist, untersuchen. Das Grafiksystem kann ebenso Zufallspixel untersuchen.
  • 21 stellt eine Ausführungsform eines Pixelnegativitätshistogramms dar. Die horizontale Achse des Histogramms stellt einen Pixelnegativitätsprozentsatz dar, d.h. |(Pixelnegativität)/(maximale Pixelnegativität)| × 100
  • Die maximale Pixelnegativität für einen gegebenen Filter kann erzielt werden, wenn alle Abfragen in den negativwertigen Abschnitten des Filters maximale positive Farbintensitäten haben und alle Abfragen in den positivwertigen Abschnitten des Filters Farbintensitäten von Null haben. Das Histogramm weist eine Mehrzahl von Zellen auf, die sich jeweils von einem niedrigen Negativitätsprozentsatz zu einem hohen Negativitätsprozentsatz erstrecken. Jede Zelle hat einen entsprechenden Größenwert. Die Zellgröße stellt die Anzahl von Pixeln mit negativen Prozentzahlen zwischen den niedrigen und hohen prozentualen Grenzen der Zellen dar. Beispielsweise hat die Zelle 600 eine Zellgröße 604, die gleich der Anzahl von Pixel (oder irgendeiner Funktion der Anzahl von Pixeln) mit einem negativen Prozentsatz zwischen 0 und 10% gleicht.
  • 22 stellt eine andere Ausführungsform eines Histogramm von Pixelnegativitätswerten dar mit Zellen, die durch Intervalle der Form [-2n+1, -2n] definiert werden, wobei der Index n von 0 bis zu einem oberen Limit NL variiert, das von der Anzahl von Bits, die dem Pixelnegativitätswert zugewiesen werden, abhängt. Mit anderen Worten wird die n-te Zelle des Histogramms als das Intervall der Pixelnegativitätswerte X definiert, das durch die Ungleichung -2n+1 < x ≤ -2n gegeben ist. Die folgende Tabelle stellt die Pixelnegativitätsbereiche für die Zellen 1-5 dar. Die linken und rechten Pixelnegativitätsgrenzen für jede Zelle sind sowohl in der dezimalen als auch in der 2s-Komplementärnotation angegeben. Tabelle 1 Binär ausgerichtete Histogramm-Zellen
    Figure 00420001
    Figure 00430001
  • Da die Grenzen der Zellbereiche bei Potenzen von Zwei auftreten, kann die Zuweisung jedes Pixelnegativitätswerts zu dem Zellbereich, in dem er liegt, mit ansteigender Effizienz durchgeführt werden. (Das signifikanteste Bit von |X|, d.h. der Absolutwert des Einzelbildnegatvititätswerts, bestimmt die Zellnummer.) Während die Ausführungsform von 22 annimmt, daß der Pixelnegativitätswert X durch ein 6-Bit-Wort in der 2s-Komplementärform dargestellt ist, lassen sich die Prinzipien, die in diesem Beispiel inhärent sind, natürlich auf irgendeine Anzahl von Bits oder irgendein numerisches Darstellungsschema verallgemeinern.
  • Es sei bemerkt, daß die Wahrscheinlichkeit des Erzielens eines Pixelnegativitätswerts X häufig eine abfallende Funktion von |X| sein kann. Es kann somit wünschenswert sein, die Zellbereiche derart zu definieren, daß die Zellauflösung mit ansteigender Größe der Pixelnegativität abfällt (d.h. so daß die Zellbreite sich erhöht). Die Zellbereiche in der Ausführungsform von 22 realisieren diese Eigenschaft dadurch, daß sie Breiten haben, die aufeinanderfolgende Potenzen von Zwei sind. Mehr Zellen (höhere Auflösung) werden bei niedrigen Negativitätswerten bereitgestellt und weniger Zellen (gröbere Auflösung) werden bei hohen Negativitätswerten bereitgestellt.
  • In einigen Ausführungsformen kann ein Einzelbildnegativitätswert durch Berechnen eines gewichteten Durchschnitts (oder einer gewichteten Summe) der Zellgrößen bestimmt werden. Die Größe einer Zelle ist typischerweise die Anzahl von Pixeln (oder Pixelkomponenten) in der Zelle. Die Zellgrößen, die den Zellen mit niedriger Pixelnegativität entsprechen, können weniger gewichtet werden als die Zellgrößen, die Zellen hoher Pixelnegativität entsprechen. (Die Pixelnegativität wird als "niedrig" bezeichnet, wenn der Absolutwert der Pixelnegativität klein ist, und als "hoch", wenn der Absolutwert der Pixelnegativität groß ist.) Beispielsweise kann in 21 der Zellgröße 604 ein geringeres Gewicht gegeben werden als der Zellgröße 606. In der Ausführungsform von 22 kann die Größe der Zelle n mit 2-n gewichtet werden und eine gewichtete Summe der Zellgrößen entspricht somit einem Populationsdurchschnitt.
  • Der berechnete Einzelbildnegativitätswert kann dann mit einem Negativitätsschwellwert verglichen werden. In manchen Ausführungsformen kann der Negativitätsschwellwert ein vom Benutzer einstellbarer Wert sein. Beispielsweise kann der Benutzer den Schwellwert über eine graphische Benutzeroberfläche einstellen, die auf der Host-CPU 102 und/oder dem Grafiksystem 112 ausgeführt wird. In einer Ausführungsform kann der Benutzer den Schwellwert über eine oder mehrere physikalische Steuerungen (z.B. Tasten, Knöpfe und/oder Schieber), die auf der Systemeinheit 82, der Anzeigeeinrichtung 84 und/oder dem Grafiksystem 112 vorhanden sind oder mit dieser verknüpft sind, verändern.
  • In einem Satz von Ausführungsformen kann das Grafiksystem den Abfrage-zu-Pixel-Filter (z.B. die Filterfunktion und/oder die Filterunterstützung) in Antwort auf den Einzelbildnegativitätswert eines gegenwärtigen Einzelbildes, der nicht akzeptierbar groß ist, wie es durch den negativen Schwellwert definiert wird, einstellen. Der gegenwärtige Einzelbildnegativitätswert kann als nicht akzeptierbar groß deklariert werden, wenn seine Größe (d.h. sein absoluter Wert) größer als der Negativitätsschwellwert ist. Der Filter wird derart eingestellt, daß er den Einzelbildnegativitätswert von nachfolgenden Einzelbildern reduziert. Das Grafiksystem kann zweckbestimmte Schaltkreise und/oder einen Prozessor, der betreibbar ist, um Programmcode für die Implementierung der Filtereinstellungen) auszuführen, beinhalten. In einer Ausführungsform kann die Filtereinstellung durch die Negativitätsberechnungseinheit (NCU) extern zu den Einheiten zur Umrechnung von Abfrage in Pixel implementiert werden. Beispielsweise kann die NCU eine oder mehrere Filterkoeffiziententabellen aktualisieren, aus denen die Einheiten zur Berechnung von Abfrage in Pixel ihre Filterkoeffizientenwerte herleiten.
  • Umgekehrt kann das Grafiksystem die Verwendung des gegenwärtigen Filters für eines oder mehrere nachfolgende Einzelbilder fortsetzen, wenn der gegenwärtige Einzelbildnegativitätswert annehmbar klein ist, d.h. wenn der Absolutwert der gegenwärtigen Einzelbildnegativität kleiner als der Schwellwert ist. Es sei bemerkt, daß der Einzelbildnegativitätswert oben als eine nicht positive Größe (d.h. typischerweise mit negativem Vorzeichen) beschrieben wurde. In einigen Ausführungsformen kann jedoch der Einzelbildnegativitätswert eine nicht negative Größe sein. Beispielsweise kann der Einzelbildnegativitätswert aus einem Histogramm mit dem Absolutwert der Pixelnegativitätswerte berechnet werden.
  • In manchen Ausführungsformen können alle Filtereinstellungen, die von dem gegenwärtigen Einzelbild induziert wurden, auf den Filter, der (von den Einheiten zur Umrechnung von Abfrage in Pixel) in nachfolgenden Einzelbildern verwendet wird, angewendet werden, d.h. das gegenwärtige Einzelbild wird nicht beeinflußt. In anderen Ausführungsformen können alle Filtereinstellungen, die von dem gegenwärtigen Einzelbild induziert werden, für den Filter, der in Einzelbildern nach dem ersten nachfolgenden Einzelbild, nach dem zweiten nachfolgenden Einzelbild usw. verwendet werden, angewendet werden.
  • 23A stellt eine Ausführungsform eines abgeschnittenen Sinc-Filters dar, der in Abhängigkeit von dem Radius gemessen vom Filterzentrum gezeichnet ist. 23B stellt eine Ausführungsform eines Catmull-Rom-Filters dar, das in Abhängigkeit vom Radius gemessen vom Filterzentrum gezeichnet ist. Beide Filter sind mit einem maximalen Radius von zwei Pixeleinheiten dargestellt. Wenn einer von beiden Filtern verwendet wird, um Abfragewerte zu filtern, dann können die resultierenden Pixel negative Werte erreichen aufgrund der negativen Lappen in dem Bereich der Radien zwischen einer und zwei Pixeleinheiten. 23C stellt eine Ausführungsform eines kubischen B-Spline-Filters dar. Der kubische B-Spline-Filter ist in seiner Form ähnlich wie der Gaußfilter und hat keine negativen Lappen. Wenn dieser Filter verwendet würde, um Abfragewerte zu filtern, könnten die resultierenden Pixelwerte mit Vorteil das Problem des Erreichens negativer Werte vermeiden. Das resultierende Pixelbild kann jedoch unscharf erscheinen.
  • Es sei bemerkt, daß die Catmull-Rom- und die kubischen B-Spline-Filter Spezialfallfilter der Mitchell-Netravali-Filterfamilie sind. Die Mitchell-Netravali-Filterfamilie wird durch zwei Parameter, die hier als B und C bezeichnet werden, parametrisiert. Jeder Parameter nimmt einen Wert in dem Intervall [0,1] ein. Der Parameterraum ist somit ein Einheitsquadrat. Ein geordnetes Paar (B, C), das in dem Einheitsquadrat liegt, definiert einen bestimmten Filter in der Mitchell-Netravali-Familie. Der Catmull-Rom-Filter entspricht dem geordneten Paar (0, 1/2). Der kubische B-Spline entspricht dem geordneten Paar (1, 0). Es wird auf die Monographie mit dem Titel "Principles of Digital Image Synthesizes" von Andrew S. Glassner, ©1995, Morgan Kaufman Publishing, Band 1, S. 531-536 für eine Definition und eine Diskussion der Mitchell-Netravali-Familie Bezug genommen. Der Parameterraum kann in Regionen aufgeteilt sein basierend auf dem Filtereffekt der entsprechenden Filter, wie von 23D nahegelegt wird. Filter nahe des kubischen B-Spline (1, 0) können nur eine kleine Energiemenge in ihren negativen Lappen haben (wenn sie überhaupt negative Lappen haben). Der Einzelbildnegativitätswert, der aus der Verwendung solcher Filter resultiert, kann klein oder NuII sein. Unglücklicherweise können diese Filter jedoch Bilder erzeugen, die für die meisten Beobachter nicht annehmbar unscharf sind.
  • Filter in der Nachbarschaft des (0,1)-Filters im Parameterraum haben eine signifikante Energiemenge in ihren negativen Lappen. Die durch solche Filter erzeugten Bilder können eine nicht annehmbare Menge an Bildverdopplung (z.B. an den Grenzen von Objekten) zeigen und die Einzelbildnegativitätswerte können größer sein. 23E stellt den (0,1)-Mitchell-Netravali-Filter dar.
  • Eine andere Umgebung in dem Parameterraum kann Filter ergeben, die zufriedenstellende Bilder erzeugen (d.h. Bilder, die im Durchschnitt den meisten Betrachtern als zufriedenstellend erscheinen). Jedoch kann es selbst innerhalb der zufriedenstellenden Umgebung des Parameterraums Variationen in der Schärfe gegenüber der Unschärfe, der Bildverdopplungsbildung gegenüber der Nichtbildverdopplung usw. geben. Filter entlang der Parameterkurve 2c+b=1 sind im allgemeinen zufriedenstellende Filter.
  • In einigen Ausführungsformen kann der Filter von Abfrage in Pixel in Antwort auf die Größe des Einzelbildnegativitätswerts, der oberhalb des Negativitätsschwellwerts liegt, verändert werden. Beispielsweise kann der gegenwärtige Filter durch einen Filter mit weniger Energie in dem (den) negativen Lappen oder mit überhaupt keinem negativen Lappen ersetzt werden. Nachfolgende Einzelbilder, die mit dem neuen Filter erzeugt werden, sollten Einzelbildnegativitätswerte mit kleinerer Größe haben aufgrund der reduzierten negativen Lappen des neuen Filters. Das Grafiksystem kann Einstellungen an den Abfrage-in-Pixel-Filtern vornehmen, solange die Größe des Einzelbildnegativitätswerts den Schwellwert überschreitet. Darüber hinaus kann das Grafiksystem eine Steuerstrategie anwenden, die die Größe ΔX mißt, mit der die Einzelbildnegativität den Schwellwert überschreitet und einen neuen Filter (oder eine Filtereinstellung) basierend auf der Größe ΔX, einer numerischen Ableitung von ΔX, einer numerischen Integration von ΔX, einer diskreten Zeitfilterung von ΔX oder einer Kombination hieraus bestimmen.
  • In einer Ausführungsform kann das Grafiksystem (z.B. eine Einheit zur Umrechnung von Abfrage in Pixel oder die Negativitätsberechnungseinheit) eine positive Konstante zu der Filterfunktion addieren, um die Filterfunktion in Antwort auf eine Einzelbildnegativität, die den Negativitätsschwellwert überschreitet, nach oben zu verschieben. Die aufwärts verschobene Filterfunktion hat weniger Energie in ihrem (ihren) negativen Lappen. 24 stellt eine abgeschnittene Sinc-Funktion dar, die nach oben verschoben wurde, so daß ihr absolutes Minimum auf der horizontalen Achse ruht und somit die negativen Lappen der abgeschnittenen Sinc-Funktion völlig eliminiert wurden. Die Größe der Aufwärtsverschiebung (oder der Delta-Verschiebung) kann von der Größe abhängen, um die die Einzelbildnegativität den Schwellwert überschreitet. Die Filterfunktion kann im Grafiksystem 112 durch eine Tabelle von Filterkoeffizienten, die durch einen Radius (oder einen Quadratradius) indexiert sind, dargestellt werden. Die Aufwärtsverschiebung in der Filterfunktion kann somit durch Hinzufügen einer positiven Konstante zu den tabellierten Filterkoeffizienten realisiert werden. In einer anderen Ausführungsform kann das Grafiksystem anstelle des Verschiebens der Filterfunktion nach oben den gegenwärtigen Filter durch einen Filter, wie z.B. einen abgeschnittenen Gaußfilter, der keine negativen Lappen hat, ersetzen, und den Originalfilter mit negativen Lappen wiederherstellen bzw. wiedereinsetzen, nachdem die Einzelbildnegativität unter den Schwellwert abgefallen ist. In einer dritten Ausführungsform kann das Grafiksystem den gegenwärtigen Filter in Richtung einer geringer werdenden negativen Lappenenergie innerhalb einer Filterfamilie (wie z.B. die Mitchell-Netravali-Familie) in Antwort auf eine Einzelbildnegativität, die den Schwellwert überschreitet, einstellen.
  • Die negative Lappenenergie eines Filters, so wie sie hier verwendet wird, kann definiert werden als die Negierung der Summe der negativen Koeffizienten des Filters oder äquivalent dazu als die Summe der absoluten Werte der negativen Koeffizienten des Filters.
  • In manchen Ausführungsformen kann das Grafiksystem eine obere und untere Negativitätsschwelle beibehalten und Einstellungen des Abfrage-zu-Pixel-Filters aufrufen, wenn sie sich außerhalb des Intervalls, das von dem unteren und oberen Grenzwert begrenzt wird, verliert. Die Steuereinstellungen sind bestrebt, die Einzelbildnegativität in Richtung des Schwellwerts, der mißachtet wurde, d.h. zurück in das Innere des Intervalls zu treiben.
  • 25 stellt eine Ausführungsfonn des Grafiksystems 112 dar, die derart konfiguriert ist, daß sie dynamische Filtereinstellungen basierend auf den Einzelbildnegativitätswerten implementiert. Das Grafiksystem beinhaltet einen Grafikprozessor 90, einen Abfragepufferspeicher 162, eine oder mehrere Einheiten 170 zur Umrechung von Abfrage in Pixel, eine Negativitätsberechnungseinheit 180 und einen Filterspeicher 185. Der Grafikprozessor 190 kann Abfragen in Antwort auf einen Strom von empfangenen Grafikdaten darstellen. Die dargestellten Abfragen können im Abfragepufferspeicher 162 gespeichert werden. Die eine oder die mehreren Einheiten 170 zur Umrechnung von Abfrage in Pixel können Abfragen von dem Abfragepufferspeicher 120 lesen und die Abfragen filtern, um einen Strom von Ausgangspixeln zu erzeugen. Der Strom von Ausgangspixeln kann zu einer Anzeigevorrichtung geleitet werden für die Präsentation gegenüber einem Benutzer/Betrachter. Zusätzlich kann der Strom von Ausgangspixeln zu der Negativitätsberechnungseinheit 180 geleitet werden für die Berechnung eines Einzelbildnegativitätswerts für das gegenwärtige Einzelbild. In Antwort auf einen Einzelbildnegativitätswert, der in der Größe größer ist als ein Negativitätsschwellwert, kann die Negativitätsberechnungseinheit 180 eine Filtereinstellung implementieren durch Modifizieren der Werte im Filterspeicher 185. Der Filterspeicher 185 kann berechnete Werte der Filterfunktion bei einem festen Satz von Radiuswerten speichern. Alternativ dazu kann der Filterspeicher 185 einen Satz von Parametern speichern, aus dem die Werte der Filterfunktion leicht berechnet werden können.
  • Die Einheiten 170 zur Umrechnung von Abfrage in Pixel können die Filterwerte und/oder die Filterparameter aus dem Filterspeicher 185 lesen und die Filterwerte und/oder Parameter verwenden, um die Abfrage-in-Pixel-Filterung durchzuführen. In einer Ausführungsform hat jede der Einheiten zur Umrechnung von Abfrage in Pixel einen fest zugeordneten Filterspeicher. Die Negativitätsberechnungseinheit 180 kann somit einige oder alle fest zugeordneten Filterspeicher aktualisieren.
  • 26 ist ein Flußdiagramm, das eine Ausführungsform eines Verfahrens für das Einstellen des Filters beschreibt. In Schritt 622 kann eine oder mehrere Einheiten zur Umrechnung von Abfrage in Pixel die Abfragen von dem Abfragepufferspeicher 162 lesen. Jede Einheit zur Umrechnung von Abfrage in Pixel kann einen entsprechenden Strom von Abfragen von dem Abfragepufferspeicher 162 empfangen und kann die Abfragen von dem entsprechenden Strom filtern, um Ausgangspixel zu erzeugen, wie in Schritt 624 angezeigt wird. Der Filter, der von den Einheiten zur Umrechnung von Abfrage in Pixel verwendet wird, kann von den Filterwerten und/oder den Filterparametern, die in dem Filterspeicher 185 abgelegt sind, definiert sein. Die Filterwerte und/oder die Filterparameter für einen voreingestellten Filter mit einem oder mehreren negativen Lappen kann ursprünglich in dem Filterspeicher 185 abgelegt sein. Die Ausgangspixel, die von jeder Einheit zur Umrechnung von Abfrage in Pixel erzeugt werden, können in einen Ausgangspixelstrom integriert sein, wie von 25 vorgeschlagen wird. Der Ausgangspixelstrom wird zu einer oder zu mehreren Anzeigeeinrichtungen übertragen. In manchen Ausführungsformen wird der Betrieb (a) des Lesens von Abfragen von dem Abfragepufferspeicher 162 und (b) des Filterns der Abfragen, um Ausgangspixel zu erzeugen, gleichzeitig durchgeführt. Der Grafikprozessor 90 kann kontinuierlich den Abfragepufferspeicher mit dargestellten Abfragen in Antwort auf einen empfangenen Strom von Grafikdaten (z.B. Dreiecksdaten) aktualisieren. In gleicher Weise können die Einheiten 170 zur Umrechnung von Abfrage in Pixel kontinuierlich Behälter von Abfragedaten entsprechend einem Rasterabfragemuster (oder näherungsweise einem Rasterabtastmuster) von dem Abfragepufferspeicher 162 lesen und können die Abfragedaten filtern, um Ausgangspixel für ein Einzelbild nach dem anderen zu erzeugen.
  • In Schritt 628 kann das Grafiksystem (z.B. die Negativitätsberechnungseinheit 180) den Ausgangspixelstrom empfangen und einen Einzelbildnegativitätswert für das gegenwärtige Einzelbild berechnen. Es sei bemerkt, daß die Berechnung der Einzelbildnegativität initiiert werden kann, sobald die ersten Pixel des gegenwärtigen Einzelbildes verfügbar werden.
  • In Schritt 630 kann das Grafiksystem (z.B. die Negativitätsberechnungseinheit 180) den Einzelbildnegativitätswert des gegenwärtigen Einzelbildes mit dem Schwellwert vergleichen. Wenn der Einzelbildnegativitätswert in der Größe größer als der Schwellwert ist, kann Schritt 632 durchgeführt werden. In Schritt 632 kann das Grafiksystem den Filter einstellen, so daß die Einzelbildnegativitätswerte von zukünftigen Einzelbildern in der Größe reduziert werden können. In manchen Ausführungsformen kann die Größe der Filtereinstellung von der Größe abhängen, um die der negative Einzelbildwert den Schwellwert in der Größe überschreitet. In anderen Ausführungsformen kann das Grafiksystem Information über die Geschwindigkeit der Veränderung des Einzelbildnegativitätswertes und der Vergangenheit des Einzelbildnegativitätswerts (in vorherigen Einzelbildern) aufnehmen, um die Filtereinstellung zu bestimmen.
  • Filtereinstellungen können realisiert werden durch Aktualisieren der Filterwerte und/oder der Parameter, die im Filterspeicher 185 abgelegt sind. Beispielsweise kann die Negativitätsberechnungseinheit 180 Filterwerte für die eingestellten Filter an dem festen Satz von Radien berechnen oder kann die eingestellten Werte der Mitchell-Netravali-Parameter B und C berechnen und diese Filterwerte/Parameter im Filterspeicher 185 ablegen. In einem Satz von Ausführungsformen kann der Filterspeicher 185 vor dem Start des nächsten Einzelbildes aktualisiert werden, so daß die Einheiten 170 zur Umrechnung von Abfrage in Pixel den aktualisierten Filter für die Ausgangspixelberechnungen des nächsten Einzelbildes verwenden können. Nachdem der Filter eingestellt wurde, kann die Berechnung des Einzelbildnegativitätswertes (d.h. Schritt 628) für das nächste Einzelbild initiiert werden, sobald die Ausgangspixeldaten für das nächste Einzelbild verfügbar sind.
  • Falls im Vergleichsschritt 630 bestimmt wird, daß der Einzelbildnegativitätswert in der Größe kleiner als der Schwellwert ist, kann die Filtereinstellung umgangen werden. Somit kann derselbe Filter, der von den Inhalten des Filterspeichers 185 definiert wird, im nächsten Einzelbild verwendet werden.
  • Es sei bemerkt, daß eine große Vielfalt von Filtereinstellungen in Betracht gezogen wurden. Beispielsweise kann die Filterfunktion (a) durch die Addition einer Konstante nach oben verschoben werden, (b) in Richtung von kleiner werdender negativer Lappenenergie in einer parametrisierten Filterfamilie umgewandelt werden, (c) durch einen Filter unterschiedlichen Typs mit wenig oder keinen negativen Lappen ersetzt werden, (d) durch Festklemmen der negativen Koeffizienten in dem negativen Lappen des gegenwärtigen Filters auf Null, (e) durch Abschwächen der negativen Koeffizienten des gegenwärtigen Filters (z.B. durch Bewegen dieser näher an Null) modifiziert werden, oder (f) eine Kombination der vorherigen Operationen sein. Nachdem die Einzelbildnegativität in der Größe auf einen Wert unterhalb des Schwellwertes reduziert wird, können Filter mit einer erhöhten negativen Lappenenergie erneut verwendet werden. Beispielsweise kann ein ursprünglicher voreingestellter Filter wiederhergestellt werden, sobald die Größe der Einzelbildnegativität unter den Schwellwert fällt.
  • In einem Satz von Ausführungsformen ist das Grafiksystem derart konfiguriert, daß es für jede Farbe einen getrennten Filter verwendet. Somit kann eine Rot-Filterfunktion verwendet werden, um die Rot-Komponenten der Abfragen zu filtern, eine Grün-Filterfunktion kann verwendet werden, um die Grün-Komponenten der Abfragen zu filtern, und eine Blau-Filterfunktion kann verwendet werden, um die Blau-Komponenten der Abfragen zu filtern. Wie oben beschrieben wurde, kann das Grafiksystem einen Einzelbildnegativitätswert für jede Farbe berechnen. Die Filterfunktion (und/oder die Unterstützung) für jede Farbe kann basierend auf dem entsprechenden Einzelbildfarbnegativitätswert eingestellt werden. 26 kann als Verfahren für das Einstellen von irgendeinem der Farbfilter in Antwort auf den entsprechenden Einzelbildfarbnegativitätswert interpretiert werden.
  • 27 zeigt eine Ausführungsform eines Computersystems 80, das eine Systemeinheit 82, eine Anzeigeeinrichtung 84, eine Tastatur 86 und ein Zeigegerät 88 aufweist. Der Benutzer 700 betreibt ein Computersystem 80 und betrachtet eine Anzeige 84. In einer Ausführungsform kann das Grafiksystem 112 ursprünglich einen voreingestellten Filter für das Erzeugen von Ausgangspixeln aus den dargestellten Abfragen verwenden. Der Benutzer 700 kann dann den Filter entsprechend seiner/ihrer persönlichen Vorlieben in Bezug auf die Bildqualität einstellen. Der Benutzer kann die Filter dynamisch einstellen durch Manipulieren der Steuerungen 704, die auf der Filtersteuerschnittstelle 702 lokalisiert sind. Die Filtereinstellungen können in Echtzeit implementiert werden und der Benutzer kann somit unmittelbar die Effekte seiner/ihrer Steuereinstellungen auf die angezeigte Bildqualität betrachten.
  • Während die Filtersteuerungsschnittstelle 702 mit drei Steuerungen dargestellt ist, kann in anderen Ausführungsformen die Filtersteuerschnittstelle eine größere oder kleinere Anzahl von Steuerungen aufweisen. Zusätzlich sind die Steuerungen 704 dafür vorgesehen, jede gewünschte Kombination von Steuerungen, wie z.B. Knöpfe, Tasten, Schieber, Joysticks und Trackballs darzustellen. Die Filtersteuerungsschnittstelle 702 kann eine externe physikalische Einrichtung sein, wie von 27 vorgeschlagen. In diesem Fall kann die Filtersteuerschnittstelle 702 mit einem Eingangsanschluß auf dem Grafiksystem 112 oder einem Geräteanschluß an der Systemeinheit 82 verbunden sein.
  • In einer anderen Ausführungsform kann die Filtersteuerungsschnittstelle 702 in der Software implementiert sein, durch die der Benutzer in der Lage sein kann, die Filtereigenschaften zu steuern (z.B. in einem Betriebssystem oder in einem Windows-System oder in einem Anwendungssteuerbedienfeld). Beispielsweise kann die Host-CPU 102 Programmcode ausführen, der eine graphische Filtersteuerungsschnittstelle unterstützt. In dieser Ausführungsform werden die Steuerungen 704 durch graphische Steuerungen realisiert und ein externes (d.h. physikalisches) Filtersteuerungsinterface wird nicht benötigt. In anderen Ausführungsformen kann die Funktionalität der Filtersteuerungsschnittstelle als eine Kombination einer physikalischen Geräteschnittstelle und einer Softwareschnittstelle implementiert sein.
  • Das Grafiksystem kann derart konfiguriert sein, daß es verschiedene Eigenschaften des Abfrage-zu-Pixel-Filters und allgemeiner ausgedrückt Eigenschaften des Filterprozesses, der die Ausgangspixel von den dargestellten Abfragen erzeugt, in Antwort auf Einstellungen der Steuerungen 704 steuert. In einer Ausführungsform ermöglicht eine oder mehrere der Steuerungen 704 dem Benutzer, einen Filtertyp auszuwählen. Beispiele von Filtertypen, die ein Benutzer auswählen kann, beinhalten: einen Boxfilter, einen Zeltfilter, einen zylindrischen Filter, einen Konusfilter, einen abgeschnittenen Gaußfilter, einen Catmull-Rom-Filter (oder allgemein einen Mitchell-Netravali-Filter), einen mit Fenster versehenen Sinc-Filter und einen kubischen Spline.
  • Zusätzlich können eine oder mehrere der Steuerungen derart konfiguriert sein, daß sie die Bewegung des gegenwärtigen Filters entlang (oder innerhalb) einer Ein-, Zwei- oder N-Parameterfamilie von Filtern konfiguriert. Beispielsweise kann der Benutzer 700, wenn die Mitchell-Netravali-Familie als Filtertyp ausgewählt wurde, eine oder mehrere der Steuerungen 704 manipulie ren, um entlang der B- und C-Parameter-Richtung des Mitchell-Netravali-Parameterraums zu bewegen, oder eine der Steuerungen 704 manipulieren, um sich entlang der Kurve 2c+b=1 im Mitchell-Netravali-Parameterraum zu bewegen. In einer Ausführungsform kann ein Bild eines Parameterraums (z.B. das Mitchell-Netravali-Parameterquadrat, wie es durch 23D vorgeschlagen wird) auf dem Schirm in einem Konfigurationsmodus angezeigt werden und der Benutzer kann einen überlagerten Auswahlcursor (oder ein Fadenkreuz) zu einem gewünschten Ort in dem Parameterraum ziehen. Der Ort des Auswahlpunktes bestimmt die Parameter des von den Einheiten zur Umrechnung von Abfrage in Pixel zu verwendenden Filters. Das Grafiksystem kann die Filtereinstellungen implementieren in Antwort auf Verschiebungen des Auswahlpunktes in Echtzeit. Der Benutzer kann somit unmittelbar die Effekte seiner/ihrer Parameterverschiebung auf die Ausgangsvideoqualität beobachten.
  • In einigen Ausführungsformen kann der Benutzer 700 eine willkürliche N-Parameterfamilie definieren durch Auswählen von Filterfunktionen, die die Extrema der Familie in jeder Parameterrichtung realisieren, und/oder durch Bereitstellen von einem oder mehreren funktionalen Ausdrücken, die die Familie definieren.
  • Einige der Steuerungen können einen Benutzer in die Lage versetzen, die Geometrie und die Ausdehnung der Filterunterstützung, d.h. die Form und die Größe des Unterstützungsbereichs um das Filterzentrum, zu steuern. Die Filterunterstützung definiert die Abfragen, die in den Filterprozeß aufgenommen werden. In einer Ausführungsform kann eine Steuerung verwendet werden, um die Form des Unterstützungsbereichs auszuwählen. Beispiele von Formen von Unterstützungsbereichen, die ein Benutzer auswählen kann, sind: ein Dreieck, ein Rechteck, ein Hexagon, ein Kreis usw. Eine andere Steuerung (oder Steuerungen) kann verwendet werden, um die Ausdehnung der Filterunterstützung zu steuern. Eine radiale Unterstützungssteuerung kann verwendet werden, um den Radius der Filterunterstützung einzustellen. Eine horizontale Unterstützungssteuerung kann verwendet werden für die Einstellung der Ausdehnung der Filterunterstützung in der horizontalen Richtung und eine vertikale Unterstützungssteuerung kann verwendet werden für das Einstellen der Ausdehnung der Filterunterstützung in vertikaler Richtung. In den Fällen, in denen die ausgewählten Filter eine kreisförmige Unterstützung haben, kann beispielsweise die horizontale Steuerung verwendet werden, um die Filterunterstützung in der horizontalen Richtung zu expandieren oder zusammenzuziehen, und die vertikale Steuerung kann verwendet werden, um die Filterunterstützung in vertikaler Richtung zu expandieren oder zusammenzuziehen, wodurch der Benutzer in die Lage versetzt wird, die Filterunterstützung von einem Kreis in eine Ellipse zu verändern, die länglicher in der vertikalen oder der horizontalen Richtung ist. In ähnlicher Weise kann ein Benutzer in der Lage sein, eine rechteckige Unterstützung in der vertikalen oder der horizontalen Richtung zu erweitern oder zusammenzuziehen.
  • Andere Steuerungen können verwendet werden, um die Filterfunktion nach oben oder unten zu bewegen und/oder um die Filterfunktion in radialer, horizontaler und/oder vertikaler Richtung des Schirmraums zu erweitern oder zusammenzuziehen. Es sei bemerkt, daß die Filterfunktion im Filterspeicher 185 als eine Tabelle von Funktionswerten dargestellt werden kann, die bei einem Satz von Radien, der das Intervall von Null bis zu einem oberen Limit überspannt, evaluiert werden. Die Einheiten zur Umrechnung von Abfrage in Pixel können die Filterfunktion für willkürliche Radien basierend auf der Interpolation der tabellierten Werte bestimmen. Ein Verfahren, eine Skalierung (d.h. eine Expansion oder Kontraktion) der Filterfunktion in radialer Richtung zu erzielen, ist es, den Abfrageradius mit einer Konstante zu multiplizieren, bevor auf die Filterfunktionstabelle zugegriffen wird. In einer anderen Ausführungsform kann die Funktionstabelle mit Funktionswerten an x-y-Positionen, die das Filterzentrum umgeben, bevölkert sein. In diesem Fall kann eine Einheit zur Umrechnung von Abfrage in Pixel die x- und y-Verschiebung einer Abfrage in Bezug auf das Filterzentrum berechnen, und diese Verschiebungen bei dem Zugriff der Funktionstabelle benutzen. Die Skalierung der Filterfunktion in der x- und/oder y-Richtung kann somit durch Multiplizieren der x-Verschiebung und/oder der y-Verschiebung um entsprechende Konstanten vor dem Zugriff auf die Funktionstabelle erzielt werden. Die Konstanten werden durch die Benutzereingaben gesteuert.
  • In einer anderen Ausführungsform kann der Benutzer in der Lage sein, den Filter auf eine Regionsbasis zu verändern (z.B. den Filtertyp, die Filterfunktion, die Filterunterstützungsgeometrie und die Filterunterstützungsausdehnung). Beispielsweise kann eine Hintergrundszene geeigneter dargestellt werden unter Verwendung eines weicheren Filters als der Vordergrund der Szene. Die Filtersteuerungsschnittstelle 702 kann es dem Benutzer erlauben, zunächst einen Bereich auf der Anzeige zu spezifizieren und dann die Filtereinstellungen, die für diesen Bereich spezifisch sind, durchzuführen.
  • Unterschiedliche Benutzer können unterschiedliche Vorlieben betreffend die Qualität eines Bildes haben. Verschiedene Benutzer können beispielsweise ein Bild bevorzugen, das schärfer ist, während andere Benutzer ein Bild bevorzugen können, das weicher (d.h. geglätteter) ist. Somit kann eine der Steuerungen 704 eine Schärfe-/Glattheitssteuerung sein, wodurch der Benutzer 700 die Menge der Glättung, die in der Abfragefilterung durchgeführt wird, einstellen kann. Mit anderen Worten kann die Schärfe-/Glättesteuerung das Morphing bzw. das Verwandeln des Abfrage-in-Pixel-Filters in Richtung einer erhöhten Glattheit oder einer erhöhten Schärfe innerhalb einer parametrisierten Familie von Filtern induzieren.
  • Weiterhin können unterschiedliche Anzeigen unterschiedliche Antworten auf dieselben Pixelwerte haben. Beispielsweise hat ein CRT typischerweise eine Gaußsche Intensitätsverteilung um jedes Pixel, während ein LCD typischerweise eine rechteckförmige Intensitätsverteilung mit einem scharten Intensitätsabfall um jedes Pixel zeigt. Solche Unterschiede können insbesondere offensichtlich werden, wenn unterschiedliche Typen von Anzeigen (oder Projektoren) in einem Mehrfachanzeigesystem verwendet werden. In manchen Ausführungsformen kann das Grafiksystem 112 einen anderen Filter für jede Anzeige verwenden und die Filtersteuerungsschnittstelle 702 kann derart konfiguriert sein, daß sie die Filtersteuerungseinstellungen je Anzeige (und/oder je Projektor) erlaubt. Durch Manipulation der Steuerung 704 kann der Benutzer 700 in der Lage sein, die Erscheinung zwischen mehreren Anzeigeeinrichtungen abzugleichen. Beispielsweise kann der Benutzer 700 für eine LCD-Anzeige eine größere Glättung und eine geringere Glättung für eine CRT-Anzeige spezifizieren, so daß das angezeigte Video auf jeder Anzeige konsistenter aussehen kann.
  • Alternativ dazu kann das Grafiksystem 112 automatisch die Mehrfachanzeigebildabstimmung anwenden durch Auswählen geeigneter Filter für jede Anzeige basierend auf dem Wissen der charakteristischen Merkmale jeder Anzeige. Der Benutzer (oder das Systemkonfigurationspersonal) kann die charakterisierende Information für jede Anzeige, wie z.B. den Anzeigetyp, den Hersteller und/oder die Modellnummer, eingeben.
  • Weiterhin könnte der Benutzer 700 mit der nominellen Erscheinung des Videoausgangs von einer gegebenen Anzeige nicht zufrieden sein und könnte somit daran interessiert sein, die die unerwünschte Anzeige betreffenden Effekte auf dem Videoausgang von einer gegebenen Anzeige zu kompensieren, oder daran interessiert sein, daß der Videoausgang einer gegebenen Anzeige die typische Erscheinung einer anderen Anzeige (oder Anzeigetyp) emuliert (oder dieser stärker ähnelt). Somit kann die Filtersteuerungsschnittstelle 702 eine oder mehrere Steuerungen beinhalten, um die Anzeigekompensation und/oder die Anzeigeemulation durchzuführen.
  • In manchen Ausführungsformen kann die Host-CPU 102 eine graphische Benutzeroberfläche (GUI) unterstützen, mit der der Benutzer Anzeigefenster auf einem oder mehreren Schirmen öffnen, schließen und manipulieren kann. Der Grafikprozessor 90 kann unabhängige Ströme von Grafikdaten für jedes Fenster empfangen und kann Abfragen für jedes Fenster im Abfragepufferspeicher 162 darstellen. Jede Abfrage, die in den Abfragepufferspeicher 162 geschrieben wird, kann mit einer Fenster-ID des Fensters versehen werden, zu dem sie gehört. Die Einheiten 170 zur Umrechnung von Abfrage in Pixel können auf den Abfragen jedes Fensters unter Verwendung eines unterschiedlichen Filters arbeiten. Somit kann der Filterspeicher 185 genügend Speicher haben, um mehrere Filterdateneinträge zu unterstützen, wobei ein Eintrag für jedes aktive Fenster vorgesehen ist. Jeder Filterdateneintrag spezifiziert die Filterwerte und/oder die Filterparameter, die den Filter, der auf dem entsprechenden Fenster angewendet werden soll, spezifizieren. Zusätzlich zu den Steuereingängen, die einen Filter oder eine Filtereinstellung spezifizieren, kann somit die Filtersteuereinheit 187 einen Fensterindikator (z.B. eine Fenster-ID), die das Fenster definiert, zu dem die Steuereingänge gehören, empfangen. Die Filtersteuerungsschnittstelle 702 kann Teil der graphischen Benutzeroberfläche (GUI) sein.
  • 28 stellt eine Ausführungsform des Grafiksystems 112 dar, die derart konfiguriert ist, daß sie dynamische Filtereinstellungen in Antwort auf Steuereingaben, die von dem Benutzer über das Filtersteuerinterface 702 bereitgestellt werden, implementiert. Das Grafiksystem 112 beinhaltet den Grafikprozessor 90, den Abfragepufferspeicher 162, eine oder mehrere Einheiten 170 zur Umrechnung von Abfrage in Pixel, eine Filtersteuereinheit 187 und einen Filterspeicher 185. Der Grafikprozessor 90 kann in Antwort auf einen Strom von empfangenen Grafikdaten Abfragen darstellen. Die dargestellten Abfragen können im Abfragepufferspeicher 162 gespeichert sein. Jede der Einheiten 170 zur Umrechnung von Abfrage in Pixel kann Abfragen von dem Abfragepufferspeicher 162 lesen und die empfangenen Abfragen filtern, um Ausgangspixel zu erzeugen. Die Ausgangspixel, die von jeder Einheit zur Umrechnung von Abfrage in Pixel erzeugt wurden, können in einen Ausgangspixelstrom integriert sein und zu einer Anzeigeeinrichtung geleitet werden für die Darstellung für einen Benutzer. Die Filtersteuereinheit 187 empfängt Benutzersteuereingaben von dem Filter steuerinterface 702. In dem Fall, in dem das Filtersteuerinterface 702 eine graphische Oberfläche ist, kann die Filtersteuereinheit 187 Benutzersteuereingaben von dem Betriebssystem (das auf dem Host-Computer 102 ausgeführt wird) über den Systembus 104 empfangen.
  • Die Filtersteuereinheit 187 kann die Filtereinstellungen, die mit den Benutzersteuereingaben konsistent sind, implementieren. Die Filtersteuereinheit 187 kann jegliche notwendige Berechnungen durchführen, um einen eingestellten Satz von Filterwerten und/oder Filterparametern in Antwort auf die Steuereingaben des Benutzers zu bestimmen und kann den eingestellten Satz von Filterwerten und/oder Filterparametern im Filterspeicher 185 speichern. Der Satz von Filterwerten und/oder Filterparametern, die im Filterspeicher 185 abgelegt sind, bestimmen den Filter (d.h. die Filterfunktion und/oder die Filterunterstützung), die von den Einheiten zur Umrechnung von Abfrage in Pixel verwendet werden. Mit anderen Worten können die Einheiten zur Umrechnung von Abfrage in Pixel die Filterwerte und/oder die Filterparameter von dem Filterspeicher 185 lesen, um die Geometrie und die Ausdehnung der Filterunterstützung zu bestimmen, und um das Filtergewicht für jede Abfrage, die in die Filterunterstützung fällt, zu berechnen. Beispielsweise kann der Filterspeicher 185 Werte der Filterfunktion, die auf einem Satz von Radien evaluiert wird, der das Intervall von Null bis zum maximalen Filterradius überspannt, speichern. In einer Ausführungsform hat jede der Einheiten zur Umrechnung von Abfrage in Pixel einen eigens zugewiesenen Filterspeicher. Die Filtersteuereinheit 187 kann einige oder alle der eigens zugewiesenen Filterspeicher in Antwort auf die Benutzersteuereingaben aktualisieren.
  • 29 zeigt ein Flußdiagramm, das eine Ausführungsform eines Verfahrens zeigt für das Einstellen der Filter in Antwort auf eine Benutzersteuereingabe(n). In Schritt 754 kann die eine oder die mehreren Einheiten 170 zur Umrechnung von Abfrage in Pixel Abfragen von dem Abfragepufferspeicher 162 lesen. Jede Einheit zur Umrechnung von Abfrage in Pixel kann einen entsprechenden Strom von Abfragen von dem Abfragepufferspeicher 162 empfangen und kann die Abfragen des entsprechenden Stroms filtern, um Ausgangspixel zu erzeugen, wie in Schritt 754 angezeigt wird. Die Filter, die von den Einheiten zur Umrechnung von Abfrage in Pixel verwendet werden, können durch die Filterwerte und/oder die Filterparameter, die im Filterspeicher 185 gespeichert sind, definiert sein. Die Filterwerte und/oder die Filterparameter für einen voreingestellten Filter können ursprünglich im Filterspeicher 185 gespeichert sein. Die Ausgangspixel, die von jeder Einheit zur Umrechnung von Abfrage in Pixel erzeugt werden, können in einem Ausgangspixelstrom integriert sein, wie durch 28 gezeigt wird. Der Ausgangspixelstrom wird zu einer oder mehreren Anzeigeeinrichtungen übertragen. In manchen Ausführungsformen werden die Funktionen des (a) Lesens von Abfragen aus dem Abfragepufferspeicher 162 und (b) des Filterns der Abfragen, um die Ausgangspixel zu erzeugen, gleichzeitig durchgeführt. Der Grafikprozessor 90 kann kontinuierlich den Abfragepufferspeicher 162 mit dargestellten Abfragen in Antwort auf einen empfangenen Strom von Grafikdaten (z.B. Dreiecksdaten) aktualisieren. In gleicher Weise können die Einheiten 170 zur Umrechnung von Abfrage in Pixel kontinuierlich Behälter von Abfragedaten entsprechend einem Rasterabtastmuster (oder einem gestörten Rasterabtastmuster) von dem Abfragepufferspeicher 162 lesen und können die Abfragedaten filtern, um Ausgangspixel zu erzeugen, und zwar für ein Einzelbild nach dem anderen.
  • In Schritt 760 kann die Filtersteuereinheit 187 auf Steuereingaben warten, die von dem Benutzer 700 über die Filtersteuerschnittstelle 702 ausgeübt werden. In Antwort auf den Empfang einer Benutzersteuereingabe(n) kann die Filtersteuereinheit 187 Schritt 762 durchführen. In Schritt 762 kann die Filtersteuereinheit 187 Filterwerte und/oder Filterparameter für einen eingestellten Filter konsistent mit den Steuereingaben des Benutzers berechnen und diese Werte/Parameter im Filterspeicher 185 speichern. Nachdem der Filterspeicher 185 aktualisiert wurde, kann die Filtersteuereinheit 762 in den Wartezustand 760 zurückkehren und die Einheiten 170 zur Umrechnung von Abfrage in Pixel können Pixel in aufeinanderfolgenden Einzelbildern mit dem eingestellten Filter filtern.
  • In manchen Ausführungsformen kann die Filtersteuerschnittstelle 702 für eine Mehrfachbenutzerumgebung konfiguriert sein. Die Filtersteuerschnittstelle 702 oder die Host-CPU 707 kann somit die Filterkonfigurationsdaten speichern, die jeder Benutzer in einer Grafiksitzung entwickelt, und kann die Filterkonfigurationsdaten wiederherstellen, wenn der Benutzer für eine zukünftige Grafiksitzung zurückkehrt. Beispielsweise kann in einer Ausführungsform der Benutzer in einem Anmeldeverfahren Informationen eingeben, die ihn selbst/sie selbst gegenüber dem System identifizieren, z.B. ein Benutzername, ein Paßwort und/oder eine ID-Nummer. In einer anderen Ausführungsform kann der Benutzer einfach seine/ihre ID-Nummer unter Verwendung einer ID-Auswahlsteuerung der Filtersteuerschnittstelle 702 auswählen. Die Host-CPU 102 oder das Grafiksystem 112 kann dann die Filterkonfigurationsdaten des Benutzers vom Speicher wiederherstellen.
  • In einem Satz von Ausführungsformen ist das Grafiksystem derart konfiguriert, daß es für jede Farbe einen getrennten Filter verwendet. Mit anderen Worten kann ein Rot-Filter verwendet werden, um die Rot-Komponenten der Abfragen zu filtern, ein Grün-Filter kann verwendet werden, um die Grün-Komponenten der Abfragen zu filtern, und ein Blau-Filter kann verwendet werden, um die Blau-Komponenten der Abfragen zu filtern. Die Filtersteuerungsschnittstelle 702 und das Grafiksystem 112 können somit dem Benutzer erlauben, jeden der Filter pro Farbe zu verändern/einzustellen. Der Benutzer kann beispielsweise eine Farbe wählen, Parameter der Filterfunktion und/oder die Filterunterstützung des entsprechenden Farbfilters einstellen, eine andere Farbe wählen usw.
  • In einer anderen Ausführungsform kann das Grafiksystem derart betreibbar sein, daß es den Abfrage-in-Pixel-Filter (z.B. die Filterfunktion und/oder die Filterunterstützung) in Antwort auf Messungen, die von einem anzeigeüberwachenden System, das mit dem Grafiksystem verbunden ist, erhalten werden, dynamisch einstellen. Ein Beispiel eines anzeigeüberwachenden Systems ist die Kamera 765, die in 30 gezeigt ist. Die Kamera 765 ist auf die Anzeige 84 (oder einen Abschnitt hiervon) gerichtet, um die Abfolge von Einzelbildern, die auf der Anzeige 84 dargestellt werden, aufzunehmen. Die Kamera 765 kann in einer Ausführungsform eine Digitalkamera sein, die in der Lage ist, die angezeigten Einzelbilder in digitalem Format aufzunehmen und zu dem Grafiksystem auszugeben. Die Kamera kann beispielsweise derart konfiguriert sein, daß sie eine Mehrzahl von aufgenommenen Pixeln ausgibt. In einer Ausführungsform, in der die Kamera 765 eine analoge Kame ra ist, kann ein Analog-Digital-Wandler (ADC) verwendet werden, um das Ausgangssignal der Kamera in ein digitales Format umzuwandeln, um die aufgenommenen Pixel zu erhalten. In einer anderen Ausführungsform kann das Grafiksystem die Umwandlung des Ausgangssignals der Kamera von analog in digital vornehmen. Die Kamera 765 nimmt vorzugsweise Bilder mit einer Auflösung auf, die gleich oder größer als die Auflösung der Anzeige 84 ist. Weiterhin kann die Kamera 765 Bilder mit einer Einzelbild/Sekunde-Rate aufnehmen, die gleich der Wiederholrate der Anzeige 84 ist. In einer anderen Ausführungsform kann die Wiederholrate der Anzeige 84 ein ganzzahliges Vielfaches der Einzelbild/Sekunde-Rate sein, mit der die Kamera 765 in der Lage sein kann, Bilder aufzunehmen. In einer anderen Ausführungsform kann die Kamera 765 Bilder mit einer Einzelbild/Sekunde-Rate aufnehmen, die ein ganzzahliges Vielfaches der Bildwiederholrate der Anzeige 84 ist. In einer Ausführungsform empfängt die Kamera 765 Synchronisationsinformation von dem Grafiksystem, um mit den auf der Anzeige 84 angezeigten Bildern synchronisiert zu bleiben.
  • Das Bild, das von der Kamera 765 aufgenommen wird, enthält Information darüber, wie der Abfrage-zu-Pixel-Filter sich auf das angezeigte Bild ausgewirkt hat. Zusätzlich enthält das aufgenommene Bild Informationen darüber, wie die Anzeige 84 sich auf die Farbintensitätsverteilung der angezeigten Ausgangspixel ausgewirkt hat. Wie vorher erwähnt wurde, zeigt ein LCD jedes Pixel mit einer relativen quadratischen Verteilung in der Farbintensität an, während CRT-Anzeigen jedes Pixel mit einer Gaußschen Verteilung anzeigen. Daher kann ein solches Anzeigeüberwachungssystem verwendet werden, um die Abfrage-zu-Pixel-Filter dynamisch einzustellen (z.B. die Filterfunktion und/oder die Filterunterstützung), so daß ein Bild auf verschiedenen Anzeigetypen gleich oder nahezu gleich erscheint.
  • Das Grafiksystem kann eine Abfolge von aufgenommenen Einzelbildern in der Form von aufgenommenen Pixeln von der Anzeigeüberwachungseinrichtung 765 erhalten. Das Grafiksystem kann einen Bildschärfenwert für jedes der aufgenommenen Einzelbilder berechnen. Das Grafiksystem kann ebenso einen Bildschärfewert für jedes zweite Einzelbild, jedes dritte Einzelbild usw. berechnen, in Fällen, wo die Rechenleistung begrenzt ist. Die Einheit zur Umrechnung von Abfrage in Pixel kann den Bildschärfewert intern berechnen oder die Berechnung des Bildschärfewertes kann durch eine Bildschärfeberechnungseinheit oder von der Host-CPU berechnet werden.
  • In einer Ausführungsform kann das Grafiksystem derart konfiguriert sein, daß es ein Testbild (oder eine Reihe von Testbildern) zu der Anzeige 84 ausgibt. Das Testbild kann beispielsweise einen vorbestimmten Bildschärfewert haben, um das "Tuning" bzw. Einstellen des Abfrage-zu-Pixel-Filters für eine gegebene Anzeige zu unterstützen. Das Grafiksystem kann einen Vergleich der Parameter der aufgenommenen Bilder mit den Parametern des angezeigten Testbilds durchführen und dann die Parameter des Abfrage-zu-Pixel-Filters entsprechend einstellen.
  • Das Testbild kann eine Umgebung haben, in der alle Anzeigepixel ausgeschaltet sind außer einem einzelnen zentralen Pixel, das eingeschaltet ist. Die Kamera kann die Umgebung mit hoher Auflösung aufnehmen. Die aufgenommenen Pixel können daher die Intensitätsverteilung der Anzeige für das einzelne Pixel charakterisieren. Ein Bildschärfewert kann aus einer Analyse der aufgenommenen Pixel berechnet werden.
  • In einer anderen Ausführungsform kann das Grafiksystem den Bildschärfewert für jedes Einzelbild berechnen durch Untersuchen des Ortsfrequenzspektrums (z.B. eine FFT oder eine DCT) des aufgenommenen Bildes. Die Energiemenge in dem Frequenzspektrum bei hohen Ortsfrequenzen ist ein Indikator der Bildschärfe eines angezeigten Bildes.
  • Das Grafiksystem ist weiterhin derart konfiguriert, daß es den Bildschärfewert mit einem gewünschten Bildschärfewert vergleicht. In Antwort auf den Bildschärfewert, der oberhalb oder unterhalb des gewünschten Wertes ist, kann das Grafiksystem den Abfrage-in-Pixel-Filter dynamisch einstellen (z.B. die Filterfunktion und/oder die Filterunterstützung), um den Bildschärfewert innerhalb eines bestimmten Prozentbereichs des gewünschten Wertes zu halten. Beispielsweise kann das Grafiksystem den Filter einstellen durch (a) Wählen eines unterschiedlichen Filtertyps, (b) Einstellen der Parameter des Filters innerhalb einer parametrisierten Filterfamilie (wie z.B. die Mitchell-Netravali-Familie), (c) Expandieren oder Zusammenziehen der Breite der Filterfunktion entlang der radialen Richtung, der x-Richtung und/oder der y-Richtung oder (d) Erhöhen oder Verringern der Koeffizienten der Filterfunktion. Zusätzlich kann das Grafiksystem die Filterunterstützung verändern, z.B. durch Erweitern oder Zusammenziehen der Filterunterstützung in der x-Richtung, der y-Richtung und/oder der Radialrichtung. Der gewünschte Bildschärfewert kann ein benutzereinstellbarer Parameter sein.
  • In einer anderen Ausführungsform kann das Grafiksystem derart konfiguriert sein, daß es einen Ähnlichkeitswert durch Vergleich der Gruppe von aufgenommenen Pixeln, die von der anzeigeüberwachenden Einrichtung bereitgestellt werden, mit den Ausgangspixeln, die von den Einheiten zur Umrechnung von Abfrage in Pixel erzeugt werden, berechnet werden. Der Ähnlichkeitswert kann berechnet werden durch die Einheiten zur Umrechnung von Abfrage in Pixel oder durch eine ähnliche Berechnungseinheit. Der Ähnlichkeitswert kann beispielsweise von 0 bis 1 reichen, wobei der Ähnlichkeitswert 0 ist für zwei völlig verschiedene Bilder und 1 für zwei identische Bilder. Existierende Bildvergleichsalgorithmen können verwendet werden, um die zwei Bilder zu vergleichen und den Ähnlichkeitswert zu berechnen.
  • Das Grafiksystem kann weiterhin so konfiguriert sein, daß es den Ähnlichkeitswert mit einem minimalen Ähnlichkeitswert vergleicht. In Antwort auf einen Ähnlichkeitswert, der unterhalb des minimalen Ähnlichkeitswerts liegt, kann das Grafiksystem den Abfrage-zu-Pixel-Filter dynamisch verändern oder einstellen (z.B. die Parameter der Filterfunktion und/oder die Filterunterstützung), um den Ähnlichkeitswert oberhalb des minimalen Wertes zu halten. Beispielsweise kann das Grafiksystem die Filterparameter innerhalb einer parametrisierten Filterfamilie in einer Richtung einstellen, von der bekannt ist, daß sie eine erhöhte Ähnlichkeit oder eine erhöhte Konstruktionsgenauigkeit induziert. Zusätzlich kann das Grafiksystem die Filterfunktion und/oder die Filterunterstützung in der radialen, horizontalen und/oder vertikalen Schirmraumrichtung erweitern oder zusammenziehen. In einer Ausführungsform kann das Grafiksystem den gegenwärtigen Filter mit einem anderen Filtertyp ersetzen, von dem bekannt ist, daß er eine erhöhte Ähnlichkeit induziert. Der minimale Ähnlichkeitswert kann von dem Benutzer/Betrachter einstellbar sein.
  • 31 zeigt ein Flußdiagramm, das ein Verfahren für das Einstellen der Filter entsprechend einer Ausführungsform zeigt. In Schritt 772 kann die eine oder die mehreren Einheiten 170 zur Umrechnung von Abfrage in Pixel Abfragen für ein gegenwärtiges Einzelbild von dem Abfragepufferspeicher 162 lesen. Die Einheiten zur Umrechnung von Abfrage in Pixel können in Schritt 774 auf den Abfragen mit dem Filter arbeiten, der von dem Filterspeicher 185 bestimmt wird, um eine Mehrzahl von Ausgangspixeln für das gegenwärtige Einzelbild zu erzeugen. Die Schritte 772 und 774 können gleichzeitig auf eine Pipeline-Art und Weise arbeiten, d.h. die Einheiten zur Umrechnung von Abfrage in Pixel können kontinuierlich Abfragen für ein Einzelbild nach dem anderen lesen und filtern. In Schritt 776 empfängt eine Anzeigeeinrichtung die Ausgangspixel und zeigt sie an. In Schritt 778 nimmt eine anzeigeüberwachende Einrichtung das von der Anzeigeeinrichtung angezeigte Bild auf.
  • In Schritt 780 kann die Ähnlichkeitsberechnungseinheit innerhalb des Grafiksystems einen Ähnlichkeitswert für das aufgenommene Bild in Bezug auf die Ausgangspixel des gegenwärtigen Einzelbildes berechnen. In Schritt 782 bestimmt das Grafiksystem, ob der Ähnlichkeitswert größer als ein minimaler Ähnlichkeitswert ist. Wenn der Ähnlichkeitswert größer als der minimale Ähnlichkeitswert ist, bleibt der Filter für das Filtern nachfolgender Einzelbilder unverändert. Wenn der Ähnlichkeitswert geringer als der minimale Ähnlichkeitswert ist, stellt das Grafiksystem in Schritt 790 die Abfrage-zu-Pixel-Filter ein (z.B. die Filterfunktion und/oder die Filterunterstützung), um die Ähnlichkeit eines nachfolgend aufgenommenen Bildes in Bezug auf das entsprechende Einzelbild der Ausgangspixel zu erhöhen. Nach der Einstellung des Abfrage-zu-Pixel-Filters (oder möglicherweise während der Einstellung des Abfrage-zu-Pixel-Filters) kann Schritt 778 für das als nächstes anzuzeigende Einzelbild initiiert werden.
  • Obgleich die obigen Ausführungsformen in beachtlichem 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 so interpretiert werden, daß sie all solche Variationen und Modifikationen umfassen. Es sei bemerkt, daß die hier verwendeten Überschriften nur aus organisatorischen Gründen verwendet werden und nicht dafür gedacht sind, die hier bereitgestellte Beschreibung oder die angefügten Ansprüche zu begrenzen.

Claims (18)

  1. Verfahren für die Erzeugung von Pixeln für eine Anzeigevorrichtung, wobei das Verfahren aufweist: a) Empfangen von Graphikdaten, b) Darstellen einer ersten Mehrzahl von Abfragen in Antwort auf die Graphikdaten, c) Filtern der ersten Mehrzahl von Abfragen unter Verwendung eines ersten Filters, um einen ersten Satz von Ausgangspixeln zu erzeugen, d) Übertragen des ersten Satzes von Ausgangspixeln zu der Anzeigevorrichtung, e) dynamisches Einstellen des ersten Filters in Antwort auf eine Benutzereingabe.
  2. Verfahren nach Anspruch 1, wobei das dynamische Einstellen des ersten Filters in Antwort auf die Eingabe eines Benutzers einen zweiten Filter erzeugt.
  3. Verfahren nach Anspruch 2, das weiterhin aufweist: f) Wiederholen von (a)-(e) mit dem zweiten Filter, wobei das dynamische Einstellen des ersten Filters das Einstellen von einem oder mehreren Unterstützungsparametern in Antwort auf die Eingabe des Benutzers beinhaltet, wobei die Unterstützungsparameter eine Unterstützungsregion des eingestellten ersten Filters bestimmen.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das dynamische Einstellen des ersten Filters das Einstellen von einem oder mehreren Unterstützungsparametern in Antwort auf die Eingabe des Benutzers aufweist, wobei die Unterstützungsparameter einen Unterstützungsbereich des eingestellten ersten Filters bestimmen.
  5. Verfahren nach einem der vorherigen Ansprüche, wobei der eine oder die mehreren Unterstützungsparameter eine Ausdehnung des Unterstützungsbereiches des eingestellten ersten Filters bestimmen.
  6. Verfahren nach einem der vorherigen Ansprüche, wobei der eine oder die mehreren Unterstützungsparameter eine Geometrie für die Unterstützungsregion des eingestellten ersten Filters bestimmen.
  7. Verfahren nach einem der vorherigen Ansprüche, wobei das dynamische Einstellen des ersten Filters das Verändern von einem oder mehreren Filterparametern des ersten Filters in einem Parameterraum in Antwort auf die Eingabe des Benutzers aufweist, wobei der Parameterraum einer parametrisierten Familie von Filtern entspricht.
  8. Verfahren nach einem der vorherigen Ansprüche, wobei das dynamische Einstellen des ersten Filters das Empfangen der Eingabe des Benutzers aufweist, die eine Wahl eines anderen Filtertyps durch den Benutzer anzeigt, und Verändern des ersten Filters auf den anderen Filtertyp.
  9. Verfahren nach einem der vorherigen Ansprüche, wobei das dynamische Einstellen des ersten Filters das Skalieren des ersten Filters entlang einer radialen Ausdehnung in Antwort auf die Eingabe des Benutzers aufweist.
  10. Verfahren nach einem der vorherigen Ansprüche, wobei das dynamische Einstellen des ersten Filters das Skalieren des ersten Filters entlang einer Schirmraumachse in Antwort auf die Eingabe eines Benutzers aufweist, wobei die Schirmraumachse aus der Gruppe, die die horizontale Schirmraumachse und die vertikale Schirmraumachse aufweist, ausgewählt wird.
  11. Verfahren nach einem der vorherigen Ansprüche, das weiterhin aufweist das Empfangen der Eingabe des Benutzers von einer Filtersteuerschnittstelle, wobei die Filtersteuerschnittstelle als ein graphisches Benutzerinterface implementiert wird.
  12. Verfahren nach einem der vorherigen Ansprüche, wobei das dynamische Einstellen des Filters weiterhin aufweist das dynamische Einstellen des Filters auf einer Pro-Anzeigeregion-Basis.
  13. Verfahren nach einem der vorherigen Ansprüche, das weiterhin aufweist das Erfassen eines Bildes des Anzeigebildes unter Verwendung einer Anzeigeüberwachungsvorrichtung, wobei das erfaßte Bild eine Mehrzahl von erfaßten Pixeln aufweist, wobei das dynamische Einstellen des Filters durchgeführt wird in Antwort auf die Mehrzahl von erfaßten Pixeln und der Eingabe des Benutzers.
  14. Graphiksystem, das aufweist: eine Darstellungseinheit, die betreibbar ist, um Graphikdaten zu empfangen und eine erste Mehrzahl von Abfragen in Antwort auf die Graphikdaten dazustellen, einen Abfragepufferspeicher, der mit der Darstellungseinheit verbunden ist und derart konfiguriert ist, daß er die erste Mehrzahl von Abfragen ablegt, eine Einheit zur Umrechnung von Abfrage in Pixel, die mit dem Abfragepufferspeicher gekoppelt ist, wobei die Einheit zur Umrechnung von Abfrage in Pixel derart betreibbar ist, daß sie die erste Mehrzahl von Abfragen filtert unter Verwendung eines ersten Filters, um einen ersten Satz von Ausgangspixel zu erzeugen, und den ersten Satz von Ausgangspixeln zu einer Anzeigevorrichtung überträgt und eine Filtersteuereinheit, die derart konfiguriert ist, daß sie das erste Filter dynamisch in Antwort auf die Eingabe eines Benutzers einstellt.
  15. Graphiksystem nach Anspruch 14, wobei die Filtersteuereinheit derart konfiguriert ist, daß sie dynamisch ein oder mehrere Unterstützungsparameter einstellt in Antwort auf die Eingabe des Benutzers, wobei die Unterstützungsparameter einen Unterstützungsbereich des eingestellten ersten Filters bestimmen.
  16. Graphiksystem nach Anspruch 14 oder Anspruch 15, wobei die Filtersteuereinheit derart konfiguriert ist, daß sie das erste Filter dynamisch einstellt durch: Empfangen des Benutzerinputs, der eine Wahl eines anderen Filtertyps des Benutzers anzeigt und Verändern des ersten Filters auf den anderen Filtertyp.
  17. Graphiksystem nach einem der Ansprüche 14 bis 16, wobei die Filtersteuereinheit derart konfiguriert ist, daß sie das erste Filter entlang einer radialen Ausdehnung in Antwort auf die Eingabe des Benutzers dynamisch skaliert.
  18. Graphiksystem nach einem der Ansprüche 14 bis 17, wobei die Filtersteuereinheit derart konfiguriert ist, daß sie das erste Filter auf einer Pro-Anzeigeregion-Basis dynamisch einstellt.
DE60100452T 2000-01-11 2001-01-11 Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang Expired - Fee Related DE60100452T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17538400P 2000-01-11 2000-01-11
US175384P 2000-01-11
US751665 2000-12-29
US09/751,665 US6850236B2 (en) 1998-02-17 2000-12-29 Dynamically adjusting a sample-to-pixel filter in response to user input and/or sensor input
PCT/US2001/001163 WO2001052192A1 (en) 2000-01-11 2001-01-11 Dynamically adjusting a sample-to-pixel filter in response to user input and/or sensor input

Publications (2)

Publication Number Publication Date
DE60100452D1 DE60100452D1 (de) 2003-08-14
DE60100452T2 true DE60100452T2 (de) 2004-05-27

Family

ID=26871156

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60100452T Expired - Fee Related DE60100452T2 (de) 2000-01-11 2001-01-11 Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang

Country Status (6)

Country Link
US (1) US6850236B2 (de)
EP (1) EP1247253B1 (de)
AT (1) ATE244911T1 (de)
AU (1) AU2001229445A1 (de)
DE (1) DE60100452T2 (de)
WO (1) WO2001052192A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134091B2 (en) * 1999-02-01 2006-11-07 Microsoft Corporation Quality of displayed images with user preference information
US7302111B2 (en) * 2001-09-12 2007-11-27 Micronic Laser Systems A.B. Graphics engine for high precision lithography
JP2005506611A (ja) 2001-10-10 2005-03-03 ソニー・コンピュータ・エンタテインメント・アメリカ・インク 環境マッピングシステムおよび方法
US8369607B2 (en) * 2002-03-27 2013-02-05 Sanyo Electric Co., Ltd. Method and apparatus for processing three-dimensional 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
US7010169B2 (en) * 2002-04-15 2006-03-07 Sbc Technology Resources, Inc. Multi-point predictive foveation for bandwidth reduction of moving images
US6917715B2 (en) * 2002-04-19 2005-07-12 International Business Machines Corporation Foveal priority in stereoscopic remote viewing system
US6894701B2 (en) * 2002-05-14 2005-05-17 Microsoft Corporation Type size dependent anti-aliasing in sub-pixel precision rendering systems
US20040008229A1 (en) * 2002-07-01 2004-01-15 Nokia Corporation Reconfigurable user interface
US20040081299A1 (en) * 2002-10-24 2004-04-29 Sbc Properties, L.P. System and method for select messaging
US7106352B2 (en) 2003-03-03 2006-09-12 Sun Microsystems, Inc. Automatic gain control, brightness compression, and super-intensity samples
US7680342B2 (en) * 2004-08-16 2010-03-16 Fotonation Vision Limited Indoor/outdoor classification in digital images
US7606417B2 (en) 2004-08-16 2009-10-20 Fotonation Vision Limited Foreground/background segmentation in digital images with differential exposure calculations
EP1517542B1 (de) * 2003-09-01 2010-11-10 Samsung Electronics Co., Ltd. Verfahren und Apparat zur Anpassung von Farben in Bildern
US8133115B2 (en) 2003-10-22 2012-03-13 Sony Computer Entertainment America Llc System and method for recording and displaying a graphical path in a video game
US20060071933A1 (en) 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US7710418B2 (en) * 2005-02-04 2010-05-04 Linden Acquisition Corporation Systems and methods for the real-time and realistic simulation of natural atmospheric lighting phenomenon
JP4501847B2 (ja) * 2005-02-23 2010-07-14 セイコーエプソン株式会社 画像表示装置、画像表示装置の補正値作成方法、及び画像表示装置の補正値作成プログラム、及びこのプログラムが記録された記録媒体
US7349066B2 (en) * 2005-05-05 2008-03-25 Asml Masktools B.V. Apparatus, method and computer program product for performing a model based optical proximity correction factoring neighbor influence
US7636126B2 (en) * 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
US8174627B2 (en) * 2005-09-06 2012-05-08 Hewlett-Packard Development Company, L.P. Selectively masking image data
KR100772456B1 (ko) 2005-12-08 2007-11-01 한국전자통신연구원 다차원 시계열 신호 인식 시스템 및 방법
US7692696B2 (en) * 2005-12-27 2010-04-06 Fotonation Vision Limited Digital image acquisition system with portrait mode
IES20060558A2 (en) * 2006-02-14 2006-11-01 Fotonation Vision Ltd Image blurring
WO2007095477A2 (en) * 2006-02-14 2007-08-23 Fotonation Vision Limited Image blurring
IES20060564A2 (en) * 2006-05-03 2006-11-01 Fotonation Vision Ltd Improved foreground / background separation
US7880746B2 (en) * 2006-05-04 2011-02-01 Sony Computer Entertainment Inc. Bandwidth management through lighting control of a user environment via a display device
US7965859B2 (en) 2006-05-04 2011-06-21 Sony Computer Entertainment Inc. Lighting control of a user environment via a display device
JP5487610B2 (ja) * 2008-12-18 2014-05-07 ソニー株式会社 画像処理装置および方法、並びにプログラム
US8812615B2 (en) * 2009-02-17 2014-08-19 Canon Kabushiki Kaisha Remote control of a host computer
US20110074831A1 (en) * 2009-04-02 2011-03-31 Opsis Distribution, LLC System and method for display navigation
US9021124B2 (en) * 2009-12-02 2015-04-28 Axxana (Israel) Ltd. Distributed intelligent network
US10786736B2 (en) 2010-05-11 2020-09-29 Sony Interactive Entertainment LLC Placement of user information in a game space
US9342817B2 (en) 2011-07-07 2016-05-17 Sony Interactive Entertainment LLC Auto-creating groups for sharing photos
US9191551B2 (en) * 2012-02-24 2015-11-17 Apple Inc. Pixel normalization
US9241165B2 (en) * 2012-03-28 2016-01-19 Beamr Imaging Ltd Controlling a compression of an image according to a degree of photo-realism
DE202012010931U1 (de) * 2012-11-14 2013-01-08 Joerg Privsek Led-cam-carpet
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
CN104301703A (zh) * 2013-07-16 2015-01-21 联咏科技股份有限公司 匹配搜寻方法与匹配搜寻系统
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10354415B2 (en) * 2017-09-11 2019-07-16 Autodesk, Inc. Method and apparatus for a seamless texture unit generator
US11037271B2 (en) 2018-08-07 2021-06-15 Qualcomm Incorporated Dynamic rendering for foveated rendering
US10565689B1 (en) 2018-08-07 2020-02-18 Qualcomm Incorporated Dynamic rendering for foveated rendering

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355450A (en) * 1992-04-10 1994-10-11 Avid Technology, Inc. Media composer with adjustable source material compression
DE4492446B4 (de) * 1993-04-15 2005-10-06 Ultimatte Corp., Chatsworth Schirmfilterungsgrenzenerfassung für eine Bildzusammensetzung
JP2637920B2 (ja) 1994-08-11 1997-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・グラフィック・システム及びフレーム・バッファ使用方法
US6525723B1 (en) 1998-02-17 2003-02-25 Sun Microsystems, Inc. Graphics system which renders samples into a sample buffer and generates pixels in response to stored samples at different rates
US6496187B1 (en) 1998-02-17 2002-12-17 Sun Microsystems, Inc. Graphics system configured to perform parallel sample to pixel calculation

Also Published As

Publication number Publication date
EP1247253A1 (de) 2002-10-09
WO2001052192A1 (en) 2001-07-19
DE60100452D1 (de) 2003-08-14
EP1247253B1 (de) 2003-07-09
US20020003543A1 (en) 2002-01-10
WO2001052192A8 (en) 2001-11-01
AU2001229445A1 (en) 2001-07-24
US6850236B2 (en) 2005-02-01
ATE244911T1 (de) 2003-07-15

Similar Documents

Publication Publication Date Title
DE60100452T2 (de) Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang
DE69909437T2 (de) Graphisches system mit superabtasten mit veränderlicher auflösung
DE60000335T2 (de) Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
DE60000447T2 (de) Graphisches system das muster in einem musterpuffer darstellt und in anhängigkeit von gespeicherten mustern pixel erzeugt
DE60103535T2 (de) Graphisches system
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
US7106322B2 (en) Dynamically adjusting a sample-to-pixel filter to compensate for the effects of negative lobes
DE69610341T2 (de) 3-D-Bildertexturierung und -schattierung
DE69901542T2 (de) Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen
DE69130545T2 (de) System zur Erzeugung einer texturierten Perspektivsicht
DE69224499T2 (de) Dreidimensionale graphische Verarbeitung
DE69328464T2 (de) Methode zur Berechnung der Beleuchtung für Daten dreidimensionaler Objekte
DE102017108096A1 (de) System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung
DE69329049T2 (de) Methode zur Verarbeitung von Daten, die dreidimensionale graphische Objekte repräsentieren
DE102019103059A1 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE69924700T2 (de) Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten
DE60000450T2 (de) Graphisches system mit überabgetastetem musterpuffer mit erzeugung von ausgangspixeln unter benutzung von selektiver justierung der filterung zur implementierung von anzeigeeffekten
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE60107130T2 (de) Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente
DE69331486T2 (de) Bilddatenverarbeitung
DE69924699T2 (de) Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten
DE112022004426T5 (de) Verschobene Mikronetze für Ray- und Pathtracing
DE102019118838A1 (de) Virtuelle photogrammetrie
DE112018004343T5 (de) Mehrraum-rendering mit konfigurierbaren transformationsparametern

Legal Events

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