-
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.