DE60012917T2 - Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten - Google Patents

Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten Download PDF

Info

Publication number
DE60012917T2
DE60012917T2 DE60012917T DE60012917T DE60012917T2 DE 60012917 T2 DE60012917 T2 DE 60012917T2 DE 60012917 T DE60012917 T DE 60012917T DE 60012917 T DE60012917 T DE 60012917T DE 60012917 T2 DE60012917 T2 DE 60012917T2
Authority
DE
Germany
Prior art keywords
fragment
fragments
subpixel
mask
subpixels
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
DE60012917T
Other languages
English (en)
Other versions
DE60012917D1 (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 DE60012917D1 publication Critical patent/DE60012917D1/de
Application granted granted Critical
Publication of DE60012917T2 publication Critical patent/DE60012917T2/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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Electrotherapy Devices (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Anzeige eines Grafikbildes auf einem Computersystem und insbesondere ein Verfahren und ein System zur Verfügungstellung eines Antialiasings von impliziten Rändern unter Beibehaltung der Verarbeitungsgeschwindigkeit und Benutzung von weniger Speicherplatz.
  • HINTERGRUND DER ERFINDUNG
  • Ein herkömmliches Computergrafiksystem kann Grafikbilder von Gegenständen auf einer Anzeige anzeigen. Die Anzeige umfasst mehrere, als Pixel bekannte, Anzeigeelemente, die typischerweise gitterförmig angeordnet sind. Um Gegenstände anzuzeigen, zerlegt das herkömmliche Computergrafiksystem jeden Gegenstand in mehrere Polygone. Ein herkömmliches System gibt die Polygone dann in einer bestimmten Reihenfolge wieder. Für eine dreidimensionale Szene, werden die undurchsichtigen Polygone im Allgemeinen von vorne nach hinten von der Betrachtungsebene der Anzeige ab gemessen wiedergegeben. Durchsichtige Polygone sollen von hinten nach vorne wiedergegeben werden. Eine zweidimensionale Szene kann auf ähnliche Weise wiedergegeben werden. In einem solchen Fall werden die Polygone auf der Basis ihrer jeweiligen Schicht wiedergegeben. Oberflächlichere Schichten verdecken tiefere Schichten.
  • Jedes der Polygone umfasst mathematisch definierte Ränder. Wenn ein Bild wiedergegeben wird, gibt das herkömmliche System oft diagonale Linien oder polygonale Ränder wieder, die nicht völlig horizontal oder vertikal sind. Da jedes Pixel begrenzte physische Abmessungen hat, können Räder, die nicht horizontal oder vertikal sind, gezackt erscheinen. Jedes Pixel soll z.B. als ein Quadrat betrachtet werden. Eine diagonale Linie oder ein diagonaler Rand, die unter Benutzung eines quadratischen Pixels wiedergegeben werden, erscheinen, ähnlich wie eine Treppe, ausgezackt. Dieser Effekt ist als Aliasing bekannt.
  • Implizite Ränder sind Ränder, die auf einem Grafikbild zu sehen, aber nicht explizit definiert sind. Die Gegenstände können sich auf einem Grafikbild z.B. gegenseitig überschneiden. Die Überschneidung erscheint als Rand, der nicht explizit definiert ist. Implizite Ränder sind auf Unterschiede in den Tiefenwerten der Polygone zurückzuführen, deren Überschneidung den impliziten Rand bildet. Der Tiefenwert kann die Entfernung von der Betrachtungsebene, einen w – Wert oder die Schichtenreihenfolge einschließen. Die Tiefenwerte am impliziten Rand und die Überschneidung der Polygone sollten virtuell gleich sein. Leichte Unterschiede in den Tiefenwerten der Polygone von einem Pixel zum nächsten bestimmen hingegen, welches Polygon für ein ausgewähltes Pixel sichtbar ist. Wegen dieser leichten Unterschiede in den Tiefenwerten kann sich das als sichtbar betrachtete Polygon von Pixel zu Pixel ändern. Dadurch wird der implizite Rand erzeugt. Jedes Pixel hat noch eine begrenzte Fläche. Als Ergebnis ist der implizite Rand auch Gegenstand eines Aliasings.
  • Um das Aliasing zu reduzieren, führen herkömmliche Systeme das Antaliasing aus. Das Antialiasing hilft dabei, die Wirkung zu reduzieren, die die physische Abmessung der Pixel auf die Erscheinung von anzuzeigenden Gegenständen hat. Es wäre wünschenswert, wenn das durchgeführte Antialiasing auch in der Lage wäre, ein Antialiasing von impliziten Rändern durchzuführen.
  • Einige herkömmliche Systeme benutzen eine herkömmliche Überabtastung, um ein Antialiasing von impliziten Rändern auszuführen. Typischerweise wird die Überabtastung für einen Teil der Anzeige, der Kachel genannt wird, oder auf einmal die ganze Anzeige ausgeführt. Jedes Pixel in der Kachel bzw. der Anzeige wird als eine m × N Matrix von Subpixeln betrachtet (siehe z.B. US – A – 5123085). Die Daten für jedes Polygon in der Kachel werden bei jedem Subpixel evaluiert. So können sich der Tiefenwert, die Farbe, die Textur, und andere Daten für das Polygon in dem Subpixel unterscheiden und in jedem Subpixel evaluiert werden. Die Daten für die Subpixel in jedem Pixel in der Kachel werden kombiniert, um die Daten für jedes Pixel in der Kachel zu erhalten. Weil die Überabtastung Tiefenwerte für Subpixel evaluiert und kombiniert, kann die Überabtastung dabei helfen, den Treppeneffekt auf impliziten Rändern zu glätten. Das System erfordert jedoch genügend Speicherplatz, um in jedem Pixel in der Kachel Daten für die M × N Subpixel zu speichern um die Überabtastung auszuführen. Deshalb wird ein großer Speicherplatz erforderlich. Es muss außerdem sichergestellt sein, dass es keine Artefakte an den Grenzen zwischen den Kacheln gibt. Dadurch wird die Verarbeitung verlangsamt. Die Überabtastung ist also rechenintensiv und verhältnismäßig langsam.
  • Einige herkömmliche Systeme behandeln einige dieser Überabtastungs-Probleme indem eine angepasste Überabtastung durchgeführt wird. Eine angepasste Überabtastung identifiziert zuerst die Flächen, wo eine Überabtastung durchgeführt werden kann, z.B. an einem impliziten Rand. Wenn die Fläche eines impliziten Randes einmal identifiziert worden ist, so wird die Überabtastung für eine Kachel in der Gegend des impliziten Randes durchgeführt. In Gebieten, wo es keine impliziten Ränder gibt, wird keine Überabtastung durchgeführt.
  • Obgleich eine angepasste Überabtastung die Verarbeitungsgeschwindigkeit verbessert, indem die einer Überabtastung unterzogenen Flächen reduziert werden, so braucht man immer noch einen großen Speicherplatz.
  • Entsprechenderweise benötigt man ein System und ein Verfahren, das in der Lage ist, ein Antialiasing für implizite Ränder zur Verfügung zu stellen und das weniger Speicherplatz benötigt. Die vorliegende Erfindung befasst sich mit so einem Bedarf.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt ein Verfahren und ein System zur Erzeugung eines Antialiasings eines Grafikbildes auf einer Anzeige von Daten, die mindestens einen Gegenstand beschreiben, zur Verfügung. Diese Anzeige umfasst mehrere Pixel. Das Verfahren und das System umfassen die Zurverfügungstellung mehrerer Fragmente für den mindestens einen Gegenstand. Ein Teil der Vielzahl von Fragmenten zerteilt ein Pixel von mehreren Pixeln. Jedes der Vielzahl von Fragmenten umfasst einen Tiefenwert, ein Tiefenwertsgefälle und einen Teil eines entsprechenden Pixels, das geschnitten wird. Das Verfahren und System umfasst die Berechnung einer Vielzahl von Subpixeltiefenwerten für ein Fragment der Vielzahl von Fragmenten. Die Vielzahl von Subpixeltiefenwerten wird berechnet, indem der Tiefenwert und das Tiefenwertsgefälle des Fragments benutzt werden. Das Verfahren und System umfassen die Bestimmung, ob ein Teil des Fragments auf der Basis der Vielzahl von Subpixeltiefenwerten und der Angabe des Ausmaßes mit der das entsprechende Pixel des Fragments geschnitten ist, gespeichert wird. Das Verfahren und System umfassen auch die Speicherung des Teils des Fragments falls bestimmt worden ist, daß der Teil des Fragments zu speichern ist. Das Verfahren und System umfasst auch die Berechnung, Bestimmung, und Speicherschritte für jedes verbleibende Fragment in dem Teil der Vielzahl von Fragmenten. Das Verfahren und System umfasst auch die Bereitstellung von Anti-Aliasing – Daten für das Pixel auf der Basis eines zweiten Teils der Vielzahl von gespeicherten Fragmenten.
  • Gemäß dem hier offenbarten System und Verfahren, kann die vorliegende Erfindung ein Antialiasing für implizite Ränder zur Verfügung stellen. Das Anti-Aliasing wird zur Verfügung gestellt, ohne einen Bildspeicher oder eine z – Matrix zu erfordern. Außerdem wird das Bild in der vorliegenden Erfindung nicht dadurch langsam verarbeitet, dass unzählige Berechnungen erforderlich sind.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die 1A ist ein Grafikbild das einen impliziten Rand umfasst.
  • Die 1B ist eine nähere Ansicht des auf der 1A gezeigten impliziten Randes.
  • Die 2 ist ein Blockdiagramm das ein grafisches Computersystem nach der vorliegenden Erfindung wiedergibt.
  • Die 3 ist ein Hochniveau – Flussdiagramm das ein erfindungsgemäßes Anti-Aliasing umfassendes Verfahren zur Verfügungstellung einer Grafikanzeige wiedergibt.
  • Die 4 ist ein detaillierteres Flussdiagramm das ein ein erfindungsgemäßes Anti-Aliasing umfassendes Verfahren zur Verfügungstellung einer Grafikanzeige wiedergibt.
  • Die 5 ist ein Flussdiagramm, das eine Ausgestaltung eines Verfahrens zur Durchführung der Phase zur Bestimmung, ob die Subpixel in denen die Subpixeltiefenwerte für das Fragment kleiner sind als die gespeicherten Subpixeltiefenwerte, wiedergibt.
  • Die 6A ist ein Diagramm eines Pixels auf der Anzeige eines Computergrafiksystems in dem zwei Polygone und ein implizierter Rand gezeigt werden sollen.
  • Die 6B ist ein Diagramm des Pixels der 6A zuzüglich der Subpixel in dem Pixel.
  • Die 7A ist eine Abdeckmaske die den Teil des Pixels angibt, der das erste Polygon schneidet.
  • Die 7B ist ein Diagramm einer zweiten Maske das die Subpixel angibt in denen das erste Polygon einen Subpixeltiefenwert hat bzw. haben sollte der kleiner ist als ein gespeicherter Subpixeltiefenwert.
  • Die 7C ist ein Diagramm des Schnittes der Abdeckmaske und der zweiten Maske für das erste Polygon.
  • Die 7D ist ein Diagramm der Daten die in dem Subpixel – Speicher gespeichert sind, der die Daten für das erste Polygon umfasst.
  • Die 8A ist ein Diagramm einer Abdeckmaskedie den Teil des Pixels angibt, der das zweite Polygon schneidet.
  • Die 8B ist ein Diagramm einer zweiten Maske das die Subpixel angibt, in denen das zweite Polygon einen Subpixeltiefenwert hat bzw. haben sollte, der kleiner ist als ein gespeicherter Subpixeltiefenwert.
  • Die 8C ist ein Diagramm des Schnittes der Abdeckmaske und der zweiten Maske für das zweite Polygon.
  • Die 8D ist ein Diagramm der Daten, die in dem Subpixel – Speicher gespeichert sind, der die Daten für das zweite Polygon umfasst.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine Verbesserung der Wiedergabe von Grafikbildern. Die folgende Beschreibung ist so dargestellt, dass ein Fachmann die Erfindung ausführen und benutzen kann und wird zur Verfügung gestellt im Kontext einer Patentanmeldung und ihrer Erfordernisse. Verschiedene Modifikationen an einer bevorzugten Ausgestaltung werden dem Fachmann leicht klar und die gattungsmäßigen Prinzipien können auf andere Ausgestaltungen angewendet werden. So ist die vorliegende Erfindung nicht begrenzt auf die gezeigte Ausgestaltung, sondern ist im weitesten Rahmen übereinstimmend mit den hier beschriebenen Prinzipien und Kennzeichen.
  • Die 1A ist ein Diagramm eines zwei sich schneidende Polygone 10 und 20 umfassenden Grafikbildes auf einer Anzeige 10. Die Polygone 20 und 30 gehören zu Gegenständen, welche zu einem auf der Anzeige 10 gezeigten Grafikbild gehören können. Das erste Polygon 20 umfasst Ränder 22, 24 und 26. Das zweite Polygon umfasst Ränder 32, 34 und 36. Die Ränder 22, 24, 26, 32, 34 und 36 werden deshalb explizit definiert. Am Schnitt der Polygone 20 und 30 gibt es einen impliziten Rand 12. Der implizite Rand 12 wird nicht explizit definiert, ist jedoch auf den Schnitt der Polygone 20 und 30 zurückzuführen. Der Teil 28 des Polygons 20 wird teilweise von dem Polygon 30 verdeckt. Der Teil 38 des Polygons 30 wird teilweise von dem Polygon 20 verdeckt. Die 1B gibt eine nähere Ansicht eines Teils des impliziten Randes 12 wieder. Die Pixel auf der Anzeige haben eine begrenzte Fläche und werden als Quadrate wiedergegeben. Da die Pixel auf der Anzeige 10 eine begrenzte Größe haben, sind die Ränder 22 und 32 sowie der implizite Rand 12 ausgezackt.
  • Die 23 gibt ein vereinfachtes Blockdiagramm einer Ausgestaltung eines Computergraphiksystems 10 mit dem die vorliegende Erfindung benutzt wird, wieder.
  • Das Computergraphiksystem 100 umfasst eine Zentraleinheit 102 (CPU), eine Anzeige 104, eine Benutzerschnittstelle 106 sowie eine Tastatur bzw. eine Maus oder eine andere Kommunikationsvorrichtung, einen Speicher 110, und eine mit einem Bus gekoppelte Bilderzeugungseinheit 12. Die Anzeige 104 umfasst mehrere nicht gezeigte Pixel. Jedes der Vielzahl von Pixeln weist eine Fläche auf. Die Anzeige 104 könnte einen Anzeigespeicher (nicht gezeigt) umfassen, auf dem Pixel geschrieben sind. Die Anzeige 104 kann z.B. einen Bildspeicher umfassen. Die vorliegende Erfindung kann jedoch auch ohne Bildspeicher installiert werden. Nichts verhindert jedoch, dass das Verfahren und das System in einem verschiedenen, andere Komponenten aufweisende Computersysteme installiert werden. Das System 100 wird benutzt, um Gegenstände und insbesondere dreidimensionale Gegenstände anzuzeigen. Um das zu machen, wird jeder der Gegenstände bevorzugterweise in zur Darstellung der Gegenstände benutzte Polygone zerlegt. In einer bevorzugten Ausgestaltung werden die Polygone in Rasterreihenfolge dargestellt. Das heißt, dass Teile der Polygone in der Reihenfolge der Pixel auf der Anzeige 104 dargestellt werden.
  • Die Bilderzeugungseinheit 120 umfasst eine Schnittstelle 121, die an den Bus 108 angeschlossen ist. Die Schnittstelle 121 überträgt die Daten zu einer Datenverarbeitungseinheit 122. Ein Prozessorblock 124 ist mit der Datenverarbeitungseinheit 122 gekoppelt. Der Prozessorblock 124 identifiziert die Daten, die Teile der Polygone beschreiben („sich schneidende Polygone"), welche die Fläche, die sich entlang einer z – Achse eines ausgewählten Pixels in einer dem Bildschirm der Anzeige 104 entsprechenden x – y – Ebene erstreckt, schneiden. Folglich können die sich schneidenden Polygone parallel verarbeitet werden. Die Daten für den Teil des schneidenden Polygons der dem gewählten Pixel zugeordnet ist, wird Fragment genannt. Ein Fragment enthält z.B. die Farbe, die Textur, und den Tiefenwert für das entsprechende Polygon. Die Daten, die sich auf jedes ausgewählte Pixel beziehen, umfassen ein Fragment für jedes der sich schneidenden Polygone. In dem Kontext dieser Offenbarung wird ein Fragment für ein schneidendes Polygon beschrieben als ein Fragment, das das Polygon schneidende Pixel schneidet. Der Prozessorblock 124 stellt deshalb eine Angabe der Fragmente zur Verfügung, die ein augenblicklich verarbeitetes Pixel schneiden.
  • Eine blockierte Gegenstands – Identifizier – / – Beseitigungseinheit 126 empfängt mindestens einen Teil des Fragments von jedem sich schneidenden Polygon, das dem ausgewählten Pixel zugeordnet ist und entfernt Teile der Fragmente der sich schneidenden Polygone die blockiert sind. In einer Ausgestaltung führt die Gegenstands- Identifizier – / – Beseitigungseinheit 126 diese Funktion aus, indem der Interpoliervorrichtung angegeben wird, welche Fragmente gültig sind (nicht blockiert) und welche Fragmente gültig sind (blockiert). In einer bevorzugten Ausgestaltung führt die Gegenstands – Identifizier – / – Beseitigungseinheit 126 diese Funktion aus, ohne den genauen z – Wert des Polygons zu bestimmen.
  • Die Interpolationsvorrichtung 128 empfängt die Fragmente für die sich schneidenden Polygone für das ausgewählte Pixel und interpoliert die Daten, inklusive Textur, Farbe, und Alphawerte für das Fragment. Die Interpolationsvorrichtung 128 stellt ebenfalls eine unten diskutierte Maske für jedes Fragment zur Verfügung. Obwohl die Maskenerzeugung logischerweise als verschieden von der Interpolation betrachtet werden kann, wird die Maske bevorzugterweise von einem Unterblock (nicht gezeigt) der Interpolationsvorrichtung erzeugt. In einer alternativen Ausgestaltung kann die Maskenerzeugung jedoch von einer anderen Einheit zur Verfügung gestellt werden. Die Maske kann als Teil des Fragments für ein schneidendes Polygon angesehen werden. Weil die Gegenstands – Identifizier – / – Beseitigungseinheit 126 Fragmente für blockierte Gegenstände entfernt hat, kann die Interpolationsvorrichtung 128 ihre Funktion nur für diese sich schneidenden Polygone die nicht blockiert sind, ausführen. Die Fragmente für diese verbleibenden sich schneidenden Polygone werden von der Interpolationsvorrichtung 128 an die Hardwaresortiervorrichtung 130 geliefert. Die Hardwaresortiervorrichtung 130 sortiert die Fragmente für die sich schneidenden Polygone auf der Basis des Wertes eines dem Fragment zugeordneten Schlüssels. Bevorzugterweise ist der Schlüssel der z – Wert, oder der Tiefenwert für das Fragment an dem ausgewählten Pixel. Es sei jedoch bemerkt, dass die vorliegende Erfindung im Einklang mit anderen Sortierungen oder mit keiner Sortiervorrichtung ist.
  • Die sortierten Fragmente für das ausgewählte Pixel werden dann einer Antialiasing – Einheit 140 zur Verfügung gestellt. In einer bevorzugten Ausgestaltung umfasst die Anti-Aliasing – Einheit 140 eine z – Masken – Einheit 141, einen Akkumulator 142 und eine Mischeinheit bzw. Mischeinheiten 144. Der Akkumulator 142 umfasst Subpixel – Speicher, die auf der 2 nicht gezeigt werden. In einer bevorzugten Ausgestaltung umfasst der Akkumulator 142 einen getrennten Subpixelspeicher für jedes Subpixel in das das Pixel geteilt worden ist. In einer bevorzugten Ausgestaltung können mehrere Mischeinheiten 144 benutzt werden. Die Antialiasingdaten für das ausgewählte Pixel werden an die Anzeige 104 geliefert. Folgende Pixel werden dann identifiziert, sobald das ausgewählte Pixel verarbeitet wird und zwar bevorzugterweise in Rasterreihenfolge. Die diese Pixel schneidenden Fragmente werden auf ähnliche Weise verarbeitet. Dann können die Gegenstände in dem Graphikbild in Rasterreihenfolge wiedergegeben werden.
  • In der koexistierenden US Patentanmeldung mit der Seriennr. 09/239,413 mit dem Titel „VERFAHREN UND SYSTEM ZUR VERFÜGUNGSTELLUNG EINES RAND-ANTIALISINGS"(JASP945P) die am 28.1.1999 eingereicht und dem Bevollmächtigten der vorliegenden Erfindung übertragen worden ist wird ein Antialiasing beschrieben, das Masken benutzt, die von der Interpolationsvorrichtung 128 zur Verfügung gestellt werden. Der Anmelder integriert durch Bezugnahme die oben erwähnte koexistierende Patentanmeldung.
  • In der obigen gleichzeitigen Patentanmeldung schließt jedes Fragment eine Maske ein und einen Tiefenwert, ist jedoch nicht darauf begrenzt. Die Maske gibt einen Teil des Pixels an, das vom Fragment geschnitten wird. Die Maske wird hiernach als Abdeckmaske bezeichnet. Die Abdeckmaske wird benutzt, um den Beitrag zu bestimmen, den ein Fragment an dem Pixel hat, den es schneidet. Jedes Pixel kann z.B. in Subpixel zertrennt werden. Die Abdeckmaske gibt an, welches der Subpixel das Fragment schneidet. Wo ein besonderes Pixel einen Rand eines Polygons einschließt wie z.B. den Rand 122, gibt die Abdeckmaske für das Fragment an, dass das Fragment nur einige der Subpixel schneidet. Das Fragment ist nur in diese Subpixel gemengt. Um das Fragment zu vermengen, werden der Akkumulator 142 und die Mischeinheiten 144 benutzt. Jeder Subpixel-Speicher in dem Akkumulator 142 wird benutzt, um die Information, die in jedem der Subpixel in dem ausgewählten Pixel enthalten ist, für die Fragmente zu speichern. In einer bevorzugten Ausgestaltung werden die Daten in den Subpixel-Speichern in dem Akkumulator 142 gemittelt. Die mit einem Antialiasing bearbeiteten Daten für das ausgewählte Pixel werden dann der Anzeige 104 zur Verfügung gestellt.
  • Obwohl das in der oben genannten koexistierenden Anmeldung beschriebene Verfahren und System adäquat für den beabsichtigten Zweck funktioniert, mag das Antialiasing von impliziten Rändern nicht adäquat adressiert werden. Obwohl die Abdeckmaske für ein Fragment die Subpixel angibt, die das Fragment aktuell schneidet, enthalten die verbleibenden Daten in jedem Fragment in der oben genannten gleichzeitigen Anmeldung Daten, für die man vermutet, dass sie in jedem Subpixel identisch sind. So ist der Tiefenwert für jedes Subpixel in einem ausgewählten Pixel der gleiche. Implizite Ränder sind auf Unterschiede in dem Tiefenwert für Polygone wie z.B. die Polygone 20 und 30 zurückzuführen. So bearbeitet das in der oben genannten gleichzeitigen Anmeldung beschriebene Antialiasing die impliziten Ränder nicht auf adäquate Weise. Entsprechend wird ein Verfahren und ein System benötigt, um ein Anti-Aliasing zur Verfügung zu stellen, das in der Lage ist, implizite Ränder mit einem Antialising zu bearbeiten.
  • Die vorliegende Erfindung stellt ein Verfahren und ein System zur Verfügung für ein Antialising eines Grafikbildes auf einer Anzeige von Daten, die mindestens einen Gegenstand beschreiben. Die Anzeige schließt mehrere Pixel ein. Das Verfahren und System umfassen die Zurverfügungstellung mehrerer Fragmente für mindestens einen Gegenstand. Ein Teil der Vielzahl von Fragmenten schneidet ein Pixel der Vielzahl von Pixeln. Jedes der Vielzahl von Fragmenten umfasst einen Tiefenwert, ein Tiefenwertsgefälle und eine Angabe eines Teils eines entsprechenden Pixels das geschnitten worden ist. Das Verfahren und System umfasst die Berechnung einer Vielzahl von Subpixeltiefenwerten für ein Fragment der Vielzahl von Fragmenten. Die Vielzahl von Subpixeltiefenwerten wird berechnet, indem der Tiefenwert und das Tiefenwertsgefälle des Fragments benutzt werden. Das Verfahren und System umfassen die Bestimmung, ob ein Teil des Fragments auf der Basis der Vielzahl von Subpixeltiefenwerten und der Angabe des Ausmaßes mit der das entsprechende Pixel des Fragments geschnitten wird, gespeichert wird. Das Verfahren und System umfassen auch die Speicherung des Teils des Fragments, falls bestimmt worden ist, daß der Teil des Fragments zu speichern ist. Das Verfahren und System umfassen auch die Berechnung, Bestimmung, und Speicherschritte für jedes verbleibende Fragment in dem Teil der Vielzahl von Fragmenten. Das Verfahren und System umfassen auch die Bereitstellung von Anti-Aliasing – Daten für das Pixel auf der Basis eines zweiten Teils der Vielzahl von gespeicherten Fragmenten.
  • Die vorliegende Erfindung wird bezüglich eines besonderen Computersystems und der Verarbeitung der Fragmente in einer besonderen Reihenfolge beschrieben. Ein Fachmann erkennt jedoch einfach, dass dieses Verfahren und dieses System effektiv für andere Arten von Computersystemen und die Verarbeitung von Fragmenten in einer anderen Reihenfolge funktionieren. Außerdem kann die vorliegende Erfindung, obwohl sie im Kontext des Antialiasings impliziter Ränder spezifischer Blöcke beschrieben wird, für das Antialising anderer Elemente wie Ränder oder Linien benutzt werden. Außerdem wird die vorliegende Erfindung im Kontext spezifischer Blöcke beschrieben, die gewisse Funktionen und Verfahren ausführen, die gewisse Schritte in einer besonderen Reihenfolge realisieren. Ein Fachmann kann jedoch einfach feststellen, dass andere Blöcke diese Funktionen zur Verfügung stellen können und dass diese Schritte in einer anderen Reihenfolge oder parallel durchgeführt werden können.
  • Um das Verfahren und System in Beziehung auf die vorliegende Erfindung spezifischer zu illustrieren, sei jetzt auf die 3 verwiesen, die ein Hochniveau – Flussdiagram einer Ausgestaltung eines Verfahrens 200 in Bezug auf die vorliegende Erfindung wiedergibt. Das Verfahren 200 stellt ein Antialiasing für Fragmente zur Verfügung, die ein ausgewähltes Pixel der Anzeige 104 schneiden. Das Verfahren 200 verarbeitet bevorzugterweise die Fragmente, die ein ausgewähltes Pixel zur Zeit schneiden. Außerdem kann jedes Pixel in mehrere Subpixel zerlegt werden. In einer bevorzugten Ausgestaltung wird jedes Pixel in ein vier – mal – vier – Feld von Subpixeln zerlegt.
  • Die angezeigten Fragmente für die Gegenstände werden über den Schritt 205 angezeigt. Jedes im Schritt 205 zur Verfügung gestellte Fragment umfasst einen Tiefenwert, ein Tiefenwertsgefälle und eine Angabe des Teils des Pixels der von dem Fragment geschnitten wird. In einer bevorzugten Ausgestaltung umfasst jedes Fragment die oben diskutierte Abdeckmaske als Angabe bezüglich des Ausmaßes mit dem das Pixel geschnitten wird. Die Abdeckmaske gibt die Subpixel an, die das Fragment schneidet. Das Fragment kann auch die Farbe, die Mischmodi, die minimalen und maximalen z – Werte für das Objekt, die Textur, und andere Daten umfassen. In einer bevorzugten Ausgestaltung ist der Tiefenwert ein z – Wert. Nichts schließt jedoch die Benutzung anderer Messungen der Tiefe, wie z.B. w oder die Schichtenreihenfolge als Tiefenwerte aus. Das Tiefenwertsgefälle gibt an, wie sich der Tiefenwert für das Fragment durch das Pixel ändert. Das Tiefenwertsgefälle schließt z.B. dort, wo der Tiefenwert z ist, jeweils die horizontalen und vertikalen Komponenten dz/dx und dz/dy ein. In einer bevorzugten Ausgestaltung ist das Tiefenwertsgefälle konstant. Das vereinfacht die unten diskutierten Berechnungen. Das Tiefenwertsgefälle ist für ebene Polygone konstant, da sich der Tiefenwert linear verändert. Die Tiefenwerte ändern sich jedoch nicht linear, wenn das Polygon nicht linear ist. Funktionen höherer Ordnung können jedoch über kurze Entfernungen ungefähr linear sein. Sogar wenn sich die Tiefenwerte für das Polygon nicht linear verändern, kann das Tiefenwertsgefälle eine lineare Annäherung an das aktuelle Tiefenwertsgefälle für das Polygon sein, von dem das Fragment ein Teil ist.
  • Über den Schritt 210 wird eine Vielzahl von Subpixeltiefenwerten für ein Fragment berechnet, das ein ausgewähltes Pixel schneidet. Die z – Maskeneinheit führt bevorzugterweise den Schritt 210 aus. Die Subpixeltiefenwerte werden berechnet, indem der Tiefenwert und das Tiefenwertsgefälle benutzt werden. In einer bevorzugten Ausgestaltung wird ein Subpixeltiefenwert für jedes Subpixel berechnet indem die horizontalen und vertikalen Komponenten des Subpixeltiefenwertsgefälles und der Tiefenwert benutzt werden. Es sei z.B. angenommen, dass der Tiefenwert für das Fragment z1 ist. Dieser Tiefenwert sei für einen besonderen Punkt im Pixel angenommen. Jedes Subpixel sei jeweils als eine Entfernung ax1 und by1 in der x und y – Richtung vom Punkt an dem der Tiefenwert vorher berechnet worden ist, angenommen. In diesem Fall stellen a und b die Anzahl von Subpixeln in der x und y – Richtung zwischen dem Punkt an dem der Tiefenwert bekannt ist und dem Subpixel für das der Subpixeltiefenwert berechnet worden ist, dar. Der Subpixeltiefenwert ist z = z1 + ax1(dz/dx) + ay1(dz/dy). Es sei bemerkt, dass a und b nicht ganzzahlig zu sein brauchen. So kann der Subpixeltiefenwert für eine Bruchzahl von Subpixeln ab dem Punkt berechnet werden an dem z1 evaluiert worden ist. In einer bevorzugten Ausgestaltung wird der Subpixeltiefenwert für jedes Subpixel unabhängig davon berechnet, ob die Abdeckmaske angibt, dass das Fragment im Augenblick dieses Subpixel schneidet. Der Subpixeltiefenwert kann jedoch in einer anderen Ausgestaltung nur für die Subpixel berechnet werden, die das Fragment schneiden.
  • Wenn der Subpixeltiefenwert einmal bekannt ist, wird bestimmt, ob das Fragment über den Schritt 220 gespeichert werden soll. Diese Bestimmung basiert auf den Subpixeltiefenwerten und dem Teil des Pixels, das das Fragment schneidet. Bevorzugterweise wird diese Bestimmung durch die z – Maskeneinheit 141 ausgeführt, wobei die Subpixeltiefenwerte und die Abdeckmaske benutzt werden. Ein Teil des Fragments wird dann über den Schritt 225 für einige oder alle Subpixel gespeichert, falls im Schritt 220 bestimmt worden ist, dass das Fragment gespeichert werden soll. Um den Teil des Fragments in Schritt 225 zu speichern, werden die Daten für das Fragment für jedes der geeigneten Subpixel wiederholt und werden, indem die Mischeinheit bzw. die Mischeinheiten 144 benutzt werden, in den entsprechenden Subpixelspeichern des Akkumulators 142 gespeichert. Alle Subpixelspeicher in denen das Fragment in Schritt 225 gespeichert ist, halten z.B. dieselben Farb- und Texturwerte für das Fragment. Der Schritt 225 speichert in einer bevorzugten Ausgestaltung Daten für das Fragment für jedes Subpixel das das Fragment schneidet und in dem der Tiefenwert kleiner ist als der gespeicherte Tiefenwert. Der Schritt 225 kann auch das Mischen der Daten für durchsichtige Fragmente umfassen.
  • Die Schritte 210 bis 225 werden dann für jedes verbleibende Fragment wiederholt, das das Pixel über den Schritt 230 schneidet. So sollten die Subpixelspeicher, nachdem der Schritt 230 beendet ist, Daten in dem Akkumulator 142 halten, die sich auf die Fragmente beziehen, die zum Pixel beitragen. Die durch ein Antialiasing bearbeiteten Daten für das Pixel werden dann zur Anzeige 104 über den Schritt 240 gesendet. In einer Ausgestaltung umfasst der Schritt 240 eine Mittelung der Daten für das Pixel die in der Anzeige 104 gespeichert werden sollen. In der bevorzugten Ausgestaltung wird ein Tiefenwert als Tiefenwert für das Pixel aus einem der Subpixelspeicher ausgewählt. Die Auswahl eines der Tiefenwerte, sollte hingegen, anstatt ein Mittel zur Verfügung zu stellen, die Daten nicht negativ beeinflussen, die für das Pixel geliefert worden sind, da die Tiefenwerte für die Subpixel wahrscheinlich ähnlich sind. Außerdem ist die Rechenzeit reduziert.
  • Die 4 gibt ein detaillierteres Flussdiagramm einer bevorzugten Ausgestaltung des Verfahrens 250 wieder, um ein Antialiasing zur Verfügung zu stellen, das implizite Ränder bearbeiten kann. Fragmente für die Gegenstände in dem Grafikbild werden über den Schritt 205' zur Verfügung gestellt. Der Schritt 205' entspricht dem in der 3 wiedergegebenen Schritt 205. So umfasst jedes Fragment einen Tiefenwert, ein Tiefenwertsgefälle und eine Angabe zu dem Teil des Pixels der das Fragment schneidet. In einer bevorzugten Ausgestaltung umfasst jedes Fragment die oben diskutierte Abdeckmaske als eine Angabe zu dem Ausmass mit dem das Pixel geschnitten ist. Die Abdeckmaske gibt die Subpixel an, die das Fragment schneidet.
  • Unter Rückbeziehung auf die 4 werden die Subpixeltiefenwerte für ein Fragment über den Schritt 210' berechnet, das ein ausgewähltes Pixel schneidet. Der Schritt 210' entspricht dem Schritt 210 des Verfahrens 200. In einer bevorzugten Ausgestaltung werden die Subpixeltiefenwerte für jedes Subpixel unabhängig davon berechnet, ob das Fragment im Augenblick das Subpixel schneidet. Die Subpixel, die einen Subpixeltiefenwert haben, der kleiner ist als der gespeicherte Subpixeltiefenwert, und welchen das Fragment schneidet, werden dann über den Schritt 222 bestimmt. Die Schritte 210' und 222 werden bevorzugterweise ausgeführt indem die z – Maskeneinheit 141 benutzt wird. Für das erste verarbeitete Fragment gibt der Schritt 222 an, dass die Subpixeltiefenwerte kleiner sind als alle gespeicherten Subpixeltiefenwerte. Deshalb wird ein Hintergrundsubpixeltiefenwert der in den Subpixelspeichern gespeichert werden wird, einen höheren Wert haben. Für nachfolgende berechnete Fragmente können die Subpixeltiefenwerte kleiner sein als die gespeicherten Subpixeltiefenwerte bei beliebiger Anzahl von Subpixeln.
  • Das Fragment wird über den Schritt 228 in den Subpixelspeichern gespeichert, die den im Schritt 222 bestimmten Subpixeln entsprechen. So wird das Fragment in Subpixelspeichern für Subpixel gespeichert, in denen der im Schritt 210' berechnete Subpixeltiefenwert kleiner ist als der gespeicherte Subpixeltiefenwert und welchen das Fragment im Augenblick schneidet. Um das Fragment im Schritt 228 zu speichern, werden die Daten für das Fragment im Subpixelspeicher bzw. den Subpixelspeichern, in denen das Fragment gespeichert werden soll, reproduziert. Außerdem kann der Schritt 228 die Mischung von Fragmentdaten mit Daten die vorher in jedem der Subpixelspeicher gespeichert worden waren, wenn einige der den Subpixelspeicher schneidenden Fragmente durchsichtig sind, umfassen. So müssen die Farbe, die Textur und andere Daten die sich auf das Fragment beziehen, bei jedem Subpixel unabhängig evaluiert werden. Stattdessen werden die Fragmentdaten den geeigneten Subpixeln zur Verfügung gestellt.
  • Die Schritte 210' bis 228 werden dann für jedes verbleibende Fragment, das das ausgewählte Pixel schneidet über den Schritt 230' wiederholt. Die mit einem Antialiasing bearbeiteten Daten werden dann über den Schritt 240' zur Verfügung gestellt. Der Schritt 240' ist dem Schritt 240 analog und kann die mit einem Antialiasing bearbeiteten Daten dem Speicher, wie z.B. einem Bildspeicher, einer Anzeige 104 oder direkt einem Monitor (nicht gezeigt) , oder anderen Mechanismen zum Anzeigen der Daten für einen Benutzer, zur Verfügung stellen. So werden die das ausgewählte Pixel schneidenden Fragmente wiedergegeben. Dann werden die Schritte 210' bis 240' dann für jedes verbleibende Pixel über den Schritt 252 wiederholt. So wird jedes Pixel auf der Anzeige wiedergegeben. Bevorzugterweise gibt das Verfahren 250 die angezeigten Objekte Pixel pro Pixel in Rasterreihenfolge wieder.
  • Die 5 gibt eine bevorzugte Ausgestaltung von Schritt 222 wieder, wodurch die Subpixel bestimmt werden, die einen kleineren Subpixeltiefenwert haben als der gespeicherte Subpixeltiefenwert und die von dem Fragment geschnitten werden. Unter Benutzung der z-Maskeneinheit 141 wird ein Tiefenvergleich für jedes Subpixel über den Schritt 223 zur Verfügung gestellt. Der Schritt 223 umfasst den Vergleich der Subpixeltiefenwerte für das Fragment mit den gespeicherten Subpixeltiefenwerten aus einem vorhergehenden Fragmente oder dem Hintergrund. Dann wird eine Tiefenmaske über den Schritt 224 erzeugt. Die Tiefenmaske gibt die Subpixel an, in denen der Subpixeltiefenwert für das Fragment kleiner ist als ein gespeicherter Subpixeltiefenwert. In einer bevorzugten Ausgestaltung umfasst die Tiefenmaske für jedes Subpixel eine Eins für das der Subpixeltiefenwert des Fragments kleiner ist als der gespeicherte Subpixeltiefenwert. Der Schnitt zwischen der Tiefenmaske für das Fragment und der Abdeckmaske für das Fragment wird dann über den Schritt 226 bestimmt. Bevorzugterweise umfasst der Schritt 226 die Ausführung von einem logischen UND zwischen der Tiefenmaske und der Abdeckmaske. Das im Schritt 226 durchgeführte logische UND kann eine totale Maske erzeugen die die Subpixel angibt, die das Fragment schneidet und für die der Subpixeltiefenwert für das Fragment kleiner ist als ein gespeicherter Subpixeltiefenwert. In einer bevorzugten Ausgestaltung umfasst die z – Masken – Einheit 141 ihren eigenen Akkumulator (nicht gezeigt), der die Tiefeninformation für jedes Subpixel speichert. Der in Schritt 223 durchgeführte Vergleich vergleicht die Subpixeltiefenwerte für das Fragment mit den in dem Akkumulator der z – Masken – Einheit 141 gespeicherten Subpixeltiefenwerten. Die Tiefenmaske wird auf diesem Vergleich basierend berechnet. Der Schnitt der Tiefenmaske und der Abdeckmaske kann benutzt werden, um die in dem Akkumulator der z – Masken – Einheit 141 gespeicherten Tiefenwerte auf den neuesten Stand zu bringen und zu bestimmen, welche Subpixelspeicher des Akkumulators auf den neuesten Stand gebracht werden. Es sei bemerkt, das die im Schritt 226 erzeugte totale Maske als eine Modifizierung der Abdeckmaske für das Fragment angesehen werden kann. Die Abdeckmaske wird durch die z- Maske modifiziert. So kann die Funktion der z – Masken – Einheit 141 so angesehen werden, dass sie die Abdeckmaske auf der Basis der Subpixeltiefenwerte für das Fragment modifiziert. Sobald die totale Maske erzeugt ist, werden Daten für das Fragment in den Subpixelspeichern gespeichert, indem der Schritt 228 des Verfahrens 250 benutzt wird.
  • Da die Tiefenwerte als Subpixelniveau angesehen werden, können implizite Ränder durch ein Antialiasing bearbeitet werden. Daten für die Fragmente wie die Farbe oder die Textur können leicht in den geeigneten Subpixeln gespeichert werden, anstatt unabhängig für jedes Subpixel evaluiert zu werden. Für jedes Fragment gibt es z.B. eine einzige Farbe in jedem der geeigneten Subpixel. Folglich sind die Verfahren 200 und 250 entsprechend der vorliegenden Erfindung weniger rechenintensiv als die konventionelle Überabtastung. Die Verfahren 200 und 250 sind entsprechend der vorliegenden Erfindung schneller und erfordern weniger Speicher als die konventionelle Überabtastung.
  • Es sei für die weitere Beschreibung des Verfahrens und des Systems entsprechend der vorliegenden Erfindung auf die 6A verwiesen, wobei ein Pixel 300 wiedergegeben wird in dem sich ein Teil der zwei Polygone 20 und 30 schneidet. So gibt das Pixel 300 einen Teil des impliziten Randes 12 und Teile der Polygone 20 und 30 wieder. Das Pixel 300 umfasst ebenfalls einen Hintergrund 370. Die 6B gibt auch sechzehn Subpixel 301 bis 316 in dem Pixel 300 wieder. In der folgenden Diskussion sei angenommen, dass das Fragment für das Polygon 20 zuerst verarbeitet wird, gefolgt von dem Fragment für das Polygon 30.
  • Die 7A bis 7C geben Masken für das Fragment für das Polygon 20 wieder. Die 7A gibt die Abdeckmaske 320 für das Polygon 20 wieder. Die Abdeckmaske 320 umfasst einen der Subpixel 301, 305 – 306, 309 – 311 und 313 – 316. So deckt das Polygon 20 die untere linke Hälfte des Pixels 300 ab.
  • Die 7B gibt die Tiefenmaske 322 für das Fragment für das Polygon 20 wieder. Die Tiefenmaske 322 wird im Schritt 224 der 5 erzeugt. Unter Rückbeziehung auf die 7B wird der Subpixeltiefenwert für das Polygon 20 kleiner als der gespeicherte (Hintergrund) Subpixeltiefenwert für jedes Subpixel sein, da das Fragment für das Polygon 20 zuerst bearbeitet worden ist. Folglich hat die Tiefenmaske 322 eine Eins für jedes der Subpixel 301 bis 316.
  • Um zu bestimmen, für welche Subpixel die Daten der Fragmente gespeichert werden sollen, schneiden sich die Abdeckmaske 320 und die Tiefenmaske 322 unter Benutzung des Schrittes 226 der Figur. Die 7C gibt die totale Maske 324 wieder, die durch eine Schnitterzeugung erzeugt worden ist. Die totale Maske 324 hat Einsen für jedes Subpixel in welchem die Abdeckmaske 320 und die Tiefenmaske 322 eine Eins haben. Folglich hat die totale Maske Einsen für die Subpixel 301, 305 bis 306, 309 bis 311 und 313 bis 316.
  • Die 7D gibt die Subpixelspeicher 331 bis 346 in dem Akkumulator 142 wieder nachdem der Teil des Fragments für das Polygon 20 gespeichert worden ist indem der Schritt 228 der 4 benutzt wird. Unter Rückbeziehung auf die 7D, gibt ein „a" Daten aus dem Fragment für das Polygon 20 an. Ein „x" gibt Hintergrunddaten an. Wie es von der Maske 324 angegeben wird, haben die Daten für das Fragment für das Polygon 20 die Hintergrunddaten in den Subpixelspeichern 331, 33 bis 334, 339 bis 341 und 343 bis 346 ersetzt.
  • Als nächstes wird das Fragment für das Polygon 30 bearbeitet. Die 8A bis 8C stellen Masken für das Fragment für das Polygon 30 in dem Pixel 300 dar. Die 8A gibt die Abdeckmaske 350 für das Polygon 30 wieder. Die Abdeckmaske 350 enthält Einsen in den Subpixeln 304, 307 bis 308, 310 bis 312, und 313 bis 316. So deckt das Polygon 30 die untere rechte Hälfte des Pixels 300 ab.
  • Die 8B gibt die Tiefenmaske 352 für das Fragment für das Polygon 30 wieder. Die Tiefenmaske 352 wird in dem Schritt 224 der 5 erzeugt. Unter Rückbeziehung auf die 8B hat das Polygon 30 Subpixeltiefenwerte, die kleiner sind als die des Hintergrundes. In der rechten Hälfte des Pixels 300 hat das Polygon 30 Subpixeltiefenwerte, die kleiner sind als die Subpixeltiefenwerte für das Polygon 20. Die Subpixeltiefenwerte für das Polygon 30 werden kleiner sein als die gespeicherten Subpixeltiefenwerte in jedem Subpixel das Daten für den Hindergrund für das Polygon 20, die sich in der rechten Hälfte des Pixels 300 befinden, enthält. Folglich hat die Tiefenmaske 352 eine Eins für jedes der Subpixel 302 bis 304, 307 bis 308, 311 bis 312 und 315 bis 316.
  • Um die Subpixel zu bestimmen, in denen die Fragmentdaten zu speichern sind, schneiden sich die Abdeckmaske 350 und die Tiefenmaske unter Benutzung des Schrittes 228 der 5. Die 8C gibt die durch den Schnittvorgang erzeugte totale Maske 354 wieder. Die totale Maske 354 hat Einsen für jedes Subpixel, wobei die Abdeckmaske 350 und die Tiefenmaske 352 eine Eins haben. Folglich hat die totale Maske 352 Einsen für die Subpixel 304, 307 bis 308, 311 bis 312 und 315 bis 316.
  • Die 8D gibt die Subpixelspeicher 331 bis 346 in dem Akkumulator 142 wieder, nachdem ein Teil des zweiten Polygons 30 unter Benutzung des Schrittes 228 der 4 gespeichert worden ist. Unter Rückbeziehung auf die 8D, gibt ein „b" Daten von dem Fragment für das Polygon 30 an. Wie es von der Maske 354 angegeben wird, ersetzen die Daten für das Fragment für das Polygon 30 die Hintergrunddaten in den Subpixelspeichern 334, 337 bis 338 und 342. Die Daten für das Fragment für das Polygon 30 ersetzen also Daten von dem Fragment für das erste Polygon 20 in den Subpixelspeichern 341, 345 und 346. Da Fragmente für beide Polygone 20 und 30 verarbeitet worden sind, die das Pixel 300 schneiden, können die endgültigen, von einem Antialiasing bearbeiteten Daten für das Pixel 300 aus den Subpixelspeichern 331 bis 346 zur Verfügung gestellt werden indem die Schritte 240 oder 240' der in den 3 und 4 dargestellten Verfahren benutzt werden. Unter Rückbeziehung auf die 8D können die Daten in jedem der Subpixelspeicher kombiniert und gemittelt oder auf andere Weise gemischt werden , um Antialiasingdaten für das Pixel zu erhalten.
  • Da die Variation in den Tiefenwerten über ein Pixel ausgeführt wird, ermöglicht das erfindungsgemäße Verfahren und System ein Antialiasing von impliziten Rändern ebenso wie von expliziten Rändern und Linien. Außerdem werden die Subpixeltiefenwerte für ein Antialiasing berechnet. Die Subpixeltiefenwerte werden während der Verarbeitung nicht mit dem Fragment gespeichert. Da das Tiefenwertsgefälle als konstant über ein Pixel angenommen wird, braucht das Tiefenwertsgefälle nicht für jedes Subpixel berechnet werden. Wo die Polygone auch eben sind, braucht das Tiefenwertsgefälle nur einmal für das ganze Polygon berechnet werden. Andere Attribute wie die Farbe und die Textur werden auch nicht individuell für jedes Subpixel evaluiert. Stattdessen werden die Daten für das Fragment einfach für die geeigneten Subpixel kopiert. Deshalb erfordert das erfindungsgemäße Verfahren und System weniger Zeit und verbraucht weniger Speicherplatz als eine konventionelle Überabtastung. Deshalb kann das Antialiasing von impliziten Rändern schneller und unter Benutzung von weniger Speicherplatz ausgeführt werden.
  • Es ist ein Verfahren und System offenbart worden zur Verfügungstellung eines Antialiasings, das Masken und die Tiefenwerte für jedes Subpixel benutzt. Da nur das Tiefenwertsgefälle in dem Fragment gespeichert wird, wird weniger Speicherplatz benötigt, um ein besonderes Fragment zu speichern. Außerdem kann ein Antialiasing von impliziten Rändern in einem System zur Verfügung gestellt werden, das weniger Speicherplatz als eine herkömmliche Überabtastung benutzt. Außerdem wird die Rechenzeit reduziert, da dieselben Werte für die Farbe, die Textur und andere Daten als der z – Wert in einem Fragment in jedem Subpixel wiederholt werden können. Obwohl die vorliegende Erfindung in Übereinstimmung mit den gezeigten Ausgestaltungen beschrieben worden ist, kann ein Fachmann einfach erkennen, dass Veränderungen an den Ausgestaltungen vorgenommen werden können und diese Veränderungen im Rahmen der Erfindung bleiben. Entsprechend können viele Veränderungen von einem gewöhnlichen Fachmann vorgenommen werden, ohne den Rahmen der im Anhang befindlichen Patentansprüche zu verlassen.

Claims (15)

  1. Verfahren zur Bereitstellung eines Anti-Aliasings eines graphischen Bildes auf einer Anzeige von Daten, die mindestens ein Objekt beschreiben , wobei die Anzeige mehrere Pixel umfasst und das Verfahren folgende Schritte umfasst: a) Bereitstellung mehrerer Fragmente , die das mindestens eine Objekt zerteilen, wobei ein Teil der Vielzahl der Fragmente ein Pixel der Vielzahl von Pixeln zerteilt, jedes der Vielzahl von Fragmenten einen Tiefenwert, ein Tiefenwertsgefälle und eine Angabe eines Teils eines zerteilten entsprechenden Pixels aufweist; b) Berechnung einer Vielzahl von Subpixeltiefenwerten für ein Fragment der Vielzahl von Fragmenten, wobei die Vielzahl von berechneten Subpixeltiefenwerten den Tiefenwert und das Tiefenwertsgefälle des Fragments benutzt; c) Bestimmung ob ein Teil des Fragments auf der Basis der Vielzahl von Subpixeltiefenwerten und der Angabe des Ausmaßes mit der das entsprechende Pixel des Fragments zerteilt wird, gespeichert wird; d) Speicherung des Teils des Fragments falls im Schritt c) bestimmt worden ist, daß der Teil des Fragments zu speichern ist; e) Wiederholung der Schritte b) bis d) für jedes übrigbleibende Fragment in dem Teil der Vielzahl von Fragmenten; und f) Bereitstellung von Anti-Aliasing – Daten für das Pixel auf der Basis eines zweiten Teils der Vielzahl von gespeicherten Fragmenten.
  2. Das Verfahren nach Anspruch 1, wobei das Verfahren außerdem folgende Schritte umfasst: g) Wiederholung der Schritte b) bis f) für jedes übrigbleibende Pixel der Vielzahl von Pixeln.
  3. Das Verfahren nach Anspruch 1, wobei jedes der Vielzahl von Pixeln in eine Vielzahl von Subpixeln unterteilt werden kann , wobei die Angabe des Ausmaßes mit der das entsprechende Pixel zerteilt wird, eine Abdeckmaske umfasst, wobei die Abdeckmaske einen ersten Teil einer Vielzahl von Subpixeln den das Fragment zerteilt, angibt und wobei der Bestimmungsschritt c) außerdem folgende Schritte umfasst: c1) Bestimmung eines zweiten Teils der Vielzahl von Subpixeln in einem Teil der Vielzahl von Subpixeltiefenwerten der kleiner ist als ein Teil der Vielzahl von gespeicherten Subpixeltiefenwerten, wobei der zweite Teil der Vielzahl von Subpixeln sich in dem ersten Teil der Vielzahl von Subpixeln befindet; und wobei der Speicherungsschritt d) folgenden Schritt umfasst: d1) Speicherung des Teils des Fragments für den zweiten Teil der Vielzahl von Subpixeln:
  4. Verfahren nach Anspruch 3, bei dem der Bestimmungsschritt c1) außerdem folgende Schritte umfasst: cli) Vergleich der Vielzahl von Subpixeltiefenwerten mit der Vielzahl von gespeicherten Subpixeltiefenwerten, um einen dritten Wert von der Vielzahl von Subpixeln zu bestimmen, bei der ein entsprechender Subpixeltiefenwert kleiner ist als ein gespeicherter Subpixeltiefenwert der Vielzahl von gespeicherten Subpixeltiefenwerten; clii) Bereitstellung einer zweiten Maske für das Fragment, wobei die zweite Maske den dritten Teil der Vielzahl von Subpixeln angibt; und cliii) Benutzung der Abdeckmaske und der zweiten Maske für das Fragment, um den zweiten Teil der Vielzahl von Subpixeln zu bestimmen.
  5. Das Verfahren nach Anspruch 4, bei dem der Bestimmungsschritt clii) außerdem folgenden Schritt umfasst: cliia) Ausführung einer UND Operation für die Abdeckmaske und die zweite Maske.
  6. Das Verfahren nach Anspruch 3, bei dem der Schritt f) zur Bereitstellung der Anfi-Aliasing – Daten außerdem folgenden Schritt umfasst: f1)eine gespeicherte Mittelbildungsinformation , die sich auf den Teil der Vielzahl von das Pixel zerteilenden Fragmente bezieht.
  7. Das Verfahren nach Anspruch 3, bei dem der Schritt f) zur Bereitstellung der Anti-Aliasing-Daten folgende Schritte umfasst: f1) Mittelbildung der laufend gespeicherten Information, außer des Tiefenwertes, die sich auf den Teil der Vielzahl von das Pixel zerteilenden Fragmente bezieht; und f2) Auswahl eines laufend gespeicherten mittleren Subpixeltiefenwertes als Tiefenwert für das Pixel.
  8. Ein System zur Bereitstellung eines Anti-Aliasings eines graphischen Bildes von Daten, die mindestens ein Objekt beschreiben, das eine Vielzahl von Fragmenten umfasst, wobei jedes Fragment eine Abdeckmaske, einen Tiefenwert, und ein Tiefenwertsgefälle umfasst, wobei das System folgendes umfasst: – eine Anzeige, die eine Vielzahl von Pixeln umfasst; – an die Anzeige gekoppelte Mittel zur Bereitstellung einer Vielzahl von Fragmenten für das mindestens eine Objekt, wobei die Vielzahl von Fragmenten die Vielzahl von Pixeln zerteilt, wobei jede der Vielzahl von Fragmenten einen Tiefenwert, ein Tiefenwertsgefälle und eine Angabe eines Teils des zerteilten entsprechenden Pixels umfasst; – eine an die Anzeige gekoppelte Anti-Aliasing-Einheit, zur Bereitstellung des Anti-Aliasings jedes der Vielzahl von Fragmenten auf der Basis des Tiefenwerts, des Tiefenwertsgefälles und der Angabe der Ausdehnung des entsprechenden zerteilten Pixels.
  9. Das System nach Anspruch 8, bei dem die Vielzahl von Fragmenten in Rasterordnung wiedergegeben wird.
  10. Das System nach Anspruch 8, bei dem jedes Pixel eine Vielzahl von Subpixeln umfasst, wobei die Angabe des Ausmaßes mit dem ein entsprechendes Pixel zerteilt ist, eine Abdeckmaske umfasst, wobei die Abdeckmaske einen ersten Teil der Vielzahl von Subpixeln der entsprechenden zerteilten entsprechenden Pixel angibt, und wobei die Anti-Aliasing-Einheit außerdem folgendes umfasst: – Mittel zur Berechnung einer Vielzahl von Subpixeltiefenwerten für die Vielzahl von Fragmenten und zur Bestimmung, ob ein Teil jedes der Vielzahl von Fragmenten auf der Basis der Vielzahl von Tiefenwertsgefällen und der Abdeckmaske für jedes der Vielzahl von Fragmenten gespeichert werden soll, wobei die Vielzahl von berechneten Subpixeltiefenwerten den Tiefenwert und das Tiefenwertsgefälle für jedes der Vielzahl von Fragmenten benutzt; – Eine Vielzahl von Subpixelbuffern, die mit den Berechnungs- und Bestimmungsmitteln gekoppelt sind; und – Mit der Vielzahl von Subpixelbuffern gekoppelte Mittel zur Bereitstellung von Anti-Aliasing-Daten für die Vielzahl von Fragmenten auf der Basis eines zweiten Teils der Vielzahl von gespeicherten Fragmenten.
  11. Das System nach Anspruch 10, bei dem die Abdeckmaske einen ersten Teil der Vielzahl von Subpixeln angibt, die jedes der Vielzahl von Fragmenten zerteilt und bei dem die Berechnungs- und Bestimmungsmittel außerdem folgendes umfassen: – Mittel zur Bestimmung eines zweiten Teils der Vielzahl von Subpixeln in dem ein Teil der Vielzahl von Subpixeltiefenwerten kleiner ist als ein Teil der Vielzahl von gespeicherten Tiefenwerten, wobei der zweite Teil der Vielzahl von Subpixeln sich in dem ersten Teil der Vielzahl von Subpixeln befindet; und – Bei dem die Vielzahl von Subpixelbuffern den Teil des Fragments speichert, der dem zweiten Teil der Vielzahl von Subpixeln entspricht.
  12. Das System nach Anspruch 11, bei dem die Berechnungs – und Bestimmungsmittel außerdem folgendes umfassen: Mittel zur Bereitstellung einer zweiten Maske für das Fragment, wobei die zweite Maske einen dritten Teil der Vielzahl von Subpixeln angibt, in dem der Teil der Vielzahl von Subpixeltiefenwerten kleiner ist als der Teil der Vielzahl von gespeicherten Subpixeltiefenwerten; und Mittel zur Benutzung der Abdeckmaske und der zweiten Maske für das Fragment, um den zweiten Teil der Vielzahl von Subpixeln zu bestimmen.
  13. System nach Anspruch 12, bei dem die Maskenbenutzungsmittel außerdem folgenden umfassen: Mittel zur Ausführung einer UND – Operation für die Abdeckmaske und die zweite Maske.
  14. Das System nach Anspruch 13, bei dem die Mittel zur Bereitstellung von einem Antialiasing unterworfenen Pixeln außerdem die gespeicherte Information mitteln , die sich auf den Teil der Vielzahl von Fragmenten bezieht, die das Pixel zerteilen.
  15. Das System nach Anspruch 14, bei dem die Mittel zur Bereitstellung von einem Antialiasing unterworfenen Pixel, die unter anderem die Mittel der laufend gespeicherten Information betreffend den Teil der Vielzahl von dem die Pixel zerteilenden Fragment bilden, einen Subpixeltiefenwert, der laufend als Tiefenwert für die Pixel gespeichert wird, wählen.
DE60012917T 1999-04-22 2000-04-20 Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten Expired - Lifetime DE60012917T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/296,999 US6285348B1 (en) 1999-04-22 1999-04-22 Method and system for providing implicit edge antialiasing
US296999 1999-04-22
PCT/US2000/010887 WO2000065540A1 (en) 1999-04-22 2000-04-20 Method and system for providing implicit edge antialiasing

Publications (2)

Publication Number Publication Date
DE60012917D1 DE60012917D1 (de) 2004-09-16
DE60012917T2 true DE60012917T2 (de) 2005-06-23

Family

ID=23144453

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60012917T Expired - Lifetime DE60012917T2 (de) 1999-04-22 2000-04-20 Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten

Country Status (6)

Country Link
US (4) US6285348B1 (de)
EP (1) EP1183654B1 (de)
AT (1) ATE273540T1 (de)
AU (1) AU4483600A (de)
DE (1) DE60012917T2 (de)
WO (1) WO2000065540A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000149047A (ja) * 1998-11-12 2000-05-30 Mitsubishi Electric Inf Technol Center America Inc ボリュ―ムレンダリングプロセッサ
US6285348B1 (en) * 1999-04-22 2001-09-04 Broadcom Corporation Method and system for providing implicit edge antialiasing
US6865301B1 (en) 2000-02-28 2005-03-08 Adobe Systems Incorporated Reducing aliasing artifacts when shaping a digital image
EP1139294B1 (de) * 2000-03-30 2016-09-21 S3 Graphics Co., Ltd. Graphisches Bildsystem und -gerät
US6828983B1 (en) * 2000-05-12 2004-12-07 S3 Graphics Co., Ltd. Selective super-sampling/adaptive anti-aliasing of complex 3D data
US6766281B1 (en) * 2000-05-12 2004-07-20 S3 Graphics Co., Ltd. Matched texture filter design for rendering multi-rate data samples
US6956576B1 (en) * 2000-05-16 2005-10-18 Sun Microsystems, Inc. Graphics system using sample masks for motion blur, depth of field, and transparency
TW544635B (en) * 2001-10-16 2003-08-01 Ulead Systems Inc Anti-alias method for Z-directional convergence
US6847368B2 (en) * 2002-03-11 2005-01-25 Sun Microsystems, Inc. Graphics system with a buddy / quad mode for faster writes
US20040174379A1 (en) * 2003-03-03 2004-09-09 Collodi David J. Method and system for real-time anti-aliasing
US7129941B2 (en) * 2003-03-19 2006-10-31 Sun Microsystems, Inc. Sample replication mode with depth value calculation
US7050068B1 (en) * 2003-12-02 2006-05-23 Nvidia Corporation Generation of jittered sub-pixel samples using programmable sub-pixel offsets
US9218689B1 (en) 2003-12-31 2015-12-22 Zilabs Inc., Ltd. Multi-sample antialiasing optimization via edge tracking
US7978194B2 (en) * 2004-03-02 2011-07-12 Ati Technologies Ulc Method and apparatus for hierarchical Z buffering and stenciling
US7538765B2 (en) * 2004-08-10 2009-05-26 Ati International Srl Method and apparatus for generating hierarchical depth culling characteristics
US7589722B2 (en) 2004-08-10 2009-09-15 Ati Technologies, Ulc Method and apparatus for generating compressed stencil test information
US7385604B1 (en) * 2004-11-04 2008-06-10 Nvidia Corporation Fragment scattering
US20060250414A1 (en) * 2005-05-03 2006-11-09 Vladimir Golovin System and method of anti-aliasing computer images
US7852350B2 (en) 2007-07-26 2010-12-14 Stmicroelectronics S.R.L. Graphic antialiasing method and graphic system employing the method
US20090033671A1 (en) * 2007-08-02 2009-02-05 Ati Technologies Ulc Multi-sample rendering of 2d vector images
US8243092B1 (en) * 2007-11-01 2012-08-14 Nvidia Corporation System, method, and computer program product for approximating a pixel color based on an average color value and a number of fragments
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
TWI405146B (zh) * 2009-09-16 2013-08-11 Via Tech Inc 電子裝置與其反鋸齒處理方法
US10453170B2 (en) 2016-09-09 2019-10-22 Intel Corporation Minimum/maximum and bitwise and/or based coarse stencil test
US10157493B2 (en) 2017-04-01 2018-12-18 Intel Corporation Adaptive multisampling based on vertex attributes
CN111192351B (zh) * 2018-11-14 2023-06-02 芯原微电子(上海)股份有限公司 边缘抗锯齿的图形处理方法、系统、存储介质及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237650A (en) * 1989-07-26 1993-08-17 Sun Microsystems, Inc. Method and apparatus for spatial anti-aliased depth cueing
JP2523889B2 (ja) * 1989-08-25 1996-08-14 松下電器産業株式会社 隠れ面処理装置
US5123085A (en) * 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons
EP0464907B1 (de) * 1990-06-29 1996-10-09 Philips Electronics Uk Limited Bilderzeugung
US5471567A (en) * 1991-08-08 1995-11-28 Bolt Beranek And Newman Inc. Image element depth buffering using two buffers
KR100200818B1 (ko) * 1993-11-30 1999-06-15 윤종용 분할된 룩업테이블을 이용한 효과적인 앤티에일리어싱 방법
US5949428A (en) * 1995-08-04 1999-09-07 Microsoft Corporation Method and apparatus for resolving pixel data in a graphics rendering system
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
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
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
US6128000A (en) * 1997-10-15 2000-10-03 Compaq Computer Corporation Full-scene antialiasing using improved supersampling techniques
US6285348B1 (en) * 1999-04-22 2001-09-04 Broadcom Corporation Method and system for providing implicit edge antialiasing
ATE261604T1 (de) * 1999-05-07 2004-03-15 Broadcom Corp Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
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
AU4483600A (en) 2000-11-10
DE60012917D1 (de) 2004-09-16
US6285348B1 (en) 2001-09-04
WO2000065540A1 (en) 2000-11-02
EP1183654A1 (de) 2002-03-06
ATE273540T1 (de) 2004-08-15
EP1183654B1 (de) 2004-08-11
US20040217974A1 (en) 2004-11-04
US20030038819A1 (en) 2003-02-27
US6509897B1 (en) 2003-01-21
US6774910B2 (en) 2004-08-10

Similar Documents

Publication Publication Date Title
DE60012917T2 (de) Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten
DE69131927T2 (de) Verfahren und gerät um verfälschte polygone darzustellen
DE69032932T2 (de) System und Verfahren zum unverfälschten Polygonenzeichnen
DE3689271T2 (de) Verfahren zur Bildanzeige.
DE3853393T2 (de) Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung.
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE69811849T2 (de) Verfahren und gerät zur interpolation von attributen bei 3d-grafiken
DE69224499T2 (de) Dreidimensionale graphische Verarbeitung
DE69127915T2 (de) System und Verfahren von Prioritätsfarbabbildung
DE69914355T2 (de) Bildverarbeitungsgerät
DE69716877T2 (de) System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem
DE60008867T2 (de) Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
DE69908966T3 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE68927471T2 (de) Verfahren zur Schattierung eines graphischen Bildes
DE3854223T2 (de) Erzeugung und Anzeige von Rechnergraphiken.
DE19807053B4 (de) Strahltransformationsverfahren für eine schnelle Volumenaufbereitung für eine perspektivische Betrachtung
DE19600431A1 (de) Computergraphik-Pixel-Wiedergabesystem mit Cache-Speichern
DE60122333T2 (de) Verfahren und System zur kachelweisen Bildwiedergabe
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE3619420A1 (de) Computer-displayeinrichtung
DE602004003111T2 (de) Tiefen-basiertes Antialiasing
DE19807013A1 (de) Volumetrisches Vorabschneidungsverfahren, das eine minimale Anzahl von Abtastpunkten durch ein Volumen gewährleistet

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