DE60008867T2 - Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten - Google Patents

Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten Download PDF

Info

Publication number
DE60008867T2
DE60008867T2 DE60008867T DE60008867T DE60008867T2 DE 60008867 T2 DE60008867 T2 DE 60008867T2 DE 60008867 T DE60008867 T DE 60008867T DE 60008867 T DE60008867 T DE 60008867T DE 60008867 T2 DE60008867 T2 DE 60008867T2
Authority
DE
Germany
Prior art keywords
area
new
pixel
active area
fragment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60008867T
Other languages
English (en)
Other versions
DE60008867D1 (de
Inventor
C. Michael LEWIS
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.)
Broadcom Corp
Original Assignee
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Publication of DE60008867D1 publication Critical patent/DE60008867D1/de
Application granted granted Critical
Publication of DE60008867T2 publication Critical patent/DE60008867T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing

Description

  • AUFGABENGEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Anzeige von grafischen Bildern auf einem Computersystem und insbesondere ein Verfahren und ein System zum Durchführen eines Antialiasing unter Verwendung einer einzigen Mischeinheit, welches die Größe des Systems verringert, wobei in den meisten Fällen keine zusätzliche Zeit erfordert wird.
  • HINTERGRUND DER ERFINDUNG
  • Ein herkömmliches Computer-Grafiksystem kann grafische Abbilder von Gegenständen auf einer Anzeige darstellen. Die Anzeige beinhaltet eine Mehrzahl von Anzeigeelementen, die als Pixel bekannt sind und üblicherweise in einem Gitter angeordnet sind. Um Gegenstände darzustellen, unterteilt das herkömmliche Computer-Grafiksystem üblicherweise jeden Gegenstand in eine Mehrzahl von Polygonen. Ein herkömmliches System rendert dann die Polygone in einer bestimmten Reihenfolge. Für eine dreidimensionale Szene werden die undurchsichtigen Polygone im allgemeinen von der Sichtebene der Anzeige aus gesehen von vorne nach hinten gerendert. Lichtdurchlässige Polygone werden wünschenswerterweise von hinten nach vorne gerendert. Auf ähnliche Weise kann eine zweidimensionale Szene dargestellt werden. Für eine zweidimensionale Szene werden die Polygone auf der Grundlage einer Schichtreihenfolge gerendert, im Gegensatz zu einem Tiefenwert. Flache Schichten verdecken tiefe Schichten.
  • Jedes der Polygone beinhaltet Kanten. Wenn ein Bild gerendert wird, rendert das herkömmliche System oft diagonale Linien oder Polygonkanten, die nicht exakt waagrecht oder senkrecht sind. Da jedes Pixel begrenzte physikalischer Abmessungen besitzt, können Kanten, die nicht waagrecht oder senkrecht sind, gezackt erscheinen. Beispielsweise soll jedes Pixel als Quadrat angenommen werden. Eine diagonale Linie oder Kante, die unter Verwendung der quadratischen Pixel gerendert worden ist, wird gezackt erscheinen, ähnlich einer Treppe. Dieser Effekt ist als Aliasing bekannt.
  • Um das Aliasing zu verringern, führen herkömmliche Systeme Antialiasing durch. Das Antialiasing hilft, die Auswirkung zu verringern, die die physikalischen Abmessungen der Pixel auf die Erscheinung der dargestellten Gegenstände besitzt. Diagonale Linien und Kanten erscheinen weicher.
  • Mehrere herkömmliche Mechanismen werden verwendet, um Antialiasing durchzuführen.
  • Viele der herkömmlichen Techniken führen ebenso eine Auswertung und Mischung von Daten auf der Subpixelebene durch. Jeder Mechanismus besitzt ebenso seine Nachteile. Beispielsweise ist ein herkömmlicher Mechanismus zum Antialiasing herkömmliches Super-Sampling. Herkömmliches Super-Sampling wird für einen Teil der Anzeige, der Kachel genannt wird, oder die gesamte Anzeige auf einmal durchgeführt. Jedes Pixel in der Kachel oder der Anzeige wird als eine M × N-Matrix von Subpixel betrachtet. Daten für jedes Polygon in der Kachel werden bei jedem Subpixel ausgewertet. So können der Tiefenwert, die Farbe, die Textur und andere Daten für das Polygon unterschiedlich sein und werden bei jedem Subpixel ausgewertet. Die Daten für die Subpixel in jedem Pixel in der Kachel werden kombiniert, um die Daten für jedes Pixel in der Kachel bereitzustellen. Da das Super-Sampling Tiefenwerte für die Subpixel auswertet und kombiniert, kann das Super-Sampling helfen, den Treppeneffekt auf beinhaltete Kanten zu glätten. Das System erfordert jedoch ausreichenden Speicher, um Daten für die M × N-Subpixel in jedem Pixel in einer Kachel zu halten, um das Super-Sampling durchzuführen. Daher ist viel Speicher erforderlich. Dies erhöht die Größe des Systems. Es muss ebenso sichergestellt werden, dass es keine Artefakte an den Säumen zwischen den Kacheln gibt. Dies verlangsamt die Verarbeitung. Weiterhin werden viel mehr Daten für jedes Pixel in der Anzeige unabhängig von jeder Gleichförmigkeit der Subpixel innerhalb eines Pixels verarbeitet. Das Super-Sampling ist daher rechenintensiv und relativ langsam.
  • Einige herkömmliche Systeme richten sich auf einige der Probleme beim Super-Sampling, indem ein adaptives Super-Sampling durchgeführt wird. Das adaptive Super-Sampling identifiziert zuerst Bereiche, in denen Super-Sampling erwünscht sein kann, wie beispielsweise nahe von Kanten. Wenn einmal dieser Bereich identifiziert ist, wird das Super-Sampling für eine Kachel durchgeführt, die diesen Bereich beinhaltet. In anderen Bereichen wird das Super-Sampling nicht durchgeführt. Beispielsweise kann ein herkömmliches System die Kanten von jedem Polygon markieren, wobei angezeigt wird, dass die Kanten das Äußere des Polygons sind und daher den Umriß des Polygons bilden. Auf diesen Umriß wird das Antialiasing durchgeführt. Auch wenn das adaptive Super-Sampling die Verarbeitungsgeschwindigkeit erhöht, indem die Bereiche verringert werden, die einem Super-Sampling unterworfen werden, wird immer noch viel Speicher erfordert. Weiterhin kann die Identifikation der Bereiche, auf die das Super-Sampling angewendet werden muss, rechenintensiv sein. Beispielsweise erfordert die Bestimmung des Umrisses eines Polygons, die oben beschrieben ist, eine relativ aufwendige Berechnung. Daher kann das System immer noch relativ groß oder langsam sein.
  • Ein anderer herkömmlicher Mechanismus für das Antialiasing verwendet einen Akkumulation-Puffer („A-Puffer") und ist als A-Puffer-Technik bekannt. Es werden Daten für jedes Pixel in jedem Polygon verarbeitet. Während der Verarbeitung wird für jedes Pixel in jedem Polygon eine Maske geschaffen. Die Maske zeigt den Teil des Pixels an, der von dem Polygon bedeckt ist. Die Maske kann so aufgefaßt werden, als ob sie die Subpixel anzeigt, die jedes Polygon bedeckt. Eine verbundene Liste der Polygonmasken wird dann für jedes Pixel geschaffen. Die verbundene Liste hält üblicherweise eine Maske, einen Farbwert und andere Daten, die in bezug zu dem möglichen Beitrag von jedem Polygon auf die Anzeige des Pixel stehen. Nachdem die gesamte Szene in dem A-Puffer gespeichert worden ist, wird die verbundene Liste durchgearbeitet, um die Daten von den Polygonen, die jedem Pixel zugeordnet sind, zu akkumulieren und zu rendern. Das Aliasing wird dadurch verringert. Es werden jedoch zwei Durchgänge durch die Daten gemacht, um Objekte für die Anzeige zu rendern. Der erste Durchgang dient zum Schaffen der Masken für jedes Polygon und um die Polygone den bestimmten Pixeln zuzuordnen. Der zweite Durchgang verwendet die für jedes Pixel gespeicherten Daten, um zu bestimmen, wie die Daten für jedes Pixel darzustellen sind. Daher ist dieser Mechanismus zeitraubend. Die verbundene Liste muss ebenso von dem Computer-Grafiksystem verwaltet werden, welches die A-Puffer-Technik schwieriger zu implementieren macht. Üblicherweise wird sowohl ein A-Puffer als auch ein Frame-Puffer zum Rendern der Szene verwendet. Daher erfordert die A-Puffer-Technik ebenso zusätzlichen Speicher.
  • Ein anderes herkömmliches Verfahren zum Antialiasing kann einen Gewichtungsfaktor verwenden. Der Gewichtungsfaktor zeigt den Prozentsatz eines Pixels an, den ein Polygon besetzt. Wenn beispielsweise ein Polygon ein vollständiges Pixel besetzt, kann der Gewichtungsfaktor 1 sein. Der Gewichtungsfaktor von Pixeln an den Kanten des Polygons kann daher kleiner 1 sein. Dieser Gewichtungsfaktor würde dann berücksichtigt werden, wenn die Daten für verschiedene Polygone, die ein Pixel schneiden, gemischt werden.
  • Die zuvor genannten herkömmlichen Antialiasing-Techniken besitzen einen zusätzlichen Nachteil. Um die Verarbeitungsgeschwindigkeit zu erhalten, können die oben genannten herkömmlichen Verfahren mehrere Mischeinheiten oder eine komplexere Mischeinheit verwenden. Eine Mischeinheit führt die mathematische Operation durch, die einen gespeicherten Wert, wie beispielsweise die Farbe für ein Subpixel, mit einer Farbe für ein Fragment mischt. Bei dem herkömmlichen Antialiasing-Verfahren, das eine Gewichtung verwendet, kann die Mischeinheit komplexer sein, um das Gewicht zu berücksichtigen. Auf ähnliche Weise können das Super-Sampling, das adaptive Supersampling und die A-Puffer-Technik mehrere Mischeinheiten verwenden, um die Verarbeitungsgeschwindigkeit aufrecht zu erhalten. Der Grund dafür ist, dass Super-Sampling, adaptives Supersampling und die A-Puffer-Technik Daten auf der Subpixelebene auswerten und kombinieren. Mischungen werden daher für jedes Subpixel in einem Pixel durchgeführt, um sicherzustellen, dass jedes Subpixel die korrekte Farbe und andere Informationen zu dem Pixel beiträgt. Um die Verarbeitungsgeschwindigkeit aufrecht zu erhalten, wenn Subpixel verwendet werden, werden die Mischungen für jedes Subpixel üblicherweise parallel durchgeführt. Für jedes Subpixel wird eine Mischeinheit verwendet, um diese Mischungen zu Parallelisieren.
  • Auch wenn eine Mischeinheit für jedes Subpixel verwendet werden kann, nimmt die Anzahl der Mischeinheiten dramatisch zu, da die Anzahl der verwendeten Subpixel steigt. Für ein 2 × 2 Array von Subpixel werden beispielsweise vier Mischeinheiten erfordert, um alle Operationen parallel durchzuführen. Für ein 4 × 4 Array von Subpixel werden sechzehn Mischeinheiten erfordert, um alle Operationen parallel durchzuführen. Das Vorsehen einer so großen Anzahl von Mischeinheiten verzehrt sehr viel Platz und ist ziemlich kostspielig, wobei beides unerwünscht ist.
  • Dementsprechend wird ein System und ein Verfahren zur Verringerung der Anzahl der verwendeten Mischeinheiten benötigt. Es würde ebenso wünschenswert sein, wenn das Verfahren und das System keine Leistung opfert. Die vorliegende Erfindung richtet sich auf diese Notwendigkeit.
  • Die US-A-5 684 939 offenbart ein Bildverarbeitungssystem, das unter der Leitung eines Prozessors Polygonbilddaten erhält und Bilddaten mit Antialiasing zur Darstellung auf einer rasterabgetasteten Anzeige entwickelt. Insbesondere beinhaltet das Bildsystem einen Abtastumwandler zum Umwandeln der Polygonbilddaten in Pixeldaten, welche Pixelbildschirmkoordinaten und wenigstens einen Farbwert für jedes von einem Polygon bedeckte Pixel von den Pixeldaten und eine Super-Sample-Bedeckungsmaske umfasst, die ein Ausmaß der Polygonbedeckung innerhalb jedes von einem Polygon bedeckten Pixels anzeigt. Das Bildsystem beinhaltet ebenso ein Rastersystem mit wenigstens einem Bildprozessor zum Empfangen der Pixeldaten für jedes Pixel, um eine Bereichsmaske auf der Grundlage der Super-Sample-Bedeckungsmaske zu entwickeln und zum Speichern des Farbwerts im Zusammenhang mit der Bereichsmaske als antialiaste Anzeigedaten in einem Bildspeicher in Kommunikation mit dem Bildprozessor auf der Grundlage der Pixel-Bildschirm-Koordinaten. Die Bereichsmaske zeigt wenigstens einen örtlichen Bereich von Super-Sampeln innerhalb jedes Pixels an, das von einem oder mehreren Polygonen bedeckt ist, und zeigt einen Farbwert an, der in den Bildspeicher gespeichert ist und den Super-Sampeln in einem Bereich zugeordnet werden soll. Dies erfordert, dass nur ein einziger Farbwert für Super-Sampel innerhalb eines Bereichs eines bedeckten Pixels in dem Bildspeicher gespeichert werden muss. Das Bildsystem kann ebenso zum Entwickeln und Speichern von Z-Werten, Alpha-Werten, Schablonenwerten und Texturwerten für jedes Pixel zum Speichern in dem Bildspeicher im Zusammenhang mit der Bereichsmaske konfiguriert sein.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung schafft ein Verfahren und ein System zum Antialiasing eines graphischen Bildes auf einer Anzeige. Das graphische Bild wird von Daten e zeugt, die wenigstens ein Objekt beschreiben. Die Anzeige beinhaltet eine Mehrzahl von Pixel. Das wenigstens eine Objekt beinhaltet eine Mehrzahl von Fragmenten. Ein Teil der Mehrzahl von Fragmenten schneidet ein Pixel der Mehrzahl von Pixel. Jedes der Mehrzahl von Fragmenten beinhaltet eine Angabe eines Teils eines entsprechenden Fixels, das geschnitten wird. Das System und das Verfahren beinhalten das Bereitstellen wenigstens eines aktiven Bereichs für das Pixel. Der wenigstens eine aktive Bereich schneidet einen ersten Teil des Pixels. Das Verfahren und das System beinhalten ebenso das Bereitstellen wenigstens eines neuen Bereichs. Ein erster Abschnitt des wenigstens einen neuen Bereichs zeigt an, wo in dem Pixel der wenigstens eine aktive Bereich und das Fragment sich schneiden. Ein zweiter Abschnitt des wenigstens einen neuen Bereichs zeigt an, wo in dem Pixel der wenigstens eine aktive Bereich und das Fragment sich nicht schneiden. Das Verfahren und das System beinhalten weiterhin das Mischen eines Teils des Fragments in einem zweiten Abschnitt des Pixels, entsprechend dem ersten Abschnitt des wenigstens einen neuen Bereichs.
  • Gemäß dem hier offenbarten System und Verfahren schafft die vorliegende Erfindung ein Antialiasing, das weniger Mischeinheiten verwendet, wodurch die Gesamtsystemgröße verringert wird, wobei im allgemeinen keine nachteilige Auswirkung auf die Leistungsfähigkeit auftritt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1A ist ein Blockdiagramm einer graphischen Anzeige, die eine Mehrzahl von Polygonen beinhaltet.
  • 1B ist ein Blockdiagramm, das eine nähere Ansicht eines der Mehrzahl von Polygonen in der Anzeige zeigt.
  • 2 ist ein Blockdiagramm, das ein Computer-Grafiksystem zeigt.
  • 3 ist ein Blockdiagramm, das ein Computer-Grafiksystem gemäß der vorliegenden Erfindung zeigt.
  • 4 ist ein Blockdiagramm, das ein bevorzugtes Ausführungsbeispiel einer Antialiasing-Einheit gemäß der vorliegenden Erfindung zeigt.
  • 5 ist ein Flussdiagramm auf einer hohen Ebene eines Verfahrens zum Mischen von Daten für ein Pixel gemäß der vorliegenden Erfindung.
  • 5A ????????????????????
  • 5B ist ein Flussdiagramm auf einer hohen Ebene eines Verfahrens zum Antialiasing von Daten für eine graphische Anzeige gemäß der vorliegenden Erfindung.
  • 6 ist ein Flussdiagramm eines Verfahrens zum Bereitstellen und Mischen von Bereichen gemäß der vorliegenden Erfindung.
  • 7A und 7B zeigen ein detaillierteres Flussdiagramm eines Verfahrens zum Antialiasing von Daten gemäß der vorliegenden Erfindung.
  • 8A ist ein Blockdiagramm eines Pixels einer graphischen Anzeige.
  • 8B ist ein Blockdiagramm eines Pixels einer graphischen Anzeige, das eine Mehrzahl von Subpixel beinhaltet.
  • 8C ist eine Bedeckungsmaske für das erste Fragment, das das Pixel schneidet.
  • 8D ist die Bedeckungsmaske für das zweite Fragment, das das Pixel schneidet.
  • 9 ist ein Blockdiagramm eines ersten aktiven Bereichs für das Pixel.
  • 10A ist ein Blockdiagramm des ersten aktiven Bereichs für das Pixel, nachdem das erste Fragment verarbeitet worden ist.
  • 10B ist ein Blockdiagramm eines zweiten aktiven Bereichs für das Pixel, nachdem das erste Fragment verarbeitet worden ist.
  • 10C ist ein Blockdiagramm des Akkumulators, nachdem das erste Fragment verarbeitet worden ist.
  • 11A ist ein Blockdiagramm des ersten aktiven Bereichs des Pixels, nachdem das zweite Fragment verarbeitet worden ist.
  • 11B ist ein Blockdiagramm des zweiten aktiven Bereichs für das Pixel, nachdem das zweite Fragment verarbeitet worden ist.
  • 11C ist ein Blockdiagramm des dritten aktiven Bereichs für das Pixel, nachdem das zweite Fragment verarbeitet worden ist.
  • 11D ist ein Blockdiagramm des vierten aktiven Bereichs für das Pixel, nachdem das zweite Fragment verarbeitet worden ist.
  • 11E ist ein Blockdiagramm der Daten in dem Akkumulator für das Pixel, nachdem das zweite Fragment verarbeitet worden ist.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung beschreibt eine Verbesserung bei der Anzeige von graphischen Bildern. Die folgende Beschreibung wird vorgestellt, um einen Fachmann auf dem Gebiet in die Lage zu versetzen, die Erfindung zu realisieren und zu verwenden und wird im Zusammenhang mit einer Patentanmeldung und deren Anforderungen bereitgestellt. Zahlreiche Modifikationen des bevorzugten Ausführungsbeispiels werden den Fachleuten auf dem Gebiet schnell ersichtlich sein und die grundsätzlichen Prinzipien hieraus können auf andere Ausführungsformen angewendet werden. Daher ist die vorliegende Erfindung als nicht begrenzt auf das dargestellte Ausführungsbeispiel gedacht, sondern dass ihm der weiteste Umfang gewährt werden soll, der den hier beschriebenen Prinzipien und Merkmalen entspricht.
  • 1A ist ein Diagramm eines graphischen Bildes auf einer Anzeige 10, die drei Polygone 20, 30 und 40 beinhaltet. Die Polygone 20, 30 und 40 können Teil von Objekten sein, die Teil eines graphischen Bildes sind, das auf der Anzeige 10 abgebildet wird. Die Polygone 20, 30 und 40 können Teile von dreidimensionalen oder zweidimensionalen Objekten sein.
  • 1B zeigt eine nähere Ansicht eines Teils des Polygons 30. Es ist eine Kante 32 des Polygons 30 dargestellt. Die 1B zeigt ebenso Pixel 50, von denen nur eines bezeichnet ist. Die Pixel in der Anzeige 10 besitzen eine begrenzte Fläche und sind als Quadrate dargestellt. Da die Pixel in der Anzeige 10 eine begrenzte Größe besitzen, ist die Kante 32 ebenso wie die anderen, in 1B nicht dargestellten Kanten gezackt.
  • 2 zeigt ein vereinfachtes Blockdiagramm eines Ausführungsbeispiels eines Computer-Grafiksystems 100. Das System 100 wird verwendet, um Objekte und insbesondere dreidimensionale Objekte darzustellen.
  • Das Computer-Grafiksystem 100 beinhaltet eine zentrale Verarbeitungseinheit (CPU) 102, eine Anzeige 104, eine Benutzerschnittstelle 106, wie beispielsweise eine Tastatur, eine Maus oder eine andere Kommunikationseinrichtung, einen Speicher 110 und eine Bilderzeugungseinheit 120, die mit einem Bus 108 gekoppelt sind. Die Anzeige 104 beinhaltet eine Mehrzahl von Pixel, wie beispielsweise die Pixel 50 in der Anzeige 10. Jedes der Mehrzahl von Pixel besitzt eine Fläche. Die Anzeige 104 könnte einen Anzeigespeicher (nicht dargestellt) beinhalten, in den die Pixel geschrieben werden. Beispielsweise könnte die Anzeige 104 einen Frame-Puffer beinhalten. Um ein graphisches Bild zu erzeugen, wird jedes der Objekte in dem Bild in Polygone aufgeteilt, die beim Rendern des Objektes verwendet werden. In den oben genannten ebenfalls anhängigen Anmeldungen werden die Polygone vorzugsweise in Rasterordnung gerendert. D. h., dass Abschnitte der Polygone in der Reihenfolge der Pixel in der Anzeige 104 gerendert werden. In der vorliegenden Erfindung können die Polygone jedoch auch in einer anderen Reihenfolge gerendert werden.
  • Die Bilderzeugungseinheit 120 beinhaltet eine Schnittstelle 121, die mit dem Bus 108 verbunden ist. Die Schnittstelle 121 überträgt Daten an die Datenverarbeitungseinheit 122. Ein Prozessorblock 124, der mit der Datenverarbeitungseinheit 122 gekoppelt ist, identifiziert Daten, die Abschnitte der Polygone („schneidende Polygone") beschreiben, die den Bereich schneiden, der sich entlang einer z-Achse von einem ausgewählten Pixel in einer x-y-Ebene entsprechend einem Bildschirm der Anzeige 104 erstreckt. Der Prozessorblock 124 kann einen getrennten Prozessor für jedes schneidende Polygon beinhalten. Die Daten für den Abschnitt des schneidenden Polygons, das dem ausgewählten Pixel zugeordnet ist, wird ein Fragment genannt. Beispielsweise beinhaltet ein Fragment die Farbe, die Textur und einen Tiefenwert für das entsprechende Polygon. Daten, die sich auf jedes ausgewählte Pixel beziehen, beinhalten ein Fragment für jedes der schneidenden Polygone. In dem Zusammenhang dieser Offenbarung wird ein Fragment für ein schneidendes Polygon so beschrieben, als ob es das Pixel schneidet, das das Polygon schneidet.
  • Eine Einheit 126 zum Identifizieren/Entfernen von verdeckten Objekten empfängt wenigstens einen Teil des Fragments von jedem schneidenden Polygon, das dem ausgewählten Pixel zugeordnet ist, und entfernt Teile des Fragments für das schneidende Polygon, die verdeckt sind. Die Einheit 126 zum Identifizieren/Entfernen von verdeckten Objekten kann diese Funktion durchführen, ohne den genauen z-Wert des Polygons zu bestimmen. Der Interpolator 128 empfängt die Fragmente für die schneidenden Polygone für das ausgewählte Pixel und interpoliert die Daten, welches das Interpolieren von Textur, Farbe und Alpha-Werten für das Fragment beinhaltet. Der Interpolator 128 stellt ebenso eine Maske für jedes Fragment zur Verfügung. In einem alternativen Ausführungsbeispiel jedoch kann die Erzeugung der Maske von einer anderen Einheit bereitgestellt werden. Die Maske kann als Teil des Fragments für ein schneidendes Polygon betrachtet werden. Die zu rendernden Fragmente werden von dem Interpolator 128 zu einem Hardwaresortierer 130 geliefert, der die Fragmente vorzugsweise auf der Grundlage des z-Wertes oder des Tiefenwertes für jedes Fragment sortiert.
  • Die sortierten Fragmente für das ausgewählte Pixel werden dann an eine Antialiasing-Einheit 140 geliefert. Die in den oben genannten, ebenso anhängigen Anmeldungen beschriebene Antialiasing-Einheit 140 beinhaltet einen Akkumulator 142 und eine oder mehrere Mischeinheiten 144. Der Akkumulator 142 beinhaltet Subpixelpuffer, die in 2 nicht dargestellt sind. In einem Ausführungsbeispiel des in der oben genannten, ebenso anhängigen Anmeldung offenbarten Systems beinhaltet der Akkumulator 142 einen getrennten Subpixelpuffer für jedes Subpixel, in das ein Pixel unterteilt wird.
  • In der oben genannten, ebenso anhängigen Anmeldung beinhaltet jedes Fragment eine Maske und einen Tiefenwert. Die Maske, auf die im Folgenden als Flächenmaske bezug genommen wird, zeigt einen Abschnitt des Pixels an, der vom Fragment geschnitten wird. Die Flächenmaske wird verwendet, um den Beitrag zu bestimmen, den ein Fragment zu einem Pixel liefert, das es schneidet. Die Flächenmaske zeigt an, welches der Subpixel in einem Pixel das Fragment schneidet. Wenn ein bestimmtes Pixel eine Kante eines Polygons beinhaltet, wie beispielsweise die Kante 122, zeigt die Flächenmaske für das Fragment an, dass das Fragment nur einige der Subpixel schneidet. Das Fragment wird nur in diesen Subpixeln gemischt. Jeder Subpixelpuffer in dem Akkumulator 142 wird verwendet, um Informationen für die Fragmente zu speichern, die in jedem der Subpixel innerhalb des ausgewählten Pixels enthalten sind. Die wenigstens eine Mischeinheit 144 mischt die Daten, die an die Subpixelpuffer geliefert werden. Die antialiasten Daten für das ausgewählte Pixel werden dann an die Anzeige 104 geliefert.
  • Beinhaltete Kanten sind solche Kanten, die nicht explizit definiert sind, die aber Aliasing unterworfen sind. Antialiasing berücksichtigt Unterschiede bei den Tiefenwerten bei verschiedenen Subpixel. Jedes Fragment beinhaltet einen Tiefenwert, eine Steigung des Tiefenwerts und eine Flächenmaske. Ein Subpixel-Tiefenwert wird für jedes Fragment berechnet, indem der Tiefenwert und die Steigung des Tiefenwerts des Fragments verwendet wird. Es wird bestimmt, ob ein Abschnitt des Fragments auf der Grundlage der Mehrzahl der Subpixel-Tiefenwerte für das Fragment und die Flächenmaske des Fragments gemischt wird.
  • Um zu bestimmen, ob ein Abschnitt des Fragments auf der Grundlage der Subpixel-Tiefenwerte gemischt wird, werden zwei zusätzliche Masken berechnet. Zuerst wird eine Tiefenmaske berechnet. Die Tiefenmaske zeigt die Subpixel an, bei denen ein berechneter Tiefenwert geringer als ein in dem Akkumulator 144 gespeicherter Tiefenwert ist. So zeigt die Tiefenmaske die Subpixel an, bei denen das Fragment sichtbar sein würde, wenn das Fragment an dieser Stelle existieren würde. Die Tiefenmaske und die Flächenmaske werden dann geschnitten, um eine Gesamtmaske zu schaffen. Die Gesamtmaske sollte die Subpixel anzeigen, bei denen das Fragment sichtbar ist. Das Fragment wird dann in diesen Subpixeln gemischt.
  • Obwohl die in den oben genannten, ebenso anhängigen Anmeldungen beschriebenen Verfahren und Systeme zufriedenstellend für deren vorgesehenen Zweck funktionieren, wird ein Fachmann auf dem Gebiet erkennen, dass die Mischungen immer noch auf der Subpixel-Ebene bereitgestellt werden. Für eine 4 × 4-Auswahl von Subpixel werden so sechzehn Mischungen durchgeführt. In Ausführungsbeispielen der oben genannten, ebenso anhängigen Anmeldungen wird eine Mischeinheit 144 für jedes Subpixel in dem Akkumulator 140 zur Verfügung gestellt. Das Bereitstellen einer Mischeinheit 144 für jedes Subpixel ermöglicht es der Mischeinheit 144, ein Fragment in einem einzigen Taktzyklus zu verarbeiten. Mit anderen Worten ausgedrückt wird jedes neue Fragment parallel für jedes Subpixel von einer der Mischeinheiten 144 gemischt. Jede Misch- oder Arithmetikeinheit 144 ist jedoch relativ komplex. Das Bereitstellen von sechzehn Mischeinheiten 144, eine für jedes Subpixel, verzehrt ein großes Maß an Platz. So wie die Anzahl der Subpixel ansteigt, steigt die Anzahl der Mischeinheiten und somit der verzehrte Platz rapide an. Es ist immer noch wünschenswert, das Ausmaß an Platz und daher Silizium zu verringern, das von dem Computer-Graphiksystem verzehrt wird. Auch wenn weniger Mischeinheiten bereitgestellt werden könnten, ist es immer noch wünschenswert, diese Einheiten effizient zu nutzen. Dementsprechend wäre es wünschenswert, die Größe des in 2 dargestellten Systems 100 zu verringern, ohne die Geschwindigkeit des Systems 100 wesentlich zu verringern.
  • Die vorliegende Erfindung schafft ein Verfahren und ein System zum Antialiasing eines graphischen Bildes auf einer Anzeige. Das graphische Bild wird von Daten erzeugt, die wenigstens ein Objekt beschreiben. Die Anzeige beinhaltet eine Mehrzahl von Pixeln. Das wenigstens eine Objekt beinhaltet eine Mehrzahl von Fragmenten. Ein Teil der Mehrzahl der Fragmente schneidet ein Pixel der Mehrzahl von Pixeln. Jedes der Mehrzahl von Fragmenten beinhaltet eine Anzeige eines Abschnitts eines entsprechenden Pixels, das geschnitten wird. Das System und das Verfahren beinhalten das Bereitstellen wenigstens eines aktiven Bereichs für das Pixel. Jeder der wenigstens einen aktiven Bereiche schneidet einen ersten Abschnitt des Pixels. Das Verfahren und das System umfassen ebenso das Bereitstellen von wenigstens einem neuen Bereich. Ein erster Abschnitt des wenigstens einen neuen Bereichs zeigt an, wo in dem Pixel sich jeder der wenigstens einen aktiven Bereiche und das Fragment sich schneiden. Ein zweiter Abschnitt des wenigstens einen neuen Bereichs zeigt an, wo in dem Pixel sich jeder der wenigstens einen aktiven Bereiche und das Fragment sich nicht schneiden. Das Verfahren und das System beinhalten weiterhin das Mischen eines Abschnitts des Fragments in einem zweiten Abschnitt des Pixels, der dem ersten Abschnitt des wenigstens einen neuen Bereichs entspricht.
  • Die vorliegende Erfindung wird in den Begriffen eines bestimmten Systems beschrieben werden, das eine einzige Mischeinheit verwendet. Ein Fachmann auf dem Gebiet wird jedoch schnell erkennen, dass dieses Verfahren und System effektiv für andere Systemtypen und andere Anzahlen von Mischeinheiten arbeitet. Die vorliegende Erfindung wird ebenso in den Begriffen eines bestimmten Computersystems und der Verarbeitung von Fragmenten in einer besonderen Reihenfolge beschrieben werden. Ein Fachmann auf diesem Gebiet wird jedoch schnell erkennen, dass dieses Verfahren und System effektiv für andere Computersystem-Typen und das Verarbeiten von Fragmenten in einer anderen Reihenfolge arbeitet. Weiterhin wird die vorliegende Erfindung in dem Zusammenhang mit spezifischen Blöcken, die bestimmte Funktionen durchführen, und Verfahren beschrieben, die bestimmte Schritte in einer besonderen Reihenfolge durchführen. Ein Fachmann auf dem Gebiet wird jedoch schnell erkennen, dass andere Blöcke diese Funktionen bereitstellen können und dass die Schritte in einer anderen Reihenfolge oder parallel durchgeführt werden können. Beispielsweise kann die vorliegende Erfindung in einem anderen Computer-Grafiksystem verwendet werden, welches Daten auf Subpixelebene bereitstellt und mischt, aber das die Polygone nicht in Rasterordnung rendert, einen anderen Mechanismus oder keinen Mechanismus zum Sortieren und Entfernen von verdeckten Polygonen verwendet und das nicht Prozessoren 124 zur Verfügung stellt, um Fragmente parallel zu verarbeiten. So ist die vorliegende Erfindung mit anderen Architekturen und anderen Verfahren des Antialiasing vereinbar, wie beispielsweise Super-Sampling, adaptives Super-Sampling oder die A-Puffer- Technik. Die vorliegende Erfindung kann in jedem beliebigen System verwendet werden, in dem mehrfache Mischeinheiten auf andere Weise genutzt werden können.
  • Um das Verfahren und das System gemäß der vorliegenden Erfindung besser darzustellen, wird nun auf 3 bezug genommen, das ein Blockdiagramm auf hoher Ebene eines Ausführungsbeispiels von solch einem System 100' darstellt. Viele Komponenten des Systems 100' sind analog zu den Komponenten, die in dem in 2 dargestellten System 100 abgebildet sind. Diese Komponenten sind ähnlich bezeichnet. Beispielsweise entspricht die in 3 dargestellte Anzeige 104' der in 2 dargestellten Anzeige 104. So kann die Anzeige 104' einen Anzeigespeicher (nicht dargestellt) beinhalten. Unter Bezugnahme nochmals auf 3 beinhaltet die Antialiasing-Einheit 140' einen Akkumulator 142', wenigstens eine Mischeinheit 144' und einen Bereichsgenerator 150. Der Akkumulator 140' beinhaltet immer noch eine Mehrzahl von Subpixel-Puffer (in 3 nicht dargestellt). Die Subpixel-Puffer speichern Daten für Fragmente, die ein bestimmtes Pixel der Anzeige 104' schneiden. In einem bevorzugten Ausführungsbeispiel ist die Anzahl der Mischeinheiten 144' gleich eins. In einem alternativen Ausführungsbeispiel ist die Anzahl der Mischeinheiten geringer als die Anzahl an Subpixel.
  • 4 zeigt ein detaillierteres Blockdiagramm der Anti-Aliasing-Einheit 140' gemäß der vorliegenden Erfindung. Die Anti-Aliasing-Einheit 140' beinhaltet den Akkumulator 142, die Mischeinheit 144' und den Bereichsgenerator 150. Es ist ebenso eine Sendeeinheit 147 und eine Einheit 148 für aktuelle Daten dargestellt. Der Bereichsgenerator 150 beinhaltet einen Schnittmaskengenerator 152, der mit der Bereichsliste 154 gekoppelt ist. Die Bereichsliste 154 beinhaltet zwei Felder, eine Bereichsnummer 156 und ein Bereichsbitfeld 158. Die Bereichsnummer 156 beinhaltet aktive Einträge 160175 für jeden möglichen aktiven Bereich. In einem bevorzugten Ausführungsbeispiel ist die maximale Anzahl von möglichen aktiven Bereichen und die Anzahl der aktiven Einträge 160175 die gleiche wie die Anzahl an Subpixel. In jedem aktiven Eintrag 160 bis 175 kann eine Angabe angeordnet werden, ob ein entsprechender Bereich aktiv ist. In einem bevorzugten Ausführungsbeispiel ist der entsprechende Bereich aktiv, wenn ein Bit in einem aktiven Eintrag 160175 gesetzt ist. Das Bereichsbitfeld 158 beinhaltet ebenso Bitfeldeinträge 180195 für die möglichen aktiven Bereiche. Jeder Bitfeldeintrag 180 bis 195 in dem Bitfeld 158 zeigt die Subpixel an, die der entsprechende aktive Bereich bedeckt.
  • 5A zeigt ein Flussdiagramm auf hoher Ebene eines Verfahrens 200 gemäß der vorliegenden Erfindung zum Mischen von Daten für ein Fragment beim Schneiden eines ausgewählten Pixels der Anzeige 104'. Ein Fragment beinhaltet eine Anzeige eines Abschnitts des Pixels, das von dem Fragment geschnitten wird. In einem bevorzugten Ausführungsbeispiel wird diese Angabe von einer Bedeckungsmaske geliefert. In einem Ausführungsbeispiel ist die Bedeckungsmaske die gleiche wie die Flächenmaske, die oben diskutiert worden ist. In einem anderen Ausführungsbeispiel jedoch kann die Bedeckungsmaske eine andere Maske sein. Wenn beispielsweise das Verfahren 200 beim Antialiasing von impliziten bzw. beinhalteten Kanten verwendet wird, kann die Bedeckungsmaske für das Fragment die oben beschriebene Gesamtmaske sein. Das Verfahren 200 verarbeitet vorzugsweise die Fragmente, die das ausgewählte Pixel schneiden, einzeln. Weiterhin kann jedes Pixel in eine Mehrzahl von Subpixel unterteilt werden. In einem bevorzugten Ausführungsbeispiel wird jedes Pixel in ein 4 × 4 Array von Subpixel unterteilt.
  • Mittels des Schritts 202 wird wenigstens ein aktiver Bereich für das Pixel bereitgestellt. Der wenigstens eine aktive Bereich schneidet wenigstens einen Teil des Pixels. So schneidet der wenigstens eine aktive Bereich einige oder alle der Subpixel in dem Pixel. In einem bevorzugten Ausführungsbeispiel wird in dem Schritt 202 ein erster aktiver Bereich bereitgestellt, der das gesamte Pixel bedeckt. Vorzugsweise wird der erste aktive Bereich bereitgestellt, indem das Bit in einem ersten aktiven Eintrag 160 gesetzt wird. Ebenso zeigt in einem bevorzugten Ausführungsbeispiel der erste Bitfeldeintrag 180 an, dass das gesamte Pixel bedeckt ist. In einem alternativen Ausführungsbeispiel jedoch kann der erste aktive Bereich nicht das gesamte Pixel sein. Wenn beispielsweise jede Mischeinheit für einen Teil von jedem Pixel verwendet wird, kann der erste aktive Bereich nur einen Teil des Pixels bedecken.
  • Wenigstens ein neuer Bereich wird mittels des Schritts 204 bereitgestellt, indem der Schnitt zwischen jedem der aktiven Bereiche und dem Fragment bestimmt wird. In einem bevorzugten Ausführungsbeispiel beinhaltet der Schritt 204 das Bestimmen des Schnitts zwischen jedem der aktiven Bereiche und der Bedeckungsmaske des Fragments, in dem der Schnittmaskengenerator 152 verwendet wird. Die Anzahl der in Schritt 204 zur Verfügung gestellten neuen Bereiche hängt von der Anzahl der aktiven Bereiche ab und welcher Abschnitt von jedem aktiven Bereich von dem Fragment geschnitten wird. Die neuen Bereiche werden ebenso in einen ersten Abschnitt bzw. Teil der neuen Bereiche und einen zweiten Abschnitt bzw. Teil der neuen Bereiche unterteilt. Der erste Abschnitt der neuen Bereiche kann einen oder mehrere neue Bereiche beinhalten. Der erste Abschnitt beinhaltet neue Bereiche, die den Abschnitten der aktiven Bereiche entsprechen, die das Fragment schneidet. So zeigt der erste Abschnitt der neuen Bereiche die Abschnitte der aktiven Bereiche an, in denen Daten in dem Akkumulator einschließlich der Farbe sich aufgrund des Fragments verändern werden. Der zweite Abschnitt der neuen Bereiche kann keinen oder mehrere neue Bereiche beinhalten. Der zweite Abschnitt beinhaltet wenigstens einen neuen Bereich, der den Abschnitten des wenigstens einen aktiven Bereichs entspricht, die das Fragment nicht schneidet.
  • Der erste Abschnitt des wenigstens einen neuen Bereichs wird dann mittels des Schritts 206 unter Verwendung der Mischeinheit 144' gemischt. Für jeden neuen Bereich in dem ersten Abschnitt der neuen Bereiche verwendet die Mischeinheit vorzugsweise einen Taktzyklus. Das Ergebnis wird ebenso im Schritt 206 wie im Akkumulator 142' gespeichert. In einem bevorzugten Ausführungsbeispiel beinhaltet der Schritt 206 das Mischen der Farbe für das neue Fragment mit jeglicher Farbe, die in dem Akkumulator 142' für jedes Subpixel im ersten Abschnitt der neuen Bereiche gespeichert ist.
  • 5B zeigt ein Flussdiagramm auf hoher Ebene eines Verfahrens 200' gemäß der vorliegenden Erfindung zum Bereitstellen von antialiasten Daten für das graphische Bild, das auf der Anzeige 104' dargestellt ist. Die Schritte 202' bis 206' sind analog zu den Schritten 202 bis 206 des Verfahrens 200. Unter Bezugnahme zurück auf 5B werden der wenigstens eine aktive Bereich mittels des Schritts 208 mit dem wenigstens einen neuen Bereich aktualisiert. So beinhalten die aktiven Bereiche den ersten Teil der neuen Bereiche, wo die vorigen aktiven Bereiche und das Fragment sich schneiden, und den zweiten Teil der neuen Bereiche, wo die vorigen aktiven Bereiche und das Fragment sich nicht schneiden. Die Schritte 204 bis 208 werden dann für jedes verbleibende Fragment mittels des Schritts 208 wiederholt, das das Pixel schneidet. So wird der Schnitt zwischen den aktiven Bereichen und jedem neuen Fragment bestimmt. Es werden dann neue Bereiche auf der Grundlage der Schnitte zur Verfügung gestellt. Die Farbe und andere Daten für Fragmente werden gemischt und die aktiven Bereiche aktualisiert. Das Verfahren fährt fort, sich zu wiederholen, bis alle der Fragmente, die das Pixel schneiden, gemischt worden sind.
  • Wenn einmal die Daten für alle Fragmente, die das Pixel schneiden, gemischt worden sind, werden mittels des Schritts 212 die antialiasten Daten für das Pixel bereitgestellt. In einem bevorzugten Ausführungsbeispiel beinhaltet der Schritt 212 das Liefern der Daten, die aktuell für jedes Subpixel in dem Akkumulator 142' gespeichert sind, an die Anzeige 104'. Die Schritte 204 bis 212 werden dann für jedes Pixel, das in der Anzeige verbleibt, mittels des Schritts 214 wiederholt. So kann das Antialiasing für jedes der auf der Anzeige 104' dargestellten Objekte durchgeführt werden.
  • 6 zeigt ein detaillierteres Flussdiagramm eines Verfahrens 220 zur Durchführung der Schritte 204 und 206 der Erzeugung des wenigstens einen neuen Bereichs und der Mischung des Fragments. Die Bedeckungsmaske für das Fragment wird mittels des Schritts 222 mit jedem der aktiven Bereiche geschnitten, um eine Schnittmaske für jeden der aktiven Bereiche bereitzustellen. In einem bevorzugten Ausführungsbeispiel beinhaltet der Schritt 222 die Durchführung einer logischen UND-Verknüpfung des Bitfelds von jedem der aktiven Bereiche mit der Bedeckungsmaske des Fragments. Die aktiven Bereiche, die das Fragment schneidet, können in zwei Gruppen aufgeteilt werden. Die erste Gruppe beinhaltet die aktiven Bereiche, die vollständig von der Bedeckungsmaske des Fragments bedeckt werden. Die zweite Gruppe beinhaltet die aktiven Bereiche, die nicht vollständig von der Bedeckungsmaske des Fragments bedeckt werden. Für jeden aktiven Bereich, der von der Bedeckungsmaske des Fragments bedeckt ist, wird der aktive Bereich mittels des Schritts 224 als ein neuer Bereich aktualisiert. Der aktive Bereich wird aktualisiert, da die Farbe oder andere für das Fragment gespeicherte Daten von den Daten des Fragments verändert werden. In einem bevorzugten Ausführungsbeispiel beinhaltet der Schritt 224 die Anzeige, dass der aktive Bereich gemischt werden muss, wobei er aber nicht den aktiven Eintrag 160175 oder den Bitfeldeintrag 180185 des aktiven Bereichs verändert. Jeder aktive Bereich, der nicht von der Bedeckungsmaske bedeckt ist, wird in zwei neue Bereiche mittels des Schritts 226 geteilt. Der erste neue Bereich beinhaltet den Abschnitt des aktiven Bereichs, der das Fragment schneidet. Der erste neue Bereich wird gemischt, da die Farbe und andere Daten für den ersten neuen Bereich von den Daten des Fragments verändert werden. Die Abschnitte des Fragments, die der wenigstens einen Schnittmaske entsprechen, werden dann mittels des Schritts 228 unter Verwendung der Mischeinheit 144' gemischt. Für jede Mischung auf der Grundlage der wenigstens einen Schnittmaske verwendet die Mischeinheit 144' vorzugsweise einen Taktzyklus.
  • Die 7A und 7B zeigen ein detaillierteres Flussdiagramm eines Verfahrens 250 zum Liefern von antialiasten Daten gemäß der vorliegenden Erfindung. Das aktuelle Pixel wird mittels des Schritts 252 ausgewählt. Der erste aktive Bereich wird dann als der aktuelle aktive Bereich mittels des Schritts 254 ausgewählt. Der erste aktive Bereich entspricht vorzugsweise dem Hintergrund. So beinhaltet der Schritt 254 das Setzen des ersten aktiven Eintrags 160 in der Liste 156 der aktiven Bereiche und das Anzeigen in dem ersten Bitfeldeintrag 180, das der erste aktive Bereich alle Subpixel 301316 umfasst. So beinhaltet der Schritt 254 ebenso vorzugsweise das Speichern der Farbe und anderer Daten für den Hintergrund in dem Akkumulator 142'. Der Schritt 254 beinhaltet ebenso das Liefern von Daten in Bezug auf den ersten aktiven Bereich von der Bereichsliste 156 an den Schnittmaskengenerator 158.
  • Ein erstes Fragment wird als das aktuelle Fragment mittels des Schritts 255 gesetzt. Das erste Fragment wird das Fragment für das Polygon 372 sein. Das aktuelle Fragment wird dann mit dem ersten aktiven Bereich mittels des Schritts 256 geschnitten. In einem bevorzugten Ausführungsbeispiel beinhaltet der Schritt 256 das Durchführen einer logischen UND-Verknüpfung der Bedeckungsmaske des Fragments und des Bitfelds 160 des ersten aktiven Bereichs. Der Schritt 256 beinhaltet ebenso das Bereitstellen einer Schnittmaske auf der Grundlage des Schnitts der Bedeckungsmaske für das aktuelle Fragment und des Bitfelds 160 des ersten aktiven Bereichs. Es wird dann mittels des Schritts 258 bestimmt, ob die Bedeckungsmaske für das aktuelle Pixel den aktuellen aktiven Bereich bedeckt. In so einem Fall bedecken die Schnittmaske, die Bedeckungsmaske und der aktuelle aktive Bereich den gleichen Abschnitt des Pixels. Die Bedeckungsmaske wird den ersten aktiven Bereich bedecken, wenn das dem Fragment entsprechende Polygon das gesamte Pixel bedeckt. Wenn der aktuelle aktive Bereich von der Bedeckungsmaske bedeckt wird, wird mittels des Schritts 262 der aktuelle aktive Bereich aktualisiert. In einem bevorzugten Ausführungsbeispiel beinhaltet der Schritt 262 die Anzeige, dass der aktuelle aktive Bereich einer Mischung unterzogen wird, ohne Veränderung des aktiven Eintrags 160175 oder des Bitfeldeintrag 180195, die dem aktuellen aktiven Bereich entsprechen. So wird kein neuer Bereich erzeugt, wenn die Bedeckungsmaske anzeigt, dass das Fragment dem gesamten aktuellen aktiven Bereich schneidet.
  • Wenn jedoch die Bedeckungsmaske des aktuellen Pixels nicht den aktuellen aktiven Bereich bedeckt, wird mittels des Schritts 260 der aktuelle aktive Bereich in zwei neue Bereiche geteilt. Der erste neue Bereich, der in Schritt 260 gebildet wird, ist der gleiche wie die Schnittmaske und beinhaltet den Abschnitt des aktuellen aktiven Bereichs, den das Fragment schneidet. In einem bevorzugten Ausführungsbeispiel beinhaltet das Bilden des ersten neuen Bereichs in Schritt 260 das Setzen eines Bits in einem nächsten aktiven Eintrag der aktiven Einträge 160175 und das Anzeigen eines nächsten Bitfeldeintrags des nächsten Bitfeldeintrags 180195. Der nächste Bitfeldeintrag zeigt an, dass das Bitfeld den gleichen Abschnitt des Pixels wie die Schnittmaske bedeckt. Der zweite neue Bereich beinhaltet den Abschnitt des aktuellen aktiven Bereichs, den das Fragment nicht schneidet. So wird der zweite neue Bereich nicht einer Mischung unterzogen und entspricht dem Komplement der Schnittmaske. Das Komplement der Schnittmaske bedeckt den Abschnitt des aktuellen aktiven Bereichs, der nicht in der Schnittmaske umfasst ist. Das Bereitstellen des zweiten neuen Bereichs beinhaltet vorzugsweise das Aktualisieren des aktuellen aktiven Bereichs. Das Aktualisieren des aktuellen aktiven Bereichs für den zweiten neuen Bereich ändert das Bitfeld in dem Bitfeldeintrag 180195 des aktuellen aktiven Bereichs. Das Bitfeld für den aktuellen aktiven Bereich wird verändert, um nur den Abschnitt des Pixels zu umfassen, der von dem Komplement der Schnittmaske bedeckt ist.
  • Mittels des Schritts 264 wird dann eine Mischung für die Schnittmaske des aktuellen aktiven Bereichs durchgeführt. Repräsentative Daten für den aktuellen Bereich, wie beispielsweise die Farbe, die in dem Akkumulator 142' gespeichert sind, werden mittels der Einheit 148 für aktuelle Daten zur Verfügung gestellt. Die Einheit 148 für aktuelle Daten wählt ein Subpixel in dem aktuellen Bereich von dem Akkumulator 142' aus und liefert die repräsentativen Daten von diesem Subpixel. Die Einheit 148 für aktuelle Daten erhält Informationen darüber, welches der Subpixel in dem Akkumulator 142' von der Bereichsliste 156 ausgewählt werden soll. Die Mischeinheit 144' mischt die Daten, einschließlich der Farbe, von dem Fragment mit den repräsentativen Daten in Schritt 264. Der Schritt 264 beinhaltet ebenso das Liefern der gemischten Daten an eine Sendeeinheit 147. Der Sendeeinheit 147 wird die Schnittmaske von der Bereichsliste 156 zur Verfügung gestellt. Die Sendeeinheit 147 sendet die gemischten Daten zu dem Subpixel in der Schnittmaske in Schritt 264. Der Schritt 264 benötigt vorzugsweise einen einzigen Taktzyklus.
  • Es wird dann mittels des Schritts 266 bestimmt, ob ein anderer aktiver Bereich verbleibt, der noch mit dem aktuellen Fragment geschnitten werden muss. Wenn das so ist, wird mittels des Schritts 268 der nächste aktive Bereich als der aktuelle aktive Bereich gesetzt. Die Schritte 256 bis wenigstens 266 werden dann wiederholt. Wenn kein anderer aktiver Bereich mit dem aktuellen Fragment geschnitten werden muss, wird dann in Schritt 270 bestimmt, ob ein anderes Fragment, das das Pixel schneidet, mittels des Schritts 270 verarbeitet werden soll. Wenn das so ist, wird mittels des Schritts 272 das nächste zu verarbeitende Fragment als aktuelles Fragment gesetzt. Die Schritte 254 bis wenigstens 270 werden dann wiederholt.
  • Wenn kein anderes Fragment die Pixel schneidet, wird dann in Schritt 274 bestimmt, ob alle Pixel in der Anzeige 104' verarbeitet worden sind. Wenn das nicht so ist, wird dann mittels des Schritts 276 das nächste Pixel als aktuelles Pixel gesetzt. Die Schritte 254 bis wenigstens 276 werden dann wiederholt. Wenn keine Pixel verbleiben, endet das Verfahren 250.
  • Um das Verfahren 250 weiter zu erklären, wird auf die 8A bis 11D Bezug genommen. Die 8A zeigt ein Pixel 300 der Anzeige 104'. Das Pixel 300 beinhaltet die Fragmente 372 und 374 für zwei Polygone. Es ist ebenso der Hintergrund 270 dargestellt. Die Fragmente 372 und 374 teilen sich die Kante 376.
  • Die 8B zeigt das gleiche Pixel 300 bei dargestellten Subpixeln 301 bis 316. In einem bevorzugten Ausführungsbeispiel wird jedes Pixel 300 in ein 4 × 4 Array von Subpixel 301316 aufgeteilt. Es verhindert jedoch nicht die Verwendung von einer anderen Anzahl von Subpixel. Ob die Fragmente 372 und 374 sich an der Kante 376 schneiden oder überlappen und den gleichen Platz an der Kante 376 belegen, verändert vorzugsweise im wesentlichen nicht die vorliegende Erfindung. Zur Vereinfachung der Erklärung wird jedoch angenommen, dass das Fragment 372 alle Subpixel 308, 311312 und 314316 sowie die Hälfte der Subpixel 304, 307, 310 und 313 beinhaltet. Zur Vereinfachung der Erklärung wird angenommen, dass das Fragment 374 alle Subpixel 305, 309310 und 313315 und die Hälfte der Subpixel 301, 306, 311 und 316 beinhaltet. Die 8C und 8D zeigen die Bedeckungsmasken 318 und 319 für die Fragmente 372 bzw. 374.
  • Unter Bezugnahme auf die 78D sind die Fragmente 372 und 374 zu rendern. Das Pixel 300 wird mittels des Schritts 252 als aktuelles Pixel gesetzt. So wird das Bitfeld für den ersten aktiven Bereich als das gesamte Pixel 300 gesetzt. Die 9 zeigt den ersten aktiven Bereich 320. Weiterhin werden Daten für den ersten aktiven Bereich als Hintergrunddaten angenommen. Dementsprechend werden Hintergrunddaten für jedes der Subpixel 301316 gespeichert. Das erste Fragment wird dann mittels des Schritts 255 als aktuelles Fragment gesetzt. Zur Vereinfachung der Erklärung wird das erste Fragment das Fragment 374 sein.
  • Das Fragment 372 bedeckt nicht das gesamte Pixel 300, so dass der Schritt 258 anzeigen wird, dass die Bedeckungsmaske für das Fragment nicht dem ersten aktiven Bereich 320 bedeckt. So wird unter Verwendung des Schritts 260 der erste aktive Bereich 320 gespalten.
  • Es werden die Subpixel der erste neue Bereich sein, die der Schnittmaske entsprechen, die unter Verwendung des ersten aktiven Bereichs 320 und der Bedeckungsmaske 318 des Fragments 372 erzeugt worden ist. Das Bilden des ersten neuen Bereichs beinhaltet vorzugsweise das Setzen des zweiten aktiven Eintrags 161 und das Anzeigen in dem zweiten Bitteldeintrag 181, dass der erste neue Bereich der Schnittmaske für das Fragment 372 entspricht. Da der erste aktive Bereich 320 das gesamte Pixel 300 bedeckt hat, ist die Schnittmaske für das Fragment 372 die gleiche wie die Bedeckungsmaske 318. 10B zeigt den ersten neuen Bereich 322. Der zweite neue Bereich, der in Schritt 260 gebildet worden ist, wird der verbleibende Teil des ersten aktiven Bereichs 320 sein. So ist der zweite neue Bereich nur eine aktualisierte Version des ersten aktuellen Bereichs. Die 10A zeigt den ersten aktiven Bereich 320' nach der Aktualisierung unter Verwendung des Komplements der Bedeckungsmaske. Es wird hervorgehoben, dass wenn der Schritt 260 vervollständigt ist, die aktiven Bereiche für das nächste verarbeitete Fragment den ersten aktiven Bereich 320' und einen zweiten aktiven Bereich 322 beinhalten, der der erste neue Bereich 322 ist.
  • Eine Mischung wird dann mittels des Schritts 264 für jede Schnittmaske bereitgestellt. Der Schritt 264 beinhaltet das Mischen der Daten von dem Fragment 372 mit den Hintergrunddaten und das Liefern der Ergebnisse an die geeigneten Abschnitte des Akkumulators 142'. Die 10C zeigt die Subpixelpuffer 331 bis 345 für den Akkumulator 142'. Das „x" zeigt Hintergrunddaten an. Das „a" zeigt Daten für das Fragment 372 an, das mit den Hintergrunddaten gemischt worden ist. So beinhalten die Subpixelpuffer 331333, 335336 und 339 Hintergrunddaten. Die verbleibenden Subpixelpuffer 334, 336338 und 340–346 beinhalten gemischte Daten.
  • Da es keine weiteren zu mischenden aktiven Bereiche gibt und da das Fragment 374 verarbeitet werden soll, wird in Schritt 272 das Fragment 374 als aktuelles Fragment gesetzt. Der erste aktive Bereich 322' wird mittels des Schritts 254 als der aktuelle aktive Bereich gesetzt. Der Schnitt zwischen dem Fragment 374 und dem ersten aktiven Bereich 320' wird dann ermittelt. Das Fragment 374 bedeckt nicht den gesamten ersten aktiven Bereich. Daher wird der erste aktive Bereich 320' mittels des Schritts 260 geteilt. Es werden die Subpixel der erste neue Bereich sein, die der Schnittmaske entsprechen, die unter Verwendung des ersten aktiven Bereichs 320 und der Bedeckungsmaske 319 des Fragments 374 erzeugt worden ist. Das Ausbilden des ersten neuen Bereichs beinhaltet vorzugsweise das Setzen des zweiten dritten aktiven Bereichs 162 und das Anzeigen in dem dritten Bitfeldeintrag 182, dass der erste neue Bereich der Schnittmaske für das Fragment 374 und dem ersten aktiven Bereich 320' entspricht. Die 11C zeigt den ersten neuen Bereich 324 oder den dritten aktiven Bereich 324. Der in Schritt 260 gebildete zweite neue Bereich wird Teil des ersten aktiven Bereichs 320' bleiben. So ist der zweite neue Bereich nur eine aktualisierte Version des ersten aktiven Bereichs 320'. Die 11A zeigt den ersten aktiven Bereich 320'', nachdem er unter Verwendung des Komplements der Bedeckungsmaske aktualisiert worden ist.
  • Eine Mischung wird dann mittels des Schritts 264 für jede Schnittmaske zur Verfügung gestellt. Der Schritt 264 beinhaltet das Mischen der Daten von dem Fragment 374 mit den Hintergrunddaten und das Liefern der Ergebnisse an die entsprechenden Abschnitte des Akkumulators 142'. Das Mischen in Schritt 264 beansprucht einen Taktzyklus, um die Daten in den Subpixeln entsprechend des dritten aktiven Bereichs 324 zu mischen.
  • Mittels des Schritts 266 wird dann ermittelt, dass der zweite aktive Bereich verarbeitet werden soll. Der zweite aktive Bereich 322 wird mittels des Schritts 268 als aktueller aktiver Bereich gesetzt. Der Schnitt zwischen dem Fragment 374 und dem zweiten aktiven Bereich 322 wird dann ermittelt. Das Fragment 374 bedeckt nicht den gesamten zweiten aktiven Bereich. Daher wird mittels des Schritts 260 der zweite aktive Bereich 322 geteilt. Der erste neue Bereich wird die Subpixel umfassen, die der Schnittmaske entsprechen, die unter Verwendung des zweiten aktiven Bereichs 322 und der Bedeckungsmaske 319 des Fragments 374 erzeugt worden ist. Das Bilden des ersten neuen Bereichs beinhaltet vorzugsweise das Setzen des vierten dritten aktiven Eintrags 163 und das Anzeigen in dem vierten Bitfeldeintrag 183, das der erste neue Bereich der Schnittmaske für das Fragment 374 und den zweiten aktiven Bereich 322 entspricht. Die 11D zeigt den gebildeten ersten neuen Bereich 326 oder den vierten aktiven Bereich 326. Der in Schritt 260 gebildete zweite neue Bereich wird dann Teil des zweiten aktiven Bereichs 322 bleiben. So ist der zweite neue Bereich nur eine aktualisierte Version des zweiten aktiven Bereichs 322. Die 11B zeigt den zweiten aktiven Bereich 322', nachdem er unter Verwendung des Komplements der Bedeckungsmaske aktualisiert worden ist.
  • Eine Mischung wird dann mittels des Schritts 264 für jede Schnittmaske bereitgestellt. Der Schritt 264 beinhaltet das Mischen der Daten von dem Fragment 374 mit den Daten für den zweiten aktiven Bereich 322 und das Liefern der Ergebnisse an die geeigneten Teile des Akkumulators 142'. Das Mischen in Schritt 264 beansprucht einen Taktzyklus, um die Daten in den Subpixeln zu mischen, die dem vierten aktiven Bereich 326 entsprechen. Die 11E zeigt die Subpixelpuffer 331 bis 345 für den Akkumulator 142' nach der Mischung. Das „x" zeigt Hintergrunddaten an. Das „a" zeigt Daten für das Fragment 374 an, das nur mit Hintergrunddaten gemischt worden ist. Ein „b" zeigt Daten für das Fragment 374 an, das nur mit Hintergrunddaten gemischt worden ist. Ein „c" zeigt Daten für das Fragment 374 an, das mit den „a"-Daten gemischt worden ist. So beinhalten die Subpixelpuffer 332333 Hintergrunddaten, beinhalten die Subpixelpuffer 334, 337 bis 338 und 342 Daten für das Fragment 372, das nur mit Hintergrunddaten gemischt worden ist, und beinhalten die Subpixelpuffer 331, 335336 und 339 Daten für das Fragment 374, das nur mit Hintergrunddaten gemischt worden ist. Die Subpixelpuffer 340, 341 und 342 bis 346 beinhalten Daten, die für den Hintergrund, das Fragment 372 und das Fragment 374 gemischt worden sind.
  • Unter Verwendung der Verfahren 200, 220 und 250 können weniger Mischeinheiten 142' verwendet werden. In einem bevorzugten Ausführungsbeispiel kann eine einzige Mischeinheit 142' für alle Subpixel verwendet werden. So wird ein großes Maß an Platz in dem System 100' gespart. Auch wenn das Verfahren einen einzigen Taktzyklus für jede Mischung und daher für jede Schnittmaske verwendet, verlangsamt dies im allgemeinen die Verarbeitungsleistung nicht stark. Üblicherweise ist die Anzahl von Fragmenten begrenzt, die eine Kante in einem bestimmten Pixel aufweisen. Daher ist die in 8A dargestellte Situation sehr unüblich. Statt dessen bedeckt in der überwiegenden Mehrheit der Fälle jedes Fragment ein gesamtes Pixel. Daher wird üblicherweise eine Mischung pro Fragment durchgeführt. Als Ergebnis wird die Verarbeitungsgeschwindigkeit nicht verlangsamt. Der Grund dafür ist, dass die Mischeinheiten, die einen Teil eines Fragments für einen einzigen Subpixelpuffer verarbeiten, ebenso einen Taktzyklus verwden, um eine Mischung bereitzustellen. So wird Platz gespart, ohne im allgemeinen die Verarbeitungsgeschwindigkeit zu opfern.
  • Zusätzlich kann die vorliegende Erfindung zusammen mit herkömmlichen Antialiasing-Techniken verwendet werden, wie beispielsweise Super-Sampling, adaptives Super-Sampling, die A-Puffer-Technik und die konventionelle Technik, die Gewichtung verwendet. Die Verwendung der vorliegenden Erfindung bei der Durchführung von Super-Sampling beispielsweise würde es erlauben, eine einzige Mischeinheit beim Super-Sampling zu verwenden, wobei im allgemeinen die Verarbeitungsgeschwindigkeit aufrecht erhalten wird. Auf ähnliche Weise könnte der Umriß, der oben in Bezug auf das adaptive Super-Sampling diskutiert worden ist, ähnlich zu den Masken behandelt werden, die mit bezug auf das Antialiasing und das Antialiasing von beinhalteten Kanten diskutiert worden ist. So ist das adaptive Super-Sampling vereinbar mit der vorliegenden Erfindung. Dementsprechend kann das Verfahren und das System gemäß der vorliegenden Erfindung auch die Anzahl von Mischeinheiten verringern, die in herkömmlichen Antialiasing-Techniken verwendet werden, ohne üblicherweise die Verarbeitungsleistung zu opfern.
  • Auch in der unüblichen Situation, in der mehrfache Fragmente Kanten bei einem Pixel beinhalten, ist jede beliebige Verschlechterung der Leistung im allgemeinen hinnehmbar. In anderen Worten ausgedrückt werden mehr aktive Bereiche erzeugt, je mehr Fragmente Kanten an dem gleichen Pixel haben. Mehr Schnittmasken werden also für jedes Fragment erzeugt. In einem bevorzugten Ausführungsbeispiel führt jede Schnittmaske zu einer Mischung. Je mehr Schnittmasken existieren, um so mehr Mischungen werden erzeugt. Im Allgemeinen gibt es eine Mischung für jeden geschnittenen aktiven Bereich (jede erzeugte Schnittmaske). So kann das System verlangsamt werden. Jedoch wird das System weiterhin funktionieren. Daher ist jeder Verlust an Leistung, dem man begegnet, hinnehmbar.
  • Es wurde ein Verfahren und ein System zur effizienten Bereitstellung eines Antialiasing unter Verwendung von weniger Mischeinheiten offenbart. Ein gemäß der vorliegenden Erfindung geschriebenes Programm kann in einer Form eines von einem Rechner lesbaren Mediums gespeichert werden, wie beispielsweise ein Speicher oder eine CD-ROM, oder kann über ein Netzwerk übertragen werden und von einem Prozessor ausgeführt werden.
  • Auch wenn die vorliegende Erfindung gemäß dem gezeigten Ausführungsbeispiel beschrieben worden ist, wird ein Fachmann auf dem Gebiet schnell erkennen, dass es Variationen für die Ausführungsbeispiele geben könnte und diese Variationen innerhalb des Gedankens und des Umfangs der vorliegenden Erfindung liegen. Dementsprechend können viele Modifikationen von einem Fachmann auf dem Gebiet gemacht werden, ohne den Umfang der beigefügten Ansprüche zu verlassen.

Claims (21)

  1. Ein Verfahren (200, 200', 250) zum Bereitstellen eines Antialiasing für ein graphisches Bild auf einer Anzeige (104, 104'), wobei das von Daten erzeugte graphische Bild wenigstens ein Objekt beschreibt, die Anzeige eine Mehrzahl von Pixel umfasst, das wenigstens eine Objekt eine Mehrzahl von Fragmenten umfasst, ein Teil der Mehrzahl von Fragmenten ein Pixel der Mehrzahl von Pixeln schneidet, jedes der Mehrzahl von Fragmenten eine Anzeige eines Teils eines entsprechenden Pixels umfasst, der geschnitten wird und das Verfahren die Schritte aufweist: (a) Bereitstellen (202, 202', 254) wenigstens eines aktiven Bereichs (320) für das Pixel, wobei jeder der wenigstens einen aktiven Bereiche einen ersten Teil des Pixels schneidet; gekennzeichnet durch die folgenden weiteren Schritte: (b) Bereitstellen (204, 204') von wenigstens einem neuen Bereich, wobei ein erster neuer Bereich (322) des wenigstens einen neuen Bereichs anzeigt, wo in dem Pixel sich der wenigstens eine aktive Bereich und das Fragment schneiden, und wobei ein zweiter neuer Bereich (320') des wenigstens einen neuen Bereichs anzeigt, wo in dem Pixel sich der wenigstens eine aktive Bereich und das Fragment nicht schneiden; (c) Mischen (206, 206'; 144') eines Teils des Fragments in einem zweiten Teil des Pixels, der dem ersten neuen Bereich (322) des wenigstens einen neuen Bereichs entspricht; und (d) Aktualisieren (208; 320', 322) des wenigstens einen aktiven Bereichs, so dass er jeden wenigstens einen neuen Bereich umfasst.
  2. Das Verfahren von Anspruch 1 weiterhin umfassend die Schritte: (e) Wiederholen der Schritte (b) bis (d) für jedes verbleibende Fragment in dem Teil der Mehrzahl von Fragmenten (210); und (f) Bereitstellen von antialiasten Daten für das Pixel auf der Grundlage eines zweiten Teils der Mehrzahl von Fragmenten, die gemischt worden sind (212).
  3. Das Verfahren von Anspruch 2 weiterhin aufweisend die Schritte: (g) Wiederholen der Schritte (a) bis (f) für jedes der Mehrzahl von Pixel.
  4. Das Verfahren von Anspruch 1, wobei für jedes Fragment die Anzeige des Teils des entsprechenden Pixels, das geschnitten wird, weiterhin eine Bedeckungsmaske umfasst und wobei der Schritt (b) zum Bereitstellen des neuen Bereichs weiterhin den Schritt umfasst: (b1) Schneiden der Bedeckungsmaske für das Fragment mit jedem wenigstens einen aktiven Bereich, um eine Schnittmaske für jeden wenigstens einen aktiven Bereich zur Verfügung zu stellen.
  5. Das Verfahren von Anspruch 4, wobei für jeden wenigstens einen aktiven Bereich der Schritt (b) des Bereitstellens des neuen Bereichs weiterhin die Schritte aufweist: (b2) Aktualisieren eines aktiven Bereichs, wenn der aktive Bereich eine Schnittmaske hat, die den aktiven Bereich bedeckt; und (b3) Aufteilen des aktiven Bereichs in einen ersten neuen Bereich und einen zweiten neuen Bereich, wenn der aktive Bereich nicht der gleiche wie die Schnittmaske ist, wobei der erste neue Bereich der Schnittmaske entspricht und Teil des zweiten Abschnitts des wenigstens einen neuen Bereichs ist.
  6. Das Verfahren von Anspruch 5, wobei der Mischschritt (c) weiterhin den Schritt aufweist: (c) das Mischen des Teils des Fragments in einem zweiten Abschnitt des Pixels entsprechend der Schnittmaske, für jeden wenigstens einen aktiven Bereich.
  7. Das Verfahren von Anspruch 1, wobei jedes der Mehrzahl von Pixeln weiterhin eine Mehrzahl von Subpixel beinhaltet, der erste Teil des wenigstens einen neuen Bereichs einen ersten Teil der Mehrzahl von Subpixel anzeigt, in denen jeder wenigstens eine aktive Bereich und das Fragment sich schneiden, und der zweite Teil des wenigstens einen neuen Bereichs einen zweiten Teil der Mehrzahl von Subpixel anzeigt, in denen jeder wenigstens eine neue Bereich und das Fragment sich nicht schneiden.
  8. Das Verfahren von Anspruch 1, wobei jedes der Mehrzahl von Fragmenten weiterhin eine Farbe umfasst und wobei der Mischschritt (c) weiterhin den Schritt aufweist: (c1) Mischen der Farbe des Fragments in dem ersten Teil des wenigstens einen neuen Abschnitts.
  9. Das Verfahren von Anspruch 1, wobei der wenigstens eine neue Bereich einen einzigen neuen Bereich beinhaltet.
  10. Das Verfahren von Anspruch 1, wobei der wenigstens eine neue Bereich eine Mehrzahl von neuen Bereichen beinhaltet, der erste Teil des wenigstens einen neuen Bereichs wenigstens einen der Mehrzahl der neuen Bereiche beinhaltet und der zweite Teil des wenigstens einen neuen Bereichs wenigstens einen verbleibenden Bereich der Mehrzahl von neuen Bereichen beinhaltet.
  11. Das Verfahren von Anspruch 1, wobei jedes der Mehrzahl von Fragmenten eine Bedeckungsmaske aufweist, die einen Teil eines entsprechenden Pixels anzeigt, das geschnitten wird, und das Verfahren die Schritte aufweist: (a) Bereitstellen (254) wenigstens eines aktiven Bereichs (320) für das Pixel, wobei jeder wenigstens eine aktive Bereich einen ersten Teil des Pixels schneidet; (b) Schneiden (256) der Bedeckungsmaske (318) für das Fragment mit jedem wenigstens einen aktiven Bereich, um eine Schnittmaske (318) für jeden wenigstens einen aktiven Bereich bereitzustellen; (c) Aktualisieren (262) des aktiven Bereichs des wenigstens einen aktiven Bereichs, wenn die Schnittmaske die gleiche ist, wie der wenigstens eine aktive Bereich, für jeden wenigstens einen aktiven Bereich; (d) Teilen (260) des aktiven Bereichs in einen ersten neuen Bereich (322) und einen zweiten neuen Bereich (320') für jeden wenigstens einen aktiven Bereich, der nicht der gleiche wie die Schnittmaske ist, wobei der erste neue Bereich die Schnittmaske und der zweite neue Bereich ein Komplement der Schnittmaske ist, wobei der erste neue Bereich zu dem wenigstens einen aktiven Bereich addiert wird und der zweite neue Bereich eine Aktualisierung des aktiven Bereichs ist; (e) Mischen (264) eines Teils des Fragments in einem zweiten Teil des Pixels entsprechend der Schnittmaske für jeden wenigstens einen aktiven Bereich; und (f) Addieren (260, 262) von jedem wenigstens einen neuen Bereich zu dem wenigstens einen aktiven Bereich; (g) Wiederholen der Schritte (b) bis (e) für jeden der Mehrzahl von Fragmenten, die das Pixel schneiden.
  12. Ein System (100') zum Bereitstellen eines Antialiasing für ein graphisches Bild von Daten, die wenigstens ein Objekt beschreiben, wobei das wenigstens eine Objekt eine Mehrzahl von Fragmenten umfasst und das System aufweist: Eine Anzeige (304'), die eine Mehrzahl von Pixeln beinhaltet, wobei jedes der Mehrzahl der Pixel eine Anzahl von Subpixel umfasst; mit der Anzeige gekoppelte Mittel zum Bereitstellen einer Mehrzahl von Fragmenten für das wenigstens eine Objekt (124'), wobei die Mehrzahl der Fragmente die Mehrzahl der Pixel schneidet und jedes der Mehrzahl von Fragmenten eine Anzeige eines Teils eines entsprechenden Pixels aufweist, das geschnitten wird; Eine Antialiasing-Einheit (140'), die mit der Anzeige gekoppelt ist, zum Bereitstellen eines Antialiasing von jedem der Mehrzahl von Fragmenten auf der Grundlage der Anzeige des Ausmaßes eines entsprechenden Pixels, das geschnitten wird, dadurch gekennzeichnet, dass die Antialiasing-Einheit weiterhin aufweist: einen Akkumulator (142') zum Speichern von Daten in bezug auf das Pixel; einen Bereichsgenerator (150) der mit dem Akkumulator zur Anzeige wenigstens eines aktiven Bereichs (320) für das Pixel und wenigstens eines neuen Bereichs gekoppelt ist, wobei jeder wenigstens eine aktive Bereich einen Teil des Pixels schneidet, der wenigstens eine neue Bereich auf einem Schnitt zwischen dem wenigstens einen aktiven Bereich und dem Fragment basiert, ein erster neuer Bereich (322) des wenigstens einen neuen Bereichs anzeigt, wo in dem Pixel der wenigstens eine aktive Bereich und das Fragment sich schneiden, ein zweiter neuer Bereich (320') des wenigstens einen neuen Bereichs anzeigt, wo in dem Pixel der wenigstens eine aktive Bereich und das Fragment sich nicht schneiden, der Bereichsgenerator den ersten Abschnitt des wenigstens einen neuen Bereichs anzeigt, der gemischt werden soll, und der Bereichsgenerator den wenigstens einen neuen Bereich zu dem wenigstens einen aktiven Bereich addiert; und eine Mischeinheit (144'), die mit dem Akkumulator und dem Bereichsgenerator gekoppelt ist, wobei die Mischeinheit einen Teil des Fragments in einem zweiten Teil des Pixels mischt, das dem ersten Teil des wenigstens einen neuen Bereichs entspricht.
  13. Das System von Anspruch 12, wobei eine Anzahl der wenigstens einen Mischeinheit geringer als die Anzahl an Subpixel ist.
  14. Das System von Anspruch 12, wobei die wenigstens eine Mischeinheit weiterhin eine einzige Mischeinheit umfasst.
  15. Das System von Anspruch 12, wobei der Bereichsgenerator weiterhin aufweist: die Bereichsliste zum Anzeigen des wenigstens einen aktiven Bereichs für das Pixel; wobei der mit der Bereichsliste gekoppelte Schnittgenerator wenigstens einen neuen Bereich für den wenigstens einen aktiven Bereich anzeigt und der Bereichsliste den wenigstens einen neuen Bereich liefert.
  16. Ein computerlesbares Medium mit einem Programm zum Antialiasing eines graphischen Bildes auf einer Anzeige (104'), wobei das von Daten bereitgestellte graphische Bild wenigstens ein Objekt beschreibt, die Anzeige eine Mehrzahl von Pixel umfasst, das wenigstens eine Objekt eine Mehrzahl von Fragmenten umfasst, ein Teil der Mehrzahl von Fragmenten ein Pixel der Mehrzahl von Pixeln schneidet, jedes der Mehrzahl von Fragmenten eine Anzeige eines Teils eines entsprechenden Pixels umfasst, das geschnitten wird und das Programm Anweisungen umfasst zum: (a) Bereitstellen (202, 202', 254) von wenigstens einem aktiven Bereich (320) für das Pixel (202, 202', 254), wobei jeder wenigstens eine aktive Bereich einen ersten Teil des Pixels schneidet; gekennzeichnet durch: (b) Bereitstellen (204, 204') von wenigstens einem neuen Bereich, wobei ein erster neuer Bereich (322) des wenigstens einen neuen Bereichs (204, 204') anzeigt, wo in dem Pixel der wenigstens eine aktive Bereich und das Fragment sich schneiden, und ein zweiter neuer Bereich (320') des wenigstens einen neuen Bereichs anzeigt, wo in dem Pixel der wenigstens eine aktive Bereich und das Fragment sich nicht schneiden; (c) Mischen (206, 206'; 144') eines Teils des Fragments in einem zweiten Teil des Pixels entsprechend dem ersten neuen Bereich von dem wenigstens einen neuen Bereich; und (d) Aktualisieren (208, 320', 322) des wenigstens einen aktiven Bereichs, so dass er jeden wenigstens einen neuen Bereich umfasst.
  17. Das computerlesbare Medium von Anspruch 16, wobei für jedes Fragment die Anzeige des Teils des entsprechenden Pixels, das geschnitten wird, weiterhin eine Bedeckungsmaske aufweist und wobei für jeden wenigstens einen aktiven Bereich die Anweisungen (b) für den Schritt zum Bereitstellen des neuen Bereichs weiterhin Anweisungen umfassen zum: (b1) Schneiden der Schnittmaske für das Fragment mit einem aktiven Bereich zum Bereitstellen einer Schnittmaske für den aktiven Bereich; (b2) Aktualisieren des aktiven Bereichs, wenn der aktive Bereich eine Schnittmaske aufweist, die den ersten aktiven Bereich bedeckt; und (b3) Teilen des aktiven Bereichs in einen ersten neuen Bereich und einen zweiten neuen Bereich, wenn der aktive Bereich nicht der gleiche wie die Schnittmaske ist, wobei der zweite neue Bereich der Schnittmaske entspricht und Teil des ersten Teils des wenigstens einen neuen Bereichs ist, und wobei der zweite neue Bereich ein Teil des zweiten Teils des wenigstens einen neuen Bereichs ist.
  18. Das computerlesbare Medium von Anspruch 16, wobei jedes der Mehrzahl von Pixel weiterhin eine Mehrzahl von Subpixel umfasst, der erste Teil des wenigstens einen neuen Bereichs einen ersten Teil der Mehrzahl von Subpixel anzeigt, in denen jeder wenigstens eine neue Bereich einen ersten Teil der Mehrzahl von Subpixel anzeigt, in denen jeder wenigstens eine aktive Bereich und das Fragment sich schneiden, wobei der zweite Teil des wenigstens einen neuen Bereichs einen zweiten Teil der Mehrzahl von Subpixel anzeigt, in denen sich jeder wenigstens eine neue Bereich und die Fragmente sich nicht schneiden.
  19. Das computerlesbare Medium von Anspruch 16, wobei der wenigstens eine neue Bereich einen einzigen neuen Bereich umfasst.
  20. Das computerlesbare Medium von Anspruch 16, wobei der wenigstens eine neue Bereich eine Mehrzahl von neuen Bereichen umfasst, der erste Teil des wenigstens einen neuen Bereichs wenigstens einen der Mehrzahl von neuen Bereichen umfasst und der zweite Teil des wenigstens einen neuen Bereichs wenigstens einen verbleibenden Bereich der Mehrzahl von neuen Bereichen umfasst.
  21. Das computerlesbare Medium von Anspruch 16, wobei jedes der Mehrzahl von Fragmenten eine Bedeckungsmaske beinhaltet, die einen Teil eines entsprechenden Pixels anzeigt, das geschnitten wird, wobei das Programm Anweisungen umfasst zum: (a) Bereitstellen (254) wenigstens eines aktiven Bereichs (320) für das Pixel, wobei jeder wenigstens eine aktive Bereich einen ersten Teil des Pixels schneidet; dadurch gekennzeichnet, dass das Programm die folgenden weiteren Schritte aufweist zum: (b) Schneiden (256) der Bedeckungsmaske (318) für das Fragment mit jedem wenigstens einen aktiven Bereich, um eine Schnittmaske (318) für jeden wenigstens einen aktiven Bereich bereitzustellen; (c) Aktualisieren (262) des aktiven Bereichs des wenigstens einen aktiven Bereichs, wenn die Schnittmaske die gleiche ist wie der wenigstens eine aktive Bereich, für jeden wenigstens einen aktiven Bereich; (d) Teilen (269) des aktiven Bereichs in einen ersten neuen Bereich (322) und einen zweiten neuen Bereich (320'), für jeden wenigstens einen aktiven Bereich, der nicht der gleiche wie die Schnittmaske ist, wobei der erste neue Bereich die Schnittmaske ist und der zweite neue Bereich ein Komplement der Schnittmaske ist, der erste neue Bereich zu dem wenigstens einen aktiven Bereich addiert wird und der zweite neue Bereich eine Aktualisierung des aktiven Bereichs ist; (e) Mischen (264) eines Teils des Fragments in einem zweiten Teil des Pixels entsprechend der Schnittmaske für jeden wenigstens einen aktiven Bereich; und (f) Addieren (260, 262) von jedem wenigstens einen neuen Bereich zu dem wenigstens einen aktiven Bereich; (g) Wiederholen der Schritte (b) bis (e) für jedes der Mehrzahl von Fragmenten, die das Pixel schneiden.
DE60008867T 1999-05-07 2000-05-02 Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten Expired - Lifetime DE60008867T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US30731799A 1999-05-07 1999-05-07
US307317 1999-05-07
PCT/US2000/011906 WO2000068892A1 (en) 1999-05-07 2000-05-02 Method and system for efficiently using fewer blending units for antialiasing

Publications (2)

Publication Number Publication Date
DE60008867D1 DE60008867D1 (de) 2004-04-15
DE60008867T2 true DE60008867T2 (de) 2004-07-29

Family

ID=23189195

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60008867T Expired - Lifetime DE60008867T2 (de) 1999-05-07 2000-05-02 Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten

Country Status (6)

Country Link
US (3) US6369828B1 (de)
EP (1) EP1177532B1 (de)
AT (1) ATE261604T1 (de)
AU (1) AU4502400A (de)
DE (1) DE60008867T2 (de)
WO (1) WO2000068892A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6816167B1 (en) * 2000-01-10 2004-11-09 Intel Corporation Anisotropic filtering technique
US6285348B1 (en) * 1999-04-22 2001-09-04 Broadcom Corporation Method and system for providing implicit edge antialiasing
AU4502400A (en) * 1999-05-07 2000-11-21 Broadcom Corporation Method and system for efficiently using fewer blending units for antialiasing
US6956576B1 (en) * 2000-05-16 2005-10-18 Sun Microsystems, Inc. Graphics system using sample masks for motion blur, depth of field, and transparency
US6847368B2 (en) * 2002-03-11 2005-01-25 Sun Microsystems, Inc. Graphics system with a buddy / quad mode for faster writes
US6943791B2 (en) * 2002-03-11 2005-09-13 Sun Microsystems, Inc. Z-slope test to optimize sample throughput
US20040174379A1 (en) * 2003-03-03 2004-09-09 Collodi David J. Method and system for real-time anti-aliasing
US7102638B2 (en) * 2003-03-19 2006-09-05 Mitsubishi Eletric Research Labs, Inc. Reducing texture details in images
AU2004202826B2 (en) * 2003-06-26 2007-09-06 Canon Kabushiki Kaisha Antialiasing Compositing in Graphic Object Rendering
AU2003903447A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha Rendering successive frames in a graphic object system
US7280120B2 (en) * 2003-06-26 2007-10-09 Canon Kabushiki Kaisha Compositing with a sub-pixel mask in graphic object rendering
AU2003903448A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha A method for tracking depths in a scanline based raster image processor
AU2003903445A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha Optimising compositing calculations for a run of pixels
US9218689B1 (en) 2003-12-31 2015-12-22 Zilabs Inc., Ltd. Multi-sample antialiasing optimization via edge tracking
US8111264B2 (en) * 2006-03-30 2012-02-07 Ati Technologies Ulc Method of and system for non-uniform image enhancement
US8056086B2 (en) * 2008-05-19 2011-11-08 International Business Machines Corporation Load balancing for image processing using multiple processors
GB0819570D0 (en) * 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US8686999B2 (en) * 2009-02-02 2014-04-01 Microsoft Corporation Dynamic fragment coverage antialiasing
US8629886B2 (en) 2010-12-07 2014-01-14 Microsoft Corporation Layer combination in a surface composition system
US10419585B2 (en) * 2016-06-23 2019-09-17 Adobe Inc. Dynamically surfacing UI controls

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4918626A (en) * 1987-12-09 1990-04-17 Evans & Sutherland Computer Corp. Computer graphics priority system with antialiasing
US5471567A (en) * 1991-08-08 1995-11-28 Bolt Beranek And Newman Inc. Image element depth buffering using two buffers
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
US5684939A (en) * 1993-07-09 1997-11-04 Silicon Graphics, Inc. Antialiased imaging with improved pixel supersampling
US5886701A (en) * 1995-08-04 1999-03-23 Microsoft Corporation Graphics rendering device and method for operating same
US5963210A (en) * 1996-03-29 1999-10-05 Stellar Semiconductor, Inc. Graphics processor, system and method for generating screen pixels in raster order utilizing a single interpolator
US5926181A (en) * 1996-03-29 1999-07-20 Stellar Semiconductor, Inc. Method and apparatus for identifying and eliminating three-dimensional objects visually obstructed from a planar surface
US5818456A (en) * 1996-04-30 1998-10-06 Evans & Sutherland Computer Corporation Computer graphics system with adaptive pixel multisampler
US6201545B1 (en) * 1997-09-23 2001-03-13 Ati Technologies, Inc. Method and apparatus for generating sub pixel masks in a three dimensional graphic processing system
US6128000A (en) * 1997-10-15 2000-10-03 Compaq Computer Corporation Full-scene antialiasing using improved supersampling techniques
US6489956B1 (en) * 1998-02-17 2002-12-03 Sun Microsystems, Inc. Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects
AU4502400A (en) * 1999-05-07 2000-11-21 Broadcom Corporation Method and system for efficiently using fewer blending units for antialiasing
US6445392B1 (en) * 1999-06-24 2002-09-03 Ati International Srl Method and apparatus for simplified anti-aliasing in a video graphics system

Also Published As

Publication number Publication date
US6747664B2 (en) 2004-06-08
EP1177532A1 (de) 2002-02-06
US20040196296A1 (en) 2004-10-07
WO2000068892A1 (en) 2000-11-16
DE60008867D1 (de) 2004-04-15
US6963346B2 (en) 2005-11-08
EP1177532B1 (de) 2004-03-10
US6369828B1 (en) 2002-04-09
ATE261604T1 (de) 2004-03-15
AU4502400A (en) 2000-11-21
US20020063722A1 (en) 2002-05-30

Similar Documents

Publication Publication Date Title
DE60008867T2 (de) Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
DE60012917T2 (de) Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten
DE69835408T2 (de) Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE19709220B4 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
DE69833531T2 (de) Vollszenen-Antialiasing mit verbesserten Überabtastungstechniken
DE69632013T2 (de) System und Verfahren zur Mischung von Pixelteilen, basierend auf Tiefenbereichswerten
DE3335162C2 (de) Vorrichtung und Verfahren für graphische Darstellungen mittels Computer
DE69333379T2 (de) Vorrichtung und Verfahren zur Verarbeitung von Videosignalen
DE102014004841B4 (de) Grafik auf Kachelbasis
DE60031337T2 (de) Geräteabhängige Darstellung von Zeichen
DE69914355T2 (de) Bildverarbeitungsgerät
DE19600431A1 (de) Computergraphik-Pixel-Wiedergabesystem mit Cache-Speichern
DE19782086B4 (de) Multiplizierer zur Durchführung von 3D-Graphik-Interpolationen
DE19827726A1 (de) Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung
DE19917092A1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE102018125472B4 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE3619420A1 (de) Computer-displayeinrichtung
DE602004003111T2 (de) Tiefen-basiertes Antialiasing
DE60122333T2 (de) Verfahren und System zur kachelweisen Bildwiedergabe
DE60007521T2 (de) Verfahren und vorrichtung zur programmierbaren texturverarbeitung
DE112004002817T5 (de) Bildverarbeitungsvorrichtung und Graphikspeichereinheit

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M