DE69833531T2 - Vollszenen-Antialiasing mit verbesserten Überabtastungstechniken - Google Patents

Vollszenen-Antialiasing mit verbesserten Überabtastungstechniken Download PDF

Info

Publication number
DE69833531T2
DE69833531T2 DE69833531T DE69833531T DE69833531T2 DE 69833531 T2 DE69833531 T2 DE 69833531T2 DE 69833531 T DE69833531 T DE 69833531T DE 69833531 T DE69833531 T DE 69833531T DE 69833531 T2 DE69833531 T2 DE 69833531T2
Authority
DE
Germany
Prior art keywords
fragment
pixel
value
stored
triple
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
DE69833531T
Other languages
English (en)
Other versions
DE69833531D1 (de
Inventor
P Norman Palo Alto Jouppi
M Joel 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
Application granted granted Critical
Publication of DE69833531D1 publication Critical patent/DE69833531D1/de
Publication of DE69833531T2 publication Critical patent/DE69833531T2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft im Allgemeinen Computergrafiken und insbesondere ein Verfahren und ein Gerät zum Verringern von Aliasingartefakten in Bildern, die durch Bildpunkte definiert sind.
  • ALLGEMEINER STAND DER TECHNIK
  • Bei Anzeigesystemen auf Bildpunktgrundlage sind visuelle Artefakte, wie zum Beispiel zackige Linien auf einen als Aliasing bekannten Effekt zurückzuführen. Aliasing tritt aufgrund der getrennten Beschaffenheit von Bildpunkten, dem kleinsten auf einem Anzeigebildschirm adressierbaren Bildelement auf. Bildpunkte sind auf einem Anzeigebildschirm als eine rechteckige Anordnung von Punkten angeordnet. Aliasingartefakte können auftreten, wenn ein ganzer Bildpunkt eine Lichtstärke oder Farbe hat, die auf einem unzureichenden Abtastwert von Punkten innerhalb dieses Bildpunkts beruht. Techniken zum Minimieren der Aliasingartefakte werden Antialiasing genannt.
  • Eine Antialiasing-Technik ist das Supersampling. Beim Supersampling werden mehr Abtastwerte eines Bilds genommen als Bildpunkte anzuzeigen sind. Solche Abtastwerte werden an Unterbildpunktpositionen innerhalb jedes Bildpunkts genommen. Die Farbe und die Stärke, die für jeden Bildpunkt angezeigt wird, ergibt sich aus dem Kombinieren der Unterbildpunktabtastwerte.
  • Die Qualität des Antialiasing, die man durch Supersampling erzielt, wird von dem Grad beeinflusst, bis zu welchem Bildpunkte in Unterbildpunkte aufgeteilt sind, und von einer Anzahl der Unterbildpunkte, die für jeden Bildpunkt abgetastet werden. Je mehr Unterbildpunkte pro Bildpunkt bestehen, desto feiner ist im Allgemeinen die Auflösung des Bilds; und je mehr Unterbildpunkte pro Bildpunkt abgetastet werden, desto besser ist der Antialiasing-Effekt. Ein Raster von 8 × 8 Unterbildpunkten bietet vier Mal so viele mögliche Abtastwertlagen wie ein Raster zu 4 × 4 Unterbildpunkten. Daher liefert das Abtasten aller vierundsechzig Unterbildpunkte eines Rasters zu 8 × 8 vierundsechzig Mal so viele Bildpunktdaten wie das Abtasten von nur einer der vierundsechzig Unterbildpunktlagen.
  • Das Abtasten an jeder Unterbildpunktposition, das Vollszenen-Supersampling genannt wird, ist jedoch in der Umsetzung kostspielig. Jeder Unterbildpunktabtastwert erfordert Speicher und verbraucht Speicherbandbreite. Die Menge an Berechnung, die erforderlich ist, um den angezeigten Bildpunktwert abzuleiten, steigt mit der Anzahl der genommenen Abtastwerte. Daher haben die Probleme des Vollszenen-Supersamplings zum Sparse-Supersampling geführt, bei dem nur ein Teil der Unterbildpunktpositionen abgetastet wird. In dem 8 × 8-Mal Raster zum Beispiel, würden nur acht der vierundsechzig Unterbildpunkte abgetastet, um einen Anzeigewert für einen Bildpunkt zu ergeben. Ein solches Verfahren ist aus EP-A2-0 463 700 bekannt.
  • Acht Unterbildpunktabtastwerte pro Bildpunkt brauchen immer noch beträchtlichen Speicherplatz. Wenn jeder Bildpunkt acht Byte pro Abtastwert braucht, brauchen acht Abtastwerte vierundsechzig Byte. Für eine Anzeige zu 1600 × 1200 Bildpunkten wären 123 MByte Speicher erforderlich.
  • Es besteht daher ein Bedarf für ein Verfahren und ein Gerät, die die Anforderungen an Speicherkapazität und Bandbreite verringern, die mit den Antialiasing-Techniken des früheren Stands der Technik verbunden sind und die gleichzeitig die Aliasingartefakte in Bildern effektiv verringern.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Diese Erfindung hat die Aufgabe, Aliasingartefakte in grafischen Bildern zu verringern, indem verbesserte Supersampling-Techniken angewandt werden. Die Erfindung erlaubt es, diese Artefakte effektiv zu minimieren, während die Anforderungen an Speicherkapazität und Bandbreite der Antialiasing-Techniken des früheren Stands der Technik verringert werden.
  • In ihrer weitesten Form beruht die vorliegende Erfindung in einem Verfahren und einem Gerät gemäß Anspruch 1 und 11 jeweils zum Verringern der Aliasingartefakte in einem durch Bildpunkte definierten Bild. Wie beschrieben, wählt das Verfahren Unterbildpunktpositionen in einem Bildpunkt als Abtastpunkte aus. Ein Fragmentwert, der einem Fragment des Bilds zugewiesen ist, wird gespeichert. Dieses Fragment bedeckt einen oder mehrere der ausgewählten Abtastpunkte. Jeder bedeckte Abtastpunkt wird mit dem gespeicherten Fragmentwert verbunden, um das Erzeugen einer Farbe des Bildpunkts unter Verwenden des Fragmentwerts zu ermöglichen. Die erzeugte Farbe verbessert die empfundene Qualität des Bilds durch Reduzieren von Aliasingartefakten.
  • Vorzugsweise wird jedem bedeckten Abtastpunkt ein Index zugewiesen und ein Wert wird in jedem Index gespeichert, um auf den gespeicherten Fragmentwert zu zeigen.
  • Ferner wird dem gespeicherten Fragmentwert ein Bitmuster zugewiesen. Jedes Bit in dem Muster wird einem der Abtastpunkte zugewiesen. Ein Wert wird in jedem Bit gespeichert und zeigt an, ob der diesem Bit zugewiesene Abtastpunkt von dem Fragment bedeckt wird oder nicht.
  • Wie unten beschrieben, wird ein neues sichtbares Fragment verarbeitet, und der gespeicherte Fragmentwert wird mit dem Fragmentwert ersetzt, der dem neuen Fragment zugewiesen ist.
  • Vorteilhafterweise werden Adressen des Speichers dem Bildpunkt zum Speichern einer vorausbestimmten Anzahl von Fragmentwerten zugewiesen, wobei die vorausbestimmte Anzahl kleiner ist als die Anzahl der Abtastpunkte.
  • Was das Gerät betrifft, weist die Anordnung ein Grafikgerät auf, das Unterbildpunktpositionen in einem Bildpunkt als Abtastpunkte auswählt, und einen Speicher, der mit dem Grafikgerät gekoppelt ist. Der Speicher speichert einen Fragmentwert, der einem Fragment des Bilds zugewiesen ist. Dieses Fragment deckt einen oder mehrere der Abtastpunkte in dem Bildpunkt. Das Grafikgerät verbindet jeden bedeckten Abtastpunkt mit dem gespeicherten Fragmentwert, um das Erzeugen einer Farbe des Bildpunkts unter Verwenden des Fragmentswerts zu erlauben. Wenn der Bildpunkt wiedergegeben wird, verbessert die erzeugte Farbe die empfundene Qualität des Bilds, indem Aliasingartefakte verringert werden.
  • Was einen Speicher zum Speichern der Daten betrifft, die verwendet werden, um eine Farbe für einen Bildpunkt, der in Unterbildpunkte partitioniert ist, zusammenzustellen, weist die beschriebene Anordnung eine Mehrzahl von Adressen auf, die jeweils einen Fragmentwert speichern. Jeder gespeicherte Fragmentwert umfasst einen Farbwert und ist einem Fragment eines Bilds zugewiesen, das einen der Unterbildpunkte deckt. Eine andere Adresse speichert eine Vielzahl von Indexen. Jeder Index ist einem der Unterbildpunkte zugewiesen und umfasst einen Indexwert, der auf eine der Mehrzahl von Adressen zeigt, die einen bestimmten Fragmentwert speichern, um den mit dem Index zugewiesenen Unterbildpunkt mit dem Farbwert des bestimmten Fragmentwerts zu verbinden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Ein detaillierteres Verstehen der Erfindung ergibt sich aus der folgenden Beschreibung einer bevorzugten Ausführungsform, die beispielhaft gegeben wird und unter Bezugnahme auf die anliegenden Zeichnungen zu verstehen ist, in welchen:
  • 1 ein Blockschaltbild eines beispielhaften Computergrafiksystems ist, das zum Ausführen der Erfindung verwendet werden kann;
  • 2A bis 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 bis 2C mit zwei Fragmenttripeln darstellt, die in einem Bildpunktspeicher gespeichert sind;
  • 4 ein anderes Verbinden von Unterbildpunktabtastwerten darstellt, wenn ein drittes Fragment in einem Bildpunkt auftritt;
  • 5A bis 5C alternative Verbindungen von Unterbildpunktabtastwerten für den Fall darstellen, dass ein drittes Fragment in einem Bildpunkt auftritt;
  • 6A bis 6B eine logische Darstellung des Bildpunktspeichers darstellen, der Indexe zu den gespeicherten Fragmenttripeln enthält,
  • 6C bis 6D eine logische Darstellung des Bildpunktspeichers darstellen, der Deckmasken enthält, die den gespeicherten Fragmenttripeln zugewiesen sind, und
  • 7 ein Flussdiagramm darstellt, 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) grafische Bilder zum Anzeigen gemäß den Konzepten der vorliegenden Erfindung erzeugen kann. Das Computersystem 100 kann eines einer Mehrzahl von Rastergrafiksystemen sein, wie zum Beispiel ein Arbeitsplatzrechner, eine Workstation, oder ein Mainframe-Computer.
  • In dem Computersystem 100 stellt ein System-Chipset 104 eine Schnittstelle zwischen einer Verarbeitungseinheit 102, einem Hauptspeicher 106, einem Grafikbeschleuniger 108 und Geräten (nicht gezeigt) auf einem E/A-Bus 110 dar. Die Verarbeitungseinheit 102 ist mit dem Systen-Chipset 104 durch den Host-Bus 102 gekoppelt und weist eine zentrale Verarbeitungseinheit (CPU) 118 auf. Der Hauptspeicher 106 hat eine Schnittstelle mit 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 Grafikbe schleuniger 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-(CRT)-Rasteranzeigebildschirm 128 mit einer Anzeigefläche oder Bildschirm 130 auf. Der CRT 128 erzeugt Farbbilder, die Erfindung kann jedoch 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, erleuchtet werden. Das Bild 132 kann zum Beispiel alphanumerische 2D-Zeichen oder eine 3D-Szene sein, die mit Objekten gefüllt ist. Der Anzeigebildschirm 130 weist eine zwei-dimensionale Anordnung solcher Bildpunkte 134 auf. Die Anordnungsgröße von Anzeigebildschirmen 130 kann stark variieren. Beispiele für Größen von Anzeigebildschirmen 130 umfassen 1024 × 768 und 1920 × 1200 Bildpunkte. Für das Umsetzen der Erfindung kann die Anzeigevorrichtung 126 auf Bildpunktgrundlage sein, wie zum Beispiel eine Flüssigkristallanzeige oder ein Dotmatrix-Drucker.
  • Der Grafikspeicher 122 umfasst Speicherelemente zum Speichern einer codierten Version des grafischen Bilds 132. Es besteht eine direkte Entsprechung zwischen den Speicherelementen und jedem Bildpunkt 134 auf dem Anzeigebildschirm 130. Die Speicherelemente werden zum Speichern von Daten zugewiesen, die jeden Bildpunkt 134 darstellen, nachstehend 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 bestimmten Bildpunkts 134 auf dem Bildschirm 130. Unter „Farbe" versteht man, dass die Helligkeit oder Stärke des Bildpunkts 134 ebenfalls bestimmt ist, Bildpunktdaten können direkt in Farben oder in Indexe 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 Primitiven und dann in Fragmente umwandelt. Eine Primitive 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 zu bauen. Ein Fragment ist ein 2D-Vieleck, das durch Trimmen einer Primitiven des Bilds 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 S. 103–107 gegeben. Dort vereinen Techniken Fragmente in eine Fragmentliste, wenn die Fragmente von dem gleichen Objekt oder der gleichen Fläche des Bilds stammen. Hier können die Fragmente, die kombiniert werden, um die Farbe eines Bildpunkts zu ergeben, untereinander verschiedene Beziehung haben: das heißt, dass die Fragmente von verschiedenen Objekten oder Flächen des Bilds 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 in den Grafikspeicher 122 von dem Hauptspeicher 106 über die Busse 112, 114, 116 und 124 übertragen oder direkt von dem Grafikbeschleuniger 108 in den Grafikspeicher geschrieben werden.
  • Zum Anzeigen des Bilds 132 projiziert der CRT-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 CRT-Monitor 128 gibt die Bildpunktdaten als angeleuchtete Farbpunkte auf dem Anzeigebildschirm 130 wieder.
  • Die 2A bis 2C stellen verschiedene beispielhafte Unterteilungen eines Bildpunkts 134 dar. 2A zeigt den Bildpunkt 134 aufgeteilt in eine Anordnung 200 zu 4 × 4 gleichmäßig verteilten Punkten, die Unterbildpunkte 206 genannt werden; 2B zeigt eine Anordnung 202 zu 8 × 8 von Unterbildpunkten 206, und 2C zeigt eine Anordnung 204 zu 16 × 16. Das Teilen eines Bildpunkts 134 in Unterbildpunkte 206 ergibt mehrfache Punkte, an welchen das Bild 132, das den Bildpunkt 134 bedeckt, abgetastet werden kann. Als Referenz wird die Mitte 201 des Bildpunkts 134 als ein X gezeigt.
  • Im Allgemeinen ist die Auflösung des Bildpunkts 134 umso größer als sich mehr Unterbildpunkte 206 in der Anordnung befinden. Daher beruht die angezeigte Farbe des Bildpunkts 134 nicht ganz auf einem Abtastwertpunkt, sondern auf mehreren Unterbildpunktabtastwerten 206. Verfahren zum Berechnen eines Bildpunktwerts aus mehrfachen Abtastwertpunkten sind in der Technik gut bekannt.
  • Bekannte Anwendungen tasten an jedem Unterbildpunkt 206 in einem Bildpunkt 134 ab. Während ein solches Vollszenen-Supersampling theoretisch die Gelegenheiten zum Erreichen hoher Auflösung bot, verbraucht die Technik unnötig Speicherressourcen. Jeder abgetastete Unterbildpunkt 206 verbrauchte Speicherressourcen, um die abgetasteten Daten zu speichern und zu verwenden. Das volle Abtasten der 4 × 4-Anordnung 200 von Unterbildpunkten 206 erforderte Speicherplatz für sechzehn Abtastwerte zusätzlich zu den typischen Speicheranforderungen für jeden Bildpunkt 134. Wenn jeder der sechzehn Abtastwerte erforderlich ist, zum Beispiel 8 Byte Speicher, könnte das Implementieren von Vollszenen-Supersampling zusätzliche 295 MByte Speicher für einen Anzeigebildschirm 130 zu 1920 × 1200 Bildpunkten erfordern. Die 16 × 16-Anordnung 204, die Speicher für 260 Abtastwerte erfordert, braucht sechzehn Mal so viel Speicher.
  • Daher tasten neuere moderne Umsetzungen nicht an jedem Unterbildpunkt 206 ab. Stattdessen sind die Unterbildpunkte 206, die abgetastet werden, dünn in der Unterbildpunktanordnung verteilt. Im Allgemeinen werden bei solchem Sparse-Supersampling fast ebenso effektive Antialiasing-Resultate erzielt bei der die Vollszenen-Supersampling-Technik.
  • Die 2A bis 2C stellen jede ein beispielhaftes Sparse-Supersampling-Muster 210, 220, 230 dar, das zum Abtasten der Unterbildpunkte 206 der entsprechenden Unterbildpunktanordnung verwendet werden kann. Die dargestellten beispielhaften Abtastmuster 210, 220, 230 haben jeweils N Abtastwerte, die gleichförmig ü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 bis S4 (N ist gleich 4). Für das Abtastmuster 220 ist N gleich 8, und die acht Unterbildpunktabtastwerte 222 lauten S1 bis S8. Für das Abtastmuster 230 ist N gleich 16, und die sechzehn Unterbildpunktabtastwerte 232 sind S1 bis S16. Das Abtastmuster 210, 220, 230 kann für jeden Bildpunkt 134 auf dem Anzeigebildschirm 130 wiederholt werden. Verschiedene andere Abtastmuster können verwendet werden, um die erfindungsgemäßen Konzepte umzusetzen.
  • Obwohl das Sparse-Supersampling weniger Speicher verwendet als das Vollszenen-Supersampling, sind dennoch noch beträchtliche Mengen an zusätzlichem Speicher erforderlich. Wenn N zum Beispiel gleich 4 ist, braucht ein Bildschirm 130 zu 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 jeweils gleich 8 und 16 ist.
  • Die beschriebene Anordnung kann die Speicheranforderungen sogar noch weiter verringern als ein solches Sparse-Supersampling, ohne die Anzahl der Unterbildpunktabtastwerte für eine Anordnung zu N × N Unterbildpunkten zu verringern. Die hier beschriebene Anordnung beruht auf der Beobachtung, dass typisch nur wenige Fragmente des Bilds 132 innerhalb eines gegebenen Bildpunkts sichtbar sind.
  • Für Stehbilder und animierte Bilder sind die Antialiasing-Effekte, die durch acht Sparse-Superabtastwerte in der Anordnung 202 8 × 8 erzielt werden, signifikant 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 können nicht unterscheidbar sein.
  • 3 zeigt einen beispielhaften Bildpunkt 300, der zu dem Bild 132 gehört und in eine 4 × 4-Unterbildpunkt-Anordnung 200 unterteilt ist. Der Bildpunkt 300 hat vier Abtastpositionen gemäß dem Abtastmuster 210 der 2A. Zwei Fragmente 301, 302 sind im Bildpunkt 300. Jedes Fragment 301, 302 ist einem Fragmentwert zugewiesen, der ein Fragmenttripel 310, 312 genannt wird. In 3 ist das Fragmenttripel 310 zum Beispiel dem Fragment 302 zugewiesen, 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 ent lang einer Z-Achse dar, die zu dem Bild 132 senkrecht ist, um 3D-Tiefe bereitzustellen. Der Matrizenwert 308 kann verwendet werden, um Sätze von Fragmenten des Bilds 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 5 Byte, um die Farbe 304 darzustellen, 3 Byte für die Z-Tiefe 306 und 1 Byte für die Matrize 308. Die fünf Farbenbytes 304 nehmen vier 10-Bit-Farbkanäle auf: Rot, Grün, Blau und Alpha.
  • Die Farbe eines Fragments wird durch die Kombination von Werten ausgedrückt, die in den Kanälen Rot, Grün und Blau (RGB) gespeichert sind. Der in jedem RGB-Kanal gespeicherte Wert zeigt die Stärke (oder Helligkeit) dieses Farbkanals an. Niedrige Werte entsprechen niedriger Stärke, dunklen Farben, hohe Werte entsprechen hoher Stärke, hellen Farben. Verschiedene Verfahren zum Erzeugen der Farbe durch Kombinieren der RGB-Werte sind in der Technik gut 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 komplett transparent, und Werte zwischen 0,0 und 1,0 zeigen Grade an Transparenz an.
  • Speicher wird jedem Bildpunkt 134 zum Speichern einer vorausbestimmten Anzahl von Fragmenttripeln zugewiesen. Dieser Speicher kann entweder der Grafikspeicher 122 wie in 3 gezeigt oder der Hauptspeicher 106 sein. In dem in 3 gezeigten Beispiel wird der Bildpunktspeicher 314 einem bestimmten Bildpunkt 300 zugeordnet. Man kann sich vorstellen, dass eine Gruppe von Bildpunkten, wie zum Beispiel eine 2 × 2-Anordnung von Bildpunkten 134 einen bestimmten Bildpunktspeicher 314 gemeinsam hat. Jedes Fragmenttripel, das in dem Bildpunktspeicher 314 gespeichert ist, würde von jedem Bildpunkt 134 in der Gruppe verwendet statt von nur einem bestimmten Bildpunkt 300. Das kann mehr Speicher sparen als das Speichern einer vorausbestimmten Anzahl von Fragmenten für jeden Bildpunkt 134, insbesondere für Teile des Bilds 132, die sich allmählich in Farbe und Z-Tiefe ändern.
  • Alternativ kann Speicher zum Speichern von Fragmenttripeln dynamisch für jeden Bildpunkt 134 zugewiesen statt auf eine vorausbestimmte Zahl festgelegt zu werden. Hier kann eine veränderliche Anzahl von Fragmenttripeln für jeden Bildpunkt 134 gespeichert werden, wobei der Grafikbeschleuniger 108 Speicher dem Bildpunkt 134 nach Bedarf 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 vorausbestimmten Anzahl von Fragmenttripeln zuweist und dynamisch zusätzlichen Speicher einem bestimmten Bildpunkt 134 bei Bedarf zuweist, um ein Fragmenttripel über die vorausbestimmte Zahl hinaus zu speichern.
  • Die beispielhafte Ausführungsform in 3 speichert zwei Fragmenttripel 310, 312 in dem Bildpunktspeicher 314. Diese Fragmenttripel 310, 312 sind den Fragmenten 301, 302, die den Bildpunkt 300 decken, zugewiesen. Bevor die Fragmente 301, 302 in dem Bildpunkt 300 erscheinen, kann der Bildpunktspeicher 314 initialisiert werden, um einen Standardfragmentwert zu enthalten. Der Standardfragmentwert stellt ein Hintergrundfragment dar, das verwendet werden kann, wenn keine Fragmente einen bestimmten Unterbildpunktabtastwert decken, oder wenn alle Fragmente, die den bestimmten Unterbildpunktabtastwert decken, durchsichtig sind. Alter nativ kann dieser Standardfragmentwert in dem Grafikspeicher 122 gespeichert werden, wo der Wert von mehrfachen Bildpunkten 134 geteilt werden kann. Jeder Bildpunkt 134 könnte einen speziellen Indexwert speichern, der auf das Standardfragment zeigt.
  • Andere Ausführungsform können mehr als zwei Fragmenttripel speichern, um die Qualität des Antialiasing zu verbessern. Das Speichern weniger Fragmenttripel spart an Speicher, kann jedoch ein Antialiasing geringerer Qualität als das Speichern vieler Fragmenttripel erzeugen. Es wird zum Beispiel beobachtet, dass für die 8 × 8-Unterbildpunkanordnung 202 und das Abtastmuster 220 (N = 8) das Speichern von drei Fragmenttripeln bessere Antialiasing-Ergebnisse ergibt als das Speichern von zwei Fragmenttripeln.
  • Pointer 320326 verbinden die Unterbildpunktabtastwerte S1–S4 mit den zugehörigen Fragmenttripeln 310, 312, die in dem Bildpunktspeicher 314 gespeichert sind. Unter Link versteht man eine logische Verbindung zwischen den Unterbildpunktabtastwerten S1–S4 und den Fragmenttripeln 310, 312. Beispielhaft verbindet der Pointer 326 den Unterbildpunkt S1 mit dem Fragmenttripel 312, während die Pointer 320 bis 324 die Unterbildpunkte S2 bis S4 mit dem Fragmenttripel 310 verbinden.
  • Bei einer Ausführungsform, die weiter in Zusammenhang mit 6A beschrieben wird, wird das Verbinden durch Speichern eines Indexwerts für jeden Unterbildpunktabtastwert S1 bis S4 durchgeführt. Daher wird diese Ausführungsform indexiertes Sparse-Supersampling genannt. Bei einer anderen Ausführungsform, die in Zusammenhang mit 6C beschrieben ist, erfolgt das Verbinden durch Speichern einer Deckmaske oder eines Bitmusters für jeden gespeicherten Fragmentwert. Diese Ausführungsform wird unten 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 Bilds 132 abzutasten, der den Bildpunkt 300 deckt. In 3 verwendet der Grafikbeschleuniger 108 zum Beispiel die 4 × 4-Anordnung 200 mit 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 befindet, die von dem Fragment eingeschlossen wird, oder, in bestimmten Fällen, auf einem Rand des Fragments.
  • Im Allgemeinen bestimmt der Grafikbeschleuniger 108 welche Fragmente 301, 302 an jedem Unterbildpunktabtastwert S1 bis S4 sichtbar sind. Aus der Sicht eines Betrachters des Bilds 132, das zum Zweck der Darstellung der Erfindung in 3D 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 Hintergrundfragmente. Ein opakes Vordergrundfragment kann ein Hintergrundfragment hinter diesem Vordergrundfragment verdecken.
  • Daher muss jedes Fragment einen Z-Tiefentest an einem der Unterbildpunktabtastwerte S1 bis S4 bestehen, das heißt, dass der Z-Wert 306 des Fragmenttripels, das dem Fragment zugewiesen ist, kleiner sein muss, das heißt aus der Sicht des Betrachters, näher als der Z-Wert 306 für jedes andere opake Fragment. Wenn ein Fragment den Z-Tiefentest besteht, speichert der Grafikbeschleuniger 108 das dem sichtbaren Fragment zugewiesene Fragmenttripel in den Bildpunktspeicher 314.
  • Wenn das Fragment 301 zum Beispiel als an dem Unterbildpunktabtastwert S1 des Bildpunkts 300 sichtbar bestimmt wird, wird der Pointer 326 erzeugt, der diesen Unterbildpunkt S1 mit dem entsprechenden gespeicherten Fragmenttripel 312 verbindet. Bei der bevorzugten Ausführungsform ist der Pointer 326 in dem Bildpunktspeicher 314 mit den Fragmenttripeln 310, 312 gespeichert, die mit dem Bildpunkt 300 verbunden sind.
  • Statt vier Fragmenttripel in den Bildpunktspeicher 314 zu speichern, nämlich eines für jeden der vier Unterbildpunktabtastwerte S1 bis S4, was typisch bei Supersampling-Techniken getan würde, speichert die beispielhafte Ausführungsform in 3 nur zwei Fragmenttripel 310, 312. Es ist daher möglich, das Speichern redundanter Daten für den Bildpunkt 300 zu vermeiden, weil nur ein Auftreten des Fragmenttripels 310 für die drei Unterbildpunktabtastwerte S2 bis S4 gespeichert wird. Dadurch werden die Speicheranforderungen für Fragmenttripel beträchtlich verringert.
  • Wenn jedes Fragmenttripel 310, 312 zum Beispiel neun Byte Speicher braucht, verwenden die verbesserten Supersampling-Techniken etwa achtzehn Byte Speicher pro Bildpunkt weniger als typische Supersampling-Verfahren. Die verbesserten Supersampling-Verfahren verwenden zusätzlichen Speicher zum Speichern der Pointer 320 bis 326, aber diese Menge ist im Vergleich zu dem Speicher klein, der durch Speichern von nur zwei Fragmenttripeln 310, 312 für die vier Unterbildpunktabtastwerte S1 bis 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 ver besserten Supersampling-Techniken pro Bildpunkt vierundfünfzig Bytes weniger als das typische Supersampling. Das ergibt sich aus der Tatsache, dass nur zwei von acht abgetasteten Fragmenttripeln in den 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 den Bildpunktspeicher 314 gespeichert, so dass pro Bildpunkt 112 Byte gespart werden. Bei einem Anzeigebildschirm 130 zu 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 bis S4 zugewiesen sind, verwendet werden. Eine Funktion besteht einfach darin, die Farben der Fragmenttripel, die den vier Unterbildpunktabtastwerten S1 bis S4 zugeordnet sind, zu mitteln.
  • 4 stellt einen beispielhaften Fall dar, bei dem ein drittes sichtbares Fragment 400 in dem Bildpunkt 300 der 3 erscheint. Wie durch einen Pfeil 402 angezeigt, ist das dritte Fragment 400 mit einem neuen Fragmenttripel 410 verbunden. Das neue Fragmenttripel 410 ist anders als die gespeicherten Fragmenttripel 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 bis S3. Daher bleibt der Unterbildpunktabtastwert S1 mit dem Fragmenttripel 312 durch den Pointer 326 verbunden. Die Unterbildpunkte S2 und S3 bleiben mit dem Fragmenttripel 310 jeweils durch den Pointer 324 und den Pointer 322 verbunden. Um darzustellen, dass das Fragment 302 an dem Bildpunktabtastwert S4 nicht mehr sichtbar ist, wird die Verbindung 320 von dem Unterbildpunktabtastwert S4 zu dem Fragmenttripel 310 als gebrochen gezeigt.
  • Wenn das dritte Fragment 400 von dem Grafikbeschleuniger 108 verarbeitet wird, sind die Fragmenttripel 30, 312 bereits in den Bildpunktspeicher 314 gespeichert, und das Fragmenttripel 410 wird als noch nicht in den Bildpunktspeicher 314 gespeichert gezeigt. Unten 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 vorausbestimmte Anzahl von Fragmenttripeln zugewiesen ist, das zusätzliche Fragmenttripel 410 unterbringen kann, oder dass der Speicher 314, der zum Speichern des neuen Fragmenttripels 410 erforderlich ist, dynamisch zugewiesen 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, dem typischen Sparse-Supersampling nähert oder dieses sogar überschreitet. Sollte ein viertes Fragment in dem Bildpunkt 300 sichtbar sein, 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 große Wahrscheinlichkeit, dass in dem Bildpunkt weniger sichtbare Fragmente sind als Unterbildpunktabtastwerte, und dass daher entsprechende Einsparungen an Speicher verbleiben. Wenn der Bildpunktspeicher 314 ferner dynamisch über die vorausbestimmte Anzahl von Fragmenttripeln hinaus zugewiesen wird, braucht im Allgemeinen relativ wenigen Bildpunkten dynamisch Speicher zugewiesen zu werden. Obwohl die verbesserten Supersampling-Verfahren dann mehr Speicher für einen gegebenen Bildpunkt 134 brauchen 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 den verfügbaren Speicher für Fragmenttripel überschreitet, wie wenn zum Beispiel der Bildpunktspeicher 340, der für die vorausbestimmte Anzahl von Fragmenttripeln zugewiesen ist, bereits voll, oder kein Bildpunktspeicher verfügbar ist, um dynamisch neuen Fragmenttripeln 410 zugewiesen zu werden.
  • Wenn zum Beispiel nur Speicher für zwei Fragmenttripel besteht, es aber vier verschiedene sichtbare Fragmente in dem Bildpunkt 300 gibt, ein unterschiedliches Fragment für jeden der vier Unterbildpunktabtastwerte S1 bis S4, gewährleistet das Zurückgehen auf nur zwei Unterbildpunktabtastpunkte ausreichend Speicher für die Fragmente, die diese zwei Abtastwerte decken.
  • Das Zurückgehen auf die Anzahl von Abtastwerten kann allmählich erfolgen. Wenn zum Beispiel acht Unterbildpunktabtastwerte S1 bis S8 verwendet werden, könnte das Verfahren mit acht Abtastwerten beginnen, auf sechs verringern, dann auf vier und eventuell auf zwei, wenn die Anzahl der verschiedenen sichtbaren Fragmente in dem Bildpunkt über dem verfügbaren Speicher zu sein scheint.
  • Das Verfahren kann unabhängig auf jedem Bildpunkt funktionieren. Das Verfahren kann zum Beispiel alle vier Unterbildpunktabtastwerte S1 bis S4 für einen Bildpunkt verwenden und dann auf nur zwei Unterbildpunktabtastwerte S1 und S2 für einen anderen Bildpunkt zurückgehen.
  • 5B stellt 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, anzugleichen. Das eingekreiste Pluszeichen („+") in 5 stellt den Angleichprozess dar.
  • Ein beispielhafter Angleichprozess gewichtet die Farbverteilung jedes Fragmenttripels 310, 312 und das neue Fragmenttripel 410 mit dem angeglichenen Fragmenttripel 530, 532.
  • Der Farbbeitrag jedes gespeicherten Fragmenttripels 310, 312 wird zum Beispiel durch Multiplizieren des Farbwerts 304 dieses Fragmenttripels mit der Anzahl von Abtastwerten, die von diesem Fragmenttripel bedeckt werden, bestimmt; dann durch Teilen des Ergebnisses durch die Anzahl von Abtastwerten S1 bis S4, die zuvor von dem Fragmenttripel bedeckt wurde, bevor das neue Fragment 400 erschien. Der Farbbeitrag des neuen Fragmenttripels 410 wird durch Multiplizieren des Farbwerts 304 des neuen Fragmenttripels 410 durch die Anzahl von Abtastwerten erzielt, die von dem gespeicherten Fragmenttripel bedeckt werden, jedoch von dem neuen Fragment 400 nicht bedeckt werden; dann durch Dividieren des Ergebnisses durch die Anzahl von Abtastwerten S1 bis S4, die zuerst 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 angeglichenen Fragmenttripel 530 beitragen, und das neue Fragmenttripel 410 würde 1/3 seines Farbwerts 304 beitragen. Für das angeglichene Fragmenttripel 532 trägt das Fragmenttripel 312 seinen ganzen Farbwert (1/1) bei, und das neue Fragmenttripel 410, das keine Abtastpunkte bedeckt, die mit dem Fragmenttripel 312 verbunden sind, würde keinen Farbwert (0/1) beitragen. Dann werden diese gewichteten Farbewerte 304 addiert. Andere Farbangleichtechniken gemäß dem Stand der Technik können verwendet werden.
  • In 5B ist das Fragmenttripel 410 mit dem Fragmenttripel 310 angeglichen, um ein angeglichenes Fragmenttripel 530 zu erzeugen, und die Pointer 322, 324, die die Unterbildpunkte S2 bis S3 mit dem Fragmenttripel 310 verbinden, zeigen nun auf das angeglichene Fragmenttripel 530. Ferner wird das Fragmenttripel 410 mit dem Fragmenttripel 312 so angeglichen, dass sich ein angeglichenes Fragmenttripel 532 ergibt, und der Pointer 326, der den Unterbildpunkt S1 mit dem Fragmenttripel 312 verbindet, zeigt nun auf das angeglichene Fragmenttripel 532. Der Unterbildpunkt S4 ist mit dem angeglichenen Fragmenttripel 530 verbunden. Alternativ kann der Unterbildpunkt S4 mit dem anderen Fragmenttripel 532 verbunden werden.
  • Die angeglichenen Fragmenttripel 530, 532 werden in dem Bildpunktspeicher 314 gespeichert. Das angepasste 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 angeglichene Fragmenttripel 532.
  • 5C zeigt einen beispielhaften Ansatz zum Unterbringen des dritten sichtbaren Fragments 400 in dem Bildpunkt 300. Dieser Ansatz ersetzt eines der Fragmenttripel 310, 312, die zuvor in dem Bildpunktspeicher 314 mit dem dritten Fragmenttripel 410 gespeichert waren. Das Fragmenttripel 310 wird zum Beispiel 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 speichern und in der Tat die Daten des Fragmenttripels 310 eliminieren. Alternativ kann für das Fragmenttripel 310 Speicherzuordnung aufgehoben und dem Fragmenttripel 410 zugewiesen werden.
  • In 5C belegen die Daten des neuen Fragmenttripels 410 die spezifische Adresse des Bildpunktspeichers 314, die zuvor das Fragmenttripel 310 speicherte. Die Pointer 322, 324 zeigen auf diese besonderen Adressen des Bildpunktspeichers. Während die Pointer 322, 324 zuvor die Unterbildpunkte S2 bis S3 mit dem Fragmenttripel 310 verbanden, verbinden diese Pointer 322, 324 nun die Unterbildpunkte S2 bis S3 mit dem neunen Fragmenttripel 410.
  • Techniken zum Auswählen des Fragmenttripels 310, 312 oder 314, das zu eliminieren ist, werden unten beschrieben.
  • Auswahlsysteme
  • Z-Priorität
  • Eine Technik zum Auswählen des Fragmenttripels 310, 312, das zu ersetzen ist, Z-Prioritätsverfahren genannt, besteht darin, festzulegen, 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 als der Z-Tiefenwert 306 groß ist. Wenn der Z-Tiefenwert 306 des Fragmenttripels 310 zum Fragmenttripel 310 zum Beispiel 4 beträgt und der Z-Tiefenwert 306 des Fragmenttripels 312 2 beträgt, wird das Fragmenttripel 310 durch das neue Fragmenttripel 410 ersetzt. Die Pointer 322 bis 324, die zuvor die Unterbildpunktabtastwerte S2 bis S3 mit dem Fragmenttripel verbanden, verbinden nun die Unterbildpunktabtastwerte mit dem Fragmenttripel 410. Sollte mehr als ein gespeichertes Fragmenttripel 310, 312 den größten Z-Tiefenwert 306 haben, kann das Fragmenttripel 310, 312 mit der kleineren Anzahl von Pointern 320 bis 326 ersetzt werden.
  • Grundlegender Farbunterschied
  • Bei einer anderen Technik zum Auswählen, welches Fragmenttripel 310, 312 zu ersetzen ist, Verfahren des grundlegenden Farbunterschied genannt, 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 Fragmenttripel 310, 312 verglichen. Obwohl das Verfahren unten anhand des RGB-Farbmodells beschrieben wird, kann es an andere Farbmodelle angewandt werden, wie zum Beispiel Farbton, Helligkeit und Sättigung (HLS) und Farbton, Sättigung und Wert (HSV) Farbmodelle.
  • Genauer genommen vergleicht das Verfahren des grundlegenden Farbunterschieds den 10-Bitwert des ROT-Kanals des neuen Fragmenttripels 410 mit dem 10-Bitwert des ROT-Kanals jedes gespeicherten Fragmenttripels 310, 312. Ferner werden Vergleiche für den GREEN- und den BLUE-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 diese Summe mit der Anzahl von Unterbildpunktabtastwerten multipliziert, die auf das gespeicherte Fragmenttripel 310, 312 zeigen. Das ergibt einen Gesamtfarbunterschied, der sich ergäbe, sollte das gespeicherte Fragmenttripel 310, 312 durch das neue Fragmenttripel 410 ersetzt werden. Das Fragmenttripel 310, 312, das den kleineren Farbunterschied ergibt, wird durch das neue Fragmenttripel 410 ersetzt.
  • Bei einem übermäßig 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. Ferner sind in 5C zwei Unterbildpunkte gezeigt, die auf das Fragmenttripel 310 zeigen – wenn das neue Fragment 400 als im Abtastpunkt S4 sichtbar bestimmt wird, wird der Pointer 320 (siehe 3) von S4 zu dem Fragmenttripel 310 ungültig gemacht – und ein Unterbildpunkt, der auf das Fragmenttripel 312 zeigt.
  • Der Gesamtfarbunterschied zwischen dem Fragmenttripel 310 und dem neuen Fragmenttripel 410 beträgt 4, das heißt (|0 – 0| + |2 – 3| + |4 – 3|)·2, und der Gesamtfarbunterschied zwischen dem Fragmenttripel 312 und dem neuen Fragmenttripel 410 beträgt 6, das heißt (|2 – 0| + |4 – 3| + |0 – 3|)·1. Daher wird das Fragmenttripel 310 ersetzt.
  • Farbunterschied und durchsichtige Fragmente
  • Wenn durchsichtige Fragmente an dem Farbunterschied beteiligt sind, wird die Auswirkung jedes möglichen Ersetzens an der endgültigen Bildpunktfarbe mit der idealen endgültigen Bildpunktfarbe verglichen, die sich ergäbe, falls das neue Fragmenttripel 410 in dem Bildpunktspeicher 314 gespeichert werden kann. Das gespeicherte Fragmenttripel 310, 312, das eine endgültige Bildpunktfarbe mit dem kleinsten Farbunterschied beim Vergleich mit der idealen endgültigen Bildpunktfarbe ergibt, wird zum Ersetzen ausgewählt. In einem Stapel durchsichtiger Fragmente tendiert diese Auswahl dazu, die weiter entfernten durchsichtigen Fragmente, die schwer 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 Farbunterschiedverfahren durchgeführt wird, vergleicht das N-Quadrat Farbunterschiedverfahren jedes gespeicherten Fragmenttripels 310, 312 gegeneinander. Dieses Verfahren ersetzt entweder eines der gespeicherten Fragmenttripel 310 mit dem Fragmenttripel 410, oder ersetzt eines der gespeicherten Fragmenttripel 310, 312 mit einem anderen der gespeicherten Fragmenttripel 310, 312, das heißt, indem die Pointer von dem einen gespeicherten Fragmenttripel zu dem anderen gespeicherten Fragmenttripel ausgetauscht werden. Das neue Fragmenttripel 420 wird an die Adressen des Bildpunktspeichers geschrieben, an welchen das ersetzte Fragmenttripel zuvor gespeichert war. Der N-Quadrat Farbunterschied scheint keine signifikant bessere Leistung zu erbringen als das Farbunterschiedverfahren.
  • Farbunterschiedverfahren der visuellen Empfindlichkeit
  • Weitere Techniken, die zufriedenstellende Ergebnisse bringen können, beruhen auf den Merkmalen des menschlichen Sehsystems. Die Fähigkeit eines menschlichen Auges, Helligkeitsunterschiede zu erkennen, kann zum Beispiel geringer sein als die Fähigkeit, Farbtonunterschiede zu erkennen. Daher kann eine beispielhafte visuelle Empfindlichkeitsersatzmethode dieses Merkmals nutzen, indem das Fragmenttripel 310, 312 ersetzt wird, das heller oder dunkler ist als das neue Fragmenttripel 410, an Stelle des Fragmenttripels 310, 312, das einen anderen Farbton hat. Ein solches Verfahren würde es vorziehen, das gespeicherte Fragmenttripel 310, 312 mit einem 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 des Luminanzempfindens des Menschen stützen. Im Allgemeinen kann ein menschliches Auge etwa eine 2-%ige Änderung in der Helligkeit einer Farbe erkennen. Daher können große numerische Unterschiede zwischen hohen Farbwerten 304 (das heißt Farben hoher Stärke) weniger merklich sein als kleine numerische Unterschiede zwischen niedrigen Farbwerten (das heißt Farben mit geringer Stärke). Daher werden Luminanzunterschiede als Verhältnisse der Farbwerte 304 an Stelle numerischer Unterschiede zwischen Farbwerten berechnet. Das Fragmenttripel 310, 312, das den kleineren Luminanzunterschied ergibt, das heißt, das kleinere Verhältnis der Farben im Vergleich zu dem neuen Fragmenttripel 410 wird ersetzt.
  • Z-Priorität-Farbunterschied
  • Diese Technik kombiniert das Z-Prioritätsverfahren mit einem beliebigen der oben genannten Farbunterschiedverfahren, um eine Ersatzmethode zu ergeben, die bessere Leistung erbringt als eines der Verfahren allein. Die oben beschriebenen Farbunterschiedverfahren funktionieren mit Ersetzen eines gespeicherten Fragmenttripels durch ein neues Fragmenttripel. Das Verfahren des Z-Prioritäts-Farbunterschieds betrachtet zusätzlich, 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 der gespeicherten Fragmenttripel berechnet, die vor einem neuen Fragment liegen, das heißt mit kleinerem Z-Tiefenwert, aber nicht für die gespeicherten Fragmenttripel, die hinter dem neuen Fragment liegen.
  • Daher kann ein gespeichertes Fragmenttripel 310, 312 ausgewählt werden, und das neue Fragmenttripel 420 zu ersetzen, wenn dieses Fragmenttripel 310, 312 den kleinsten Farbunterschied erzeugt und das Fragmenttripel 310, 312 einem Fragment zugewiesen 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 verbunden wird, und dass das neue Fragmenttripel 410 eliminiert wird.
  • Wenn mehr als ein Ersetzen möglich ist, sollte im Allgemeinen das Ersetzen, das die kleinere Anzahl von Unterbildpunktabtastwerten betrifft, eintreten. Wenn zum Beispiel entweder das neue Fragmenttripel oder ein gespeichertes Vordergrundfragmenttripel ersetzt werden kann, ersetzt das gespeicherte Fragmenttripel das neue Fragmenttripel, wenn das gespeicherte Vordergrundfragmenttripel mehr Unterbildpunktabtastwerte bedeckt als das neue Fragmenttripel.
  • Zonendeckung
  • Ein weiteres effizientes Verfahren wählt das Fragmenttripel aus, das an der kleinsten Anzahl von Unterbildpunktabtastwerten sichtbar ist, und ersetzt dieses Fragmenttripel mit dem neuen Fragmenttripel 410. Danach zeigt jeder Pointer zu dem ersetzten Fragmenttripel auf das neue Fragmenttripel.
  • Semaphor-Verfahren
  • Das Z-Prioritätsfarbunterschiedverfahren erlaubt es bestehenden Vordergrundfragmenten, neue Hintergrundfragmente zu ersetzen, erlaubt es jedoch existierenden Hintergrundfragmenten nicht, neue Vordergrundfragmente zu ersetzen. Das erfolgt, 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 erlaubt, durch ein größeres Hintergrundfragment ersetzt zu werden. Das Semaphorverfahren vermeidet dieses Problem.
  • Das Semaphorverfahren verbindet ein Semaphorbit mit jedem Bildpunkt. Ursprünglich ist jedes Semaphorbit auf 0 gesetzt. Wenn bestimmt wird, dass das Ersetzen eines neuen Vordergrundfragments durch ein existierendes Hintergrundfragment den kleinsten Farbunterschied ergibt, und das zugehörige Semaphorbit 0 ist, erlaubt es das Semaphorverfahren dem existierenden Hintergrundfragment, das neue Vordergrundfragment zu ersetzen. Das zugehörige Semaphorbit wird auf 1 gesetzt. Das stellt sicher, dass zwei solche Ersetzungen nicht nacheinander auftreten können. Wenn das ersetzte neue Vordergrundfragment Teil einer größeren Vordergrundfläche war, ersetzt das nächste neue Vordergrundfragment für diese größere Fläche das existierende Hintergrundfragment, weil das Semaphorbit auf 1 gesetzt ist. Es wurde jedoch beobachtet, dass dieses grundlegende Semaphorverfahren einige nicht zufriedenstellende Artefakte erzeugen kann.
  • Fragmentzentroid-Entfernungsverfahren
  • Derartige Verfahren basieren das Farbersetzen auf die Entfernung zwischen dem neuen Fragment und jedem möglichen Fragment, das das neue Fragment ersetzen kann. Daher kann ein neues Fragment erweitert werden, um benachbarte Unterbildpunktabtastwerte zu decken, statt gespeicherte Fragmente zu ersetzen, die entfernte Unterbildpunktabtastwerte decken. Es ist ferner wahrscheinlich, dass Unterbildpunktabtastwerte in der Nähe der bedeckten Unterbildpunktabtastwerte später bedeckt werden.
  • Die 6A und 6B stellen eine beispielhafte logische Darstellung des Bildpunktspeichers 314 dar, der von der indexierten Sparse-Supersampling-Technik verwendet wird. Der Bildpunktspeicher 314 umfasst Indexe 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 Indexe 600 voneinander oder von den Fragmenttripeln 310, 312 getrennt sein.
  • Die Indexe 600 zeigen an, wo in dem Bildpunktspeicher 314 das Fragmenttripel, das mit jedem Unterbildpunktabtastwert verbunden ist, gefunden werden kann. Jeder Index 602 bis 608 der Indexe 600 ist mit einem der Unterbildpunktabtastwerte S1 bis S4 verbunden. Wie in 6B gezeigt, ist der Index 602 mit dem Unterbildpunktabtastwert S1 verbunden, der Index 604 ist mit dem Unterbildpunktabtastwert S2 verbunden usw. Für das Abtastmuster 220 gibt es acht Indexe für die acht Unterbildpunktabtastwerte S1 bis S8 und für das Abtastmuster 320, bei dem N = 16, gibt es sechzehn. Der in jedem Index 602 bis 608 gespeicherte Wert zeigt auf eines der Fragmenttripel 310, 312. Daher verbindet jeder Index 602 bis 608 den zugehörigen Unterbildpunktabtastwert S1 bis S4 mit einem der Fragmenttripel 310, 312.
  • Wenn zwei Fragmenttripel 310, 312 in dem Bildpunktspeicher 314 gespeichert sind, kann jeder Index 602 bis 608 durch ein Datenbit dargestellt werden. Der in jedem Index 602 bis 608 gespeicherte Bitwert lenkt den Grafikbeschleuniger 108 zu dem Fragmenttripel 310, 312, das mit jedem Unterbildpunktabtastwert S1 bis S4 verbunden ist. In dem in 6B gezeigten Beispiel ist eine „1" in dem Index 602 gespeichert und eine „0" in jedem der anderen Indexe 604608. Ein Nullbitwert zeigt auf das erste Fragmenttripel 310 in dem Bildpunktspeicher 314, und ein Einbitwert zeigt auf das zweite Fragmenttripel 312.
  • Wenn alternativ drei Fragmenttripel in dem Bildpunktspeicher 314 gespeichert sind, braucht man zwei Bit pro Index 602 bis 608. Zwei Bit pro Index 602 bis 608 können maximal vier gespeicherte Fragmenttripel, drei Bit maximal acht Fragmenttripel und vier Bit maximal sechzehn unterbringen.
  • Bei einem Bit pro Index 602 bis 608 braucht das Abtastmuster 210 (N = 4) vier Bit Bildpunktspeicher 314, um die Indexe 600 umzusetzen. Die Speichererfordernisse für die Indexe 600 größerer Abtastmuster 220, 230 sind ebenfalls klein. Das Abtastmuster 230 (N = 16) würde zum Beispiel sechzehn Bit pro Bildpunkt 134 brauchen, um ein Bit pro Index umzusetzen. Das Umsetzen von vier Bit pro Index verwendet vierundsechzig Bit pro Bildpunkt, was immer noch beträchtliche Speichereinsparungen im Vergleich zu typischen Sparse-Supersampling-Techniken bereitstellt, die für die sechzehn Unterbildpunktabtastwerte S1 bis S6 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 verbunden sind, multipliziert. Danach werden diese gewichteten Farbwerte addiert, um die Bildpunktfarbe zu ergeben.
  • Die 6C und 6D zeigen eine beispielhafte logische Darstellung des Bildpunktspeichers 314, der von der verbesserten A-Puffertechnik verwendet wird. Der Bildpunktspeicher 314 umfasst Abdeckmasken (oder Bitmuster) 620, 622 und gespeicherte Fragmenttripel 310, 312. Der Bildpunktspeicher 314 stellt Speicher für eine vorausbestimmte 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 umfasst, ist in den 6C und 6D gestrichelt dargestellt.
  • Die Abdeckmasken 620, 622 verbinden die Unterbildpunktabtastwerte S1 bis S4 mit den Fragmenttripeln 310, 312, die in dem Bildpunktspeicher 314 gespeichert sind. Mit jedem gespeicherten Fragmenttripel 310, 312 ist eine Abdeckmaske 620, 622 verbunden. Unter Bezugnahme auf 6D ist die Abdeckmaske 620 zum Beispiel dem Fragmenttripel 310 zugewiesen, wie durch einen Pfeil 621 angezeigt, und die Abdeckmaske 622 ist dem Fragmenttripel 312 zugewiesen, wie durch den Pfeil 623 angezeigt. Bei der dargestellten alternativen Ausführungsform ist die Abdeckmaske 624 dem dritten Fragmenttripel 410 durch den Pfeil 625 zugewiesen.
  • Jede Abdeckmaske 620, 622, 624 umfasst ein Bit für jeden Unterbildpunktabtastwert S1 bis S4. In 6D sind die Zuweisungen zwischen den Bits in den Abdeckmasken und den Unterbildpunktabtastwerten S1 bis S4 durch Pfeile 634 bis 640 dargestellt. Der Unterbildpunktabtastwert S1 ist zum Beispiel den Bits 626 zugewiesen, der Unterbildpunktabtastwert S2 den Bits 628, der Abtastwert S3 den Bits 630 und der Abtastwert S4 den Bits 632 zugewiesen.
  • Mit einem Bit pro Abtastwert S1 bis S4 braucht das Abtastmuster 210 (N = 4) vier Bit 626, 628, 630, 632 des Bildpunktspeichers 314, um jede Abdeckmaske 620, 622, 624 umzusetzen. Bei der gezeigten alternativen Ausführungsform, bei der drei Fragmenttripel gespeichert sind, beträgt der kombinierte Bedarf für drei zugewiesene 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 bis S8. Wie bei dem Abtastmuster 230, das sechzehn Unterbildpunktabtastwerte S1 bis S16 hat, wären sechzehn solche Bit in jeder Abdeckmaske. Aber sogar mit sechzehn Bit pro Abdeckmaske sind die Speichereinsparungen im Vergleich zu bekannten Sparse-Supersampling-Techniken, die sechzehn Fragmenttripel für die sechzehn Unterbildpunktabtastwerte S1 bis S16 speichern, beträchtlich.
  • Der in jedem Bit einer gegebenen Abdeckmaske gespeicherte Wert zeigt an, ob der Bildpunktabtastwert, der diesem Bit zugewiesen ist, mit dem Fragmenttripel verbunden ist, das der gegebenen Abdeckmaske zugewiesen ist. Wenn ein Abtastwert mit einem Fragmenttripel verbunden ist, bedeutet das, dass das diesem Fragmenttripel zugewiesene 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 verbindet die Unterbildpunktabtastwerte S2 bis S4 mit dem gespeicherten Fragmenttripel 310, das anzeigt, dass das Fragment 302 an diesen Abtastpunkten S2 bis 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 gegebenen 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, verbindet eine dritte Abdeckmaske 624 den Unterbildpunktabtastwert S4 mit dem dritten Fragmenttripel 410, das in dem Bildpunktspeicher 314 gespeichert ist. Die Zuweisung 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 verbunden. Für das folgende Darstellungsbeispiel wird das dritte Fragment 400 als durchsichtig behandelt. (Man beachte, 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" auf „0 1 1 0" übergehen würde, um anzuzeigen, dass das Fragment 400 das Fragment 302 in dem Unterbildpunktabtastwert S4 verdeckt.)
  • Da das dritte Fragment 400 transparent ist, verbinden 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 bis S4 mit einer Mehrzahl gespeicherter Fragmenttripel verbunden werden, wobei ein Fragment opak und jedes andere Fragment durchsichtig ist. In der Tat können alle gespeicherten Fragmentwerte durchsichtig sein, wenn ein Standardhintergrundfragmentwert verwendet wird.
  • Daher kann die hier beschriebene verbesserte A-Puffertechnik von der Reihenfolge unabhängige Transparenz unterstützen, das heißt, dass das System 100 Primitiven des Bilds 132 nicht zu partitionieren braucht, um dem Grafikbeschleuniger 108 transparente Fragmente zu präsentieren, nachdem alle opaken Fragmente präsentiert sind, und das System 100 braucht auch nicht transparente Primitiven zu sortieren, um transparente Fragmente in Z-Tiefenreihenfolge zu präsentieren.
  • Zum Berechnen der Farbe des Bildpunkts 300 wird eine Farbe zuerst für jeden Unterbildpunktabtastwert S1 bis S4 berechnet, und dann werden die berechneten Farben kombiniert. Wenn ein Unterbildpunktabtastwert nur mit einem opaken Fragment verbunden ist, wie zum Beispiel der Abtastwert S1, ist die Farbe für diesen Unterbildpunktabtastwert S1 die Farbe des zugewiesenen gespeicherten Fragmentwerts 312.
  • Wenn ein Unterbildpunktabtastwert, wie zum Beispiel der Abtastwert S4 mit zwei gespeicherten Fragmenttripeln 310, 410 verbunden ist, eines 400 durchsichtig und das andere 302 opak, 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 sie von dem 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 bis 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 vier zusätzlichen Unterbildpunktabtastwerte erfordert, dass eines der gespeicherte Fragmenttripel mit einem dritten Fragmenttripel ersetzt wird, und dass das dritte Fragmenttripel in dem Bildpunktspeicher zuletzt erscheint. Das Zuweisen von Speicher für ein drittes Fragmenttripel kann eine markante Verbesserung für acht Unterbildpunktabtastwerte im Vergleich zum Speichern von zwei Fragmenttripeln ausmachen. Es ist klar, dass man bewirken kann, dass sich die Antialiasing-Ergebnisse den Ergebnissen des typischen Sparse-Supersampling nähern, wenn mehr Fragmenttripel gespeichert werden, aber jedes zusätzliche Fragmenttripel schmälert die Speichereinsparungen, die durch die verbesserten Supersampling-Techniken bereitgestellt werden.
  • 7 stellt ein Flussdiagramm 700 dar, das das Verfahren des Erzeugens eines Bilds 132 anhand der vorliegenden Erfindung beschreibt. Bei den ersten Schritten der Verarbeitung des Bilds 132 wird das Bild 132 in Fragmente partitioniert. Beim Verarbeiten jedes neuen Fragments bestimmt der Grafikbeschleuniger 108, ob das neue Fragment an irgendeinem der Unterbildpunktabtastwerte S1 bis 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 bis S4 zugewiesen ist (Schritt 702).
  • Hat das neue Fragment für einen beliebigen bedeckten Unterbildpunktabtastwert S1 bis S4 einen kleineren Z-Tiefenwert als der Z-Tiefenwert eines gespeicherten Fragments, befindet sich das neue Fragment vor dem gespeicherten Fragment und ist daher sichtbar. Es besteht jedoch eine Ausnahme, wenn das neue Fragment einen Alphawert von 0,0 hat. In diesem Fall ist das neue Fragment komplett transparent. Der Grafikbeschleuniger 108 braucht den Fragmentwert des neuen Fragments nicht zu speichern, denn das neue Fragment ist in der Tat unsichtbar.
  • Hat das neue Fragment stattdessen für alle der bedeckten Unterbildpunktabtastwerte S1 bis S4 einen größeren Z-Tiefenwert als die Z-Tiefenwerte, liegt das neue Fragment hinter einem oder mehreren der gespeicherten Fragmente und kann unsichtbar sein. Liegt das neue Fragment hinter opaken Vordergrundfragmenten, ist das neue Fragment unsichtbar, und das Verarbeiten des neuen Fragments für den Bildpunkt 134 ist abgeschlossen. Liegt das neue Fragment jedoch unmittelbar hinter einem durchsichtigen Vordergrundfragment, kann das neue Fragment noch gesehen werden.
  • Wenn das neue Fragment an einem der bedeckten Unterbildpunktabtastwerte sichtbar ist, macht der Grafikbeschleuniger 108 den Link 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 erhält der Grafikbeschleuniger 108 Steuerbits aufrecht, um die Gültigkeit jedes Index mitzuverfolgen, und macht jeden Index, der einen bedeckten Unterbildpunktabtastwert mit einem bedeckten Fragment verbindet, ungültig. Die Steuerbits können den Grafikbeschleuniger 108 dazu führen, die Standardhintergrundfarbe zu verwenden, wenn keine Fragmente einen Unterbildpunktabtastwert decken. Bei der verbesserten A-Puffertechnik bleiben die Bits in der Abdeckmaske, die jedem bedeckten Unterbildpunktabtastwert zugewiesen ist, unverändert, wenn das neue Fragment durchsichtig ist, und werden auf „0" gesetzt, wenn das neue Fragment opak ist.
  • Dann wird in Schritt 708 die Anzahl der Links gezählt, die zu jedem Fragmenttripel zeigen. Bei der indexierten Sparse-Supersampling-Technik zählt Schritt 708 die Anzahl von Indexen, die mit diesem gespeicherten Fragmenttripel verbunden 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 Links auf das Fragmenttripel zeigen. In diesem Fall kann ein neues Fragmenttripel, das dem neuen Fragment zugewiesen ist, das freie Fragmenttripel ersetzen.
  • Wenn Schritt 714 feststellt, dass ein Fragmenttripel frei ist, wird die neue Farbe, die dem neuen Fragment zugewiesen ist, in dem freien Fragmenttripel gespeichert (Schritt 712). In Schritt 714 werden die Links der Unterbildpunktab tastwerte, die von dem neuen Fragment bedeckt werden, zu dem neuen Fragmenttripel gesetzt.
  • Stellt Schritt 710 fest, dass keine Fragmenttripel frei sind, wählt eine Ersetzungsmethode, wie zum Beispiel die oben beschriebene Farbunterschiedtechnik eines der gespeicherten Fragmenttripel zum Ersetzen aus (Schritt 716). Das Ersetzen bedeutet das Ändern der Farbe, Z-Tiefe und Matrizenwerte, die in dem ausgewählten Fragmenttripel gespeichert sind, auf die Farb-, Z-Tiefen- und Matrizenwerte des neuen Fragmenttripels.
  • In Schritt 718 wird die neue Farbe zu dem ausgewählten Fragmenttripel geschrieben. Die Links, 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 Links zugewiesen sind, dadurch der neuen Farbe zugewiesen. Diese Links, die den Unterbildpunktabtastwerten entsprechen, die durch das neue Fragment bedeckt werden, werden gesetzt, um auf die neue Farbe zu zeigen (Schritt 714).
  • In Schritt 720 wird Bildpunktfarbe aus den Unterbildpunktabtastwerten wie oben in Zusammenhang mit den 6A bis 6D beschrieben berechnet. Die Links, die den Unterbildpunktabtastwerten S1 bis S4 zugewiesen sind, zeigen auf die gespeicherten Farben, die erzeugt werden, um die Farbe des Bildpunkts 134 zu erzeugen. Die Bildpunktfarbe kann sich daher 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, sind die Bildpunkte zur Anzeige bereit (Schritt 724).
  • In 7 berechnet ein alternatives Verfahren zum Erzeugen eines Bilds die Farbe des Bildpunkts in Schritt 720', gestrichelt dargestellt, bevor es bestimmt, ob es neue Fragmenttripel gibt, die verfügbar sind, um in ihnen den neuen Fragmentwert zu speichern, der dem neuen Fragment zugewiesen ist. Die existierenden Farben, die in den Fragmenttripeln gespeichert sind, und der neue Fragmentfarbwert kombinieren sich und ergeben die Bildpunktfarbe. Der Effekt besteht darin, die Farbe zu berechnen, als wäre ein zusätzliches Tripel verfügbar.
  • Nach dem Berechnen der Bildpunktfarbe in Schritt 720 kann das alternative Verfahren dann eine existierende gespeicherte Farbe mit dem neuen Fragmenttripel wie oben in Zusammenhang mit den Schritten 716 bis 718 beschrieben ersetzen. Wenn jedes Fragment, das nach diesem neuen Fragment verarbeitet wird, nicht zu einer neuen Berechnung der Bildpunktfarbe führt, gehen trotz des Ersetzens keine Farbdaten verloren.
  • Natürlich sind die oben beschriebenen Ausführungsformen Darstellungen von Konzepten der Erfindung. Verschiedene andere Änderungen und Modifikationen können vom Fachmann innerhalb des Geltungsbereichs der anliegenden Patentansprüche durchgeführt werden.

Claims (13)

  1. Computertechnisches Verfahren zur Wiedergabe eines Bilds (132), das von Bildpunkten (300) definiert ist, umfassend die folgenden Schritte: – Auswahl von Unterbildpunktpositionen in einem Bildpunkt (300) als Abtastpunkte (S1..S4), – Speichern eines Fragmentwerts (310, 312), der einem Fragment (302, 301) des Bilds (132) zugewiesen ist, wobei das Fragment (302, 301) mindestens einen der Abtastpunkte (S1..S4) deckt, und – Verbinden jedes gedeckten Abtastpunkts (S1..S4) mit dem gespeicherten Fragmentwert (310, 312), um das Erzeugen einer Farbe des Bildpunkts (300) unter Gebrauch des Fragmentwerts (310, 312) zu erlauben, wobei die erzeugte Farbe die empfundene Qualität des Bilds (132) durch Verringern der Aliasingartefakte verbessert.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Verbindens die folgenden Schritte umfasst: – Zuweisen eines Index (602..608) zu jedem gedeckten Abtastpunkt (S1..S4), und – Speichern eines Wert in jedem Index (602..608), der auf den gespeicherten Fragmentwert (310, 312) zeigt.
  3. Verfahren nach Anspruch 1, wobei der Schritt des Verbindens die folgenden Schritte umfasst: – Zuweisen eines Bitmusters (620, 622) zu dem gespeicherten Fragmentwert (310, 312), wobei das Bitmuster (620, 622) eine Sequenz von Bits (626..632) hat, wobei jedes Bit in der Sequenz einem der Abtastpunkte (S1..S4) zugewiesen ist, und – Speichern eines Werts in jedem Bit (626..632), wobei der Wert in jedem Bit anzeigt, ob der Abtastpunkt (S1..S4), der mit diesem Bit (626..632) verbunden ist, von dem Fragment (302, 301) gedeckt wird.
  4. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: – Partitionieren des Bildpunkts (300) in eine Anordnung (200) von Unterbildpunktpositionen, wobei die Anordnung N Zeilen und N Spalten hat, wobei N eine Ganzzahl größer als 1 ist, und wobei sich jeder ausgewählte Abtastpunkt (S1..S4) in einer anderen Zeile und in einer anderen Spalte befindet als jeder andere Abtastpunkt in diesem Bildpunkt (300).
  5. Verfahren nach Anspruch 1, wobei es weniger Abtastpunkte (S1..S4) als Unterbildpunktpositionen in dem Bildpunkt (300) gibt.
  6. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: – Zuweisen von Speicher (314) zu dem Bildpunkt (300) zum Speichern einer vorausbestimmten Anzahl von Fragmentwerten (310, 312), wobei die vorausbestimmte Anzahl kleiner ist als die Anzahl der Abtastpunkte (S1..S4) in dem Bildpunkt (300) und ferner mit dem folgenden Schritt: – Bestimmen, ob der Speicher zum Speichern (712) eines neuen Fragmentwerts (410) verfügbar ist, indem Links (708) zu jedem zuvor gespeicherten Fragmentwert (310, 312) gezählt werden.
  7. Verfahren nach Anspruch 1, das ferner die folgenden Schritte umfasst: – Verarbeiten eines neuen Fragments (400), das einen neuen Fragmentwert (410) hat, wobei das neue Fragment an einem oder mehreren der Abtastpunkte (S4) des Bildpunkts (300) sichtbar ist, und – Ersetzen (718) des gespeicherten Fragmentwerts (310) mit dem neuen Fragmentwert (410), ferner mit folgendem Schritt: – Berechnen (720) einer Farbe für den Bildpunkt (300) unter Verwenden des neuen Fragmentwerts (410) und jedes gespeicherten Fragmentwerts (310, 312), bevor der gespeicherte Fragmentwert (310) mit dem neuen Fragmentwert (410) ersetzt wird.
  8. Verfahren nach Anspruch 1, das ferner den folgenden Schritt umfasst: – Verringern einer Anzahl von Abtastpunkten (S1..S4) für den Bildpunkt (300), wenn das Speichern eines Fragmentwerts (410), der einem vorhergehenden Fragment (400) zugewiesen ist, einen Betrag des Speichers (314) überschreiten würde, der für den Bildpunkt (300) verfügbar ist.
  9. Verfahren nach Anspruch 1, das ferner die folgenden Schritte umfasst: – Auswahl von Unterbildpunktpositionen in einem zweiten Bildpunkt als Abtastpunkte, und – Verbinden eines der Abtastpunkte des zweiten Bildpunkts mit dem gespeicherten Fragmentwert.
  10. Verfahren nach Anspruch 1, das ferner die folgenden Schritte umfasst: – Bestimmen (704), dass ein neues Fragment (400) des Bilds (132) an einem oder mehreren der Abtastpunkte des Bildpunkts (S4) sichtbar ist, wobei das neue Fragment (400) einen neuen Fragmentwert (410) hat, – Zuweisen von Adressen des Speichers (314) zu dem Bildpunkt (300) zum Speichern einer vorausbestimmten Anzahl von Fragmentwerten (310, 312, 410), – Ersetzen (718) eines ausgewählten der gespeicherten Fragmentwerte (310) mit dem neuen Fragmentwert (410), wenn die vorausbestimmte Anzahl von Fragmentwerten bereits in dem zugewiesenen Speicher (314) gespeichert ist, wenn das neue Fragment (400) als sichtbar bestimmt wird, anderenfalls Speichern (712) des neuen Fragmentwerts (410), – Verbinden (714) jedes Abtastwerts (S4) des Bildpunkts (300), an dem das neuen Fragment (400) sichtbar ist, mit dem gespeicherten neuen Fragmentwert (410), um das Erzeugen einer Farbe des Bildpunkts (300) unter Verwenden des Fragmentwerts (410) zu ermöglichen, wobei die erzeugte Farbe die empfundene Qualität des Bilds (132) durch Reduzieren von Aliasingartefakten verbessert.
  11. Gerät (100) zur Wiedergabe eines Bilds (132), das durch Bildpunkte (300) definiert ist, das Folgendes umfasst: – Mittel (108) zum Auswählen von Unterbildpunktpositionen in einem Bildpunkt (300) als Abtastpunkte (S1..S4), – Mittel (122) zum Speichern eines Fragmentwerts (310, 312), der einem Fragment (302, 301) des Bilds (132) zugewiesen ist, wobei das Fragment einen oder mehrere Abtastpunkte (S1..S4) in dem Bildpunkt (300) deckt, und – Mittel (108) zum Verbinden jedes gedeckten Abtastpunkts (S1..S4) mit dem gespeicherten Fragmentwert (310, 312), um das Erzeugen einer Farbe des Bildpunkts (300) unter Verwenden des Fragmentwerts (310, 312) zu ermöglichen, wobei die erzeugte Farbe die empfundene Qualität des Bilds (132) durch Verringern von Aliasingartefakten verbessert.
  12. Gerät nach Anspruch 11, wobei – die Auswahlmittel und Verbindungsmittel ein grafisches Gerät (108) sind, und – das Speichermittel ein Speicher (122) ist, der mit dem grafischen Gerät (108) gekoppelt ist.
  13. Gerät nach Anspruch 12, wobei der Speicher (122) Folgendes umfasst: – eine Vielzahl von Adressen, wobei jede Adresse einen Fragmentwert (310, 312) speichert, wobei jeder gespeicherte Fragmentwert (310, 312) einen Farbwert (304) umfasst und einem Fragment eines Bilds (302, 301) zugewiesen ist, das an einem der Unterbildpunkte (206) sichtbar ist, und – Indexe (602..608), wobei jeder Index einem Unterbildpunkt (206) zugewiesen ist und einen Indexwert hat, der auf eine der Vielzahl von Adressen zeigt, die einen bestimmten Fragmentwert (310, 312) speichert, um den Unterbildpunkt (206), der dem Index zugewiesen ist, mit dem Farbwert (304) des spezifischen Fragmentwerts (310, 312) zu verbinden.
DE69833531T 1997-10-15 1998-09-25 Vollszenen-Antialiasing mit verbesserten Überabtastungstechniken Expired - Fee Related DE69833531T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/958,129 US6128000A (en) 1997-10-15 1997-10-15 Full-scene antialiasing using improved supersampling techniques
US958129 1997-10-15

Publications (2)

Publication Number Publication Date
DE69833531D1 DE69833531D1 (de) 2006-04-27
DE69833531T2 true DE69833531T2 (de) 2006-11-02

Family

ID=25500624

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69833531T Expired - Fee Related DE69833531T2 (de) 1997-10-15 1998-09-25 Vollszenen-Antialiasing mit verbesserten Überabtastungstechniken

Country Status (3)

Country Link
US (1) US6128000A (de)
EP (1) EP0910047B1 (de)
DE (1) DE69833531T2 (de)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19740033A1 (de) * 1997-09-11 1999-03-18 Valeo Borg Instr Verw Gmbh Anzeigevorrichtung mit und ohne Antialiasing
US6624823B2 (en) 1998-02-17 2003-09-23 Sun Microsystems, Inc. Graphics system configured to determine triangle orientation by octant identification and slope comparison
US6717578B1 (en) * 1998-02-17 2004-04-06 Sun Microsystems, Inc. Graphics system with a variable-resolution sample buffer
US7110011B2 (en) * 1998-04-10 2006-09-19 Fuji Photo Film Co., Ltd. Monochromatic image display system
US20040085277A1 (en) * 1998-04-10 2004-05-06 Fuji Photo Film Co., Ltd. Monochromatic image display system
WO1999064990A2 (en) * 1998-06-12 1999-12-16 Intergraph Corporation System for reducing aliasing on a display device
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
US6288730B1 (en) 1998-08-20 2001-09-11 Apple Computer, Inc. Method and apparatus for generating texture
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
US6285348B1 (en) * 1999-04-22 2001-09-04 Broadcom Corporation Method and system for providing implicit edge antialiasing
US7064771B1 (en) * 1999-04-28 2006-06-20 Compaq Information Technologies Group, L.P. Method and apparatus for compositing colors of images using pixel fragments with Z and Z gradient parameters
AU4502400A (en) * 1999-05-07 2000-11-21 Broadcom Corporation Method and system for efficiently using fewer blending units for antialiasing
US6437793B1 (en) 1999-07-29 2002-08-20 Bitstream Inc. System for rapidly performing scan conversion with anti-aliasing upon outline fonts and other graphic elements
US6738526B1 (en) * 1999-07-30 2004-05-18 Microsoft Corporation Method and apparatus for filtering and caching data representing images
US6384839B1 (en) * 1999-09-21 2002-05-07 Agfa Monotype Corporation Method and apparatus for rendering sub-pixel anti-aliased graphics on stripe topology color displays
US6469707B1 (en) * 2000-01-19 2002-10-22 Nvidia Corporation Method for efficiently rendering color information for a pixel in a computer system
US6766281B1 (en) * 2000-05-12 2004-07-20 S3 Graphics Co., Ltd. Matched texture filter design for rendering multi-rate data samples
US6828983B1 (en) * 2000-05-12 2004-12-07 S3 Graphics Co., Ltd. Selective super-sampling/adaptive anti-aliasing of complex 3D data
US6956576B1 (en) 2000-05-16 2005-10-18 Sun Microsystems, Inc. Graphics system using sample masks for motion blur, depth of field, and transparency
US8692844B1 (en) * 2000-09-28 2014-04-08 Nvidia Corporation Method and system for efficient antialiased rendering
TW535409B (en) * 2001-11-20 2003-06-01 Silicon Integrated Sys Corp Display control system and method of full-scene anti-aliasing and stereo effect
US7079151B1 (en) * 2002-02-08 2006-07-18 Adobe Systems Incorporated Compositing graphical objects
US7508398B1 (en) 2002-08-27 2009-03-24 Nvidia Corporation Transparent antialiased memory access
US7903892B2 (en) * 2002-10-29 2011-03-08 Ati Technologies Ulc Image analysis for image compression suitability and real-time selection
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
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
US8111928B2 (en) * 2003-02-13 2012-02-07 Ati Technologies Ulc Method and apparatus for compression of multi-sampled anti-aliasing color data
US20040174379A1 (en) * 2003-03-03 2004-09-09 Collodi David J. Method and system for real-time anti-aliasing
US7106352B2 (en) * 2003-03-03 2006-09-12 Sun Microsystems, Inc. Automatic gain control, brightness compression, and super-intensity samples
AU2003903448A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha A method for tracking depths in a scanline based raster image processor
AU2003903447A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha Rendering successive frames in a graphic object system
AU2003903445A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha Optimising compositing calculations for a run of pixels
AU2004202826B2 (en) * 2003-06-26 2007-09-06 Canon Kabushiki Kaisha Antialiasing Compositing in Graphic Object Rendering
US7280120B2 (en) * 2003-06-26 2007-10-09 Canon Kabushiki Kaisha Compositing with a sub-pixel mask in graphic object rendering
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775112B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for increasing die yield
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US7495722B2 (en) 2003-12-15 2009-02-24 Genoa Color Technologies Ltd. Multi-color liquid crystal display
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
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
GB0426170D0 (en) * 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US7409102B2 (en) * 2005-03-23 2008-08-05 Microsoft Corporation Methods and systems for reducing ringing in composited user interface elements
US7606429B2 (en) * 2005-03-25 2009-10-20 Ati Technologies Ulc Block-based image compression method and apparatus
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
WO2007060672A2 (en) * 2005-11-28 2007-05-31 Genoa Color Technologies Ltd. Sub-pixel rendering of a multiprimary image
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
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
US7791617B2 (en) * 2005-12-19 2010-09-07 Nvidia Corporation Method and system for rendering polygons having abutting edges
US8111264B2 (en) * 2006-03-30 2012-02-07 Ati Technologies Ulc Method of and system for non-uniform image enhancement
US20070268298A1 (en) * 2006-05-22 2007-11-22 Alben Jonah M Delayed frame buffer merging with compression
TW200820131A (en) * 2006-05-22 2008-05-01 Nvidia Corp Frame buffer merging
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
US8594441B1 (en) 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
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
US9135017B2 (en) * 2007-01-16 2015-09-15 Ati Technologies Ulc Configurable shader ALU units
US7973803B1 (en) * 2007-05-17 2011-07-05 Adobe Systems Incorporated Simultaneous occluding transparency graphics processing
US8339413B2 (en) * 2007-05-17 2012-12-25 Adobe Systems Incorporated Multiplied occluding transparency graphics processing
US8724895B2 (en) * 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8724483B2 (en) * 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
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
US8780128B2 (en) * 2007-12-17 2014-07-15 Nvidia Corporation Contiguously packed data
GB0801812D0 (en) * 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
US8115783B2 (en) * 2008-01-31 2012-02-14 Arm Norway As Methods of and apparatus for processing computer graphics
US8044971B2 (en) * 2008-01-31 2011-10-25 Arm Norway As Methods of and apparatus for processing computer graphics
US8698908B2 (en) * 2008-02-11 2014-04-15 Nvidia Corporation Efficient method for reducing noise and blur in a composite still image from a rolling shutter camera
US9379156B2 (en) * 2008-04-10 2016-06-28 Nvidia Corporation Per-channel image intensity correction
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
GB0819570D0 (en) * 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US8373718B2 (en) * 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US8686999B2 (en) * 2009-02-02 2014-04-01 Microsoft Corporation Dynamic fragment coverage antialiasing
US8749662B2 (en) * 2009-04-16 2014-06-10 Nvidia Corporation System and method for lens shading image correction
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
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
US10043234B2 (en) 2012-12-31 2018-08-07 Nvidia Corporation System and method for frame buffer decompression and/or compression
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
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation
TWI637383B (zh) * 2017-12-01 2018-10-01 大陸商北京集創北方科技股份有限公司 顯示器畫面的非均勻邊緣處理方法及利用其之顯示器

Family Cites Families (11)

* 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
EP0463700B1 (de) * 1990-06-29 1997-09-03 Philips Electronics Uk Limited Verfahren und Gerät zur Bilderzeugung
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5859645A (en) * 1993-03-26 1999-01-12 Loral Corporation Method for point sampling in computer graphics systems
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
US5949428A (en) * 1995-08-04 1999-09-07 Microsoft Corporation Method and apparatus for resolving pixel data in a graphics rendering system
US5818456A (en) * 1996-04-30 1998-10-06 Evans & Sutherland Computer Corporation Computer graphics system with adaptive pixel multisampler
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
EP0910047A3 (de) 2001-02-07
EP0910047A2 (de) 1999-04-21
EP0910047B1 (de) 2006-02-22
DE69833531D1 (de) 2006-04-27
US6128000A (en) 2000-10-03

Similar Documents

Publication Publication Date Title
DE69833531T2 (de) Vollszenen-Antialiasing mit verbesserten Überabtastungstechniken
DE69835408T2 (de) Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE60031337T2 (de) Geräteabhängige Darstellung von Zeichen
DE69932059T2 (de) Trilineare texturfilterung mit optimiertem speicherzugriff
DE60103535T2 (de) Graphisches system
DE3148116C2 (de)
DE69535693T2 (de) Einzelrasterpufferbildverarbeitungssystem
DE3339666C2 (de)
DE3546136C2 (de)
DE60122835T2 (de) Anzeigeeinrichtung und -Verfahren, und Datenträger der ein Computerprogramm zur Ansteuerung einer Anzeige mit unterteilten Bildelementen beinhaltet
WO2000063846A1 (de) Verfahren zur rasterisierung eines graphikgrundelements
DE69815427T2 (de) Bildanzeigevorrichtung
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
DE3712639A1 (de) Verfahren und einrichtung zum abbilden von volumendaten
CH646788A5 (de) Verfahren und schaltungsanordnung zum erkennen von farben.
DE3718501A1 (de) Videoanzeigegeraet
DE19827726A1 (de) Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung
DE3718521C2 (de)
DE60008867T2 (de) Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
DE4234985C2 (de) Verfahren zum Transformieren von Farbsignalen und Vorrichtung zur Durchführung des Verfahrens
DE102011011641A1 (de) System, Verfahren und Computerprogrammprodukt zum Wiedergeben von Pixeln mit zumindest einer halbtransparenten Oberfläche
DE19528596A1 (de) Verfahren und Vorrichtung zur Kolorierunterstützung
DE69813992T2 (de) Bilderzeugungsgerät, -Verfahren und -Programaufzeichnungsmedium, Bildkompositionsgerät, -Verfahren und -Programmaufzeichnungsmedium
DE69910980T2 (de) Antialiasing mit unterabtastung für textur-raender

Legal Events

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