DE69835408T2 - Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen - Google Patents

Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen Download PDF

Info

Publication number
DE69835408T2
DE69835408T2 DE69835408T DE69835408T DE69835408T2 DE 69835408 T2 DE69835408 T2 DE 69835408T2 DE 69835408 T DE69835408 T DE 69835408T DE 69835408 T DE69835408 T DE 69835408T DE 69835408 T2 DE69835408 T2 DE 69835408T2
Authority
DE
Germany
Prior art keywords
fragment
value
pixel
color
stored
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
DE69835408T
Other languages
English (en)
Other versions
DE69835408D1 (de
Inventor
Norman P. Palo Alto Jouppi
Chun-Fa Durham Chang
Joel M. Boulder McCormack
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE69835408D1 publication Critical patent/DE69835408D1/de
Application granted granted Critical
Publication of DE69835408T2 publication Critical patent/DE69835408T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft allgemein das Gebiet der Computergrafik und insbesondere ein Verfahren und eine Vorrichtung zum Erzeugen von zusammengesetzten Farbbildern, die durch Unterbildpunktauflösung definiert sind.
  • ALLGEMEINER STAND DER TECHNIK
  • Viele Computergrafiksysteme verwenden Bildpunkte zum Definieren von Bildern. Die Bildpunkte sind auf einem Anzeigebildschirm als eine rechteckige Anordnung von Punkten angeordnet. Aufgrund der diskreten Eigenart der Bildpunkte kommt es zu Aliasing. Artefakte können auftreten, wenn ein ganzer Bildpunkt eine Lichtintensität oder Farbe erhält, die auf einem unzureichenden Abtastwert von Punkten innerhalb dieses Bildpunkts beruht. Um Aliasingeffekte in Bildern zu verringern, können die Bildpunkte an Unterbildpunktpositionen innerhalb des Bildpunktes abgetastet werden. Jede der Unterbildpunktpositionen trägt Farbdaten bei, die zum Erzeugen der zusammengesetzten Farbe dieses Bildpunktes verwendet werden können. Jedoch können einige Grafiksysteme die Speichermenge zum Speichern von Subsampling-Farbdaten begrenzen. Darum müssen solche Grafiksysteme sorgfältig auswählen, welche Farbdaten gespeichert werden, so dass diese Systeme trotzdem noch akkurat eine zusammengesetzte Farbe für jeden Bildpunkt erzeugen können.
  • Darum besteht Bedarf an einem Verfahren und einer Vorrichtung, die für jeden Bildpunkt Farbauswahlen und -ersetzun gen vornehmen kann, ohne unbefriedigende Artefakte in ein angezeigtes Bild hineinzutragen.
  • Es beispielhaftes Grafiksystem ist in US 5,594,854 beschrieben, das eine grobe Unterbildpunktkorrektur ausführt, um die allgemeine Qualität angezeigter Bilder zu verbessern. Das Grafiksystem arbeitet mit einer Rasterizer-Einheit innerhalb einer Pipeline-Architektur, um eine Grafikgrundform in eine Reihe von Fragmenten zu zerlegen, wobei jedes Fragment nur einen Teil eines Bildpunktes abdeckt und einen zugeordneten "Alpha-Wert" hat, der die prozentuale Bildpunktabdeckung darstellt. Eine "Alpha-Testeinheit" vergleicht den Alpha-Wert eines Fragments mit einem Referenz-Alpha-Wert und kann ein Fragment bedingt zurückweisen, wenn davon ausgegangen wird, dass die endgültige Farbe des Bildpunktes nicht korrekt wiedergegeben werden würde, wenn zum Beispiel eine prozentuale Abdeckung eines Bildpunktes durch ein neues Fragment zu gering ist.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß der vorliegenden Erfindung, die durch die angehängten Ansprüche definiert ist, besteht eine Aufgabe darin, eine Vorrichtung und ein Verfahren zum Bestimmen von Farben von Bildpunkten bereitzustellen. Die Erfindung ermöglicht es, effektiv im Rahmen von Speicherbeschränkungen zum Speichern von Bildpunktdaten zu arbeiten, indem die Fragmentdaten ausgewählt werden, die zu der Farbe eines bestimmten Bildpunktes beitragen, was anhand von Fragmenten verschiedener Objekte oder Flächen des Bildes erfolgen kann, während merkliche Farbunterschiede für den Bildpunkt minimiert werden und das Hineintragen unbefriedigender Artefakte vermieden wird.
  • In ihrer weitesten Form beruht die vorliegende Erfindung auf einem Verfahren und einer Vorrichtung zum Bestimmen einer Farbe eines Bildpunktes gemäß Ausführung in Anspruch 1 bzw. Anspruch 11. In dem Verfahren speichert die Anordnung bis zu einer vorgegebenen Anzahl von Fragmentwerten für den Bildpunkt. Jeder gespeicherte Fragmentwert ist einem Fragment eines Bildes zugeordnet, das in dem Bildpunkt sichtbar ist. Es wird ein neues Fragment bestimmt, das in dem Bildpunkt sichtbar ist, wobei wenigstens ein weiteres Fragment mit einem gespeicherten Fragmentwert immer noch in dem Bildpunkt sichtbar ist. Der Fragmentwert eines der sichtbaren Fragmente wird verworfen, um zu bestimmen, welche Fragmentwerte gespeichert und anschließend zum Erzeugen der Farbe des Bildpunktes verwendet werden.
  • Gemäß der vorliegenden Erfindung ist der verworfene Fragmentwert einer der gespeicherten Fragmentwerte.
  • Vorzugsweise ist das neue Fragment Teil einer anderen Fläche des Bildes als jedes der Fragmente, die einem gespeicherten Fragmentwert zugeordnet sind.
  • Bei einer Ausführungsform wählt das Verfahren das Verwerfen des gespeicherten Fragmentwertes mit dem Z-Tiefenwert, der größer ist als der Z-Tiefenwert jedes anderen gespeicherten Fragmentwertes, und ersetzt diesen Fragmentwert durch den neuen Fragmentwert. Je größer der Z-Tiefenwert, desto weiter ist das zugehörige Fragment vom Betrachter des Bildes entfernt.
  • Bei einer weiteren Ausführungsform wählt das Verfahren das Verwerfen des gespeicherten Fragmentwertes mit dem Farbwert, der einen numerisch kleineren Farbunterschied als der Farbwert jedes anderen gespeicherten Fragmentwertes im Vergleich zu dem Farbwert des neuen Fragmentwertes erzeugt. Das Verwerfen des Fragmentwertes, der den kleinsten Farbunterschied erzeugt, minimiert merkliche Farbveränderungen für den Bildpunkt.
  • Was das Vorrichtung betrifft, umfasst die Anordnung einen Speicher und eine Grafikvorrichtung auf. Der Speicher speichert bis zu einer vorgegebenen Anzahl von Fragmentwerten für einen bestimmten Bildpunkt. Jeder gespeicherte Fragmentwert ist einem Fragment eines Bildes zugeordnet, der in dem Bildpunkt sichtbar ist. Die Grafikvorrichtung bestimmt, dass ein neues Fragment in dem Bildpunkt sichtbar ist, wobei wenigstens ein weiteres Fragment mit einem gespeicherten Fragmentwert immer noch in dem Bildpunkt sichtbar ist. Die Grafikvorrichtung verwirft den Fragmentwert eines der sichtbaren Fragmente, um zu bestimmen, welche Fragmentwerte zum Erzeugen der Farbe des Bildpunktes verwendet werden können.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Es wird eine beispielhafte Ausführungsform der Erfindung anhand der begleitenden Zeichnungen beschrieben, in denen:
  • 1 ein Blockschaubild eines beispielhaften Computergrafiksystems ist, das zum Ausführen der Erfindung verwendet werden kann;
  • 2A-2C verschiedene Unterteilungen eines Bildpunkts in Unterbildpunkte darstellen und beispielhafte Sparse-Supersampling-Muster darstellen, die zum Abtasten der Unterbildpunkte verwendet werden können;
  • 3 ein beispielhaftes Verbinden von Unterbildpunktabtastwerten in einem der Supersampling-Muster der 2A-2C mit zwei Fragmenttripeln, die in einem Bildpunktspeicher gespeichert sind, darstellt;
  • 4 ein anderes Verbinden von Unterbildpunktabtastwerten darstellt, wenn ein drittes Fragment in einem Bildpunkt auftritt;
  • 5A-5C alternative Verbindungen von Unterbildpunktabtastwerten für den Fall darstellen, dass ein drittes Fragment in einem Bildpunkt auftritt;
  • 6A und 6B eine logische Darstellung des Bildpunktspeichers darstellen, der Indizes zu den gespeicherten Fragmenttripeln enthält,
  • 6C und 6D eine logische Darstellung des Bildpunktspeichers veranschaulichen, der Deckmasken enthält, die den gespeicherten Fragmenttripeln zugeordnet sind, und
  • 7 ein Flussdiagramm veranschaulicht, das ein beispielhaftes Verfahren beschreibt, das die vorliegende Erfindung anwendet.
  • DETAILLIERTE BESCHREIBUNG EINER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Systemübersicht
  • 1 zeigt ein Computersystem 100, das einfarbige oder vielfarbige 2-dimensionale (2D) und 3-dimensionale (3D) Grafikbilder zum Anzeigen gemäß den Prinzipien der vorliegenden Erfindung erzeugen kann. Das Computersystem 100 kann eines aus einer Vielfalt von Rastergrafiksystemen sein, wie zum Beispiel ein Personalcomputer, ein Arbeitsplatzrechner oder ein Großrechner.
  • In dem Computersystem 100 stellt ein System-Chipset 104 eine Schnittstelle zwischen einer Verarbeitungseinheit 102, einem Hauptspeicher 106, einem Grafikbeschleuniger 108 und (nicht gezeigten) Bauelementen auf einem E/A-Bus 110 dar. Die Verarbeitungseinheit 102 ist mit dem System-Chipset 104 durch den Host-Bus 102 gekoppelt und enthält eine zentrale Verarbeitungseinheit (CPU) 118. Der Hauptspeicher 106 hat eine Schnittstelle zu dem System-Chipset 104 über den Bus 114. Der Grafikbeschleuniger 108 ist mit dem System-Chipset 104 durch einen Bus 116 gekoppelt, über welchen der Grafikbeschleuniger 108 Grafikbefehle empfangen kann, um grafische Bilder wiederzugeben. Ein Grafikspeicher 122 und eine Anzeigevorrichtung 126 sind mit dem Grafikbeschleuniger 108 gekoppelt, der Grafikspeicher 122 ist durch den Bus 124 gekoppelt, und die Anzeigevorrichtung 126 durch den Bus 127. Die Anzeigevorrichtung 126 weist einen Katodenstrahlröhren-(KSR)-Rasteranzeigebildschirm 128 mit einer Anzeigefläche oder einem Bildschirm 130 auf. Die KSR 128 erzeugt Farbbilder, aber die Erfindung kann auch mit einem einfarbigen Monitor angewandt werden, um Graustufenbilder anzuzeigen, oder mit einem Drucker, der Schwarz-Weiß- oder Farbbilder druckt.
  • Ein Bild 132 erscheint auf dem Anzeigebildschirm 130, indem ein bestimmtes Muster einzelner Punkte, die Bildpunkte 134 genannt werden, beleuchtet wird. Das Bild 132 kann zum Beispiel alphanumerische 2D-Zeichen oder eine 3D-Szene sein, die mit Objekten gefüllt ist. Der Anzeigebildschirm 130 enthält eine zwei-dimensionale Anordnung solcher Bildpunkte 134. Die Anordnungsgröße von Anzeigebildschirmen 130 kann stark variieren. Als Beispiele für Größen von Anzeigebildschirmen 130 seien 1024 × 768 und 1920 × 1200 Bildpunkte genannt. Zum Zweck des Ausführens der Erfindung kann die Anzeigevorrichtung 126 auch jede beliebige andere auf Bildpunkten basierende Anzeige sein, wie zum Beispiel eine Flüssigkristallanzeige oder ein Punktmatrix-Drucker.
  • Der Grafikspeicher 122 umfasst Speicherelemente zum Speichern einer codierten Version des grafischen Bildes 132. Es besteht eine direkte Entsprechung zwischen den Speicherelementen und jedem Bildpunkt 134 auf dem Anzeigebildschirm 130. Die Speicherelemente werden zum Speichern von Daten zugeordnet, die jeden Bildpunkt 134 darstellen, im Weiteren Bildpunktdaten genannt. Fünf Byte können zum Beispiel verwendet werden, um eine Farbdarstellung für jeden Bildpunkt zu codieren.
  • Die in den Speicherelementen für einen bestimmten Bildpunkt gespeicherten Werte steuern die Farbe des konkreten Bildpunkts 134 auf dem Bildschirm 130. Unter "Farbe" ist zu verstehen, dass auch die Helligkeit oder Intensität des Bildpunkts 134 gemeint ist. Bildpunktdaten können direkt in Farben oder in Indizes umgesetzt werden, um auf eine Farbnachschlagtabelle zuzugreifen.
  • Während des Betriebs kann das Computersystem 100 Grafikbefehle ausgeben, die das Anzeigen eines Objekts fordern. Der Grafikbeschleuniger 108 führt die Grafikbefehle aus, indem er das Objekt in Grundformen und dann in Fragmente umwandelt. Eine Grundform ist eine grafische Struktur, wie zum Beispiel eine Linie, ein Dreieck, ein Kreis oder ein Flächenfleck einer soliden Form, die verwendet werden kann, um komplexere Strukturen aufzubauen. Ein Fragment ist ein 2D-Vieleck, das durch Beschneiden einer Grundformen des Bildes 132, wie zum Beispiel einer Linie, eines Dreiecks oder eines Kreises, auf die Grenzen des Bildpunkts 124 geschaffen wird. Eine detailliertere Beschreibung von Fragmenten wird von Loren Carpenter in "The A-buffer, an Antialiased Hidden Surface Method", Computer Graphics Band 18, Nr. 3, 1984, Seiten 103-107, gegeben. Dort vereinen Techniken Fragmente zu einer Fragmentliste, wenn die Fragmente von demselben Objekt oder derselben Fläche des Bildes stammen. Hier können die Fragmente, die kombiniert werden, um die Farbe eines Bildpunkts zu ergeben, zueinander verschiedene Beziehung haben. Das heißt, dass die Fragmente von verschiedenen Objekten oder Flächen des Bildes 132 sein können.
  • Der Grafikbeschleuniger 108 gibt die Fragmente wieder und lädt die Bilddatenpunkte, die den Fragmenten entsprechen, in die entsprechenden Speicherelemente des Grafikspeichers 122. Die Bildpunktdaten können von dem Hauptspeicher 106 über die Busse 112, 114, 116 und 124 in den Grafikspeicher 122 übertragen oder direkt durch den Grafikbeschleuniger 108 in den Grafikspeicher geschrieben werden.
  • Zum Anzeigen des Bildes 132 projiziert der KSR-Monitor 128 einen Strahl auf den Bildschirm 130. Synchron dazu werden die Bildpunktdaten aus dem Grafikspeicher 122 gelesen, während der Strahl den Bildschirm 130 abtastet. Der KSR-Monitor 128 gibt die Bildpunktdaten als beleuchtete Farbpunkte auf dem Anzeigebildschirm 130 wieder.
  • Die 2A-2C veranschaulichen verschiedene beispielhafte Unterteilungen eines Bildpunkts 134. 2A zeigt den Bildpunkt 134, aufgeteilt in eine Anordnung 200 aus 4 × 4 gleichmäßig verteilten Punkten, die Unterbildpunkte 206 genannt werden; 2B zeigt eine Anordnung 202 aus 8 × 8 Unterbildpunkten 206; und 2C zeigt eine Anordnung 204 von 16 × 16. Das Teilen eines Bildpunkts 134 in Unterbildpunkte 206 ergibt mehrere Punkte, an welchen das Bild 132, das den Bildpunkt 134 bedeckt, abgetastet werden kann. Als Referenz ist die Mitte 201 des Bildpunkts 134 als ein X gezeigt.
  • Im Allgemeinen ist die Auflösung des Bildpunkts 134 umso größer, je mehr Unterbildpunkte 206 sich in der Anordnung befinden. Daher beruht die angezeigte Farbe des Bildpunkts 134 nicht vollständig auf einem einzigen Abtastpunkt, sondern auf mehreren Unterbildpunktabtastwerten 206. Verfahren zum Berechnen eines Bildpunktwerts aus mehreren Abtastpunkten sind einschlägig bekannt.
  • Bekannte Implementierungen tasteten an jedem Unterbildpunkt 206 in einem Bildpunkt 134 ab. Während ein solches Vollszenen-Supersampling theoretisch die Möglichkeit zum Erreichen einer hohen Auflösung bot, nahm die Technik unnötig Speicherressourcen in Anspruch. Jeder abgetastete Unterbild punkt 206 verbrauchte Speicherressourcen, um die abgetasteten Daten zu speichern und zu verwenden. Das volle Abtasten der 4 × 4-Anordnung 200 aus Unterbildpunkten 206 erforderte somit Speicherplatz für sechzehn Abtastwerte zusätzlich zu den typischen Speicheranforderungen für jeden Bildpunkt 134. Wenn jeder der sechzehn Abtastwerte zum Beispiel 8 Byte Speicher erfordern würde, so könnte das Implementieren von Vollszenen-Supersampling für einen Anzeigebildschirm 130 mit 1920 × 1200 Bildpunkten zusätzliche 295 MByte Speicher erfordern. Die 16 × 16-Anordnung 204, die Speicher für 256 Abtastwerte erfordert, braucht sechzehn Mal so viel Speicher.
  • Dementsprechend tasten neuere moderne Implementierungen nicht an jedem Unterbildpunkt 206 ab. Vielmehr sind die Unterbildpunkte 206, die abgetastet werden, dünn in der Unterbildpunktanordnung verteilt. Im Allgemeinen wurden bei solchem Sparse-Supersampling fast ebenso effektive Antialiasing-Resultate erzielt bei der die Vollszenen-Supersampling-Technik.
  • Die 2A-2C veranschaulichen jeweils ein beispielhaftes Sparse-Supersampling-Muster 210, 220, 230, das zum Abtasten der Unterbildpunkte 206 der entsprechenden Unterbildpunktanordnung verwendet werden kann. Die veranschaulichten beispielhaften Abtastmuster 210, 220, 230 haben jeweils N Abtastwerte, die gleichmäßig über eine N × N-Unterbildpunktanordnung mit genau einem Unterbildpunktabtastwert in jeder bestimmten Zeile und in jeder bestimmten Spalte verteilt sind.
  • Das Abtastmuster 210 hat vier Unterbildpunktabtastwerte S1-S4 (N ist gleich 4). Für das Abtastmuster 220 ist N gleich 8, und die acht Unterbildpunktabtastwerte 222 sind S1-S8. Für das Abtastmuster 230 ist N gleich 16, und die sechzehn Unterbildpunktabtastwerte 232 sind S1-S16. Das Abtastmuster 210, 220, 230 kann für jeden Bildpunkt 134 auf dem Anzeige bildschirm 130 wiederholt werden. Verschiedene andere Abtastmuster können verwendet werden, um die erfindungsgemäßen Prinzipien umzusetzen.
  • Obwohl das Sparse-Supersampling weniger Speicher verwendet als das Vollszenen-Supersampling, werden dennoch beträchtliche Mengen an zusätzlichem Speicher benötigt. Wenn N zum Beispiel gleich 4 ist, braucht ein Bildschirm 130 mit 1920 × 1200 Bildpunkten immer noch acht Byte Speicher für jeden der vier Unterbildpunktabtastwerte. Das erfordert zusätzliche 74 MByte Bildpunktdaten. Die Anforderungen verdoppeln und vervierfachen sich, wenn N gleich 8 bzw. 16 ist.
  • Die beschriebenen Anordnungen können die Speicheranforderungen sogar noch weiter verringern als ein solches Sparse-Supersampling, ohne die Anzahl der Unterbildpunktabtastwerte für eine Anordnung aus N × N Unterbildpunkten zu verringern. Das Verfahren und die Vorrichtung, die im vorliegenden Text beschrieben sind, beruhen auf der Beobachtung, dass in der Regel nur einige wenige Fragmente des Bildes 132 innerhalb eines bestimmten Bildpunkts sichtbar sind.
  • Für Standbilder und bewegte Bilder erscheinen die Antialiasing-Effekte, die durch acht Sparse-Supersampling-Abtastwerte in der 8 × 8-Anordnung 202 erzielt werden, deutlich besser als für vier Abtastwerte in der 4 × 4-Anordnung 200. Aber Unterschiede zwischen sechzehn Abtastwerten in der 16 × 16-Anordnung 204 und acht Abtastwerten in der 8 × 8-Anordnung 202 sind möglicherweise nicht feststellbar.
  • 3 zeigt einen beispielhaften Bildpunkt 300, der zu dem Bild 132 gehört und in eine 4 × 4-Unterbildpunktanordnung 200 unterteilt ist. Der Bildpunkt 300 hat vier Abtastpositionen gemäß dem Abtastmuster 210 von 2A. In dem Bildpunkt 300 befinden sich zwei Fragmente 301, 302. Jedem Fragment 301, 302 ist ein Fragmentwert zugeordnet, der ein Fragmenttripel 310, 312 genannt wird. In 3 ist das Fragmenttripel 310 zum Beispiel dem Fragment 302 zugeordnet, und das Fragmenttripel 312 dem Fragment 301.
  • Fragmentwerte werden Fragmenttripel genannt, weil jedes Fragmenttripel 310, 312 drei Werte enthält: einen Farbwert 304, einen Z-Tiefenwert 306 und einen Matrizenwert 308. Der Farbwert 304 stellt die Farbe und die Opazität des entsprechenden Fragments dar. Der Z-Tiefenwert 306 stellt einen Z-Koordinatenwert des entsprechenden Fragments entlang einer Z-Achse dar, die zu dem Bild 132 senkrecht ist, um eine 3D-Tiefe zu erzeugen. Der Matrizenwert 308 kann verwendet werden, um Sätze von Fragmenten des Bildes 132 zu gruppieren oder zu identifizieren oder um logisch oder arithmetisch Operationen an Fragmenten zu verarbeiten oder zu zählen, oder für andere Zwecke, die dem Fachmann bekannt sind.
  • Bei der bevorzugten Ausführungsform verwenden die beispielhaften Fragmenttripel 310, 312 jeweils fünf Byte, um die Farbe 304 darzustellen, drei Byte für die Z-Tiefe 306 und ein Byte für die Matrize 308. Die fünf Bytes für die Farbe 304 nehmen vier 10-Bit-Farbkanäle auf: Rot, Grün, Blau und Alpha.
  • Die Farbe eines Fragments wird durch die Kombination der Werte ausgedrückt, die in den Kanälen Rot, Grün und Blau (RGB) gespeichert sind. Der in jedem RGB-Kanal gespeicherte Wert zeigt die Intensität (oder Helligkeit) dieses Farbkanals an. Niedrige Werte entsprechen dunklen Farben von geringer Intensität; hohe Werte entsprechen hellen Farben von hoher Intensität. Verschiedene Verfahren zum Erzeugen der Farbe durch Kombinieren der RGB-Werte sind einschlägig bekannt.
  • Die Opazität des Fragments wird durch den Wert ausgedrückt, der in dem Alphakanal gespeichert ist. Ein 1,0-Wert (das heißt alle 10 Alphakanalbits sind 1) zeigt zum Beispiel an, dass das zugehörige Fragment opak ist; ein Wert 0,0 zeigt an, dass das Fragment unsichtbar ist, das heißt vollständig transparent; und Werte zwischen 0,0 und 1,0 zeigen Transparenzgrade an.
  • Jedem Bildpunkt 134 wird Speicher zum Speichern einer vorgegebenen Anzahl von Fragmenttripeln zugeordnet. Dieser Speicher kann entweder Grafikspeicher 122, wie in 3 gezeigt, oder Hauptspeicher 106 sein. In dem in 3 gezeigten Beispiel wird der Bildpunktspeicher 314 für einen bestimmten Bildpunkt 300 zugeordnet. Es ist denkbar, dass eine Gruppe von Bildpunkten, wie zum Beispiel eine 2 × 2-Anordnung von Bildpunkten 134, einen bestimmten Bildpunktspeicher 314 gemeinsam nutzt. Jedes Fragmenttripel, das in dem Bildpunktspeicher 314 gespeichert ist, würde von jedem Bildpunkt 134 in der Gruppe anstatt von nur einem bestimmten Bildpunkt 300 verwendet werden. Das kann mehr Speicher sparen als das Speichern einer vorgegebenen Anzahl von Fragmenten für jeden Bildpunkt 134, insbesondere für Teile des Bildes 132, deren Farbe und Z-Tiefe sich allmählich ändern.
  • Alternativ kann jedem Bildpunkt 134 dynamisch Speicher zum Speichern von Fragmenttripeln zugeordnet werden, anstatt eine vorgegebene Zahl festzulegen. Hier kann eine veränderliche Anzahl von Fragmenttripeln für jeden Bildpunkt 134 gespeichert werden, wobei der Grafikbeschleuniger 108 dem Bildpunkt 134 nach Bedarf Speicher zuweist, vorausgesetzt, dass noch verfügbarer Bildpunktspeicher in dem System 100 vorhanden ist. Ein weiteres Verfahren kombiniert Aspekte der beiden oben beschriebenen Verfahren, indem es jedem Bildpunkt 134 Speicher zum Speichern einer vorgegebenen Anzahl von Fragmenttripeln zuweist und einem bestimmten Bildpunkt 134 dynamisch zusätzlichen Speicher bei Bedarf zuweist, um ein Fragmenttripel über die vorgegebene Zahl hinaus zu speichern.
  • Die in 3 gezeigte beispielhafte Ausführungsform speichert zwei Fragmenttripel 310, 312 in dem Bildpunktspeicher 314. Diese Fragmenttripel 310, 312 sind den Fragmenten 301, 302, die sich über den Bildpunkt 300 erstrecken, zugeordnet. Bevor die Fragmente 301, 302 in dem Bildpunkt 300 erscheinen, kann der Bildpunktspeicher 314 so initialisiert werden, dass er einen Standardfragmentwert enthält. Der Standardfragmentwert stellt ein Hintergrundfragment dar, das verwendet werden kann, wenn keine Fragmente einen bestimmten Unterbildpunktabtastwert abdecken oder wenn alle Fragmente, die den bestimmten Unterbildpunktabtastwert abdecken, transparent sind. Alternativ kann dieser Standardfragmentwert in dem Grafikspeicher 122 gespeichert werden, wobei der Wert von mehreren Bildpunkten 134 gemeinsam genutzt werden kann. Jeder Bildpunkt 134 könnte einen speziellen Indexwert speichern, der auf das Standardfragment weist.
  • Andere Ausführungsformen können mehr als zwei Tripel speichern, um die Qualität des Antialiasing zu verbessern. Das Speichern weniger Tripel spart Speicher, kann jedoch ein Antialiasing geringerer Qualität als das Speichern vieler Tripel erzeugen. Es wird zum Beispiel beobachtet, dass für die 8 × 8-Unterbildpunkanordnung 202 und das Abtastmuster 220 (N = 8) das Speichern von drei Tripeln bessere Antialiasing-Ergebnisse ergibt als das Speichern von zwei Tripeln.
  • Zeiger 320-326 verknüpfen die Unterbildpunktabtastwerte S1-S4 mit den zugehörigen Fragmenttripeln 310, 312, die in dem Bildpunktspeicher 314 gespeichert sind. Unter "Verknüpfung" verstehen wir eine logische Verbindung zwischen den Unterbildpunktabtastwerten S1-S4 und den Fragmenttripeln 310, 312. Zum Beispiel verknüpft der Zeiger 326 den Unterbildpunkt S1 mit dem Fragmenttripel 312, während die Zeiger 320 bis 324 die Unterbildpunkte S2 bis S4 mit dem Fragmenttripel 310 verknüpfen.
  • Bei einer Ausführungsform, die im Zusammenhang mit 6A weiter beschrieben wird, wird das Verknüpfen durch Speichern eines Indexwertes für jeden Unterbildpunktabtastwert S1-S4 bewerkstelligt. Dementsprechend wird diese Ausführungsform "indexiertes Sparse-Supersampling" genannt. Bei einer anderen Ausführungsform, die im Zusammenhang mit 6C beschrieben wird, erfolgt das Verknüpfen durch Speichern einer Deckmaske oder eines Bitmusters für jeden gespeicherten Fragmentwert. Diese Ausführungsform wird im Folgenden als "verbesserte A-Puffertechnik" bezeichnet. Gemeinsam werden die Ausführungsformen als "verbesserte Supersampling-Techniken" bezeichnet.
  • Zum Bestimmen der Farbe des beispielhaften Bildpunkts 300 verwendet der Grafikbeschleuniger 108 eine der Bildpunktunterteilungen 200, 202, 204 und ein Abtastmuster 210, 220, 230, um den Teil des Bildes 132 abzutasten, der den Bildpunkt 300 deckt. In 3 verwendet der Grafikbeschleuniger 108 zum Beispiel die 4 × 4-Anordnung 200 mit den N = 4 Abtastmustern 210 zum Abtasten des Bildpunkts 300. Wie gezeigt, bedeckt das Fragment 301 den Unterbildpunktabtastwert S1, und das Fragment 302 bedeckt die drei Unterbildpunktabtastwerte S2 bis S4. Ein Fragment bedeckt einen Unterbildpunkt, wenn sich die Mitte des Unterbildpunktabtastwerts in einer Zone, die von dem Fragment eingeschlossen wird, oder, in bestimmten Fällen, an einem Rand des Fragments befindet.
  • Im Allgemeinen bestimmt der Grafikbeschleuniger 108, welche Fragmente 301, 302 an jedem Unterbildpunktabtastwert S1-S4 sichtbar sind. Aus der Sicht eines Betrachters des Bildes 132, das zum Zweck der Veranschaulichung der Erfindung ein 3D-Bild ist, können einige Fragmente näher am Betrachter und vor anderen Fragmenten sein. Die näheren Fragmente werden "Vordergrundfragmente" genannt, die weiter entfernten Fragmente werden "Hintergrundfragmente" genannt. Ein opakes Vordergrundfragment kann ein Hintergrundfragment hinter diesem Vordergrundfragment verdecken.
  • Dementsprechend muss jedes Fragment einen Z-Tiefentest an einem der Unterbildpunktabtastwerte S1-S4 bestehen; das heißt, der Z-Wert 306 des Fragmenttripels, das dem Fragment zugeordnet ist, muss kleiner – das heißt aus der Sicht des Betrachters näher – als der Z-Wert 306 für jedes andere opake Fragment sein. Wenn ein Fragment den Z-Tiefentest besteht, so speichert der Grafikbeschleuniger 108 das dem sichtbaren Fragment zugeordnete Fragmenttripel in den Bildpunktspeicher 314.
  • Wenn zum Beispiel festgestellt wird, dass das Fragment 301 an dem Unterbildpunktabtastwert S1 des Bildpunkts 300 sichtbar ist, so wird der Zeiger 326 erzeugt, der diesen Unterbildpunkt S1 mit dem entsprechenden gespeicherten Fragmenttripel 312 verknüpft. Bei der bevorzugten Ausführungsform ist der Zeiger 326 in dem Bildpunktspeicher 314 zusammen mit den Fragmenttripeln 310, 312, die dem Bildpunkt 300 zugeordnet sind, gespeichert.
  • Anstatt vier Fragmenttripel in dem Bildpunktspeicher 314 zu speichern, nämlich eines für jeden der vier Unterbildpunktabtastwerte S1-S4, was mittels typischer Supersampling-Techniken geschehen würde, speichert die beispielhafte Ausführungsform in 3 nur zwei Fragmenttripel 310, 312. Es ist dementsprechend möglich, das Speichern redundanter Daten für den Bildpunkt 300 zu vermeiden, weil nur eine einzige Instanz des Fragmenttripels 310 für die drei Unterbildpunktabtastwerte S2-S4 gespeichert wird. Dadurch werden die Speicheranforderungen für Fragmenttripel beträchtlich verringert.
  • Wenn jedes Fragmenttripel 310, 312 zum Beispiel neun Byte Speicher braucht, so verwenden die verbesserten Supersampling-Techniken etwa achtzehn Byte Speicher je Bildpunkt weniger als typische Supersampling-Verfahren. Die verbesserten Supersampling-Verfahren verwenden zusätzlichen Speicher zum Speichern der Zeiger 320-326, aber diese Menge ist klein im Vergleich zu dem Speicher, der durch Speichern von nur zwei Fragmenttripeln 310, 312 für die vier Unterbildpunktabtastwerte S1-S4 gespart wird.
  • Die Speichereinsparungen steigen, wenn der Bildpunkt 300 in eine der größeren Unterbildpunktanordnungen 202, 204 unterteilt wird. Mit der 8 × 8-Unterbildpunktanordnung 202 und dem Abtastmuster 220 (N ist gleich 8) verwenden die verbesserten Supersampling-Techniken je Bildpunkt vierundfünfzig Bytes weniger als das typische Supersampling. Das ergibt sich aus der Tatsache, dass nur zwei von acht abgetasteten Fragmenttripeln in dem Bildpunktspeicher 314 gespeichert werden. Für die 16 × 16-Unterbildpunktanordnung 204 und das Abtastmuster 230 (N ist gleich 16) werden nur zwei von sechzehn abgetasteten Fragmenttripeln in dem Bildpunktspeicher 314 gespeichert, so dass je Bildpunkt 112 Byte gespart werden. Bei einem Anzeigebildschirm 130 mit 1920 × 1200 Bildpunkten belaufen sich diese Einsparungen auf etwa 258 MByte.
  • Die angezeigte Farbe des Bildpunkts 300 hängt davon ab, welche Filterfunktion zum Kombinieren der Fragmenttripel, die den vier Unterbildpunktabtastwerten S1-S4 zugeordnet sind, verwendet wird. Eine Funktion besteht einfach darin, die Farben der Fragmenttripel, die den vier Unterbildpunktabtastwerten S1-S4 zugeordnet sind, zu mitteln.
  • 4 veranschaulicht einen beispielhaften Fall, bei dem ein drittes sichtbares Fragment 400 in dem Bildpunkt 300 von 3 erscheint. Wie durch einen Pfeil 402 angezeigt, ist das dritte Fragment 400 mit einem neuen Fragmenttripel 410 verknüpft. Das neue Fragmenttripel 410 unterscheidet sich von den gespeicherten Fragmenttripeln 310, 312.
  • Bei diesem Beispiel verdeckt das dritte Fragment 400 einen Teil des Fragments 302 und ist an dem Unterbildpunktabtastwert S4 sichtbar. Das Fragment 301 ist an dem Unterbildpunkt S1 noch immer sichtbar, wie auch das Fragment 302 an den Unterbildpunkten S2 und S3. Dementsprechend bleibt der Unterbildpunktabtastwert S1 mit dem Fragmenttripel 312 durch den Zeiger 326 verknüpft. Die Unterbildpunkte S2 und S3 bleiben mit dem Fragmenttripel 310 durch den Zeiger 324 bzw. den Zeiger 322 verknüpft. Um zu veranschaulichen, dass das Fragment 302 an dem Bildpunktabtastwert S4 nicht mehr sichtbar ist, wird die Verknüpfung 320 von dem Unterbildpunktabtastwert S4 zu dem Fragmenttripel 310 als durchbrochen gezeigt.
  • Wenn das dritte Fragment 400 durch den Grafikbeschleuniger 108 verarbeitet wird, so sind die Fragmenttripel 310, 312 bereits in den Bildpunktspeicher 314 gespeichert, und das Fragmenttripel 410 ist als noch nicht in dem Bildpunktspeicher 314 gespeichert gezeigt. Im Weiteren werden verschiedene Arten zur Handhabung des dritten Fragmenttripels 410 beschrieben.
  • 5A zeigt eine Technik zum Handhaben des dritten sichtbaren Fragments 400 in dem Bildpunkt 300, das heißt, das Speichern des entsprechenden Fragmenttripels 410 in dem Bildpunktspeicher 314 gemeinsam mit den anderen Fragmenttripeln 310, 312. Diese Technik setzt entweder voraus, dass der Speicher 314, der für die vorgegebene Anzahl von Fragmenttripeln zugeordnet ist, das zusätzliche Fragmenttripel 410 aufnehmen kann oder dass der Speicher 314, der zum Speichern des neuen Fragmenttripels 410 erforderlich ist, dynamisch zugeordnet werden kann.
  • Ein Nachteil des Speicherns zusätzlicher Fragmenttripel in dem Bildpunktspeicher 314 besteht darin, dass sich die Speichermenge, die für die verbesserten Supersampling-Verfahren erforderlich ist, der Speichermenge für das typische Sparse-Supersampling nähert oder diese sogar übersteigt. Sollte ein viertes Fragment in dem Bildpunkt 300 sichtbar sein, so würden in dem Beispiel der 4 × 4-Unterbildpunktanordnung die verbesserten Supersampling-Verfahren und das Sparse-Supersampling jeweils vier Fragmenttripel speichern. Aber für die größeren Unterbildpunktanordnungen, wie zum Beispiel die 8 × 8-Anordnung und die 16 × 16-Anordnung, besteht immer noch die hohe Wahrscheinlichkeit, dass es in dem Bildpunkt 300 weniger sichtbare Fragmente als Unterbildpunktabtastwerte gibt und dass daher eine entsprechende Einsparung an Speicher bleibt. Wenn der Bildpunktspeicher 314 ferner dynamisch über die vorgegebene Anzahl von Fragmenttripeln hinaus zugeordnet wird, so braucht im Allgemeinen nur relativ wenigen Bildpunkten dynamisch Speicher zugeordnet zu werden. Obwohl die verbesserten Supersampling-Verfahren dann mehr Speicher für einen bestimmten Bildpunkt 134 brauchen könnten als typisches Sparse-Supersampling, könnten die verbesserten Verfahren weniger Speicher für das ganze Bild 132 insgesamt brauchen.
  • ANPASSUNGSVERFAHREN
  • Alternativ kann ein Anpassungsverfahren die Anzahl der Unterbildpunktabtastwerte verringern, an welchen der Bildpunkt 300 abzutasten ist, wenn die Anzahl der sichtbaren Fragmente in dem Bildpunkt 300 den verfügbaren Speicher für Fragmenttripel übersteigt, wie zum Beispiel, wenn der Bildpunktspeicher 314, der für die vorgegebene Anzahl von Fragmenttripeln zugeordnet ist, bereits voll ist oder kein Bildpunktspeicher verfügbar ist, um eine dynamische Zuordnung für das neue Fragmenttripel 410 vorzunehmen.
  • Wenn zum Beispiel Speicher für nur zwei Fragmenttripel vorhanden ist, es aber vier verschiedene sichtbare Fragmente in dem Bildpunkt 300 gibt – ein unterschiedliches Fragment für jeden der vier Unterbildpunktabtastwerte S1-S4 -, so gewährleistet das Zurückgehen auf nur zwei Unterbildpunktabtastpunkte ausreichend Speicher für die Fragmente, die diese zwei Abtastwerte abdecken.
  • Das Verringern der Anzahl von Abtastwerten kann allmählich erfolgen. Wenn zum Beispiel acht Unterbildpunktabtastwerte S1-S8 verwendet werden, so könnte das Verfahren mit acht Abtastwerten beginnen, auf sechs, dann vier und schließlich auf zwei verringert werden, wenn die Anzahl der verschiedenen sichtbaren Fragmente in dem Bildpunkt über den verfügbaren Speicher hinaus erscheint.
  • Das Verfahren kann jeden Bildpunkt unabhängig verarbeiten. Das Verfahren kann zum Beispiel alle vier Unterbildpunktabtastwerte S1-S4 für einen Bildpunkt verwenden und dann auf nur zwei Unterbildpunktabtastwerte S1 und S2 für einen anderen Bildpunkt zurückgehen.
  • 5B veranschaulicht einen weiteren Ansatz zur Handhabung des dritten sichtbaren Fragments 400 in dem Bildpunkt 300 dar, das heißt, um das entsprechende Fragmenttripel 410 mit den anderen Fragmenttripeln 310, 312, die in dem Bildpunktspeicher 314 gespeichert sind, zu vermischen. Die eingekreisten Plus-Zeichen ("+") in 5 veranschaulichen den Vermischungsprozess.
  • Ein beispielhafter Vermischungsprozess gewichtet den Farbbeitrag jedes Fragmenttripels 310, 312 und des neuen Fragmenttripels 410 zu dem vermischten Fragmenttripel 530, 532.
  • Den Farbbeitrag jedes gespeicherten Fragmenttripels 310, 312 bestimmt man zum Beispiel durch Multiplizieren des Farbwerts 304 dieses Fragmenttripels mit der Anzahl von Abtastwerten, die noch immer von diesem Fragmenttripel bedeckt werden, und dann durch Teilen des Ergebnisses durch die Anzahl von Abtastwerten S1-S4, die zuvor von dem Fragmenttripel bedeckt wurden, bevor das neue Fragment 400 erschien. Den Farbbeitrag des neuen Fragmenttripels 410 erhält man durch Multiplizieren des Farbwerts 304 des neuen Fragmenttripels 410 mit der Anzahl von Abtastwerten, die von dem gespeicherten Fragmenttripel bedeckt wurden, nun aber durch das neue Fragment 400 bedeckt werden, und dann durch Dividieren des Ergebnisses durch die Anzahl von Abtastwerten S1-S4, die zuvor von dem gespeicherten Fragmenttripel 310, 312 bedeckt wurden, bevor das neue Fragment 400 erschien.
  • Hier würde das Fragmenttripel 310 2/3 seines Farbwerts 304 zu dem vermischten Fragmenttripel 530 beitragen, und das neue Fragmenttripel 410 würde 1/3 seines Farbwerts 304 beitragen. Für das vermischte Fragmenttripel 532 trägt das Fragmenttripel 312 seinen ganzen Farbwert (1/1) bei, und das neue Fragmenttripel 410, das keine Abtastpunkte bedeckt, die dem Fragmenttripel 312 zugeordnet sind, würde keinen Farbwert (0/1) beitragen. Dann werden diese gewichteten Farbwerte 304 addiert. Es können auch andere einschlägig bekannte Farbvermischungstechniken verwendet werden.
  • In 5B ist das Fragmenttripel 410 mit dem Fragmenttripel 310 zu einem vermischten Fragmenttripel 530 vermischt, und die Zeiger 322, 324, die die Unterbildpunkte S2 und S3 mit dem Fragmenttripel 310 verknüpfen, zeigen nun auf das vermischte Fragmenttripel 530. Ferner wird das Fragmenttripel 410 mit dem Fragmenttripel 312 zu einem vermischten Fragmenttripel 532 vermischt, und der Zeiger 326, der den Unterbildpunkt S1 mit dem Fragmenttripel 312 verknüpft, zeigt nun auf das vermischte Fragmenttripel 532. Der Unterbildpunkt S4 ist mit dem vermischten Fragmenttri pel 530 verknüpft. Alternativ kann der Unterbildpunkt S4 mit dem anderen Fragmenttripel 532 verknüpft werden.
  • Die vermischten Fragmenttripel 530, 532 werden in dem Bildpunktspeicher 314 gespeichert. Das vermischte Fragmenttripel 530 belegt die Speicheradressen, die zuvor von dem Fragmenttripel 310 belegt wurden. Die Adressen des Bildpunktspeichers 314, die zuvor das Fragmenttripel 312 speicherten, speichern nun das vermischte Fragmenttripel 532.
  • Gemäß der vorliegenden Erfindung zeigt 5C einen beispielhaften Ansatz zum Berücksichtigen des dritten sichtbaren Fragments 400 in dem Bildpunkt 300. Dieser Ansatz ersetzt eines der Fragmenttripel 310, 312, die zuvor in dem Bildpunktspeicher 314 gespeichert waren, durch das dritte Fragmenttripel 410. Zum Beispiel wird das Fragmenttripel 310 durch das neue Fragmenttripel 410 ersetzt. Um diesen Ersatz durchzuführen, würde der Grafikbeschleuniger 108 die Daten des neuen Fragmenttripels 410 über die Daten des zuvor gespeicherten Fragmenttripels 310 schreiben, wodurch praktisch die Daten des Fragmenttripels 310 verworfen werden. Alternativ kann Speicher für das Fragmenttripel 310 abgezogen und für das Fragmenttripel 410 zugeordnet werden.
  • In 5C belegen die Daten des neuen Fragmenttripels 410 die spezifischen Adressen des Bildpunktspeichers 314, die zuvor das Fragmenttripel 310 speicherten. Die Zeiger 322, 324 zeigen auf diese spezifischen Adressen des Bildpunktspeichers. Wo zuvor die Zeiger 322, 324 die Unterbildpunkte S2 und S3 mit dem Fragmenttripel 310 verknüpften, verknüpfen diese Zeiger 322, 324 nun die Unterbildpunkte S2 und S3 mit dem neunen Fragmenttripel 410.
  • Im Folgenden werden Techniken beschrieben, mit denen ausgewählt wird, welches der Fragmenttripel 310, 312 oder 314 zu verwerfen ist.
  • Auswahlregimes:
  • Z-Priorität
  • Gemäß der vorliegenden Erfindung besteht eine Technik zum Auswählen des Fragmenttripels 310, 312, das zu ersetzen ist, und die Z-Prioritätsverfahren genannt wird, darin zu bestimmen, welches Fragmenttripel 310, 312, das in dem Bildpunktspeicher 314 gespeichert ist, den größten Z-Tiefenwert 306 hat. Aus der Sicht des Betrachters ist das entsprechende Fragment umso weiter von dem Betrachter entfernt, je größer der Z-Tiefenwert 306 ist. Wenn zum Beispiel der Z-Tiefenwert 306 des Fragmenttripels 310 4 beträgt und der Z-Tiefenwert 306 des Fragmenttripels 312 2 beträgt, so wird das Fragmenttripel 310 durch das neue Fragmenttripel 410 ersetzt. Die Zeiger 322-324, die zuvor die Unterbildpunktabtastwerte S2 und S3 mit dem Fragmenttripel 310 verknüpften, verknüpfen nun die Unterbildpunktabtastwerte mit dem Fragmenttripel 410. Sollte mehr als ein gespeichertes Fragmenttripel 310, 312 den größten Z-Tiefenwert 306 haben, so kann das Fragmenttripel 310, 312 mit der kleineren Anzahl von Zeigern 320-326 ersetzt werden.
  • Grundfarbenunterschied
  • Bei einer anderen Technik gemäß der vorliegenden Erfindung zum Auswählen, welches Fragmenttripel 310, 312 zu ersetzen ist, und die man das Grundfarbenunterschiedsverfahren nennt, wird bestimmt, welches Fragmenttripel 310, 312, das in dem Bildpunktspeicher 314 gespeichert ist, einen Farbwert 304 hat, der dem Farbwert 304 des neuen Fragmenttripels 410 am ähnlichsten ist, das heißt, der den kleinsten Farbunterschied ergibt. Der Farbwert 304 des neuen Fragmenttripels 410 wird mit dem Farbwert 304 jedes gespeicherten Fragmenttripels 310, 312 verglichen. Obwohl das Verfahren unten anhand des RGB-Farbmodells beschrieben wird, kann auch auf andere Farbmodelle angewandt werden, wie zum Beispiel das Farbton-Helligkeit-Sättigung (HLS)-Farbmodell und das Farbton-Sättigung-Wert (HSV)-Farbmodell.
  • Genauer genommen vergleicht das Grundfarbenunterschiedsverfahren den 10-Bitwert für den ROT-Kanal des neuen Fragmenttripels 410 mit dem 10-Bitwert für den ROT-Kanal jedes gespeicherten Fragmenttripels 310, 312. Vergleiche werden ebenfalls für den GRÜN- und den BLAU-Kanal angestellt. Werte in den Alphakanälen werden nicht verglichen.
  • Die Absolutwerte der Unterschiede zwischen den Werten der Kanäle des neuen Fragmenttripels 410 und den Werten der Kanäle der gespeicherten Fragmenttripel 310, 312 werden summiert. Dann wird die Summe mit der Anzahl von Unterbildpunktabtastwerten multipliziert, die auf das gespeicherte Fragmenttripel 310, 312 zeigen. Das ergibt einen Gesamtfarbunterschied, der sich ergäbe, wenn das gespeicherte Fragmenttripel 310, 312 durch das neue Fragmenttripel 410 ersetzt werden würde. Das Fragmenttripel 310, 312, das den kleineren Farbunterschied ergibt, wird durch das neue Fragmenttripel 410 ersetzt.
  • Bei einem übertrieben vereinfachten Beispiel unter Bezugnahme auf 5C hat das Fragmenttripel 310 einen ROT-Wert von 0, einen GRÜN-Wert von 2 und einen BLAU-Wert von 4; das Fragmenttripel 312 hat einen ROT-Wert von 2, einen GRÜN-Wert von 4 und einem BLAU-Wert von 0, und das neue Fragmenttripel 410 hat einen ROT-Wert von 0, einen GRÜN-Wert von 3 und einen BLAU-Wert von 3. Des Weiteren gibt es, wie in 5C gezeigt, zwei Unterbildpunkte, die auf das Fragmenttripel 310 zeigen – wenn bestimmt wird, dass das neue Fragment 400 am Abtastpunkt S4 sichtbar ist, so wird der Zeiger 320 (siehe 3) von S4 zu dem Fragmenttripel 310 ungültig gemacht -, und einen Unterbildpunkt, der auf das Fragmenttripel 312 zeigt.
  • Der Gesamtfarbunterschied zwischen dem Fragmenttripel 310 und dem neuen Fragmenttripel 410 beträgt 4, zum Beispiel (|0 – 0| + |2 – 3| + |4 – 3|)·2, und der Gesamtfarbunterschied zwischen dem Fragmenttripel 312 und dem neuen Fragmenttripel 410 beträgt 6, zum Beispiel (|2 – 0| + |4 – 3| + |0 – 3|)·1. Dementsprechend wird das Fragmenttripel 310 ersetzt.
  • Farbunterschied und transparente Fragmente
  • Wenn transparente Fragmente an dem Farbunterschied beteiligt sind, so wird die Auswirkung jedes möglichen Ersatzes auf die endgültige Bildpunktfarbe mit der idealen endgültigen Bildpunktfarbe verglichen, die sich ergäbe, wenn das neue Fragmenttripel 410 in dem Bildpunktspeicher 314 gespeichert werden könnte. Dieses gespeicherte Fragmenttripel 310, 312, das eine endgültige Bildpunktfarbe mit dem kleinsten Farbunterschied im Vergleich mit der idealen endgültigen Bildpunktfarbe ergibt, wird zum Ersetzen ausgewählt. In einem Stapel transparenter Fragmente tendiert diese Auswahl dazu, die weiter entfernten transparenten Fragmente, die kaum zu sehen sind, zu ersetzen.
  • N-Quadrat-Farbunterschied
  • Zusätzlich zum Vergleichen des neuen Fragmenttripels 410 mit jedem gespeicherten Fragmenttripel 310, 312, wie es bei dem Farbunterschiedsverfahren durchgeführt wird, vergleicht das N-Quadrat-Farbunterschiedsverfahren jedes gespeicherte Fragmenttripel 310, 312 miteinander. Dieses Verfahren ersetzt entweder eines der gespeicherten Fragmenttripel 310 durch das neue Fragmenttripel 410 oder ersetzt eines der gespeicherten Fragmenttripel 310, 312 durch ein anderes der gespeicherten Fragmenttripel 310, 312, das heißt, indem die Zeiger von dem einen gespeicherten Fragmenttripel zu dem anderen gespeicherten Fragmenttripel ausgetauscht werden. Das neue Fragmenttripel 410 wird in die Adressen des Bildpunktspeichers geschrieben, an welchen das ersetzte Fragmenttripel zuvor gespeichert war. Der N-Quadrat-Farbunterschied scheint kein signifikant besseres Ergebnis zu erbringen als das Farbunterschiedsverfahren.
  • Farbunterschiedsverfahren auf der Grundlage der visuellen Empfindlichkeit
  • Weitere Techniken, die zufriedenstellende Ergebnisse erbringen können, beruhen auf den Eigenschaften des menschlichen Sehapparates. Die Fähigkeit eines menschlichen Auges, Helligkeitsunterschiede zu erkennen, kann zum Beispiel geringer sein als die Fähigkeit, Farbtonunterschiede zu erkennen. Dementsprechend kann ein beispielhaftes, auf der visuellen Empfindlichkeit beruhendes Ersetzungsverfahren diese Eigenschaft ausnutzen, indem das Fragmenttripel 310, 312, das heller oder dunkler ist als das neue Fragmenttripel 410, anstelle des Fragmenttripels 310, 312, das einen anderen Farbton hat, ersetzt wird. Ein solches Verfahren würde es vorziehen, das gespeicherte Fragmenttripel 310, 312 durch einen Farbwert 304 zu ersetzen, der sich gleich oder fast gleich in jedem der RGB-Farbkanäle von dem Farbwert 304 des neuen Fragmenttripels 410 unterscheidet.
  • Eine weitere beispielhafte Technik kann sich auf das logarithmische Verhalten der Leuchtdichtewahrnehmung des Menschen stützen. Im Allgemeinen kann ein menschliches Auge etwa eine 2-%ige Änderung in der Helligkeit einer Farbe erkennen. Folglich können große numerische Unterschiede zwischen hohen Farbwerten 304 (das heißt Farben hoher Intensität) weniger wahrnehmbar sein als kleine numerische Unterschiede zwischen niedrigen Farbwerten (das heißt Farben mit geringer Intensität). Dementsprechend werden Leuchtdichteunterschiede als Verhältnisse der Farbwerte 304 und nicht als numerische Unterschiede zwischen Farbwerten berechnet. Das Fragmenttripel 310, 312, das die geringeren Leuchtdichteunterschiede ergibt, das heißt, das kleinere Verhältnis der Farben im Vergleich zu dem neuen Fragmenttripel 410, wird ersetzt.
  • Z-Priorität-Farbunterschied
  • Als Hintergrundinformation sei angemerkt, dass diese Technik das Z-Prioritätsverfahren mit einem beliebigen der oben genannten Farbunterschiedsverfahren zu einem Ersetzungsverfahren kombiniert, das bessere Ergebnisse erbringt als jedes der Verfahren allein. Die oben beschriebenen Farbunterschiedsverfahren ersetzen ein gespeichertes Fragmenttripel durch das neue Fragmenttripel. Das Z-Priorität-Farbunterschiedsverfahren zieht außerdem in Betracht, ob eines der gespeicherten Fragmenttripel 310, 312 stattdessen das neue Fragmenttripel 410 ersetzen sollte.
  • Hier berechnet das Verfahren Farbunterschiede zwischen dem neuen Fragmenttripel 410 und jedem gespeicherten Fragmenttripel 310, 312, das das neue Fragmenttripel 410 ersetzen kann. Diese Farbunterschiede werden für jedes dieser gespeicherten Fragmenttripel berechnet, die vor einem neuen Fragment liegen, das heißt einen kleineren Z-Tiefenwert haben, aber nicht für jene gespeicherten Fragmenttripel, die hinter dem neuen Fragment liegen.
  • Dementsprechend kann ein gespeichertes Fragmenttripel 310, 312 ausgewählt werden, um das neue Fragmenttripel 410 zu ersetzen, wenn dieses Fragmenttripel 310, 312 den kleinsten Farbunterschied erzeugt und dieses Fragmenttripel 310, 312 einem Fragment zugeordnet ist, das sich vor dem neuen Fragment befindet. In diesem Fall bedeutet "Ersetzen", dass jeder Unterbildpunktabtastwert, der von dem neuen Fragment bedeckt wird, mit dem ausgewählten gespeicherten Fragmenttripel 310, 312 verknüpft wird und das neue Fragmenttripel 410 verworfen wird.
  • Wenn mehr als ein einziger Ersatz möglich ist, so sollte im Allgemeinen jener Ersatz vorgenommen werden, der sich auf die kleinere Anzahl von Unterbildpunktabtastwerten auswirkt. Wenn zum Beispiel entweder das neue Fragmenttripel oder ein gespeichertes Vordergrundfragmenttripel ersetzt werden kann, so ersetzt das gespeicherte Fragmenttripel das neue Fragmenttripel, wenn das gespeicherte Vordergrundfrag menttripel mehr Unterbildpunktabtastwerte bedeckt als das neue Fragmenttripel.
  • Zonendeckung
  • Ein weiteres effizientes Verfahren gemäß der vorliegenden Erfindung wählt das Fragmenttripel aus, das bei der kleinsten Anzahl von Unterbildpunktabtastwerten sichtbar ist, und ersetzt dieses Fragmenttripel durch das neue Fragmenttripel 410. Danach zeigt jeder Zeiger zu dem ersetzten Fragmenttripel auf das neue Fragmenttripel.
  • Semaphor-Verfahren
  • Das Z-Priorität-Farbunterschiedsverfahren erlaubt es bestehenden Vordergrundfragmenten, neue Hintergrundfragmente zu ersetzen, doch erlaubt es existierenden Hintergrundfragmenten nicht, neue Vordergrundfragmente zu ersetzen. Das geschieht, um das Verlieren großer Vordergrundflächen zu vermeiden, die aus kleinen Vordergrundfragmenten bestehen. Die große Fläche könnte verloren gehen, wenn es das Verfahren jedem der kleinen Vordergrundfragmente erlauben würde, durch ein größeres Hintergrundfragment ersetzt zu werden. Das Semaphor-Verfahren vermeidet auch dieses Problem.
  • Das Semaphor-Verfahren weist jedem Bildpunkt ein Semaphorbit zu. Anfänglich ist jedes Semaphorbit auf 0 gesetzt. Wenn bestimmt wird, dass das Ersetzen eines neuen Vordergrundfragments durch ein existierendes Hintergrundfragment einen kleinsten Farbunterschied ergibt, und das zugehörige Semaphorbit 0 ist, so erlaubt es das Semaphor-Verfahren dem existierenden Hintergrundfragment, das neue Vordergrundfragment zu ersetzen. Das zugehörige Semaphorbit wird auf 1 gesetzt. Dies gewährleistet, dass nicht zwei solcher Ersetzungen hintereinander auftreten können. Wenn das ersetzte neue Vordergrundfragment Teil einer größeren Vordergrundfläche war, dann ersetzt das nächste neue Vordergrundfragment für diese größere Fläche das existierende Hintergrund fragment, weil das Semaphorbit eine 1 ist. Es wurde jedoch beobachtet, dass dieses grundlegende Semaphor-Verfahren einige unbefriedigende Artefakte erzeugen kann.
  • Fragmentzentroidentfernungsverfahren
  • Als Hintergrundinformation sei angemerkt, dass derartige Verfahren das Farbersetzen auf die Entfernung zwischen dem neuen Fragment und jedem möglichen Fragment stützen, das das neue Fragment ersetzen kann. Dementsprechend kann ein neues Fragment so erweitert werden, dass es benachbarte Unterbildpunktabtastwerte abdeckt, anstatt gespeicherte Fragmente zu ersetzen, die entfernte Unterbildpunktabtastwerte abdecken. Es ist ferner wahrscheinlich, dass Unterbildpunktabtastwerte in der Nähe der bedeckten Unterbildpunktabtastwerte später bedeckt werden.
  • Die 6A und 6B veranschaulichen eine logische Darstellung des Bildpunktspeichers 314, der von der indexierten Sparse-Supersampling-Technik verwendet wird. Der Bildpunktspeicher 314 enthält Indizes 600 und Fragmenttripel 310, 312. Der Bildpunktspeicher 314 stellt Speicher für eine bestimmte Anzahl von Fragmenttripeln bereit. Obwohl sie in dem Grafikbeschleuniger 122 als benachbart gezeigt werden, können die Indizes 600 voneinander oder von den Fragmenttripeln 310, 312 getrennt sein.
  • Die Indizes 600 zeigen an, wo in dem Bildpunktspeicher 314 das Fragmenttripel, das jedem Unterbildpunktabtastwert zugeordnet ist, gefunden werden kann. Jeder Index 602-608 der Indizes 600 ist einem der Unterbildpunktabtastwerte S1-S4 zugeordnet. Wie zum Beispiel in 6B gezeigt, ist der Index 602 dem Unterbildpunktabtastwert S1 zugeordnet, der Index 604 ist dem Unterbildpunktabtastwert S2 zugeordnet usw. Für das Abtastmuster 220 gibt es acht Indizes für die acht Unterbildpunktabtastwerte S1-S8, und für das Abtastmuster 320, bei dem N = 16 ist, gibt es sechzehn.
  • Der in jedem Index 602-608 gespeicherte Wert zeigt auf eines der Fragmenttripel 310, 312. Dementsprechend verknüpft jeder Index 602-608 den zugehörigen Unterbildpunktabtastwert S1-S4 mit einem der Fragmenttripel 310, 312.
  • Wenn zwei Fragmenttripel 310, 312 in dem Bildpunktspeicher 314 gespeichert sind, so kann jeder Index 602-608 durch ein einzelnes Datenbit dargestellt werden. Der in jedem Index 602-608 gespeicherte Bitwert lenkt den Grafikbeschleuniger 108 zu dem Fragmenttripel 310, 312, das jedem Unterbildpunktabtastwert S1-S4 zugeordnet ist. In dem in 6B gezeigten Beispiel ist eine "1" in dem Index 602 gespeichert, und eine "0" ist in jedem der anderen Indizes 604-608 gespeichert. Ein Null-Bit-Wert zeigt auf das erste Fragmenttripel 310 in dem Bildpunktspeicher 314, und ein Ein-Bit-Wert zeigt auf das zweite Fragmenttripel 312.
  • Wenn alternativ drei Fragmenttripel in dem Bildpunktspeicher 314 gespeichert sind, so braucht man zwei Bit je Index 602-608. Zwei Bit je Index 602-608 können bis zu vier gespeicherte Fragmenttripel, drei Bit bis zu acht Fragmenttripel und vier Bit bis zu sechzehn aufnehmen.
  • Bei einem einzelnen Bit je Index 602-608 braucht das Abtastmuster 210 (N = 4) vier Bit Bildpunktspeicher 314, um die Indizes 600 zu implementieren. Die Speichererfordernisse für die Indizes 600 größerer Abtastmuster 220, 230 sind ebenfalls klein. Das Abtastmuster 230 (N = 16) würde zum Beispiel sechzehn Bit je Bildpunkt 134 brauchen, um ein Bit je Index umzusetzen. Das Implementieren von vier Bit je Index verwendet 64 Bit je Bildpunkt, was immer noch beträchtliche Speichereinsparungen im Vergleich zu typischen Sparse-Supersampling-Techniken ermöglicht, die für die sechzehn Unterbildpunktabtastwerte S1-S16 sechzehn Fragmenttripel speichern.
  • Um eine Farbe für den Bildpunkt 300 zu berechnen, wird der Farbwert 304 jedes gespeicherten Fragmenttripels 310, 312 mit dem Prozentsatz an Unterbildpunktabtastwerten, die durch einen Index mit diesem Fragmenttripel verknüpft sind, multipliziert. Danach werden diese gewichteten Farbwerte zu der Bildpunktfarbe addiert.
  • Die 6C und 6D veranschaulichen eine beispielhafte logische Darstellung des Bildpunktspeichers 314, der von der verbesserten A-Puffertechnik verwendet wird. Der Bildpunktspeicher 314 enthält Abdeckmasken (oder Bitmuster) 620, 622 und gespeicherte Fragmenttripel 310, 312. Der Bildpunktspeicher 314 stellt Speicher für eine vorgegebene Anzahl von Fragmenttripeln bereit. Obwohl sie in dem Grafikspeicher 122 als benachbart gezeigt sind, können die Abdeckmasken 620, 622 voneinander oder von den Fragmenttripeln 310, 312 getrennt sein. Eine alternative Ausführungsform, die eine dritte Abdeckmaske 624 und das dritte gespeicherte Fragmenttripel 410 enthält, ist in den 6C und 6D mit Strichlinien veranschaulicht.
  • Die Abdeckmasken 620, 622 verknüpfen die Unterbildpunktabtastwerte S1-S4 mit den Fragmenttripeln 310, 312, die in dem Bildpunktspeicher 314 gespeichert sind. Jedem gespeicherten Fragmenttripel 310, 312 ist eine Abdeckmaske 620, 622 zugeordnet. Wie in 6D dargestellt, ist die Abdeckmaske 620 zum Beispiel dem Fragmenttripel 310 zugeordnet, wie durch einen Pfeil 621 angezeigt, und die Abdeckmaske 622 ist dem Fragmenttripel 312 zugeordnet, wie durch den Pfeil 623 angezeigt. Bei der veranschaulichten alternativen Ausführungsform ist die Abdeckmaske 624 dem dritten Fragmenttripel 410 durch den Pfeil 625 zugeordnet.
  • Jede Abdeckmaske 620, 622, 624 enthält ein einzelnes Bit für jeden Unterbildpunktabtastwert S1-S4. In 6D sind die Zuordnungen zwischen den Bits in den Abdeckmasken und den Unterbildpunktabtastwerten S1-S4 durch Pfeile 634-640 dargestellt. Der Unterbildpunktabtastwert S1 ist zum Beispiel den Bits 626 zugeordnet, der Unterbildpunktabtastwert S2 ist den Bits 628 zugeordnet, der Abtastwert S3 ist den Bits 630 zugeordnet, und der Abtastwert S4 ist den Bits 632 zugeordnet.
  • Mit einem Bit je Abtastwert S1-S4 braucht das Abtastmuster 210 (N = 4) vier Bit 626, 628, 630, 632 des Bildpunktspeichers 314, um jede Abdeckmaske 620, 622, 624 zu implementieren. Bei der gezeigten alternativen Ausführungsform, bei der drei Fragmenttripel gespeichert sind, beträgt der kombinierte Bedarf für die drei zugeordneten Abdeckmasken 620, 622, 624 zwölf Bit.
  • Für das Abtastmuster 220 erfordert jede Abdeckmaske 620, 622, 624 acht Bit, eines für jeden der acht Unterbildpunktabtastwerte S1-S8. Wie bei dem Abtastmuster 230, das sechzehn Unterbildpunktabtastwerte S1-S16 hat, wären sechzehn solcher Bits in jeder Abdeckmaske. Aber sogar mit sechzehn Bit je Abdeckmaske sind die Speichereinsparungen im Vergleich zu bekannten Sparse-Supersampling-Techniken, die sechzehn Fragmenttripel für die sechzehn Unterbildpunktabtastwerte S1-S16 speichern, beträchtlich.
  • Der in jedem Bit einer bestimmten Abdeckmaske gespeicherte Wert zeigt an, ob der Bildpunktabtastwert, der diesem Bit zugeordnet ist, mit dem Fragmenttripel verknüpft ist, das der bestimmten Abdeckmaske zugeordnet ist. Wenn ein Abtastwert mit einem Fragmenttripel verknüpft ist, so bedeutet das, dass das diesem Fragmenttripel zugeordnete Fragment an diesem Abtastwert sichtbar ist.
  • In dem in 6D gezeigten Beispiel ist in der Abdeckmaske 620 ein Bitmuster "0 1 1 1" gespeichert. Der Wert "1" in den Bits 628, 630 und 632 der Abdeckmaske 620 verknüpft die Unterbildpunktabtastwerte S2-S4 mit dem gespeicherten Fragmenttripel 310, was anzeigt, dass das Fragment 302 an diesen Abtastpunkten S2-S4 sichtbar ist. Umgekehrt zeigt der Wert "0" in dem Bit 626 der Abdeckmaske 620 an, dass das Fragment 302 an dem Unterbildpunktabtastwert S1 nicht sichtbar ist. Es ist klar, dass die Aufgabe jedes Bitwerts umgekehrt werden kann, so dass der Bitwert "1" anzeigt, dass das Fragment an einem bestimmten Abtastpunkt nicht sichtbar ist, und dass der Bitwert "0" anzeigt, dass das Fragment sichtbar ist.
  • Bei der alternativen Ausführungsform, die in 6D gezeigt ist, verknüpft eine dritte Abdeckmaske 624 den Unterbildpunktabtastwert S4 mit dem dritten Fragmenttripel 410, das in dem Bildpunktspeicher 314 gespeichert ist. Die Zuordnung zwischen der dritten Abdeckmaske 624 und dem dritten Fragmenttripel 410 wird durch den Pfeil 625 angezeigt.
  • Das beispielhafte Bitmuster, das in der Abdeckmaske 624 gespeichert ist, lautet "0 0 0 1" und zeigt an, dass das dritte Fragment 400 nur an dem Abtastwert S4 sichtbar ist. Wie man aus 4 weiß, ist das neue Fragment 400 mit dem Fragmenttripel 410 verknüpft. Für das folgende veranschaulichende Beispiel wird das dritte Fragment 400 als transparent behandelt. (Es ist zu beachten, dass, falls das dritte Fragment 400 opak wäre, wie in Verbindung mit 4 beschrieben, das Bitmuster in der Abdeckmaske 620 von "0 1 1 1" zu "0 1 1 0" wechseln würde, um anzuzeigen, dass das Fragment 400 das Fragment 302 in dem Unterbildpunktabtastwert S4 verdeckt.)
  • Da das dritte Fragment 400 transparent ist, verknüpfen zwei Abdeckmasken 620, 624 den Unterbildpunktabtastwert S4 mit zwei gespeicherten Fragmenttripeln 310, 410. Die Bitwerte "1" in den Bitpositionen 632 der Abdeckmaske 620 und 624 zeigen an, dass beide Fragmente 302 und 400 an dem Unterbildpunktabtastwert S4 sichtbar sind. Im Allgemeinen kann jeder Unterbildpunktabtastwert S1-S4 mit mehreren gespei cherten Fragmenttripeln verknüpft werden, wobei ein Fragment opak und jedes andere Fragment transparent ist. Im Grunde können alle gespeicherten Fragmentwerte transparent sein, wenn ein Standardhintergrundfragmentwert verwendet wird.
  • Dementsprechend kann die hier beschriebene verbesserte A-Puffertechnik eine reihenfolgenunabhängige Transparenz unterstützen, das heißt, dass das System 100 keine Grundformen des Bildes 132 zu teilen braucht, um dem Grafikbeschleuniger 108 transparente Fragmente zu präsentieren, nachdem alle opaken Fragmente präsentiert sind, und das System 100 braucht auch keine transparenten Grundformen zu sortieren, um transparente Fragmente in Z-Tiefen-Reihenfolge zu präsentieren.
  • Zum Berechnen der Farbe des Bildpunkts 300 wird eine Farbe zuerst für jeden Unterbildpunktabtastwert S1-S4 berechnet, und dann werden die berechneten Farben kombiniert. Wenn ein Unterbildpunktabtastwert nur mit einem einzelnen opaken Fragment verknüpft ist, wie zum Beispiel der Abtastwert S1, so ist die Farbe für diesen Unterbildpunktabtastwert S1 die Farbe des zugeordneten gespeicherten Fragmentwerts 312.
  • Wenn ein Unterbildpunktabtastwert, wie zum Beispiel der Abtastwert S4, mit zwei gespeicherten Fragmenttripeln 310, 410 verknüpft ist, eines transparent 400 und das andere opak 302, so ist die Farbe für den Unterbildpunktabtastwert S4 die Summe der Farbbeiträge dieser zwei Fragmenttripel 310, 410. Der Farbbeitrag des transparenten Fragments 400 ist die Opazität dieses Fragments 400, wie durch den Wert angezeigt wird, der in dem Alphakanal gespeichert ist, multipliziert mit der Farbe dieses Fragments 400. Der Beitrag C des opaken Fragments 302 ist die Farbe dieses Fragments f(c) 302, multipliziert mit 1 minus die Opazität des transparenten Fragments f(o) 400, zum Beispiel C = f(c) × (1 – f(o)).
  • Die in den 6A-6D gezeigten beispielhaften Ausführungsformen können zufriedenstellende Antialiasing-Ergebnisse erzielen, indem sie zwei Fragmenttripel für vier Unterbildpunktabtastwerte speichern. Acht Unterbildpunktabtastwerte mit zwei gespeicherten Fragmenttripeln sehen gewöhnlich besser aus als vier Unterbildpunktabtastwerte mit Fragmenttripeln, können jedoch schlechter aussehen, wenn einer der zusätzlichen vier Unterbildpunktabtastwerte erfordert, dass eines der gespeicherte Tripel durch ein drittes Fragmenttripel ersetzt wird, und das dritte Fragmenttripel in dem Bildpunktspeicher zuletzt erscheint. Das Zuordnen von Speicher für ein drittes Fragmenttripel kann somit eine deutliche Verbesserung für acht Unterbildpunktabtastwerte im Vergleich zum Speichern von zwei Fragmenttripeln erbringen. Natürlich können die Antialiasing-Ergebnisse um so mehr an die Ergebnisse des typischen Sparse-Supersampling angenähert werden, je mehr Fragmenttripel gespeichert werden, aber jedes zusätzliche Fragmenttripel schmälert die Speichereinsparungen, die durch die verbesserten Supersampling-Techniken ermöglicht werden.
  • 7 veranschaulicht ein Flussdiagramm 700, das das Verfahren des Erzeugens eines Bildes 132 mittels der vorliegenden Erfindung beschreibt. Bei den ersten Schritten der Verarbeitung des Bildes 132 wird das Bild 132 in Fragmente aufgeteilt. Beim Verarbeiten jedes neuen Fragments bestimmt der Grafikbeschleuniger 108, ob das neue Fragment an einem der Unterbildpunktabtastwerte S1-S4, die von dem neuen Fragment bedeckt werden, sichtbar ist. Der Grafikbeschleuniger 108 vergleicht den Z-Tiefenwert des neuen Fragments mit dem Z-Tiefenwert des gespeicherten Fragments, das jedem bedeckten Unterbildpunktabtastwert S1-S4 zugeordnet ist (Schritt 702).
  • Wenn das neue Fragment einen kleineren Z-Tiefenwert als der Z-Tiefenwert eines gespeicherten Fragments für einen be deckten Unterbildpunktabtastwert S1-S4 hat, so befindet sich das neue Fragment vor dem gespeicherten Fragment und ist folglich sichtbar. Es besteht jedoch eine Ausnahme, wenn das neue Fragment einen Alphawert von 0,0 hat. In diesem Fall ist das neue Fragment vollständig transparent. Der Grafikbeschleuniger 108 braucht den Fragmentwert des neuen Fragments nicht zu speichern, weil das neue Fragment praktisch unsichtbar ist.
  • Wenn stattdessen das neue Fragment einen größeren Z-Tiefenwert als die Z-Tiefenwerte für alle bedeckten Unterbildpunktabtastwerte S1-S4 hat, so liegt das neue Fragment hinter einem oder mehreren der gespeicherten Fragmente und kann unsichtbar sein. Wenn das neue Fragment hinter opaken Vordergrundfragmenten liegt, so ist das neue Fragment unsichtbar, und das Verarbeiten des neuen Fragments für den Bildpunkt 134 ist abgeschlossen. Wenn jedoch das neue Fragment unmittelbar hinter einem transparenten Vordergrundfragment liegt, so ist das neue Fragment immer noch sichtbar.
  • Wenn das neue Fragment an einem der bedeckten Unterbildpunktabtastwerte sichtbar ist, so macht der Grafikbeschleuniger 108 die Verknüpfung zwischen jedem bedeckten Abtastwert und einem gespeicherten Fragment ungültig, wenn das neue Fragment das gespeicherte Fragment für diesen bedeckten Unterbildpunktabtastwert verdeckt. Bei der indexierten Sparse-Supersampling-Technik verwaltet der Grafikbeschleuniger 108 Steuerbits, um die Gültigkeit jedes Index' zu verfolgen, und macht jeden Index ungültig, der einen bedeckten Unterbildpunktabtastwert mit einem bedeckten Fragment verknüpft. Die Steuerbits können den Grafikbeschleuniger 108 anweisen, die Standardhintergrundfarbe zu verwenden, wenn keine Fragmente einen Unterbildpunktabtastwert bedecken. Bei der verbesserten A-Puffertechnik bleiben die Bits in der Abdeckmaske, die jedem bedeckten Unterbildpunktabtastwert zugeordnet sind, unver ändert, wenn das neue Fragment transparent ist, und werden auf "0" gesetzt, wenn das neue Fragment opak ist.
  • Dann wird in Schritt 708 die Anzahl der Verknüpfungen gezählt, die zu jedem Fragmenttripel zeigen. Bei der indexierten Sparse-Supersampling-Technik zählt Schritt 708 die Anzahl von Indizes, die mit diesem gespeicherten Fragmenttripel verknüpft sind. Bei der verbesserten A-Puffertechnik zählt Schritt 708 die Anzahl der Bits in jeder Abdeckmaske, die einen Bitwert "1" haben.
  • Ein Fragmenttripel ist frei und verfügbar, wenn keine Verknüpfungen auf das Fragmenttripel zeigen. In diesem Fall kann ein neues Fragmenttripel, das dem neuen Fragment zugeordnet ist, das freie Fragmenttripel ersetzen.
  • Wenn Schritt 710 feststellt, dass ein Fragmenttripel frei ist, so wird die neue Farbe, die dem neuen Fragment zugeordnet ist, in dem freien Fragmenttripel gespeichert (Schritt 712). In Schritt 714 werden die Verknüpfungen der Unterbildpunktabtastwerte, die von dem neuen Fragment bedeckt werden, zu dem neuen Fragmenttripel gesetzt.
  • Wenn Schritt 710 feststellt, dass keine Fragmenttripel frei sind, so wählt ein Ersetzungsverfahren, wie zum Beispiel die oben beschriebene Farbunterschiedtechnik eines der gespeicherten Fragmenttripel zum Ersetzen aus (Schritt 716). "Ersetzen" meint das Ändern der Farbe, Z-Tiefe und Matrizenwerte, die in dem ausgewählten Fragmenttripel gespeichert sind, zu den Farb-, Z-Tiefen- und Matrizenwerten des neuen Fragmenttripels.
  • In Schritt 718 wird die neue Farbe in das ausgewählte Fragmenttripel geschrieben. Die Verknüpfungen, die ursprünglich zu dem ausgewählten Fragmenttripel zeigten, zeigen noch immer auf dieses Fragmenttripel. Da das ausgewählte Fragmenttripel nun einen Wert enthält, der die neue Farbe darstellt, werden die Unterbildpunktabtastwerte, die solchen Verknüpfungen zugeordnet sind, dadurch der neuen Farbe zugeordnet. Diese Verknüpfungen, die den Unterbildpunktabtastwerten entsprechen, die durch das neue Fragment bedeckt werden, werden so gesetzt, dass sie auf die neue Farbe zeigen (Schritt 714).
  • In Schritt 720 wird die Bildpunktfarbe aus den Unterbildpunktabtastwerten berechnet, wie oben im Zusammenhang mit den 6A-6D beschrieben. Die Verknüpfungen, die den Unterbildpunktabtastwerten S1-S4 zugeordnet sind, zeigen auf die gespeicherten Farben, die verwendet werden, um die Farbe des Bildpunkts 134 zu erzeugen. Dementsprechend kann sich die Bildpunktfarbe mit dem Erscheinen jedes neuen Fragments in dem Bildpunkt 134 ändern.
  • Wenn der Grafikbeschleuniger 108 in Schritt 722 mit der Verarbeitung aller Fragmente fertig ist, so sind die Bildpunkte zur Anzeige bereit (Schritt 724).
  • In 7 berechnet ein alternatives Verfahren zum Erzeugen eines Bildes die Farbe des Bildpunkts in Schritt 720', was in Strichlinie veranschaulicht ist, bevor es bestimmt, ob Fragmenttripel verfügbar sind, in denen der neue Fragmentwert gespeichert werden kann, der dem neuen Fragment zugeordnet ist. Die existierenden Farben, die in den Fragmenttripeln gespeichert sind, und der neue Farbwert vereinen sich zu der Bildpunktfarbe. Der Effekt besteht darin, die Farbe so zu berechnen, als ob ein zusätzliches Tripel verfügbar wäre.
  • Nach dem Berechnen der Bildpunktfarbe in Schritt 720' kann das alternative Verfahren dann eine existierende gespeicherte Farbe durch das neue Fragmenttripel ersetzen, wie oben im Zusammenhang mit den Schritten 716-718 beschrieben. Wenn jedes Fragment, das nach diesem neuen Fragment verarbeitet wird, nicht zu einer neuen Berechnung der Bildpunkt farbe führt, so gehen trotz des Ersetzens keine Farbdaten verloren.
  • Es versteht sich, dass die oben beschriebenen Ausführungsformen lediglich Veranschaulichungen der Prinzipien der Erfindung sind. Der Geltungsbereich der Erfindung wird allein durch die angehängten Ansprüche begrenzt.

Claims (11)

  1. Computergrafisches Verfahren zum Erzeugen einer Farbe eines Bildpunktes (300) eines Bildes (132) einer gerenderten Szene, wobei der Bildpunkt mehreren Fragmenten (301, 302) zugewiesen ist, von denen jedes durch Anhängen einer grafischen Grundform an die Grenzen des Bildpunktes (300) bestimmt wird, wobei das Verfahren folgende Schritte umfasst: Speichern bis zu einer vorgegebenen Anzahl von Fragmentwerten (310, 312) für den Bildpunkt (300), wobei jeder gespeicherte Fragmentwert (310, 312) einem Fragment (302, 301) zugewiesen ist, das in dem Bildpunkt (300) sichtbar ist; Bestimmen eines neuen Fragmentwertes (410) eines neuen Fragments (400), das in dem Bildpunkt (300) sichtbar ist, wobei wenigstens ein weiteres Fragment mit einem gespeicherten Fragmentwert immer noch in dem Bildpunkt sichtbar ist, nachdem das neue Fragment (400) bestimmt wurde; Auswählen eines der Fragmente, die immer noch in dem Bildpunkt (300) sichtbar sind; und Ersetzen des gespeicherten Fragmentwertes des ausgewählten Fragments durch den neuen Fragmentwert (410), und wobei die gespeicherten Fragmentwerte anschließend zum Erzeugen der Farbe des Bildpunktes (300) verwendet werden.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Ersetzens das Überschreiben des gespeicherten Fragmentwertes des ausgewählten Fragments mit dem neuen Fragmentwert (410) beinhaltet.
  3. Verfahren nach Anspruch 1, wobei das neue Fragment (400) Teil einer anderen Fläche des Bildes (132) ist als jedes der Fragmente (301, 302), die einem gespeicherten Fragmentwert zugewiesen sind.
  4. Verfahren nach Anspruch 1, wobei jeder gespeicherte Fragmentwert (310, 312) einen Z-Tiefenwert (306) enthält und wobei der Schritt des Auswählens den gespeicherten Fragmentwert (310, 312) mit einem Z-Tiefenwert (306) auswählt, der größer ist als der Z-Tiefenwert (306) jedes anderen gespeicherten Fragmentwertes.
  5. Verfahren nach Anspruch 1, wobei jeder Fragmentwert (310, 312) einen Farbwert (304) enthält, und wobei das Verfahren des Weiteren den Schritt des Vergleichens des Farbwertes des neuen Fragmentwertes (410) mit dem Farbwert (304) jedes gespeicherten Fragmentwertes (310, 312) umfasst, und wobei der Schritt des Auswählens den gespeicherten Fragmentwert (310, 312) mit dem Farbwert (304) auswählt, der eine numerisch kleinere Farbdifferenz erbringt als der Farbwert jedes anderen gespeicherten Fragmentwertes, wenn er mit dem Farbwert des neuen Fragmentwertes (410) verglichen wird.
  6. Verfahren nach Anspruch 5, wobei der Farbwert (304) jedes Fragmentwertes (310, 312, 410) mehrere Farbkanalwerte enthält und wobei der Schritt des Vergleichens Folgendes beinhaltet: Bestimmen einer Farbdifferenz zwischen dem Farbwert des neuen Fragmentwertes (410) und dem Farbwert (304) eines bestimmten der gespeicherten Fragmentwerte (310, 312) durch: Berechnen, für jeden Farbkanalwert, einer absoluten Wertdifferenz zwischen jedem Farbkanalwert des neuen Farbwertes und einem entsprechenden Farbkanalwert des Farbwertes eines bestimmten gespeicherten Fragmentwertes; Summieren der absoluten Wertdifferenzen, die für jeden Farbkanalwert berechnet wurden, des Weiteren umfassend den folgenden Schritt: Multiplizieren der Summe der absoluten Wertdifferenzen mit einer Fläche des Bildpunktes (300), die von dem Fragment bedeckt wird, das dem bestimmten gespeicherten Fragmentwert zugewiesen ist.
  7. Verfahren nach Anspruch 5, wobei der Schritt des Vergleichens das Vergleichen des Farbwertes (304) jedes gespeicherten Fragmentwertes (310, 312) mit dem Farbwert jedes anderen gespeicherten Fragmentwertes enthält und wobei der Schritt des Auswählens den gespeicherten Fragmentwert (310, 312) mit dem Farbwert (304) auswählt, der eine numerisch kleinste Farbdifferenz erbringt, wenn er mit dem Farbwert des neuen Fragmentwertes (410) und mit dem Farbwert jedes anderen gespeicherten Fragmentwertes verglichen wird.
  8. Verfahren nach Anspruch 1, wobei der Schritt des Auswählens einen gespeicherten Fragmentwert (310, 312) auswählt, der, wenn er durch den neuen Fragmentwert (410) ersetzt werden würde, eine visuell weniger erkennbare Farbdifferenz entstehen lassen würde, als sie für jeden anderen gespeicherten Fragmentwert entstände, wenn dieser andere gespeicherte Fragmentwert durch den neuen Fragmentwert (410) ersetzt werden würde.
  9. Verfahren nach Anspruch 1, das des Weiteren folgende Schritte umfasst: Bestimmen einer Fläche des Bildpunktes (300), die von jedem Fragment (301, 302) bedeckt wird, für die das Fragment sichtbar ist; und wobei der Schritt des Auswählens den Fragmentwert des Fragments mit einer kleineren Fläche sichtbarer Überdeckung als jedes andere Fragment auswählt.
  10. Verfahren nach Anspruch 1, das des Weiteren folgende Schritte umfasst: Zuordnen eines Zeichenträger-Bits zu dem Bildpunkt (300); Setzen des Zeichenträger-Bits auf einen vorgegebenen Wert; und wobei der Schritt des Ersetzens den gespeicherten Fragmentwert (310, 312) durch den neuen Fragmentwert (410) ersetzt, wenn das Zeichenträger-Bit auf den vorgegebenen Wert gesetzt wird; und Setzen des Zeichenträger-Bits auf einen zweiten vorgegebenen Wert, wenn der gespeicherte Fragmentwert (310, 312) zum Ersetzen ausgewählt wird.
  11. Computergrafikvorrichtung (100), die dafür geeignet ist, eine Farbe eines Bildpunktes (300) eines Bildes (132) einer gerenderten Szene zu erzeugen, wobei der Bildpunkt (300) mehreren Fragmenten (301, 302) zugewiesen ist, die durch Anhängen einer grafischen Grund form an die Grenzen des Bildpunktes (300) bestimmt werden, wobei die Vorrichtung Folgendes umfasst: Mittel (106) zum Speichern bis zu einer vorgegebenen Anzahl von Fragmentwerten für den Bildpunkt (300), wobei jeder gespeicherte Fragmentwert (310, 312) einem Fragment (302, 301) zugewiesen ist, das in dem Bildpunkt (300) sichtbar ist; Mittel (102) zum Bestimmen eines neuen Fragmentwertes (410) eines neuen Fragments (400), das in dem Bildpunkt (300) sichtbar ist, wobei wenigstens ein weiteres Fragment mit einem gespeicherten Fragmentwert immer noch in dem Bildpunkt sichtbar ist, nachdem das neue Fragment (400) bestimmt wurde; Mittel (102) zum Auswählen eines der Fragmente, die immer noch in dem Bildpunkt (300) sichtbar sind; und Mittel (102) zum Ersetzen des gespeicherten Fragmentwertes (310, 312) des ausgewählten Fragments durch den neuen Fragmentwert (410), und wobei die gespeicherten Fragmentwerte anschließend zum Erzeugen der Farbe des Bildpunktes (300) verwendet werden.
DE69835408T 1997-10-15 1998-09-24 Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen Expired - Fee Related DE69835408T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US950557 1997-10-15
US08/950,557 US6204859B1 (en) 1997-10-15 1997-10-15 Method and apparatus for compositing colors of images with memory constraints for storing pixel data

Publications (2)

Publication Number Publication Date
DE69835408D1 DE69835408D1 (de) 2006-09-14
DE69835408T2 true DE69835408T2 (de) 2007-02-01

Family

ID=25490599

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69835408T Expired - Fee Related DE69835408T2 (de) 1997-10-15 1998-09-24 Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen

Country Status (3)

Country Link
US (1) US6204859B1 (de)
EP (1) EP0910044B1 (de)
DE (1) DE69835408T2 (de)

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6611287B1 (en) * 1997-11-28 2003-08-26 Sony Corporation Camera signal processing apparatus and camera signal processing method
US6489956B1 (en) * 1998-02-17 2002-12-03 Sun Microsystems, Inc. Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects
US6496186B1 (en) * 1998-02-17 2002-12-17 Sun Microsystems, Inc. Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for reduced artifacts
US6459428B1 (en) * 1998-02-17 2002-10-01 Sun Microsystems, Inc. Programmable sample filtering for image rendering
US6483504B1 (en) * 1998-02-17 2002-11-19 Sun Microsystems, Inc. Graphics system having a super sampled-sample buffer with efficient storage of sample position information
US6466206B1 (en) * 1998-02-17 2002-10-15 Sun Microsystems, Inc. Graphics system with programmable real-time alpha key generation
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
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
AU5686199A (en) 1998-08-20 2000-03-14 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6577317B1 (en) 1998-08-20 2003-06-10 Apple Computer, Inc. Apparatus and method for geometry operations in a 3D-graphics pipeline
US6429876B1 (en) * 1998-08-28 2002-08-06 Ati International Srl Method and apparatus for video graphics antialiasing with memory overflow optimization
US6636222B1 (en) 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US6661422B1 (en) 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6573905B1 (en) 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US7982740B2 (en) 1998-11-09 2011-07-19 Broadcom Corporation Low resolution graphics mode support using window descriptors
US7446774B1 (en) * 1998-11-09 2008-11-04 Broadcom Corporation Video and graphics system with an integrated system bridge controller
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
ATE267439T1 (de) * 1998-11-09 2004-06-15 Broadcom Corp Anzeigesystem zur mischung von graphischen daten und videodaten
US6573889B1 (en) * 1999-02-08 2003-06-03 Adobe Systems Incorporated Analytic warping
JP2000293705A (ja) * 1999-04-01 2000-10-20 Mitsubishi Electric Corp 3次元グラフィックス用描画装置、3次元グラフィックス用描画方法および3次元グラフィックス用描画プログラムを記録した媒体
US6895127B1 (en) * 1999-09-10 2005-05-17 Arcsoft, Inc. Photomontage using multiple layer placement and color variation
US9668011B2 (en) 2001-02-05 2017-05-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Single chip set-top box system
US6538656B1 (en) 1999-11-09 2003-03-25 Broadcom Corporation Video and graphics system with a data transport processor
US8913667B2 (en) * 1999-11-09 2014-12-16 Broadcom Corporation Video decoding system having a programmable variable-length decoder
US6603482B1 (en) * 2000-01-31 2003-08-05 Evans & Sutherland Computer Corporation Screen space effects utilizing the alpha channel and the alpha buffer
US6633297B2 (en) * 2000-08-18 2003-10-14 Hewlett-Packard Development Company, L.P. System and method for producing an antialiased image using a merge buffer
US8692844B1 (en) * 2000-09-28 2014-04-08 Nvidia Corporation Method and system for efficient antialiased rendering
US6750869B1 (en) * 2000-10-13 2004-06-15 Sony Corporation Method and design for improved fragment processing
DE60126387D1 (de) * 2000-10-27 2007-03-22 Canon Kk Bilderzeugungsverfahren und Bilderzeugungsgerät
GB2377870B (en) * 2001-05-18 2005-06-29 Canon Kk Method and apparatus for generating confidence data
JP3696584B2 (ja) * 2001-09-26 2005-09-21 株式会社ソニー・コンピュータエンタテインメント 描画処理方法及び装置、半導体デバイス、描画処理プログラム及び記録媒体
US7508398B1 (en) 2002-08-27 2009-03-24 Nvidia Corporation Transparent antialiased memory access
US7336283B2 (en) * 2002-10-24 2008-02-26 Hewlett-Packard Development Company, L.P. Efficient hardware A-buffer using three-dimensional allocation of fragment memory
US7764833B2 (en) * 2003-02-13 2010-07-27 Ati Technologies Ulc Method and apparatus for anti-aliasing using floating point subpixel color values and compression of same
US7643679B2 (en) 2003-02-13 2010-01-05 Ati Technologies Ulc Method and apparatus for block based image compression with multiple non-uniform block encodings
US8111928B2 (en) * 2003-02-13 2012-02-07 Ati Technologies Ulc Method and apparatus for compression of multi-sampled anti-aliasing color data
US6927775B2 (en) * 2003-03-03 2005-08-09 Sun Microsystems, Inc. Parallel box filtering through reuse of existing circular filter
US7667710B2 (en) 2003-04-25 2010-02-23 Broadcom Corporation Graphics display system with line buffer control scheme
US8775112B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for increasing die yield
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8063916B2 (en) * 2003-10-22 2011-11-22 Broadcom Corporation Graphics layer reduction for video composition
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US7450120B1 (en) * 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling
US7656417B2 (en) * 2004-02-12 2010-02-02 Ati Technologies Ulc Appearance determination using fragment reduction
US20050259108A1 (en) * 2004-05-21 2005-11-24 Brett Chladny System and method for dynamically generating images using repeatable textures
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8134575B2 (en) * 2004-09-30 2012-03-13 Microsoft Corporation Maintaining graphical presentations based on user customizations
US7348982B2 (en) 2004-09-30 2008-03-25 Microsoft Corporation Method, system, and computer-readable medium for creating and laying out a graphic within an application program
US8510657B2 (en) 2004-09-30 2013-08-13 Microsoft Corporation Editing the text of an arbitrary graphic via a hierarchical list
JP4692956B2 (ja) * 2004-11-22 2011-06-01 株式会社ソニー・コンピュータエンタテインメント 描画処理装置および描画処理方法
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
US7750924B2 (en) * 2005-03-15 2010-07-06 Microsoft Corporation Method and computer-readable medium for generating graphics having a finite number of dynamically sized and positioned shapes
US7743325B2 (en) * 2005-03-15 2010-06-22 Microsoft Corporation Method and computer-readable medium for fitting text to shapes within a graphic
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7747944B2 (en) 2005-06-30 2010-06-29 Microsoft Corporation Semantically applying style transformation to objects in a graphic
US20070052704A1 (en) * 2005-09-08 2007-03-08 Arm Limited 3D graphics image formation
US7433191B2 (en) * 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US7791617B2 (en) * 2005-12-19 2010-09-07 Nvidia Corporation Method and system for rendering polygons having abutting edges
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US8438486B2 (en) * 2006-02-09 2013-05-07 Microsoft Corporation Automatically converting text to business graphics
US8928676B2 (en) * 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US8477134B1 (en) 2006-06-30 2013-07-02 Nvidia Corporation Conservative triage of polygon status using low precision edge evaluation and high precision edge evaluation
US8427487B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US7891818B2 (en) 2006-12-12 2011-02-22 Evans & Sutherland Computer Corporation System and method for aligning RGB light in a single modulator projector
US20080259079A1 (en) * 2007-04-18 2008-10-23 Boxman Benjamin D Method and system for volume rendering
US8724483B2 (en) * 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8638341B2 (en) * 2007-10-23 2014-01-28 Qualcomm Incorporated Antialiasing of two-dimensional vector images
US8063903B2 (en) * 2007-11-09 2011-11-22 Nvidia Corporation Edge evaluation techniques for graphics hardware
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8358317B2 (en) 2008-05-23 2013-01-22 Evans & Sutherland Computer Corporation System and method for displaying a planar image on a curved surface
US8702248B1 (en) 2008-06-11 2014-04-22 Evans & Sutherland Computer Corporation Projection method for reducing interpixel gaps on a viewing surface
US8081821B1 (en) * 2008-09-16 2011-12-20 Adobe Systems Incorporated Chroma keying
GB0819570D0 (en) * 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US8077378B1 (en) 2008-11-12 2011-12-13 Evans & Sutherland Computer Corporation Calibration system and method for light modulation device
US20100182334A1 (en) * 2009-01-22 2010-07-22 Global Graphics Software Limited Method and system for improved display of sampled data differences
US8686999B2 (en) * 2009-02-02 2014-04-01 Microsoft Corporation Dynamic fragment coverage antialiasing
US20110063305A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing techniques on heterogeneous graphics processing units
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US8799325B2 (en) 2010-03-12 2014-08-05 Microsoft Corporation Reordering nodes in a hierarchical structure
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US9477597B2 (en) 2011-03-25 2016-10-25 Nvidia Corporation Techniques for different memory depths on different partitions
US8701057B2 (en) 2011-04-11 2014-04-15 Nvidia Corporation Design, layout, and manufacturing techniques for multivariant integrated circuits
US9529712B2 (en) 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
US9641826B1 (en) 2011-10-06 2017-05-02 Evans & Sutherland Computer Corporation System and method for displaying distant 3-D stereo on a dome surface
US9235926B2 (en) * 2012-12-24 2016-01-12 Intel Corporation Techniques for improving MSAA rendering efficiency
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
US9953455B2 (en) * 2013-03-13 2018-04-24 Nvidia Corporation Handling post-Z coverage data in raster operations
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
US9305368B2 (en) * 2013-06-21 2016-04-05 Intel Corporation Compression and decompression of graphics data using pixel region bit values
US9646412B1 (en) * 2013-07-19 2017-05-09 Dassault Systemes Solidworks Corporation Pre-sorted order independent transparency
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation
US9633452B2 (en) * 2014-12-18 2017-04-25 Intel Corporation Resolving multi-sampled anti-aliasing buffers into single sampled buffers
US10387991B2 (en) 2016-07-01 2019-08-20 Intel Corporation Method and apparatus for frame buffer compression
US11983809B2 (en) 2022-05-23 2024-05-14 Rockwell Collins, Inc. A-Buffer dynamic allocation

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0445451A1 (de) 1990-03-07 1991-09-11 International Business Machines Corporation Bildverarbeitungsgerät um unverfälschte Bilder herzustellen
US5123085A (en) * 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons
GB9009127D0 (en) * 1990-04-24 1990-06-20 Rediffusion Simulation Ltd Image generator
US5175805A (en) * 1990-10-30 1992-12-29 Sun Microsystems, Inc. Method and apparatus for sequencing composite operations of pixels
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
GB2278524B (en) 1993-05-28 1997-12-10 Nihon Unisys Ltd Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency
US5432898A (en) 1993-09-20 1995-07-11 International Business Machines Corporation System and method for producing anti-aliased lines
US5581680A (en) 1993-10-06 1996-12-03 Silicon Graphics, Inc. Method and apparatus for antialiasing raster scanned images
US5668999A (en) 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US5594854A (en) * 1995-03-24 1997-01-14 3Dlabs Inc. Ltd. Graphics subsystem with coarse subpixel correction
US5646751A (en) * 1995-05-25 1997-07-08 Xerox Corporation Encoding method for deferred anti-aliasing
US5852443A (en) * 1995-08-04 1998-12-22 Microsoft Corporation Method and system for memory decomposition in a graphics rendering system
EP0850462B1 (de) * 1995-08-04 2006-10-04 Microsoft Corporation Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
US5864342A (en) * 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US5854631A (en) * 1995-11-22 1998-12-29 Silicon Graphics, Inc. System and method for merging pixel fragments based on depth range values
US5929862A (en) * 1996-08-05 1999-07-27 Hewlett-Packard Co. Antialiasing system and method that minimize memory requirements and memory accesses by storing a reduced set of subsample information

Also Published As

Publication number Publication date
EP0910044A3 (de) 2000-05-03
EP0910044A2 (de) 1999-04-21
DE69835408D1 (de) 2006-09-14
EP0910044B1 (de) 2006-08-02
US6204859B1 (en) 2001-03-20

Similar Documents

Publication Publication Date Title
DE69835408T2 (de) Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen
DE69833531T2 (de) Vollszenen-Antialiasing mit verbesserten Überabtastungstechniken
DE3586506T2 (de) Monochromatische darstellung von farbbildern.
DE69133044T2 (de) Punktgrössensteuerverfahren bei digitaler Halbtonrasterung mit mehrzelligen Schwellenmatrix
DE3853393T2 (de) Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung.
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE69715106T2 (de) Anti-Alias-Unterpixel-Zeichenpositionierung mit Grauwertmaskierungstechniken
DE3853664T2 (de) Farbzellentextur.
DE3687668T2 (de) Verfahren und einrichtung zur verbesserung der bildqualitaet in einem nach dem rasterverfahren arbeitenden anzeigegeraet.
DE3855231T2 (de) Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing
DE69428061T2 (de) Paralleles Fehlerdiffusionsverfahren und -gerät
DE68928744T2 (de) Verfahren zum senkrechten Filtern bei rasterabgetasteten Anzeigevorrichtungen
DE3546136C2 (de)
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE69127915T2 (de) System und Verfahren von Prioritätsfarbabbildung
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE69128548T2 (de) Verbesserungen in Steuerdatenfeldern von Bildelementen
DE69127516T2 (de) Verfahren und Gerät zur Bilderzeugung
DE69124758T2 (de) Verfahren und Vorrichtung zur Farbbildkonturbestimmung
DE69413035T2 (de) Antialiasing-verfahren und -vorrichtung mit automatischer justierung von horizontalen und vertikalen rändern an einem zielgitter
DE3712639A1 (de) Verfahren und einrichtung zum abbilden von volumendaten
DE69424451T2 (de) Halbtonzitteroptimierungstechniken
CH646788A5 (de) Verfahren und schaltungsanordnung zum erkennen von farben.
DE10137164A1 (de) Graustufen-Halbton-Bearbeitung
DE3315148C2 (de)

Legal Events

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