DE19827726A1 - Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung - Google Patents
Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer InkrementaleinrichtungInfo
- Publication number
- DE19827726A1 DE19827726A1 DE19827726A DE19827726A DE19827726A1 DE 19827726 A1 DE19827726 A1 DE 19827726A1 DE 19827726 A DE19827726 A DE 19827726A DE 19827726 A DE19827726 A DE 19827726A DE 19827726 A1 DE19827726 A1 DE 19827726A1
- Authority
- DE
- Germany
- Prior art keywords
- edge
- sub
- primitive
- pixel
- coordinates
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Description
Diese Erfindung bezieht sich allgemein auf das Gebiet von
Computersystemen und insbesondere auf ein Verfahren und eine
Vorrichtung für das Antialiasing (Filterung zur Glättung von
Kurven in Rasterbildern) bei Computergraphiksystemen.
Computergraphiksysteme werden häufig zum Anzeigen von gra
phischen Darstellungen von zwei- oder dreidimensionalen Ob
jekten auf einem zweidimensionalen Anzeigebildschirm verwen
det. Ein herkömmliches Computergraphiksystem umfaßt einen
Hostcomputer zum Liefern von Anweisungen und Daten zu einem
Graphikgerät, das den Anzeigebildschirm umfaßt. Durch Wei
terleiten von Befehlen und Daten zu dem Graphikgerät steuert
der Hostcomputer die Anzeige von Bildern auf dem Anzeige
bildschirm.
Bei typischen Computergraphiksystemen wird ein Objekt, das
auf einem Anzeigebildschirm dargestellt werden soll, in eine
Anzahl von primitiven zerlegt. Die Primitive sind Grundkom
ponenten eines Graphikbilds, wie z. B. Punkte, Linien, Vek
toren und Polygone (z. B. Dreiecke). Typischerweise arbeitet
eine Graphiksoftware, die auf dem Hostcomputer ausgeführt
wird, in Verbindung mit dem Graphikgerät, um die Graphikpri
mitive auf dem Anzeigegerät wiederzugeben (zu zeichnen).
Um ein zwei- oder dreidimensionales Objekt wiederzugeben,
liefert der Hostcomputer eine Sammlung von Primitivdaten,
die zusammen das Objekt, das wiedergegeben werden soll,
definieren. Beispielsweise können die Primitivdaten, die ein
Dreieck definieren, die x-, y-, z-Koordinaten des dreidimen
sionalen Objektraums und die Rot-, Grün-, Blau- (RGB-) Farb
werte für jeden Scheitelpunkt des Dreiecks umfassen. Die
Wiedergabehardware in dem Graphikgerät interpoliert die Pri
mitivdaten, um zu bestimmen, welche Pixel auf dem Anzeige
bildschirm verwendet werden, um das Dreieck wiederzugeben,
und um die Rot-, Grün- und Blau-Farbwerte für jedes dieser
Pixel zu bestimmen.
Der Prozeß des Umwandelns von Primitivdaten, z. B. einer
Linie, einem Punkt oder einem Polygon, zu einem entsprechen
den Array von Pixeldaten ist als "Abtastumwandlung" bekannt.
Der Abtastumwandlungsprozeß, der bei einem Graphiksystem
verwendet wird, wird ziemlich häufig aufgerufen, typischer
weise Tausende von Malen für jedes Bild, das erzeugt oder
modifiziert wird. Daher ist es wünschenswert, daß der Ab
tastumwandlungsprozeß so schnell wie möglich ausgeführt
wird. Die Ausführgeschwindigkeit erfordert jedoch oftmals
einen Kompromiß bezüglich der Bildqualität.
Einige Abtastumwandlungsverfahren sind schnell. Die Primiti
ve, die wiedergegeben werden, erscheinen jedoch derart, als
wenn dieselben gezackte Kanten aufweisen. Das Erscheinungs
bild der gezackten Kanten resultiert aus der Auswahl einer
nicht optimalen Farbe für die Pixel an den Kanten des Primi
tivs. Die Primitive, die gezackte Kanten als ein Resultat
ihrer Transformation in Pixeldaten aufweisen, werden häufig
als "aliased" (= mit auflösungsbedingten Darstellungsfehlern
behaftet) bezeichnet. Wenn ein Abtastwandler in einer Be
triebsart arbeitet, die nicht versucht, die gezackten Kanten
zu korrigieren, wird davon gesprochen, daß derselbe in einer
Aliasedbetriebsart arbeitet.
Beispielsweise stellt Fig. 1 ein Primitiv (d. h. ein Dreieck
74) dar, das durch einen Abtastwandler, der in der Aliased
betriebsart arbeitet, wiedergegeben wurde. Wenn ein Primitiv
in einer Aliasedbetriebsart geliefert wird, wird eine
schnelle Bestimmung durchgeführt, ob jedes Pixel ein (d. h.
durch das Primitiv abgedeckt) oder aus (nicht durch das Pri
mitiv abgedeckt) ist oder nicht. Die Grundbestimmung wird
durch Auswerten des Zustands jedes Pixels bei einem Ur
sprungspunkt, wie z. B. ein Punkt 1 in Fig. 1, bestimmt. Die
Adresse oder der Ursprung jedes Pixels in dem x, y-Koordi
natenraum ist durch die Koordinaten an den x-y-Schnittpunk
ten des Gitters in der oberen rechten Ecke des Pixels de
finiert. Wenn der Ursprungspunkt durch das Primitiv abge
deckt ist, ist das Pixel ein. Wenn nicht, ist das Pixel aus.
Da lediglich eine einzige Farbabtastung pro Pixel vorgenom
men wird, wird die Wiedergabe des Primitivs in der Aliased
betriebsart schnell durchgeführt. Wie es jedoch in dem Bei
spiel von Fig. 1 sichtbar ist, ist, obwohl die Aliasedpri
mitive oftmals schnell wiedergegeben werden können, das
resultierende Primitiv oftmals von einer schlechten Quali
tät.
Auf den Prozeß des Lieferns eines Primitivs mit einem Er
scheinungsbild mit glatten Kanten wird allgemein als "Anti
aliasing" Bezug genommen. Die Abtastumwandlungsalgorithmen,
die in einem Antialiasedbetrieb arbeiten, sind allgemein
langsamer, oder dieselben erfordern wesentlich mehr Hard
ware, da mehr Berechnungen bei jedem Pixel durchgeführt wer
den, um eine geeignete Farbe auszuwählen. Primitive, die
unter Verwendung des Antialiasing wiedergegeben werden,
weisen jedoch glattere Kanten als ein Resultat von opti
maleren Farbauswahlkriterien auf. Ein Verfahren des Anti
aliasing verwendet ein Mehrpunktabtasten innerhalb jedes
Pixels, um eine optimalere Farbe für Pixel an den Kanten
eines Primitivs auszuwählen. Beim Auswählen einer opti
maleren Farbe mischt das Mehrpunktabtasten die Farbe des
Hintergrunds, einschließlich jeder unterliegenden Geometrie,
mit der Farbe des Primitivs, um gezackte Kanten des Primi
tivs zu glätten. Bei dem Mehrpunktabtasten wird jedes Pixel
allgemein bei mehreren Unterpixelpositionen innerhalb jedes
Pixels abgetastet, um den Abschnitt des Pixels zu bestimmen,
der durch das Primitiv abgedeckt wird. Eine einzige ge
mischte Farbe für das Pixel wird dann basierend auf der
Anzahl der Unterpixel, die durch das Primitiv abgedeckt
werden, bestimmt.
Beispielsweise kann, wenn eine Kante eines roten Primitivs
einen schwarzen Hintergrund bei einem gegebenen Pixel ab
deckt, derart, daß 50% der Unterpixelabtastpositionen abge
deckt sind, dann die Farbe für das Pixel als eine Mischung
von 50% Rot und 50% Schwarz ausgewählt werden. Folglich wird
durch Mischen der Farbe der Pixel entlang der Kanten eines
Primitivs ein glatter Übergang zwischen dem Primitiv und dem
Hintergrund geschaffen.
Eine Technik, die zum Liefern von Antialiasedbildern unter
Verwendung des Mehrpunktabtastens verwendet wird, ist in dem
REALITYENGINE-Graphikgerät (REALITYENGINE ist eine einge
tragene Marke) vorgesehen, das kommerziell durch die Silicon
Graphics Computer Systems, U.S.A., erhältlich ist. Das Sili
con-Graphics-Gerät empfängt Ebenengleichungen, die Primitive
darstellen, und dasselbe löst nach den einzelnen Parametern
jeder Ebenengleichung auf. Die Ebenengleichungsparameter
werden verwendet, um auf eine Position in einer Nachschlag
tabelle zuzugreifen, die Strukturen von Unterpixeln für jede
mögliche Kombination von Parameterwerten speichert. Die
Struktur von Unterpixeln in der Nachschlagtabelle wird ver
wendet, um die Unterpixel zu identifizieren, die durch das
Primitiv abgedeckt werden, das durch die Ebenengleichung bei
jedem Pixel dargestellt ist.
Die mathematischen Berechnungen, die verwendet werden, um
die Ebenengleichungen zu lösen, sind komplex. Um die Ebenen
gleichungsparameter mit hoher Leistung zu lösen, sind viele
Pixelprozessoren erforderlich. Da die mathematischen Berech
nungen und das Nachschlagen mit Hardware durchgeführt wer
den, ist das Silicon-Graphics-System in der Lage Unterpixel
daten relativ schnell zu liefern. Ein Nachteil des obigen
Verfahrens besteht jedoch darin, daß die Hardware, die er
forderlich ist, um die mathematischen Funktionen durch
zuführen, hinsichtlich der Toranzahl teuer ist, was folglich
die Kosten und die Größe der Graphikschaltungsanordnung er
höht.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein
verbessertes Verfahren und eine verbesserte Vorrichtung zum
Bestimmen der Unterpixelabdeckung eines Primitivs zur Ver
wendung bei Antialiasingoperationen zu schaffen.
Diese Aufgabe wird durch ein Verfahren zum Bestimmen eines
Prozentsatzes mindestens eines Pixels auf einem Graphiksy
stemanzeigebildschirm, das durch ein Primitiv abgedeckt ist,
das auf dem Anzeigebildschirm angezeigt werden soll, gemäß
Anspruch 1 und durch eine Kantenschrittvorrichtung zum Er
zeugen von Koordinatendaten zum Anzeigen von Pixeln auf ei
nem Anzeigegerät, die das Primitiv darstellen, in einem
Graphiksystem, das ein Primitiv wiedergeben kann, gemäß An
spruch 6 gelöst.
Gemäß einem Aspekt der Erfindung ist ein Verfahren zum Nä
hern eines Prozentsatzes mindestens eines Pixels auf einem
Graphiksystemanzeigebildschirm, das durch ein Primitiv ab
gedeckt ist, das auf dem Anzeigebildschirm angezeigt werden
soll, geschaffen. Das Verfahren umfaßt die Schritte des Auf
teilens des mindestens einen Anzeigepixels in eine Mehrzahl
von Unterabtastzeilen, die eine Mehrzahl von Unterabtast
punkten für das mindestens eine Pixel definieren, wobei
jeder der Mehrzahl von Unterabtastpunkten auf einer entspre
chenden der Mehrzahl von Unterabtastzeilen positioniert ist.
Das Abschreiten wird zwischen der Mehrzahl von Unterabtast
zeilen des mindestens einen Pixels durchgeführt. Bei jeder
der Mehrzahl von Unterabtastzeilen wird bestimmt, ob der
entsprechende Unterabtastpunkt auf der einen der Mehrzahl
von Unterabtastzeilen durch das Primitiv abgedeckt wird. Der
Prozentsatz des mindestens einen Pixels, der durch das Pri
mitiv abgedeckt ist, wird basierend auf der Anzahl der Mehr
zahl von Unterabtastpunkten des mindestens einen Pixels, die
durch das Primitiv abgedeckt sind, genähert.
Gemäß einem weiteren Aspekt der Erfindung ist bei einem Gra
phiksystem, das in einer Aliasedbetriebsart zum Wiedergeben
von Primitiven und in einer Antialiasedbetriebsart zum Wie
dergeben von Primitiven mit relativ glatteren Kanten arbei
ten kann, eine Kantenschrittvorrichtung zum Erzeugen von
Koordinatendaten für Pixel auf einem Anzeigegerät, die ein
Primitiv auf dem Anzeigegerät darstellen, geschaffen. Die
Kantenschrittvorrichtung empfängt Primitivdaten, die ein er
stes und zweites Paar von Kantenkoordinaten und einen Nei
gungswert für mindestens eine Kante des Primitivs, das auf
der Anzeige wiedergegeben werden soll, umfassen. Die Kanten
schrittvorrichtung umfaßt einen Addierer zum Inkrementieren
mindestens der ersten Endpunktkoordinaten durch einen Inkre
mentwert, um eine Kanten-x- und eine Kanten-y-Koordinate der
mindestens eine Kante des wiedergegebenen Primitivs zu lie
fern, wobei der Inkrementwert kleiner als eine Größe eines
Pixels ist.
Gemäß einem weiteren Aspekt der Erfindung ist ein Graphik
gerät zum Anzeigen eines Bilds auf einem Anzeigegerät, das
mit einem Hostprozessor gekoppelt ist, geschaffen, wobei das
Anzeigegerät eine Mehrzahl von Abtastzeilen aufweist, und
wobei jede der Abtastzeilen eine Mehrzahl von Pixeln auf
weist. Das Graphikgerät umfaßt einen Graphikbeschleuniger,
der gekoppelt ist, um Daten von dem Hostprozessor zu empfan
gen, die eine Mehrzahl von Graphikprimitiven darstellen. Der
Graphikbeschleuniger erzeugt Kantengleichungen für jedes
Primitiv, wobei die Kantengleichungen für mindestens eine
Kante des Primitivs Endpunktkoordinatendaten, die Endpunkte
der mindestens einen Kante des Primitivs identifizieren, und
Neigungsdaten umfassen, die eine Änderungsrate der min
destens einen Kante identifizieren. Zusätzlich umfaßt das
Graphikgerät einen Abtastumwandler, der gekoppelt ist, um
die Kantengleichungen von dem Graphikbeschleuniger zu emp
fangen, und um die Ebenengleichungen in Koordinaten von
Pixeln des Anzeigegeräts zu übersetzen. Der Abtastumwandler
umfaßt eine Kantenschrittvorrichtung, um von einer der Ko
ordinaten eines der Endpunkte der Kante zu einem anderen
Endpunkt der Kante zu schreiten, um Pixelkoordinaten für die
Kante zu erzeugen, wobei eine Schrittgröße der Kanten
schrittvorrichtung kleiner ist als die Größe eines Anzeige
pixels.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beigefügten
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Beispiel eines Aliasedwiedergebens eines Pri
mitivs;
Fig. 2 ein Blockdiagramm eines darstellenden Graphiksy
stems, bei dem die vorliegende Erfindung verwendet
werden kann;
Fig. 3 ein Blockdiagramm eines Graphikbeschleunigers zur
Verwendung bei dem Graphiksystem von Fig. 2;
Fig. 4 ein Beispiel einer Transformierungsmatrix, die zum
Skalieren von Primitivdaten bei einem Ausführungs
beispiel der vorliegenden Erfindung verwendet
wird;
Fig. 4A ein Beispiel von Kantengleichungen, die durch den
Graphikbeschleuniger von Fig. 2 erzeugt werden;
Fig. 5 ein Blockdiagramm eines Ausführungsbeispiels einer
Rahmenpuffersteuerung eines Graphiksystems, wie
dasselbe, das in Fig. 2 gezeigt ist, das die vor
liegende Erfindung verwendet;
Fig. 6 eine Darstellung eines Primitivs, das auf einem
Pixelgitter gezeichnet ist;
Fig. 7 ein Blockdiagramm eines Ausführungsbeispiels einer
Kantenschrittvorrichtungseinheit der Rahmenpuffer
steuerung von Fig. 5 gemäß der vorliegenden Erfin
dung;
Fig. 8 ein darstellendes Beispiel des Skalierens von Pi
xeln, das bei einem Ausführungsbeispiel der vor
liegenden Erfindung zum Bestimmen von Abtastpunk
ten während des Mehrpunktabtastens verwendet wird;
Fig. 9 eine darstellende Zuweisung von x- und y-Koordina
ten-Adreßbits während des Aliased- und Anti
aliased-Betriebs gemäß der vorliegenden Erfindung;
Fig. 10 ein Blockdiagramm eines Ausführungsbeispiels einer
Sammeleinheit, die zum Sammeln von Mehrpunktabta
stungen gemäß der vorliegenden Erfindung verwendet
wird;
Fig. 11 eine Darstellung eines Primitivs, das auf einem
Pixelgitter zum Erklären des Betriebs der Sammel
logik von Fig. 10 gezeichnet ist;
Fig. 12 ein Flußdiagramm, das ein Betriebsverfahren einer
Datenwegssammeleinheit der Sammellogik von Fig. 10
darstellt;
Fig. 13 ein Blockdiagramm eines Ausführungsbeispiels einer
Datenwegweiterleitungseinheit der Sammellogik von
Fig. 10;
Fig. 14 ein Flußdiagramm, das ein Verfahren zum Betreiben
der Lesesteuerlogik der Sammeleinheit von Fig. 10
darstellt, um die Unterabtastzeilen zu einer Wei
tenschrittvorrichtung gemäß der vorliegenden Er
findung weiterzuleiten;
Fig. 15 ein Flußdiagramm, das ein Verfahren zum Weiterlei
ten von Unterabtastzeilen bei der Lesesteuerlogik
von Fig. 14 darstellt; und
Fig. 16 ein Blockdiagramm eines Ausführungsbeispiels einer
Weitenschrittvorrichtungseinheit, die in der Rah
menpuffersteuerung von Fig. 5 gemäß der vorliegen
den Erfindung verwendet wird.
Die vorliegende Erfindung ist auf ein verbessertes Verfahren
und eine verbesserte Vorrichtung für das Antialiasing von
Primitiven in einem Graphikgerät gerichtet, das mit einem
Anzeigebildschirm gekoppelt ist, auf dem ein Bild wiederge
geben wird. Der Anzeigebildschirm umfaßt eine Anzahl von Ab
tastzeilen, wobei jede Abtastzeile eine Anzahl von Anzeige
pixeln umfaßt. Das Graphikgerät umfaßt Software- und Hard
ware-Werkzeuge zum Zeichnen oder Wiedergeben eines Primitivs
auf der Anzeige. Die Graphikwerkzeuge erzeugen eine Start
kantenkoordinate und Neigungsinformationen für jedes Primi
tiv. Bei der Aliasedbetriebsart wird ein Primitiv durch
Abschreiten entlang der Anzeigebildschirmabtastzeilen und
Identifizieren von Koordinaten von Anzeigepixeln entlang der
Kanten des Primitivs wiedergegeben. Um ein Antialiasing ei
nes Primitivs unter Verwendung eines Mehrpunktabtastens
durchzuführen, wird bei einem Ausführungsbeispiel der vor
liegenden Erfindung ein Bild, das eine Mehrzahl von Abtast
zeilen aufweist, in eine Mehrzahl von Unterabtastzeilen un
terteilt, derart, daß eine Anzahl von Unterabtastzeilen
jedes Pixel kreuzt. Ein Abtastpunkt wird auf jeder Unterab
tastzeile plaziert, derart, daß jedes Pixel mehrere Abtast
punkte umfaßt, die verwendet werden können, um zu bestimmen,
wie sehr das Anzeigepixel durch das Primitiv abgedeckt ist.
Um die Anzahl der Abtastungen zu bestimmen, die durch ein
Primitiv abgedeckt sind, wird eine Kantenschrittechnik ver
wendet, um entlang jeder Kante des Primitivs zu schreiten,
was eine Unterabtastzeilenkoordinate für die Kante erzeugt.
Sowie jede Kantenunterabtastzeilenkoordinate erzeugt wird,
wird dieselbe mit Koordinaten eines Abtastpunkts auf dieser
Unterabtastzeile verglichen, um zu bestimmen, ob dieser
Abtastpunkt durch das Primitiv abgedeckt ist oder nicht.
Eine Maske wird für jedes Pixel erzeugt, wobei jedes Bit der
Maske einem der Unterabtastzeilenabtastungen entspricht und
anzeigt, ob die entsprechende Unterabtastung durch das Pri
mitiv abgedeckt ist. Als Resultat kann unter Verwendung ei
nes inkrementalen Algorithmusses, bei dem Schrittinkremente
und Richtungen auf Parametern basieren, die in der Software
vorerzeugt werden, die Position der Pixelkanten zum Auswer
ten der Pixelabdeckwerte bestimmt werden, ohne daß die kom
plexe Hardware erforderlich ist, die im Stand der Technik
verwendet wird.
Die Konzepte der vorliegenden Erfindung werden nun unter Be
zugnahme auf die angehefteten Zeichnungen beschrieben, in
denen sich gleiche Ziffern auf gleiche Elemente in den
Zeichnungen beziehen. Fig. 2 ist ein Blockdiagramm, das ein
exemplarisches Computergraphiksystem 10 zeigt, bei dem das
Antialiasingverfahren und die Antialiasingvorrichtung der
vorliegenden Erfindung verwendet werden können. Das Compu
tergraphiksystem 10 umfaßt einen Hostprozessor 12, ein vor
gelagertes Untersystem 14 und ein Rahmenpufferuntersystem
20. Das vorgelagerte Untersystem 14 empfängt Primitivdaten
von dem Hostprozessor 12 über den Bus 11. Wie oben erörtert,
wird jedes Primitiv typischerweise durch x-, y-, z-Koor
dinatendaten, R-, G-, B-Farbdaten und Texturdaten für ge
wisse Abschnitte des Primitivs spezifiziert, wie z. B.
Scheitelpunkte, wenn das Primitiv ein Dreieck ist. Das vor
gelagerte Untersystem 14 transformiert die Primitivdaten in
Kantengleichungen für jedes Primitiv, die Koordinaten für
jeden der Scheitelpunkte des Primitivs und die Neigungen der
Kanten des Primitivs identifizieren, und dieselbe überträgt
diese Kantengleichungen zu dem Rahmenpufferuntersystem 20.
Das Rahmenpufferuntersystem 20 interpoliert die Kantenglei
chungsdaten, die von dem vorgelagerten Untersystem 14 für
jedes Primitiv empfangen werden, um die Pixeladressen in An
zeigebildschirmkoordinaten und Pixelfarbdaten zu berechnen,
die verwendet werden, um jedes Primitiv auf dem Anzeige
bildschirm darzustellen. Die Pixelfarbdaten umfassen Bits,
die Rot-, Grün- und Blau-Farbkomponenten der Pixel identifi
zieren, und dieselben werden in einem Rahmenpufferspeicher
22 gespeichert. Die Pixelfarbdaten werden hinaus aus dem
Rahmenpufferspeicher 22 und durch einen Direktzugriffsspei
cher-Digital-zu-Analog-Wandler (RAMDAC; RAMDAC = Random
Access Memory Digital to Analog Converter) 27 weitergelei
tet, der die binären Farbdaten, die in dem Rahmenpuffer
speicher 22 gespeichert sind, in analoge Rot-, Grün- und
Blau-Signale zur Anzeige auf einem Anzeigegerät (nicht
gezeigt) umwandelt. Es sollte offensichtlich sein, daß die
Erfindung nicht auf ein analoges Anzeigegerät begrenzt ist,
und daß jeder andere Typ eines Anzeigegeräts (z. B. digital,
monochrom oder graustufig) alternativ verwendet werden kann.
Bei dem darstellenden System von Fig. 2 umfaßt das vorgela
gerte Untersystem 14 eine Hostschnittstelle 16 und einen
dreidimensionalen (3-D-)Geometriebeschleuniger 18. Die
Hostschnittstelle 16 empfängt die x-, y-, z-Scheitelpunkt
koordinate und die Farbprimitivdaten über den Bus 11 von dem
Hostprozessor 12. Diese Daten werden dann von der Host
schnittstelle 16 zu dem Geometriebeschleuniger 18 über den
Bus 11 geliefert. Der Geometriebeschleuniger 18 führt her
kömmliche Geometriebeschleunigerfunktionen, wie z. B. eine
dreidimensionale Transformation, die Beleuchtung, das Ab
schneiden und perspektivische Teiloperationen sowie das
Erzeugen von Kantengleichungen im Gleitkommaformat durch.
Bei Systemen, bei denen ein Geometriebeschleuniger nicht
vorgesehen ist, werden die Kantengleichungen alternativ
durch den Hostprozessor geliefert. Bei dem Ausführungs
beispiel von Fig. 2 werden die Kantengleichungen durch den
Geometriebeschleuniger 18 über den Bus 18a zu der Host
schnittstelle 16 geliefert, die diese Kantengleichungsdaten
auf dem Bus 19 zu dem Rahmenpufferuntersystem 20 weiter
leitet.
Unter Bezugnahme nun auf Fig. 3 ist ein Blockdiagramm eines
Abschnitts des Geometriebeschleunigers 18 als eine Transfor
mierungseinheit 30, eine Kantenerzeugungseinheit 34 und eine
Formatumwandlungseinheit 36 umfassend gezeigt. Die Trans
formierungseinheit 30 empfängt Koordinaten- und Farb-Daten
für jeden Endpunkt eines Primitivs. Ein Dreiecksprimitiv
wird beispielsweise durch drei Scheitelpunkte dargestellt,
und dasselbe wird folglich durch drei Scheitelpunktkoordi
naten dargestellt. Die Transformierungseinheit 30 umfaßt
eine Transformierungsmatrix 32, die verwendet wird, um geo
metrisch die Eingabekoordinaten von Primitivscheitelpunkten
in Koordinaten zum Darstellen des Primitivs auf einem An
zeigegerät zu transformieren. Kurz bezugnehmend auf Fig. 4
ist ein Beispiel einer Transformierungsmatrix 32 als eine
Anzahl von Zeilen und Spalten von Matrixwerten a1-a4 . . .
d1-d4 umfassend gezeigt. Die Matrixwerte werden verwendet,
um Koordinaten [x, y, z, w] jedes Pixelwerts in Koordinaten
[x', y', z', w'] eines Anzeigegeräts zu transformieren,
wobei x, y die Pixelkoordinaten entlang der x- bzw. der
y-Achse sind, wobei z die Pixelkoordinate entlang der
z-Achse ist und folglich eine visuelle Tiefeninformation über
das Pixel liefert, und wobei w die Pixelperspektive, d. h.
die Größe des Primitivs relativ zu der Größe der Anzeige
ist. Die Matrix ist geräteabhängig, und folglich variieren
die Werte in der Matrix basierend auf der Anzahl der Pixel,
die auf dem Anzeigegerät angezeigt werden kann. Zusätzlich
kann die Transformierungsmatrix 32 verwendet werden, um ein
Primitiv durch einen Skalierungswert S durch Multiplizieren
der geeigneten Matrixeinträge a1-a4, b1-b4, c1-c4 und
d1-d4 mit S unter Verwendung von Standardmatrixmultipli
kationstechniken zu skalieren. Diese Fähigkeit wird bei vie
len Graphiksystemen vorgesehen, um Bilder zum Vorsehen einer
Zoomfähigkeit zu skalieren.
Sobald die Objektkoordinaten des Primitivs zu Koordinaten
für das Anzeigegerät transformiert wurden, werden die trans
formierten Primitivdaten zu der Kantenerzeugungseinheit 34
(Fig. 3) weitergeleitet. Die Kantenerzeugungseinheit 34 wan
delt die empfangenen Primitivscheitelpunktdaten in Kanten
gleichungen um, die das Primitiv darstellen. Bezugnehmend
nun kurz auf Fig. 4A ist ein Beispiel von einigen Kanten
gleichungen gezeigt, die für ein Dreieck erzeugt wurden. Die
Scheitelpunktkoordinaten, die durch die Transformierungs
einheit 30 von der Hostschnittstelle 16 empfangen werden,
sind noch nicht skaliert, um die Perspektive des Primitivs
zu berücksichtigen, d. h. die Größe des Primitivs relativ zu
der Größe der Anzeige. Folglich werden die Gleichungen in
einer Gruppe 40 verwendet, um die x-, y- und z-Koordinaten
für jeden der Scheitelpunkte v0, v1 und v2 durch einen Per
spektivbetrag "wrecip" (der gleich 1/w ist) zu skalieren.
Das Skalieren durch Perspektive ermöglicht das Skalieren
eines einzelnen Primitivs. Im Gegensatz dazu skaliert die
Transformierungsmatrix das gesamte Bild auf der Anzeige. Die
Gleichungen in der Gruppe 42 werden dann verwendet, um die
Deltas der Kanten zu berechnen. Die Deltas umfassen Längen
informationen, die die Gesamtlänge der Kante identifizieren,
und Farbdeltainformationen, die die Änderung der Farbe ent
lang der Kante identifizieren. Die Gleichungen in einer
Gruppe 44 werden verwendet, um die Neigungen der Kanten des
Primitivs zu berechnen.
Während der Erzeugung der Kantengleichungen werden ferner
Kantenzuweisungen durchgeführt. Beispielsweise wird, wenn
Dreiecke verwendet werden, die Kante des Primitivs mit der
längsten y-Achsenweite als Kante 1 ausgewählt, die Kante,
die an die Kante 1 bei der niedrigsten y-Koordinate an
grenzt, ist Kante 2 und die verbleibende Kante ist Kante 3.
Basierend auf den Kantenzuweisungen wird ein Richtungswert
erzeugt, der eine x-Achsenrichtung anzeigt, die von Kante 1
zu Kante 2 fortfährt. Wie hierin im folgenden beschrieben,
wird dieser Richtungswert bei einem Ausführungsbeispiel der
vorliegenden Erfindung durch das Rahmenpuffersystem 20 zum
Bestimmen von Koordinaten von Pixeln, die durch das Primitiv
abgedeckt sind, verwendet.
Die Kantengleichungen und die Kantenzuweisungen werden zu
der Formatumwandlungseinheit 36 weitergeleitet, die die Kan
tengleichungen durch Durchführen einer Gleitkomma-zu-Fest
komma-Umwandlung neu formatiert, um spätere Berechnungen
unter Verwendung der Gleichungen zu vereinfachen. Die obigen
Kantengleichungsdaten werden aus dem Geometriebeschleuniger
18 (Fig. 2) heraus über den Bus 18a zu der Hostschnittstelle
16 weitergeleitet. Die Hostschnittstelle 16 leitet dann die
Kantengleichungsdaten zu dem Rahmenpufferuntersystem 20 wei
ter.
Bei dem Computergraphiksystem, das in Fig. 2 gezeigt ist,
umfaßt das Rahmenpufferuntersystem 20 zwei Rahmenpuffer
steuerungen 24 und 26, von denen jede die Anzeige eines Ab
schnitts (22a, 22b) des Rahmenpufferspeichers 22 steuert.
Die Rahmenpuffersteuerung 24 steuert die Inhalte und die An
zeige von Daten in dem Abschnitt 22a des Rahmenpufferspei
chers, und die Rahmenpuffersteuerung 26 steuert die Inhalte
und die Anzeige von Daten in dem Abschnitt 22b des Rahmen
pufferspeichers. Obwohl zwei Speichersteuerungen gezeigt
sind, umfassen andere Ausführungsbeispiele beispielsweise
eine Speichersteuerung, oder es können ferner mehr als zwei
Speichersteuerungen verwendet werden. Obwohl jede Rahmenpuf
fersteuerung 24 und 26 Primitivdaten handhabt, die für un
terschiedliche Adressen in dem Rahmenpufferspeicher 22 be
stimmt sind, ist die verbleibende Funktionalität der Steu
erungen im wesentlichen identisch. Folglich wird nun ledig
lich eine Rahmenpuffersteuerung detailliert im folgenden
beschrieben.
Bezugnehmend auf Fig. 5 ist eine darstellende Anordnung ei
ner Rahmenpuffersteuerung 24 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung als zwei Funktionseinheiten, eine
Abtastumwandlungseinheit 50 und eine Speichersteuerung 60
umfassend gezeigt. Die Abtastumwandlungseinheit 50 steuert
die Übersetzung der Kantengleichungen in einzelne Pixelda
ten. Die Speichersteuerung 60 steuert das Schreiben der Pi
xeldaten, die von der Abtastumwandlungseinheit 50 empfangen
werden, in den Rahmenpufferspeicher 22. Zusätzlich umfaßt
die Speichersteuerung eine Logik 57 zum Durchführen eines
Antialiasing unter Verwendung von Daten von der Abtastum
wandlungseinheit 50, die sich auf das Mehrpunktabtasten von
Primitiven beziehen. Bei einem Ausführungsbeispiel der Er
findung ist die Speichersteuerung 60, wie in der U.S.-Pa
tentanmeldung Seriennummer 08/692,350, mit dem Titel "Anti
aliasing System and Method that Minimize Memory Requirements
and Memory Accesses by Storing a Reduced Set of Subsample
Information", eingereicht am 5. August 1996 und hierin durch
Bezugnahme aufgenommen, beschrieben, implementiert. Die
Speichersteuerung, die in der obigen Patentanmeldung be
schrieben ist, beschreibt ein Antialiasingverfahren, das
Unterabtastabdeckungsinformationen verwendet, um die Farbe
und die wahrgenommenen Tiefeninformationen (d. h. die
z-Komponente) für jedes Pixel, das auf dem Anzeigegerät
wiedergegeben werden soll, zu bestimmen. Folglich kann die
vorliegende Erfindung verwendet werden, um die Unterabtast
abdeckungsinformationen zu liefern, die bei dem Anti
aliasingverfahren verwendet werden, das in der '350er Pa
tentanmeldung beschrieben ist. Das Verfahren und die Vor
richtung zum Erzeugen von Unterabtastinformationen, das
hierin beschrieben ist, kann jedoch ferner mit Speicher
steuerungen verwendet werden, die auf eine andere Art und
Weise implementiert sind, und folglich ist die vorliegende
Erfindung nicht auf die Verwendung der '350er Speicher
steuerung begrenzt.
Wie oben erwähnt, leitet die Abtastumwandlungseinheit 50
Pixelkoordinate und Farbdaten zu der Speichersteuerung
weiter. Gemäß einem Aspekt der Erfindung leitet die Abtast
umwandlungseinheit 50 ferner eine Unterabtastmaske zu der
Speichersteuerung weiter. Jedes der Bits der Maske ent
spricht einer Unterabtastung eines zugeordneten Pixels. Die
Unterabtastmaske wird während des Antialiasing verwendet,
um einen geeigneten Farbwert für das Pixel auszuwählen.
Bevor beschrieben wird, wie die Umwandlungseinheit 50 die
Unterabtastmaske bestimmt, wird zuerst eine kurze Be
schreibung des Betriebs des Mehrpunktabtastens vorgesehen.
Unter Bezugnahme nun auf Fig. 6 ist ein Abschnitt eines An
zeigebildschirms 70 als ein 6-Zeilen-mal-6-Spalten-Pixel
gitter umfassend gezeigt. Die Zeilen des Gitters sind bei
Ganzzahlwerten für sowohl x- als auch y-Koordinaten in einem
x-, y-, z-Koordinatensystem der Anzeige gezeichnet. Jede der
horizontalen Zeilen x stellt eine Abtastzeile für die
Anzeige dar. Die Abtastzeile 0 befindet sich bei der Adresse
(0, 0), die Abtastzeile 1 befindet sich bei der Adresse (0,
1) usw. Entsprechend einem Ausführungsbeispiel der Erfindung
ist eine Anzahl von Unterabtastungen innerhalb jedes Pixels
umfaßt, und dieselben sind als eine Anzahl von Punkten, die
mit Unter0-Unter3 in Pixel 73 bezeichnet sind, gezeigt.
Die Adresse oder der Ursprung jedes Pixels in dem x, y-Koor
dinatenraum ist durch die Koordinaten an den x, y-Schnitt
punkten des Gitters definiert. Jedes Gitter umfaßt die Un
terabtastungen innerhalb des Pixels, das sich in einer stei
genden x- und steigenden y-Richtung zu dem nächsten Gitter
schnittpunkt erstreckt. Folglich umfaßt das Pixel (1, 0) Un
terabtastungen in dem Gitterblock 75.
Das Primitiv von Fig. 6 ist ein Dreieck 74, das in einer
ersten Farbe auf einem Hintergrund einer zweiten Farbe
gezeichnet ist. Wie im vorhergehenden unter Bezugnahme auf
Fig. 1 beschrieben, würde, wenn das Dreieck 74 in einer
Aliasedbetriebsart wiedergegeben wird, jedes Pixel, dort wo
der Pixelursprungspunkt durch das Primitiv abgedeckt ist, in
der ersten Farbe wiedergegeben werden, während Pixel, dort
wo der Pixelursprungspunkt nicht durch das Primitiv abge
deckt ist, in der zweiten Farbe wiedergegeben werden. Das
resultierende Aliasedprimitiv würde mit gezackten Kanten
wiedergegeben, was folglich ein unteroptimales Bild liefert.
Um die Kanten des Primitivs zu glätten, kann das Primitiv
unter Verwendung einer Antialiasedtechnik wiedergegeben wer
den, die als Mehrpunktabtasten bekannt ist. Bei dem Mehr
punktabtasten wird jedes Pixel bei mehreren Koordinaten in
nerhalb des Pixels abgetastet, um eine Anzahl von Pixelun
terabtastungen zu liefern. Während des Mehrpunktabtastens
wird, wenn eine Farbe zum Anzeigen jedes Pixels ausgewählt
wird, die Anzahl der Unterabtastungen der Pixel, die durch
das Primitiv abgedeckt werden, in Verbindung mit anderen
Informationen (wie z. B. Farbdaten und z-Tiefe) verwendet,
um die Farbe des Pixels zu bestimmen. Bei dem Beispiel von
Fig. 6 weist das Pixel 75 an der x, y-Koordinate (1, 0) zwei
Unterabtastungen auf, die durch das Primitiv abgedeckt
werden. Folglich würde die Farbe des Pixels eine Mischung
von 50% der Primitivfarbe und 50% der Hintergrundfarbe sein.
Das Mehrpunktabtasten ist daher beim Antialiasing nützlich,
da dasselbe Informationen liefert, die verwendet werden, um
die Farbe an den Kanten eines Primitivs zu modulieren, um
dadurch das Erscheinungsbild von gezackten Kanten zu redu
zieren. Das Mehrpunktabtasten ist ferner zum Anzeigen von
Objekten nützlich, die kleiner sind als die Größe des Pi
xels. Beispielsweise wird, wenn ein Objekt kleiner als die
Größe des Pixels ist, und wenn dasselbe keinen einzigen Ab
tastpunkt des Pixels abdeckt, dasselbe nicht in der Aliased
betriebsart angezeigt. Da das Mehrpunktabtasten das Bild bei
mehreren Punkten innerhalb eines Anzeigepixels abtastet, das
durch das Pixelgitter definiert ist, können Objekte mit Un
terpixelgröße abgetastet werden, und die Farbe des Pixels
kann auf der Anzeige dargestellt werden. Eine Komponente des
Mehrpunktabtastens ist die Bestimmung, wieviele Unterabta
stungen bei jedem Pixel durch das Primitiv abgedeckt werden.
Die Unterabtastinformationen werden während einer Abtast
umwandlung bestimmt, und dieselben werden in der Form einer
Maske zu der Speichersteuerung weitergeleitet, die die Pi
xelfarbe gemäß der Maske moduliert.
Wie oben erörtert, haben herkömmliche Verfahren zum Be
stimmen der Maske komplexe Hardware verwendet, um die
Abdeckung des Primitivs über jedes Pixel auszuwerten, um
dadurch die Anzahl der Unterabtastungen zu bestimmen, die
durch die Maske angezeigt werden. Im Gegensatz dazu werden
bei einem Ausführungsbeispiel der vorliegenden Erfindung gut
bekannte und existierende inkrementale Abtastumwandlungs
verfahren durch vorhergehendes Durchführen von komplexen
Kantenparameterberechnungen in der Software und unter
Verwendung dieser Kantenparameter mit einer modifizierten
herkömmlichen Hardware erweitert, um Maskeninformationen zu
liefern. Gemäß einem Ausführungsbeispiel der vorliegenden
Erfindung werden Maskeninformationen durch Unterteilen jeder
Abtastzeile in eine Mehrzahl von Unterabtastzeilen, wobei
die Abtastpunkte auf Unterabtastzeilengrenzen positioniert
sind, und dann unter Verwendung von Hardware erzeugt, die
bereits in dem System zusammen mit einer Sammelhardware der
Erfindung vorgesehen ist, um Informationen über die Ab
deckung der Unterabtastungen innerhalb des Pixels zu sam
meln.
Zurück bezugnehmend auf Fig. 5 ist der Abtastwandler 50 ge
mäß einem Ausführungsbeispiel der vorliegenden Erfindung ei
ne Kantenschrittvorrichtung 52, eine Sammellogik 54 und eine
Weitenschrittvorrichtung 56 umfassend gezeigt. Der Betrieb
jeder dieser Komponenten wird im folgenden unter Bezugnahme
auf den Abschnitt des darstellenden Bilds 70, das in Fig. 6
gezeigt ist, beschrieben. Die Kantenschrittvorrichtungen und
die Weitenschrittvorrichtungen sind häufig in Graphikhard
ware zum Bestimmen von Koordinaten von Pixeln vorgesehen,
die durch Primitive abgedeckt sind. Mit lediglich geringen
Modifikationen an einer Kantenschrittvorrichtung und einer
Weitenschritteinheit können die Kantenschrittvorrichtung 52,
die Sammeleinheit 54 und die Weitenschrittvorrichtungen ei
nes Ausführungsbeispiels der vorliegenden Erfindung ferner
Maskeninformationen zur Verwendung durch die Speichersteue
rung 60 während der Antialiasingoperationen liefern.
Die Kantenschrittvorrichtung 52 empfängt die Kantengleichun
gen, wie dieselben, die in Fig. 4A gezeigt sind, von dem
Graphikbeschleuniger 18. Unter Verwendung der Kantenglei
chungen schreitet die Kantenschrittvorrichtung inkremental
entlang den Kanten des Primitivs unter Verwendung eines vor
her berechneten Kantenpunkts und von vorher berechneten Kan
tenneigungsdaten fort, um die Kantenkoordinaten des Primi
tivs zu bestimmen. Gemäß einem Ausführungsbeispiel der Er
findung kann die Kantenschrittvorrichtung in entweder einer
Aliasedbetriebsart oder einer Antialiasedbetriebsart ar
beiten. Bei beiden Betriebsarten ist das Betriebsgrundver
fahren identisch, lediglich die Eingabeparameter der Kanten
schrittvorrichtung unterscheiden sich. Für Zwecke der Er
klärung wird zunächst eine Einführung des Kantenschrittpro
zesses beschrieben, wobei die Kantenschrittvorrichtung in
einer herkömmlichen Aliasedbetriebsart arbeitet. Dann werden
die Modifikationen an den Eingabeparametern, die verwendet
werden, wenn in einer Antialiasedbetriebsart gearbeitet
wird, beschrieben.
Beispielsweise sind die Kanten des Primitivs 74 von Fig. 6
als Kante 1, Kante 2 und Kante 3 gezeigt. Wie im vorherge
henden beschrieben, empfängt die Kantenschrittvorrichtung
Kantenstart- und End-Informationen und Neigungs-Informatio
nen für das Primitiv. Die Kantenschrittvorrichtung schreitet
entlang jeder Kante, wobei dieselbe Koordinatendaten für
jedes der Pixel auf jeder der Kanten sammelt. Wenn dieselbe
entlang der Kante 1 schreitet, "schreitet" die Kanten
schrittvorrichtung von dem Start der Kante 1 (dort wo die
Kante 1 die Abtastzeile mit der niedrigsten y-Koordinate
schneidet; d. h. Punkt A in Fig. 6) zu der nächsten Pixel
koordinate von Kante 1, bis dieselbe das Ende der Kante 1,
d. h. den Scheitelpunkt v1, erreicht, wobei dieselbe im
wesentlichen eine Linie zwischen den beiden zeichnet und
bestimmt, welche Pixel in dem Bild 70 durch die Kante 1
berührt werden. Ein Blockdiagramm eines darstellenden Aus
führungsbeispiels einer Kantenschrittvorrichtung zum Imple
mentieren sowohl von einer Aliased- als auch einer Anti
aliased-Betriebsart der vorliegenden Erfindung ist in Fig. 7
gezeigt. Um entlang der Kante 1 zu schreiten, verwendet die
Kantenschrittvorrichtungslogik eine Start-y-Komponente und
eine Stopp-y-Komponente, die als Teil der Kantengleichungs
daten von dem Graphikbeschleuniger 18 empfangen werden. Die
Start-y-Komponente ist die y-Adresse, bei der die Kante 1
zuerst eine Abtastzeile kreuzt. Die Stopp-y-Komponente ist
die y-Komponente des Scheitelpunkts v1. Bei dem Dreiecks
primitivbeispiel von Fig. 6 ist der Start-y-Wert (d. h. die
y-Komponente des Punkts A in Fig. 6) 1, und der Stopp-y-Wert
ist 3,5. Die Start-y-Komponente wird durch den Multiplexer
85 gespeist und in einem Register 80 als Kante1-Y<15 : 0<
gespeichert. Die Kante1-Y-Komponente ist die Y-Komponente,
die aus der Kantenschrittvorrichtung 52 zu der Sammellogik
54 weitergeleitet wird. Die Kante1-Y-Komponente wird zu dem
Addierer 86 weitergeleitet, bei dem ein Inkrementwert zu der
Kante1-Y-Komponente addiert wird, um die nächste Y-Komponen
te zu liefern. Der Inkrementwert wird zu dem Multiplexer 82
geliefert, der einen einer Vielfalt von Werten basierend auf
dem Zustand eines Aliasedbits, das anzeigt, ob die Kanten
schrittvorrichtung in einer Aliased- oder Antialiased-Be
triebsart arbeitet, und eine Untergitteradresse, die im fol
genden detaillierter beschrieben ist, auswählt. Immer wenn
das Graphikgerät in der Aliasedbetriebsart arbeitet, wird
a+1 zu der Start-y-Komponente addiert, um zu der nächsten
Abtastzeile zu inkrementieren, da jede Pixel-y-Komponente
auf einer Abtastzeilengrenze ausgerichtet ist. Die verblei
benden möglichen Inkrementwerte, die in den Multiplexer 82
eingegeben werden, werden zum Unterstützen von Operationen
in einer Antialiasingbetriebsart geliefert, wie es de
taillierter im folgenden beschrieben ist. Folglich umfassen
die Modifikationen der Kantenschrittvorrichtungslogik zum
Unterstützen der Antialiasedbetriebsart einen Multiplexer 82
und eine Auswahlsteuerung 84 und einen Komparator 93, die im
folgenden erklärt werden.
Zusätzlich zu der Start-y- und der Stopp-y-Komponente wird
eine Start-x-Komponente durch den Multiplexer 95 gespeist
und in einem Register 94 gespeichert. Eine Neigung-x-Kompo
nente wird in einem Register 96 gespeichert. Die Start-x-
und Neigung-x-Komponente werden als Teil der Kantenglei
chungsdaten von dem Graphikbeschleuniger 18 empfangen. Die
Start-x-Komponente ist die x-Komponente der Kante 1, dort wo
die Kante 1 zuerst eine Abtastzeile kreuzt; d. h. die x-Ko
ordinate, die der Start-y-Koordinate (d. h. die x-Komponente
des Punkts A in Fig. 6) entspricht. Die Neigung-x ist die
Neigung der Kante 1. Bei dem Beispiel von Fig. 6 ist der
Start-x-Wert die x-Adresse 2,2 und die Neigung-x ist 1,5.
Während des ersten Zyklusses des Kantenschrittprozesses in
der Aliasedbetriebsart wird die Start-y-Komponente durch den
Multiplexer 85 weitergeleitet und in dem Register 80 als ein
aktueller y-Wert gespeichert, wenn ein Signal Neues-Primitiv
aktiviert ist. Das Signal Neues-Primitiv wird immer dann
aktiviert, wenn ein neues Primitiv zu der Kantenschrittvor
richtungseinheit weitergeleitet wird. Die Start-x-Komponente
wird durch den Multiplexer 95 weitergeleitet, wenn das Si
gnal Neues-Primitiv aktiviert ist und in dem Register 94 ge
speichert wird, was einen aktuellen x-Wert liefert. Der
aktuelle x-Wert wird zu einem Addierer 99 weitergeleitet,
der entweder a+1 oder a-1 zu dem aktuellen x-Wert aus Grün
den addiert, die im folgenden beschrieben werden. Der aktu
elle x-Wert wird zu einem Multiplexer 100 weitergeleitet.
Der Multiplexer 100 wählt zwischen dem aktuellen x-Wert und
dem inkrementierten (oder dekrementierten) x-Wert abhängig
von dem Zustand eines Bits Zustand-Kante1 (das im folgenden
detaillierter beschrieben ist) aus, um einen eingestellten
Wert X<31 : 16< zu liefern. Der eingestellte X-Wert wird zu
dem Multiplexer 97 weitergeleitet, bei dem ein verschobener,
eingestellter X-Wert oder ein nicht-verschobener, einge
stellter X-Wert abhängig von dem Zustand eines Aliasedbits
(das den Betrieb in einer Antialiasedbetriebsart anzeigt)
Kante1-X<31 : 16< weitergeleitet. Der Wert Kante1-X<31 : 16<
wird aus der Kantenschrittvorrichtung 52 zu der Sammellogik
54 weitergeleitet. Ähnlich wird der aktuelle Y<31 : 16< zu dem
Multiplexer 83 weitergeleitet, der entweder einen verschobe
nen aktuellen Y-Wert oder einen nicht-verschobenen aktuellen
Y-Wert als einen Wert Kante1-Y<31 : 16< abhängig von dem Zu
stand des Aliasedbits auswählt. Folglich ist bei diesem Bei
spiel das erste Kante-1-X-, Kante1-Y-Komponentenpaar, das
aus der Kantenschrittvorrichtung weitergeleitet wird (1, 2).
Die aktuelle Y-Komponente mit durch +1 inkrementiert, und
das Resultat wird zurück durch den Multiplexer 85 gespeist
und in dem Register 88 gespeichert. In dem gleichen Zyklus
wird die Neigung-x bei dem Multiplizierer 91 mit dem In
krementwert multipliziert, der von dem Multiplexer 82 (der
für die Aliasedbetriebsart +1 ist) geliefert wird, zu der
aktuellen X-Komponente bei dem Addierer 98 addiert und als
eine Komponente Nächstes-X ausgegeben. Die Komponente Näch
stes-X wird durch den Multiplexer 95 weitergeleitet und in
das Register 94 geladen. Als Resultat wird ein zweites Ko
ordinatenpaar (2, 3) für die Kante 1 erzeugt. Die aktuelle
Y-Komponente wird durch +1 inkrementiert, das aktuelle X
wird durch die Neigung inkrementiert und die Resultate
werden in die Register 80 bzw. 94 geladen, um Kante1-X-,
Kante1-Y-Koordinaten von (3, 5) für den nächsten Zyklus zu
liefern. Der Prozeß des Inkrementierens fährt solange fort,
bis ein Komparator 92 bestimmt, daß der Nächstes-Y-Wert
größer als der Wert ist, der in dem Stopp-y-Register 90
gespeichert ist. Wenn der Nächstes-Y-Wert größer als der
Stopp-y-Wert ist, wird das Kantenschreiten des Primitivs
abgeschlossen, und das Signal Ende-Primitiv wird aktiviert.
Folglich sind die Signale, die aus der Kantenschrittvor
richtung 52 zu der Sammellogik 54 weitergeleitet werden, die
Signale Kante1-X, Kante1-Y und Ende-Primitiv.
Bei einem Ausführungsbeispiel werden die Kante 2 und die
Kante 3 als eine Kante (Kante 2/3) behandelt, die durch eine
Biegung verbunden sind. Die Kantenschrittlogik für die Kante
2/3 ist ähnlich zu derselben, die für die Kante 1 vorgesehen
ist, mit einer Ausnahme. Während des Abschreitens der Kante
2/3 wird das Schreiten zunächst entlang der Kante 2 durchge
führt, bis der Stopp-y-Wert für die Kante 2 angetroffen
wird, und dann fährt das Schreiten entlang der Kante 3 fort.
Folglich würde unter Bezugnahme auf das Beispiel in Fig. 6
das Kantenschreiten entlang der Kante 2 auftreten, startend
von den Kante-2-Start-x- und Start-y-Koordinaten (0,8, 1)
(gezeigt durch den Punkt B in Fig. 6), und eine Kante-2-Ko
ordinate (0,6, 2) erzeugend. Wenn die y-Koordinate auf die
dritte Abtastzeile inkrementiert wird, wird ein Vergleich
ähnlich zu dem Vergleich, der durch den Komparator 92 in
Fig. 7 durchgeführt wird, durchgeführt, um den Nächstes-Y-
Wert mit dem Stopp-Y-Wert zu vergleichen, der in einem Re
gister ähnlich zu Register 90 gespeichert ist. Wenn die
Kante-2-Y-Koordinate größer als der Wert Stopp-y-Wert der
Kante 2 ist, beginnt das Schreiten entlang einer
Kante-3-Start-X-Koordinate. Bei dem Beispiel von Fig. 6 ist
die erste Kante-3-Koordinate, die erzeugt wird, für die
Abtastzeile 3, und dieselbe ist (2,7, 3) (gezeigt durch den
Punkt C in Fig. 6). Das Schreiten entlang der Kante 3 fährt
solange fort, bis das Signal Ende-Primitiv durch die Kante-
1-Kantenschrittvorrichtung der Kante 1 aktiviert ist. Folg
lich wird die Logik in Fig. 7 in der Kante-2/3-Schrittvor
richtung durch Hinzufügen eines Multiplexers vor dem Start
x-Register 94 (um zwischen einem Kante-2-Start-x und einem
Kante-3-Start-x auszuwählen) und Hinzufügen eines Multi
plexers vor dem Stopp-Y-Register 90 (um zwischen einem
Kante-2-Stopp-Y und einem Kante-1-Stopp-Y auszuwählen, der
ähnlich zu dem Kante-3-Stopp-y ist) modifiziert. Zusätzlich
wird ein Multiplexer vor dem Register 96 hinzugefügt, um
zwischen einer Kante-2-Neigung und einer Kante-3-Neigung
auszuwählen, und ein Multiplexer wird vor dem Start-x-
Register 95 hinzugefügt, um zwischen einem Kante-2-Start und
einem Kante-3-Start auszuwählen. Eine Kante-2/3-Koordinate
kann zur gleichen Zeit erzeugt werden, zu der eine Kante-1-
Koordinate für jede Abtastzeile erzeugt wird.
Nach der Erzeugung der Kante-1- und der Kante-2/3-Koordi
naten für jede Abtastzeile werden bei der Aliasedbetriebsart
die Koordinaten zu der Weitenschrittvorrichtung 56 (Fig. 5)
weitergeleitet. Die Weitenschrittvorrichtung 56 schreitet
entlang der x-Achse von einer Kante-1-Koordinate zu einer
Kante-2/3-x-Koordinate auf jeder Abtastzeile fort, die durch
das Primitiv abgedeckt ist, um die x-y-Koordinaten für alle
Pixel zwischen der Kante 1 und der Kante 2/3 zu bestimmen,
und folglich für alle Pixel, die durch das Primitiv auf die
ser Abtastzeile abgedeckt werden.
Fig. 1 ist ein Beispiel der Wiedergabe von Primitiv 74 in
der Aliasedbetriebsart, wobei die Pixelkoordinaten unter
Verwendung der Kantenschritt- und der Weitenschritt-Opera
tionen, die im vorhergehenden beschrieben sind, erzeugt
wurden. Da lediglich die Pixelkoordinaten während des Wei
tenschreitens und des Kantenschreitens verglichen und er
zeugt werden, sind lediglich diese Pixel "ein", deren
vollständige Position durch das Primitiv abgedeckt wird,
wobei die verbleibenden Pixel "aus" sind. Zusätzlich gibt
es, aufgrund der Aliasedbetriebsart, keine Modulation der
Farbe entlang der Kanten des Primitivs, wobei jedes Pixel
entweder die Hintergrundfarbe oder die Primitivfarbe auf
weist. Folglich ist die Aliasedbetriebsart zum Wiedergeben
von Primitiven nützlich, wenn eine hohe Leistung erforder
lich ist. Wie in Fig. 1 gezeigt, sind jedoch Aliasedkanten
häufig gezackt und visuell unbefriedigend.
Das Antialiasing unter Verwendung der Mehrpunktabtastverfah
ren erzeugt allgemein Bilder mit höherer Qualität, jedoch
mit einer reduzierten Leistung oder höheren Hardwarekosten
im Vergleich zu Aliasedbildern, da mehrere Abtastungen jedes
Pixels analysiert werden, wenn die Farbe jedes Pixels be
stimmt wird. Wie im vorhergehenden beschrieben, werden das
Kantenschreiten und das Abtastschreiten in der Aliasedbe
triebsart auf einer Abtastzeilenkörnigkeit zum Liefern von
Pixelkoordinateninformationen zu der Speichersteuerung
durchgeführt. Bei einem Ausführungsbeispiel der Erfindung
wird bei einer Antialiasedbetriebsart jedoch jedes Pixel in
eine Anzahl von Unterabtastzeilen aufgeteilt, und das Kan
tenschreiten wird auf einer Unterabtastzeilenkörnigkeit
durchgeführt. Unterabtastungen sind auf einer oder mehreren
Unterabtastzeilen positioniert, und Informationen darüber,
ob jede der Unterabtastungen durch das Primitiv abgedeckt
ist, werden während der Antialiasedbetriebsart zu der Spei
chersteuerung durch die Weitenschrittvorrichtung weiterge
leitet. Bei einem Ausführungsbeispiel der Erfindung wird die
gleiche Hardware für das Kantenschreiten und das Weiten
schreiten in sowohl der Aliased- als auch der Antialiased
betriebsart vorteilhaft verwendet. Folglich können die Un
terabtastungsinformation mit minimalen Änderungen zu der
Kantenschrittvorrichtungs- und der Weitenschrittvorrich
tungs-Hardware geliefert werden.
Bei einem Ausführungsbeispiel der Erfindung wird, bevor jede
Abtastzeile in eine Mehrzahl von Unterabtastzeilen unter
teilt wird, zuerst das Bild durch einen vorbestimmten Betrag
skaliert, derart, daß jede der Unterabtastzeilen auf eine
Ganzzahladreßgrenze fällt. Auf diese Art und Weise müssen
die Weiten- und die Kantenschrittvorrichtungen keine gebro
chenen Pixeladressen handhaben, was die Hardware verein
facht. Obwohl dieses Merkmal vorteilhaft ist, ist die Er
findung jedoch in dieser Hinsicht nicht begrenzt. Folglich
muß das Skalieren nicht verwendet werden, und die Unterab
tastzeilenkoordinaten können Bruchteilen von Pixelkoordi
naten entsprechen. Folglich ist das Skalieren lediglich ein
Ausführungsbeispiel zum Teilen einer Abtastzeile in eine
Anzahl von Unterabtastzeilen, die den Abtastkoordinaten
innerhalb eines Pixels zugeordnet sind.
Bei dem Skalierungsausführungsbeispiel der Erfindung wird
das Skalieren des Bilds in der Transformierungseinheit 30
(Fig. 3) des Graphikbeschleunigerchips 18 durch Multiplizie
ren der Werte in der Transformierungsmatrix 32 (Fig. 3) mit
einem gewünschten Skalierwert durchgeführt. Es muß keine zu
sätzliche Funktionalität zu der Transformierungseinheit hin
zugefügt werden, um diese Antialiasunterstützung vorzusehen,
da dieselbe schon die Skalierfunktionalität zum Liefern von
gezoomten Bildern vorsieht. Der Skalierwert wird teilweise
durch die Anzahl der Abtastpunkte bestimmt, die für jedes
Pixel erwünscht sind. Bei einem Ausführungsbeispiel der Er
findung wird ein Skalierwert von 8 zum Ermöglichen der
Plazierung von vier Abtastpunkten verwendet, obwohl andere
Skalierwerte und Abtastpunktzahlen alternativ verwendet
werden können. Die Auswahl der Anzahl der Skalierpunkte wird
durch die Berechnungszeit, die erforderlich ist, um jede der
Abtastungen auf den Unterabtastzeilen zu verarbeiten, und
durch eine relative Verbesserung des Antialiasedbilds gegen
über einer Aliaseddarstellung des Bilds beeinflußt. Bei ei
nem Ausführungsbeispiel der Erfindung wurde herausgefunden,
daß die Verwendung von vier Abtastpunkten pro Pixel eine
wesentlich verbesserte Bildqualität gegenüber dem Aliased
bild liefert, während die gute Leistung beibehalten wird.
Wie im vorhergehenden erörtert, ist bei einem Ausführungs
beispiel der Erfindung der Skalierfaktor (z. B. 8) größer
als die Anzahl der Abtastpunkte (z. B. 4). Dies ist dahin
gehend vorteilhaft, daß dies eine nicht-reguläre Plazierung
der Unterabtastungen innerhalb des Pixels erleichtert. Eine
nicht-reguläre Plazierung bedeutet, daß die Unterabtastungen
jedes Pixels bei Positionen entlang der Unterabtastzeilen
positioniert werden können, derart, daß die Unterabtastungen
keine reguläre, gitterähnliche Struktur bilden. Das Plazie
ren der Unterabtastungen bei nicht-regulären Intervallen
entlang der Unterabtastzeilen führt zu einer Reduktion der
visuellen Bildfehler, die durch die geordneten Strukturen
bewirkt werden. Die vorliegende Erfindung ist jedoch nicht,
wenn skaliert wird, auf die Verwendung eines Skalierfaktors
begrenzt, der größer als die Anzahl der Abtastungen ist.
Eine Technik, die zum Bestimmen eines Skalierwerts und der
Anzahl der Abtastpunkte zum Erzeugen eines Ausgabebilds mit
minimalen visuellen Bildfehlern verwendet werden kann, ist
in dem Artikel "Hardware Assisted Polygon Anti-Aliasing",
IEEE Computer Graphics & Applications, Januar 1991, von
Anthony C. Barkans, der hierin durch Bezugnahme aufgenommen
ist, beschrieben.
Das Skalieren eines Bilds mit 8 liefert eine Anzahl von
anderen Vorteilen. Da der Skalierbetrag eine Potenz von 2
ist, wird der Multiplikationsschritt des Skalierens ohne
weiteres durch Bitverschieben durchgeführt. Zusätzlich wer
den, da eine Skaliergröße von 8 ausgewählt wurde, drei Bits
zum Bestimmen einer Unterabtastzeilenadresse verwendet. Wie
es im folgenden beschrieben werden wird, umfassen die x- und
die y-Adressen, die bei einem Ausführungsbeispiel der vor
liegenden Erfindung verwendet werden, jeweils einen 16-
Bit-Ganzzahlabschnitt, derart, daß die Weiten- und Kanten-
Schrittvorrichtungshardware Register umfaßt, die 16-Bit-
Ganzzahlpixelkoordinaten unterstützen können. Wenn drei der
Ganzzahladreßbits als Unterabtastzeilenadreßbits während des
Antialiasing verwendet werden, verbleiben 13 y-Adreßbits zum
Adressieren von Pixeln innerhalb eines Bilds. Viele Anwen
dungen, wie z. B. X-Windows, erfordern einen Bildpixel
adreßbereich von 8 K, der 13 Bit erfordert. Die Verwendung
eines Skalierfaktors von 8 ermöglicht das Maximieren der
Flexibilität von Unterabtastplazierungen, während dennoch
Anwendungen, wie z. B. X-Windows, für Antialiasing-Opera
tionen unterstützt werden.
Obwohl ein Ausführungsbeispiel der vorliegenden Erfindung
einen Skalierfaktor von 8 mit vier Unterabtastungen verwen
det, ist die vorliegende Erfindung nicht auf diese Werte be
grenzt. Es können vielmehr andere Skalierfaktoren und andere
Unterabtastzahlen alternativ verwendet werden. Wie im vor
hergehenden beschrieben, ist die Auswahl des Skalierwerts
abhängig von dem verfügbaren Adreßraum und der Leichtigkeit
der Berechnung. Die Auswahl der Unterabtastanzahl wird
basierend auf einer gewünschten Bildqualität und einer ge
wünschten Leistung bestimmt.
Unter Bezugnahme nun auf Fig. 8 ist ein Beispielpixel 97 ge
zeigt. Vor dem Skalieren werden die Abtastzeilengrenzen des
Pixels durch die Abtastzeile 0 und die Abtastzeile 1 de
finiert. Das Pixel 97 wird durch einen Faktor von 8 ska
liert, um skalierte Pixel 99 zu erzeugen. Bei dem skalierten
Pixel 99 sind Unterabtastpixel bei der Unterabtastzeile 0,
der Unterabtastzeile 3, der Unterabtastzeile 5 und der Un
terabtastzeile 7 positioniert. Bei dem Beispiel von Fig. 8
sind die Unterabtastungen bei den folgenden Positionen po
sitioniert: Unterabtastung 0 = (0, 0), Unterabtastung 1 =
(7, 3), Unterabtastung 2 = (3, 5) und Unterabtastung 3 = (5,
7). Die Unterabtastungen können alternativ bei anderen Punk
ten entlang der Unterabtastzeilen plaziert werden.
Obwohl das Mehrpunktabtasten nun hinsichtlich einer Kanten
schrittechnik beschrieben wird, kann die obige Skaliertech
nik ferner verwendet werden, um die mathematischen Berech
nungen bei anderen Verfahren von Antialiasoperationen zu
vereinfachen, wobei die mathematischen Berechnungen minde
stens auf ein Informationsstück, das sich auf das Bild be
zieht, wirken, und wobei die Informationen gebrochene Kom
ponenten umfassen. Beispiele der Informationen können Unter
abtastpunkte bei dem Mehrpunktabtasten umfassen, dieselben
können jedoch auch Neigungs- und Kantengleichungs-Parameter
sein. Daher kann das Skalieren des Bilds verwendet werden,
um die gebrochenen Informationskomponenten zu eliminieren,
um dadurch die Notwendigkeit nach komplexen Gleitkommabe
rechnungen zu eliminieren.
Das Kantenschreiten wird auf dem skalierten Gitter für Anti
aliasedbilder auf eine Art und Weise durchgeführt, die ähn
lich zu derselben ist, die unter Bezugnahme auf die Fig. 7
für Aliasedbilder beschrieben ist. Der einzigste Unterschied
liegt darin, wie die Y-Achsenadresse interpretiert wird; d. h.
die Y-Achsenadresse ist eine Unterabtastzeilenadresse bei
einer Antialiasedbetriebsart, im Gegensatz zu einer Ab
tastzeilenadresse bei einer Aliasedbetriebsart.
Unter Bezugnahme nun auf Fig. 9 ist ein Ausführungsbeispiel
des X- oder Y-Adreßregisters 32 Bit aufweisend gezeigt, die
in einem 16.16-Format gespeichert sind. Bei einem 16.16-For
mat sind die höchstwertigsten 16 Bit Ganzzahlen, und die
niedrigstwertigsten 16 Bit stellen einen gebrochenen Ab
schnitt der Adresse dar. Eine darstellende Zuweisung von X-
oder Y-Adreßregisterbits ist, wenn in einer Aliasedbetriebs
art gearbeitet wird, als Register 101 gezeigt, wobei der
Ganzzahlabschnitt des X- oder Y-Adreßregisters 101a 16 Bit
von X- oder Y-Adreßinformationen aufweist. Eine darstellende
Zuweisung der X- oder Y-Adreßregisterbits ist, wenn in einer
Antialiasedbetriebsart gearbeitet wird, als Register 103 ge
zeigt, wobei der Ganzzahlabschnitt der X- oder Y-Adresse ei
ne 13-Bit-X- oder Y-Adresse 103a und eine 3-Bit-Untergitter
adresse 103b umfaßt, wobei die 3-Bit-Untergitteradresse eine
Adresse von einer der 8 Unterabtastzeilen des Pixels co
diert. Das Kantenschreiten verwendet bei der Aliasedbe
triebsart den Ganzzahlabschnitt der Y-Adreßregisterbits
(31:16, in Fig. 9 gezeigt) als eine Basis für das inkremen
tale Schreiten, während das Kantenschreiten bei der Anti
aliasedbetriebsart die gleichen Y-Bits (<31 : 16<) verwendet,
wobei jedoch, wie es gezeigt wird, Untergitteradreßbits
(<18 : 16<) verwendet werden, um einen Teil des Antialiasingpro
zesses zu steuern.
Obwohl es acht mögliche Untergitter-Y-Werte gibt, werden bei
dem darstellenden Ausführungsbeispiel lediglich vier Unter
abtastungen verwendet. Als ein Resultat werden lediglich
vier Unterabtastzeilen, auf denen die Unterabtastungen lie
gen (wie in Fig. 8 gezeigt) während des Kantenschrittprozes
ses analysiert. Daher wird, wenn das Anfangs-Y-Adreß-Unter
gitterfeld 103b kein Untergitterwert ist, der einer Unterab
tastzeile entspricht, die Start-Y-Adresse inkrementiert, um
bei der nächsten Unterabtastzeile innerhalb des Gitters zu
starten. Beispielsweise wird, wenn das Y-Untergitteradreß-
feld 103 eine 1 ist, der Start-Y-Wert durch +2 bis zu a3 in
krementiert, da dies die nächste Unterabtastzeile ist, die
einen Abtastpunkt in dem Gitter aufweist.
Zurück bezugnehmend auf Fig. 7 ist eine Beschreibung darüber
angegeben, wie bei einem Ausführungsbeispiel der Erfindung
die Kantenschritthardware ferner für das Antialiasedkan
tenschreiten verwendet wird. Der Start-Y-Wert wird durch den
Multiplexer 85 weitergeleitet, in das Register 80 geladen,
und als aktuelles Y<31:16< gespeichert. Das aktuelle
Y<31:16< wird zu dem Multiplexer 93 weitergeleitet, bei dem
entweder ein verschobenes Y oder ein nicht-verschobenes
aktuelles Y als der Kante1-Y-Wert abhängig von dem Zustand
des Aliasedbits geliefert wird. Wie in Fig. 9 beschrieben,
werden die Bits <18:16< bei der Antialiasedbetriebsart
verwendet, um eine Unterabtastzeilenkörnigkeit für das
Schreiten zu liefern. Folglich ist für die Antialiased
betriebsart der Ganzzahlabschnitt der Y-Komponente aus den
Bits <31:16< des aktuellen Y-Werts gebildet, und für die
Aliasedbetriebsart ist der Ganzzahlabschnitt der Y-Kompo
nente aus den Bits <28:16< des aktuellen Y-Werts gebildet.
Der aktuelle Y-Wert wird ferner zu dem Addierer 86 weiter
geleitet. Zusätzlich wird ferner ein Inkrement zu dem
Addierer 86 weitergeleitet. Der Betrag des Inkrements wird
durch die Auswahlsteuerlogik 81 bestimmt, und derselbe
basiert auf dem Zustand des Aliasedbits (das, wie oben be
schrieben, anzeigt, ob ein Graphikgerät in der Aliasedbe
triebsart arbeitet oder nicht) und basiert ferner auf der
Anfangsuntergitteradresse. Wie im vorhergehenden beschrie
ben, addiert, wenn die Untergitteradresse nicht eine Unter
abtastzeilenadresse ist, die einen Abtastpunkt aufweist,
dann die Anfangsaddieroperation das gewünschte Inkrement, um
zu der nächsten Unterabtastzeile zu gehen. Das Inkrement,
das zum Erreichen der nächsten Unterabtastzeilenadresse
benötigt wird, wird dann basierend auf der aktuellen Unter
abtastzeilenadresse und einem Delta-y zu der nächsten Unter
abtastzeilenadresse ausgewählt. Beispielsweise ist, wenn die
y-Komponente der Unterabtastzeilenadressen (0), (3), (5) und
(7) ist, dann das Unterabtastzeilendelta von der Unterab
tastzeile 0 zu der Unterabtastzeile 1 + 3, von der Unterab
tastzeile 1 zu der Unterabtastzeile 2 + 2, von der Unterab
tastzeile 2 zu der Unterabtastzeile 3 + 2, und von Unter
abtastzeile 3 zu der Unterabtastzeile 0 des nächsten Pixels
+1.
Unter Verwendung des Beispiels von Fig. 8 und schreitend
entlang der Kante 1 ist der Start-y-Wert eine 1, der Stopp
y-Wert ist größer als 8,0 (da die Kante sich über das Pixel
99 erstreckt), der Starty-x-Wert ist eine 1 und die Neigung
x ist eine 1. Während des ersten Zyklusses wird die Start-
y-Komponente durch den Multiplexer 85 weitergeleitet, in den
Registern 80 gespeichert und als Kante1-Y zu der Sammellogik
54 ausgegeben. Die Start-x-Komponente wird durch den Multi
plexer 95 weitergeleitet und in dem Register 94 gespeichert,
um einen aktuellen x-Wert zu liefern. Der aktuelle x-Wert
wird durch den Multiplexer 100 weitergeleitet und als ein
eingestellter X-Wert, der auf eine Art und Weise verschoben
wird, die ähnlich zu derselben ist, die im vorhergehenden
unter Bezugnahme auf die aktuelle Y-Komponente beschrieben
wurde, geliefert, um eine Kante1-X-Komponente zum Weiterlei
ten zu der Sammellogik 54 zu liefern.
Während des nächsten Zyklusses des Kantenschrittprozesses
wird die aktuelle Y-Komponente von 1 durch +2 inkrementiert,
um die Unterabtastzeile 3 zu erhalten. Die x-Koordinate an
der Unterabtastzeile 3 wird durch Multiplizieren des Nei
gungs-x-Werts bei dem Multiplizierer 91 mit dem Inkrement
wert von +2 und durch Addieren der Resultate zu dem aktu
ellen X-Wert bei dem Addierer 98 bestimmt. Die Resultate von
dem Addierer 98 werden zurück durch den Multiplexer 95 ge
speist, und dieselben werden in einem Register 94 ge
speichert, um schließlich Kante1-Y- und Kante1-X-Koordinaten
von (3, 3) für den nächsten Verarbeitungszyklus von (3, 3) zu
liefern. Während des nächsten Zyklusses ist der Inkrement
betrag, der benötigt wird, um die nächste Unterabtastzeile
(y=5) zu erhalten a+2. Der Prozeß fährt, wie im vorher
gehenden beschrieben, fort, was Kantenkoordianten von (5, 5)
und (7, 7) in den nächsten zwei Zyklen ergibt.
Ein Komparator 93 vergleicht die oberen 13 Bits der Näch
stes-Y-Komponente von dem Addierer 86 mit den oberen 13 Bits
des Kante1-Y-Werts von dem Register 80. Wie im vorhergehen
den erwähnt, stellen die oberen 13 Bits die Abtastzeilen
komponente der Y-Adresse dar. Die zwei sind jedesmal un
gleich, wenn eine Abtastzeilengrenze gekreuzt wird. Wenn
diese zwei ungleich sind, oder wenn das Signal Ende-Primitiv
aktiviert ist, wird ein Signal Neues-Y aktiviert, um den
Start des Verarbeitens einer neuen Abtastzeile anzuzeigen.
Das Signal Neues-Y wird zu der Sammellogik 54 weiterge
leitet.
Während der Analyse des Pixels 99 werden vier Sätze von
Kante1-X-, Kante1-Y-Koordinatenpaaren erzeugt, obwohl ledig
lich drei der Koordinatenpaare auf die Unterabtastzeilen
fallen. Es ist jedoch offensichtlich, daß ein Gesamt von
vier Kantenunterabtastzeilenkoordinaten für jedes Pixel für
Fälle erzeugt wird, bei denen die Kante sich über alle
Unterabtastzeilen des Pixels erstreckt. Sowie jedes Kanten
unterabtastzeilenkoordinaten-x-y-Paar erzeugt wird, wird
dasselbe zu der Sammellogik 54 (Fig. 5) gespeist. Zusätzlich
wird zusammen mit jedem Kantenunterabtastzeilenkoordinaten
x-y-Paar die y-Untergitteradresse der Unterabtastzeile ge
sendet. Wie es detaillierter im folgenden beschrieben wird,
wird die y-Untergitteradresse verwendet, um zwischen den x-,
y-Koordinatenpaaren, die sich auf einer gültigen Unterab
tastzeile (d. h. Unterabtastzeilen 0, 3, 5 oder 7) befinden,
und denselben, die sich nicht auf einer gültigen Unterab
tastzeile befinden (d. h. dieselben, die auf die Unterab
tastzeilen 1, 2, 4 oder 6 fallen) befinden, zu unterschei
den.
Die Kantenschrittvorrichtung 52 umfaßt zusätzlich eine Zu
standslogik 84 zum Liefern eines Zustandsbits, das anzeigt,
ob eine Unterabtastung auf einer Unterabtastzeile durch eine
Kante des Primitivs abgedeckt ist. Das Zustandsbit wird
gemäß der x-Koordinate der Kante, sowie dieselbe die Unter
abtastzeile kreuzt, der x-Koordinate der Unterabtastung auf
der jeweiligen Unterabtastzeile, und des Richtungswerts, der
von dem Graphikbeschleuniger 18 empfangen wird, bestimmt.
Wie im vorhergehenden beschrieben, zeigt der Richtungswert
an, in welche Richtung geschritten wird, um von der Kante 1
(die Kante des Primitivs mit der größten Y-Achsenweite) zu
der Kante 2 (die Kante, die den obersten Y-Scheitelpunkt mit
der Kante 1 teilt) zu gehen. Beispielsweise kann ein "1"-
Wert für die Richtung anzeigen, daß die Kante 1 sich links
befindet, und daß das Schreiten von links nach rechts durch
geführt wird, und eine "0" kann anzeigen, daß sich die Kante
1 rechts befindet, und daß das Schreiten von rechts nach
links durchgeführt wird. Der Richtungswert kann als ein Si
gnal zu der Abtastwandlerlogik 50 auf dem Bus 19 geliefert
werden, oder derselbe kann alternativ zu einem Register
(nicht gezeigt) der Abtastumwandlungslogik 50 geschrieben
werden. Bei einem Ausführungsbeispiel der Erfindung wird das
Richtungssignal in das CMD-Feld codiert, das von dem Gra
phikbeschleuniger 18 zu der Abtastumwandlungslogik 50 wei
tergeleitet wird.
Sowie die Kantenschrittvorrichtung entlang der Unterabtast
zeilen schreitet, wobei dieselbe x, y-Unterabtastzeilenko
ordinatendaten sammelt, wird ein Zustandsbit, das anzeigt,
ob die Unterabtastung auf der Unterabtastzeile abgedeckt
ist, durch die Zustandslogik 84 (Fig. 7) erzeugt. Die Zu
standslogik 84 umfaßt einen Komparator 89, der gekoppelt
ist, um die aktuelle x-Koordinate von dem Register 94 zu
empfangen. Der Komparator empfängt ferner ein Eingangssignal
von einem Multiplexer 87. Die Dateneingaben in den Multi
plexer sind die x-Koordinaten der Unterabtastungen für jede
Unterabtastzeile. Wie im vorhergehenden beschrieben, sind
die Unterabtastkoordinaten bei dem darstellenden Ausfüh
rungsbeispiel (0, 0), (7, 3), (3, 5) und (5, 7). Die Aus
wahleingänge des Multiplexers 87 werden durch die Unter
gitteradreßbits <18 : 16< von Fig. 9 gesteuert, die den Un
terabtastzeilenadreßbits entsprechen.
Die Vergleichslogik 89 empfängt ferner das Richtungssignal
als ein Eingangssignal. Wenn das Richtungssignal anzeigt,
daß die Schrittrichtung von links nach rechts geht, akti
viert die Vergleichslogik die Zustandsleitung für alle Un
terabtastzeilen, wobei die x-Koordinate der Kante kleiner
ist als die Unterabtast-x-Koordinate (da alle gültigen Un
terabtastungen sich rechts der Kante befinden werden). Wenn
das Richtungssignal anzeigt, daß die Schrittrichtung von
rechts nach links geht, aktiviert die Vergleichslogik die
Zustandsleitung für alle Unterabtastzeilen, wobei die x-
Koordinate der Kante größer als die Unterabtast-x-Koordinate
ist, da alle gültigen Unterabtastungen links der Kante lie
gen werden. Die Kantenschrittlogik für die Kante 2/3 ist im
wesentlichen gleich zu derselben, die in Fig. 6 für die Kan
te 1 gezeigt ist. Ein Unterschied besteht jedoch darin, daß
ein invertierter Wert des Richtungssignals in die Zustands
logik 84 eingegeben wird, um sicherzustellen, daß die ge
eigneten Unterabtastpixel für die Kante 2/3 ausgewählt wer
den.
Das Kante1-Zustandssignal wird verwendet, um den Multiplexer
100 zu steuern. Wenn die aktuelle x-Koordinate keine Unter
abtastung abdeckt, dann wird das Kante1-Zustandssignal be
wirken, daß der Multiplexer 100 einen modifizierten aktu
ellen x-Wert als die Kante1-X-Komponente auswählt, die zu
der Sammellogik weitergeleitet wird. Die modifizierte x-Ko
ordinate ist die nächste folgende Ganzzahl-x-Koordinate in
der Richtung des Schreitens relativ zu der aktuellen x-Ko
ordinate. Folglich wird die aktuelle x-Koordinate abhängig
von der Richtung des Schreitens entweder mit 1 durch den
Addierer 99 inkrementiert oder dekrementiert, wenn die
Vergleichoperation, die durch die Zustandslogik 84 durch
geführt wird, anzeigt, daß die aktuelle x-Koordinate keinen
Abtastpunkt auf der Unterabtastzeile abdeckt. Das Inkre
mentieren oder Dekrementieren der x-Koordinate wird vor
gesehen, um spezifische Typen von Primitiven identifizieren
zu können, die eine Breite aufweisen, die kleiner als die
Breite eines Pixels ist. Es genügt zu erwähnen, daß nach der
Einstellung der aktuellen x-Koordinaten für sowohl die Kante
1 als auch die Kante 2 es vorkommen kann, daß der Abstand
zwischen der Kante 1 und der Kante 2/3 kleiner oder gleich 0
ist. Der Effekt des Aufweisens eines Abstands kleiner oder
gleich 0 zwischen den Kanten wird im folgenden hierin be
schrieben.
Folglich werden die Signale Kante1-X, Kante1-Y, Kante23-X,
Neues-Y und Ende-Primitiv alle zu der Sammellogik 94 von der
Kantenschrittvorrichtung 52 weitergeleitet. Die Kante1-X-,
Kante23-X- und Kante1-Y-Koordinaten werden nach jeder Unter
abtastzeilenberechnung weitergeleitet. Das Signal Neues-Y
wird aktiviert, wenn alle Unterabtastzeilen in einer gege
benen Unterabtastzeile verarbeitet wurden. Das Signal Ende
primitiv wird aktiviert, wenn das Abschreiten des Primitivs
abgeschlossen ist.
Unter Bezugnahme nun auf Fig. 10 ist ein Blockdiagramm eines
darstellenden Ausführungsbeispiels der Sammellogik umfassend
einer Steuereinheit 104, eines Datenwegs 106, eines Y-Ko
ordinatenpuffers 108, eines Kante1-X-Koordinatenpuffers 110,
eines Längenpuffers 112 und einer Mehrzahl von weiteren
Puffern 114 gezeigt, die Farb-, z-Daten und andere Daten
speichern, die jeder der Kante entsprechen. Jeder der Puffer
108, 110, 112 und 114 umfaßt zwei Sätze von vier Registern,
wobei jeder der vier Registersätze eine Sammlung von Unter
abtastzeilenkantenkoordinatendaten für das Pixel speichert,
das zuletzt durch die Kantenschrittvorrichtung verarbeitet
wurde. Daten werden alternativ durch jede Hälfte des Puffers
empfangen, derart, daß Daten in eine Hälfte des Puffers ein
gegeben werden können, während Daten aus der anderen Hälfte
des Puffers gelesen werden.
Die Steuerlogik 104 empfängt die Unterabtastzeilen-Y-Koordi
nate, das Signal Neues-Y, das Signal Ende-Primitiv und ein
CMD-Feld zum Identifizieren einer Funktion, die an den Pi
xeldaten durchgeführt werden soll. Beispielsweise kann das
CMD-Feld decodiert werden, um ein Betriebsartzustandsbit,
das den Betrieb in der Antialiasedbetriebsart anzeigt, und
einen Richtungswert zu liefern, der die Richtung des Schrei
tens zeigt. Die Steuereinheit umfaßt zwei Funktionseinhei
ten, eine Schreibsteuereinheit 104a und eine Lesesteuerein
heit 104b. Die Schreibsteuerlogik steuert das Schreiben der
empfangenen Kante1-Y- und Kante1-X-Koordinatendaten in die
Puffer 108 bzw. 110. Zusätzlich steuert, wie es im folgenden
detaillierter beschrieben wird, die Schreibsteuerlogik das
Schreiben eines Längenwerts, der den Kante1-Y- und Kante1-
X-Werten entspricht, in einen Längenpuffer 112.
Die Kante1-X- und Kante23-X-Komponenten werden zu dem Daten
weg 106 weitergeleitet. Der Datenweg verarbeitet die Kan
te 1-X- und Kante23-X-Koordinaten, um einen gesammelten Län
genwert zu liefern. Die Schreibsteuerlogik steuert das an
schließende Schreiben des gesammelten Längenwerts von dem
Datenweg 106 zu dem Puffer 112. Die Schreibsteuerlogik 104a
liefert ferner Signale GÜLTIG<3 : 0< und ein Signal Neue-
Gruppe zu der Schreibsteuerlogik 104b. Das Signal Neue-Grup
pe wird aktiviert, wenn entweder das Signal Neues-Y oder das
Signal Ende-Primitiv durch die Kantenschrittvorrichtung 52
aktiviert wird. Jedes Bit des Signals GÜLTIG entspricht ei
ner der vier Unterabtastlinien und zeigt an, ob die Unter
abtastzeile durch das Primitiv berührt wurde oder nicht. Bei
einem Ausführungsbeispiel der Erfindung werden die Signale
GÜLTIG von den y-Untergitter-Adreßbits <18 : 16< codiert.
Die Lesesteuerlogik 104b umfaßt eine Zustandsmaschine, die
die Übertragung von Befehls-, Koordinaten-, Längen- und Mas
ken-Daten zu der Weitenschrittvorrichtung (WS) umfaßt. Ins
besondere steuert die Steuerlogik die Übertragung von WS-
CMD<3 : 0< (von der Steuereinheit 104), WS-Y<31:15< (von dem
Puffer 108), WS-E1X<15 : 0< (von dem Puffer 110), Signale
WS-Länge (von dem Puffer 112) und Signale Farbe/Z-out von
dem Puffer 114 zu der Weitenschrittvorrichtung 56. Folglich
steuert die Schreibsteuerlogik 104a die Ansammlung von Un
terabtastzeileninformationen in den Puffern 108, 110, 112
und 114, während die Lesesteuerlogik 104b die Übertragung
von Daten von Puffern 108, 110, 112 und 114 zu der Weiten
schrittvorrichtungslogik 58 (Fig. 5) steuert. Die Lesesteu
erlogik 104b liefert zusätzlich ein Signal MASKE<3 : 0<, das
zu der Weitenschrittvorrichtung weitergeleitet wird, um die
Unterabtastungen zu identifizieren, die durch ein Pixel
abgedeckt werden. Ein Signal Mux-Auswahl wird von der
Lesesteuereinheit 104b zu dem Datenweg 106 weitergeleitet,
um das Weiterleiten des Signals WS-Länge zu der Weiten
schrittvorrichtung zu steuern, wie es im folgenden de
taillierter beschrieben ist.
Der Datenweg 106 umfaßt ähnlich eine Sammeleinheit 128 und
eine Weiterleitungseinheit 130. Die Sammeleinheit 128 emp
fängt Kante1-X- und Kante23-X-Koordinaten-Daten von der Kan
tenschrittvorrichtung 52. Die Kante1-X- und Kante23-X-Ko
ordinaten entsprechen den Koordinaten der Kante 1 und der
Kante 2/3 für die y-Unterabtastzeilenkoordinate, die ver
arbeitet wird. Unter Verwendung dieser Koordinateninforma
tionen kann die Sammeleinheit 128 für jede Unterabtastzeile
eine Länge der Unterabtastzeile bestimmen. Die Länge der
Unterabtastzeile wird von der Sammeleinheit 128 als Signale
Gesammelte-Länge geliefert und in dem Längenpuffer 112 ge
speichert.
Zusätzlich zum Bestimmen der Länge jeder Unterabtastzeile
bestimmt die Sammellogik zusätzlich einen Start und ein Ende
einer "belegten (=blasted) Region" der Unterabtastzeile, die
verarbeitet wird, wobei die belegte Region Pixel innerhalb
der Unterabtastzeile identifiziert, bei denen alle Abtastun
gen durch das Primitiv abgedeckt werden. Unter Bezugnahme
nun auf Fig. 11 ist ein Primitiv 150 gezeigt. Die Pixel,
deren Unterabtastungen alle durch das Primitiv 150 abgedeckt
sind, umfassen Pixel 153 und 154, auf die als "belegte" Re
gionen des Primitivs Bezug genommen wird.
Der belegte Startwert entspricht der x, y-Koordinate des Pi
xels, bei dem die belegte Region beginnt. Der belegte Län
genwert entspricht der Anzahl von Pixeln, die entlang der
Unterabtastzeile in der belegten Region abgeschritten wer
den. Während des Auswertens jeder Unterabtastzeile durch die
Sammeleinheit wird die x-Koordinate, bei der die Kante des
Primitivs die Unterabtastzeile kreuzt, ausgewertet, um zu
bestimmen, ob dieselbe die x-Koordinate ist, die am weite
sten in der Richtung des Schreitens für den Satz der vier
Unterabtastzeilen ist. Unter Verwendung des Primitivs 150
von Fig. 11 als ein Beispiel und unter Verwendung der vier
Unterabtastzeilen startend von Abtastzeile 2, sind die Kan
te-1-Pixel-x-Koordinaten, bei denen die Kante die Unter
abtastzeilen 0, 1, 2 und 3 schneidet, 5, 4 bzw. 5, wobei die
Pixel-X-Koordinate 4 auf der Unterabtastzeile 1 durch die
Einstellogik in Fig. 7 eingestellt wird.
Wenn ein belegter Startwert für die Kante 1 erzeugt wird,
sowie jede gültige Unterabtastzeilenkoordinate von der
Schreibsteuerlogik 104a empfangen wird, wird derselbe mit
einer vorher gespeicherten Unterabtastzeile-x-Koordinate für
das Pixel verglichen, um zu bestimmen, ob dieselbe weiter in
der Richtung des Schreitens als eine vorhergehende Unterab
tastzeilen-x-Koordinate liegt. Folglich ist, wenn der be
legte Startwert für das Pixel (5, 2) bestimmt wird, die Pi
xel-x-Koordinate für die Unterabtastzeile 0 eine 5, die
Pixel-x-Koordinate für die Unterabtastzeile 1 ist eine 4,7,
die Pixel-x-Koordinate für die Unterabtastzeile 2 ist eine
5,5, und die pixel-x-Koordinate für die Unterabtastzeile 3
ist eine 5,7. Folglich wird die x-Koordinate 4,7 abge
schnitten und als der belegte Startwert ausgewählt. Es folgt
eine ähnliche Operation unter Verwendung der Koordinaten der
Kante 2/3, um den belegten Endwert zu bestimmen.
Es sollte offensichtlich sein, daß das viermalige Weiter
leiten der gleichen x, y-Koordinate zu der Speichersteuerung
mit unterschiedlichen Maskenbitsätzen die Leistung des Anti
aliasingsystems beeinflußt. Das Identifizieren jener Pixel,
die sich innerhalb der belegten Region befinden, durch Vor
sehen einer Maske, deren Bits alle gesetzt sind, reduziert
die Anzahl der Übertragungen zwischen der Weitenschrittvor
richtung und der Speichersteuerung, da lediglich eine Spei
cherübertragung pro Pixel durchgeführt wird.
Unter Bezugnahme nun auf Fig. 12 ist ein Flußdiagramm ge
zeigt, das den Betrieb der Sammeleinheit 128 zum Liefern des
gesammelten Längenwerts, des belegten Startwerts und des
belegten Längenwerts darstellt. Der gesammelte Längenwert
wird für jede Unterabtastzeile erzeugt. Der belegte Start
wert und der belegte Längenwert werden bestimmt, nachdem
alle Unterabtastzeilen ausgewertet wurden.
Beispielsweise wird bei einem Schritt 200 das Richtungssi
gnal ausgewertet. Wenn die Schrittrichtung von rechts nach
links geht, dann wird der Verarbeitungsweg, der mit dem
Schritt 201a beginnt, ausgewählt. Wenn die Schrittrichtung
von links nach rechts geht, dann wird der Verarbeitungsweg
ausgewählt, der mit einem Schritt 201b beginnt. Die Verar
beitungswege sind im wesentlichen ähnlich, wobei die Unter
schiede in dem Typ der Vergleiche (d. h. größer als im
Gegensatz zu kleiner als) liegen, die in jedem Weg durch
geführt werden. Folglich ist lediglich der Verarbeitungsweg,
der mit dem Schritt 201a beginnt, im folgenden beschrieben.
Bei einem Schritt 201a wird der belegte Startwert und der
belegte Endwert initialisiert. Abhängig von der Schrittrich
tung wird der belegte Startwert entweder auf die Kante1-X-
Koordinate oder auf die Kante23-X-Koordinate der Unter
abtastzeile eingestellt, während der belegte Endwert als
Gegenüber des belegten Starts initialisiert wird. Die be
legten Startwerte werden auf diese Art und Weise initiali
siert, um folgende Koordinaten zu identifizieren, die größer
(oder kleiner) als der initialisierte belegte Startwert
(abhängig von der Schrittrichtung) sind, wie es aus der
folgenden Beschreibung klarer werden wird.
Bei einem Schritt 202a werden die Kante1-X- und Kante23-
X-Koordinaten für eine gegebene Unterabtastzeile von der
Schreibsteuerlogik 104a durch die Sammeleinheit 128 emp
fangen. Bei einem Schritt 205 wird die Kante1-X-Koordinate
mit dem belegten Startwert verglichen. Bei dem ersten Durch
lauf durch die Schritte von Fig. 2 wird der Vergleich mit
dem belegten Startwert durchgeführt, während bei den folgen
den Durchläufen der Vergleich mit dem belegten Startwert
durchgeführt wird, wie er während des Prozesses aktualisiert
wird. Wenn die Kante1-X-Koordinate kleiner als der belegte
Startwert ist, und die Richtung des Schreitens von rechts
nach links geht, dann wird der Kante1-X-Wert als der belegte
Startwert bei einem Schritt 209 gespeichert. Bei einem
Schritt 203 wird ein Vergleich durchgeführt, um zu bestim
men, ob die Kante23-X-Koordinate größer als der belegte End
wert für eine Rechts-nach-Links-Schrittrichtung ist, und
wenn dies der Fall ist, dann wird bei einem Schritt 207 der
Kante23-X-Wert als der belegte Endwert gespeichert. Bei ei
nem Schritt 211 wird die Gesamtlänge der Unterabtastzeile
durch Subtrahieren der Kante23-X-Koordinate von der Kan
te1-X-Koordinate bestimmt. Bei einem Schritt 213 wird der
Längenwert, der bei dem Schritt 211 berechnet wurde, der
gesammelten Länge zugewiesen, die von der Sammeleinheit 128
weitergeleitet wird und in dem Längenpuffer 112 gespeichert
wird.
Der Zustand des Signals Neues-Y, das von der Kantenschritt
vorrichtung 52 geliefert wird, wird bei einem Schritt 215
geprüft. Das Signal Neues-Y wird aktiviert, um anzuzeigen,
daß die Y-Eingabe-Koordinate sich zu der nächsten vollen
Abtastzeile verschoben hat, und daß folglich alle Unterab
tastzeilen für eine gegebene Abtastzeile verarbeitet wurden,
oder daß das Primitiv nicht weiter verarbeitet wird. Wenn
bei dem Schritt 215 das Signal Neues-Y nicht aktiviert ist,
wird der Prozeß bei einem Schritt 202a neu aufgenommen, bei
dem neue Signale Kante1-X und Kante23-X von der Kanten
schrittvorrichtung 52 empfangen werden. Wenn bei einem
Schritt 214 das Signal Neues-Y aktiviert ist, wird ein
belegter Längenwert durch Subtrahieren des belegten Starts
von dem belegten Ende berechnet, und der belegte Startwert
und der belegte Längenwert werden zu der Weiterleitungs
einheit 130 des Datenwegs 106 weitergeleitet.
Sowie eine Gruppe von Unterabtastzeilen gemäß dem Prozeß
verarbeitet werden, der in Fig. 12 beschrieben ist, wird der
gesammelte Längenwert für die Unterabtastzeile in dem Puffer
110 angesammelt. Wenn alle Unterabtastzeilen verarbeitet
wurden, d. h. wenn das Signal Neues-Y aktiviert ist, startet
die Lesesteuerlogik 104b den Prozeß des Weiterleitens der
Kante1-X-, Kante1-Y-, Längen-, Masken- und CMD-Werte für
jede Unterabtastzeile, die in den Puffern gespeichert ist,
zu der Weitenschrittvorrichtung 56. Für jedes Unterabtast
zeilen-Kante1-X- und Kante1-Y-Koordinatnepaar jeder Unter
abtastzeile, das in den Puffern 108 und 110 gespeichert ist,
gibt es potentiell drei Datenübertragungen, die für die Un
terabtastzeile auftreten können. Bei allen Datenübertragun
gen werden die gleichen Kante1-X- und Kante1-Y-Werte wei
tergeleitet, es können sich jedoch die Masken-, CMD- und
Längen-Werte unterscheiden, wie es im folgenden beschrieben
ist. Obwohl die gleiche Kante1-X-Koordinate zu der Weiten
schrittvorrichtung für jede Übertragung weitergeleitet wird,
ist es im folgenden sichtbar, daß diese Kante1-X-Koordinate
lediglich zu der Speicherungssteuerung 60 während des ersten
Übertragungszyklusses pro Unterabtastzeile übertragen wird.
Die drei Datenübertragungen werden verwendet, um zwischen
den Pixeln auf der Unterabtastzeile vor der belegten Region,
den Pixeln innerhalb der belegten Region und den Pixeln über
die belegte Region hinaus zu unterscheiden. Die Anzahl der
Pixel vor der belegten Region wird als Länge1 bezeichnet,
die Anzahl der Pixel innerhalb der belegten Region wird als
Länge2, oder belegte Länge, bezeichnet, und die Anzahl der
Pixel über die belegte Region hinaus wird als Länge3 be
zeichnet. Die Länge1- und Länge3-Werte können sich für jede
Unterabtastzeile unterscheiden. Beispielsweise weist unter
Bezugnahme wiederum auf Fig. 11 die Unterabtastzeile 0 einen
Länge1-Wert von 1 auf, da sich ein Pixel an der Position (5,
2) vor der belegten Region befindet. Die Unterabtastzeile 0
weist einen Länge2-Wert von 2 auf, da sich zwei Pixel inner
halb der belegten Region befinden. Der Länge3-Wert für die
Unterabtastzeile 0 ist 0, da sich keine Pixel auf der Unter
abtastzeile 0 über die belegte Region hinaus befinden. Die
Länge1-, Länge2- und Länge3-Werte für die Unterabtastzeile 1
sind 0, 2 bzw. 1. Die Länge1-, Länge2- und Länge3-Werte für
die Unterabtastzeile 2 sind 1, 2 bzw. 2 und die Werte für
die Unterabtastzeile 3 sind 1, 2 bzw. 3. Die Länge1-, Län
ge2- und Länge3-Werte werden durch die Weiterleitungseinheit
130 (Fig. 10) bestimmt, und dieselben werden verwendet, um
den geeigneten Längenwert für jeden der drei Datenübertra
gungszyklen der Unterabtastzeile auf der Leitung WS-Länge zu
der Weitenschrittvorrichtung 56 zu liefern.
Unter Bezugnahme nun auf Fig. 13 ist ein Blockdiagramm der
Weiterleitungseinheit 130 als einen ersten Subtrahierer 220
umfassend gezeigt, zum Bestimmen des Länge1-Werts an
sprechend auf den WS-E1X-Wert, des belegten Startwerts und
des Richtungssignals. Die WS-E1X- und Längen-Werte werden
von den Puffern 110 bzw. 112 für jede Unterabtastzeile ge
steuert durch das Lesesteuersignal von der Lesesteuerlogik
104b in der Steuereinheit 104 empfangen. Ein zweiter Sub
trahierer 222 berechnet Länge3 durch Subtrahieren der Summe
der belegten Länge und des Länge1-Werts von dem Längenwert,
der von dem Puffer 112 empfangen wird, der die Gesamtlänge
der Unterabtastzeile, wie bei einem Schritt 211/212 von Fig.
12 berechnet, anzeigt. Die Länge1- und Länge3-Werte werden
zu der Testlogik 224 und 226 weitergeleitet, die die Werte
testet, um zu bestimmen, ob dieselben kleiner oder gleich
Null sind. Wenn dies der Fall ist, werden die Signale Län
ge_klgl_0 und Länge3_klgl_0 aktiviert und zu der Lesesteu
erlogik 104b weitergeleitet, die dieselben zum Steuern der
Übertragung der Pixeldaten zu der Weitenschrittvorrichtung
verwendet, wie es unter Bezugnahme auf Fig. 15 beschrieben
werden wird. Der Längenwert von dem Puffer 112 wird zu der
Testlogik 225 gespeist, um ein Signal Länge_klgl_0 zu er
zeugen, das zu der Lesesteuerlogik 104b zum Anzeigen weiter
geleitet wird, ob derselbe kleiner oder gleich Null ist. Der
Wert der belegten Länge wird ferner zu dem Tester 227 ge
speist, um ein Signal Belegt_klgl_0 zu erzeugen, das zu der
Lesesteuerlogik 104b weitergeleitet wird, das ferner zum
Steuern der Übertragung von Pixeldaten zu der Weitenschritt
vorrichtung verwendet wird, wie es beschrieben werden wird.
Die Länge1-, Länge3-, Längen- und Belegte-Länge-Werte werden
zu einem Multiplexer 228 weitergeleitet. Abhängig davon,
welcher Abschnitt der Unterabtastzeile zu der Weitenschritt
vorrichtung 56 durch die Lesesteuerung 104b weitergeleitet
wird, wird der geeignete Längenwert als WS-Länge zu der Wei
tenschrittvorrichtung durch die Steuerlogik 229 ansprechend
auf das Signal Mux-Auswahl<2 : 0< weitergeleitet, das von der
Lesesteuerlogik 104b empfangen wird.
Unter Bezugnahme nun auf Fig. 14 ist ein Flußdiagramm vor
gesehen, das den Betrieb einer Zustandsmaschine, die in ei
ner Antialiasedbetriebsart in der Lesesteuerlogik 104b zum
Verarbeiten der Unterabtastzeilen arbeitet, darstellt. Die
Zustandsmaschine umfaßt vier Zustände, wobei jeder Zustand
dem Verarbeiten einer der Unterabtastzeilen gewidmet ist.
Jeder Zustand wird lediglich betreten, wenn sowohl das
entsprechende Bit GÜLTIG, das von der Schreibsteuerlogik
104a empfangen wird, anzeigt, daß die Unterabtastzeile durch
das Primitiv an der entsprechenden x, y-Koordinate berührt
wurde, als auch, wenn das Signal Länge_klgl_0 für die Unter
abtastzeile nicht aktiviert ist; d. h. solange die Gesamt
länge der Unterabtastzeile größer als Null ist. Folglich
wird bei einem Schritt 230 GÜLTIG<0< überprüft, um zu be
stimmen, ob die Unterabtastzeile 0 gültig ist. Wenn dies der
Fall ist, wird bei einem Schritt 232 die Unterabtastzeile 0
verarbeitet, wie es unter Bezugnahme auf Fig. 15 beschrieben
wird, und ein Signal Maske für die Unterabtastzeile 0 wird
als 0001 definiert. Wenn die Unterabtastzeile 0 nicht gültig
ist, oder nach dem Verarbeiten der Unterabtastzeile 0, fährt
der Prozeß zu dem Schritt 234 fort, wo GÜLTIG<1< und der
Längenwert für die Un 21633 00070 552 001000280000000200012000285912152200040 0002019827726 00004 21514terabtastzeile 1 überprüft wird, um zu
bestimmen, ob die Unterabtastzeile 1 gültig ist. Wenn dies
der Fall ist, wird bei einem Schritt 236 die Unterabtast
zeile 1, wie in Fig. 15 beschrieben, mit einem Wert Maske
von 0010 verarbeitet. Der Prozeß fährt durch die Schritte
238, 240, 242 und 244 fort, bis jede der Unterabtastzeilen
des Pixels ausgewertet wurde, wobei Masken 0100 und 1000 für
die Unterabtastzeilen 2 bzw. 3 vorgesehen werden, wenn die
Unterabtastzeilen gültig sind.
Unter Bezugnahme nun auf Fig. 15 beginnt ein Flußdiagramm,
das das Verarbeiten jeder Unterabtastzeile durch den Prozeß
von Fig. 14 in der Lesesteuerung 104b zeigt, wenn das Signal
Neue-Gruppe durch die Lesesteuerlogik 104a aktiviert wird,
was folglich anzeigt, daß eine neue Gruppe von Unterabtast
zeilen zum Verarbeiten bereit ist. Bei einem Schritt 249
wird der Zustand des Signals Belegt_klgl_0 überprüft, um zu
bestimmen, ob es eine belegte Region für den Satz von Unter
abtastzeilen gibt. Wenn die belegte Länge kleiner oder
gleich Null ist (d. h. wenn es keine belegte Region gibt),
dann fährt der Prozeß zu einem Schritt 254 fort, bei dem die
Lesesteuerlogik einen WS-E1X-Wert von dem Puffer 110, einen
WS-Y-Wert von dem Puffer 108, den WS-Länge-Wert von der Wei
terleitungseinheit 130 (durch Aktivieren des geeigneten Si
gnals Mux-Auswahl), die Maske, die dem Verarbeitungszustand
(232, 236, 240 oder 244) der Steuerlogik der Lesesteuerung
104b entspricht, die Farb/z-Daten von dem Puffer 114 und ein
Signal WS-CMD zu der Weitenschrittvorrichtung weiterleitet.
Wenn es jedoch eine belegte Region gibt, fährt der Prozeß
bei 250 durch Überprüfen des Signals Länge1_klgl_0 fort, das
von dem Datenweg 106 empfangen wird. Wenn das Signal Län
ge1_klgl_0 zeigt, daß Länge1 gleich Null ist, dann muß kein
Verarbeiten für Länge1 durchgeführt werden, und der Prozeß
fährt zu einem Schritt 255 fort. Wenn jedoch Länge1 nicht
gleich Null ist, dann leitet die Lesesteuerung einen WS-
E1X-Wert von dem Puffer 110, einen WS-Y-Wert von dem Puffer
108, den WS-Länge-Wert von der Weiterleitungseinheit 130
(durch Aktivieren des geeigneten Signals Mux-Auswahl), die
Maske, die dem Verarbeitungszustand (232, 236, 240 oder 244)
der Steuerlogik der Lesesteuerung 104b entspricht, die
Farb/z-Daten von dem Puffer 114 und ein Signal WS-CMD zu der
Weitenschrittvorrichtung weiter.
Bei einem Ausführungsbeispiel weist das Signal WS-CMD die im
folgenden in Tabelle I gezeigten Codierungen auf:
Das WS-CMD wird verwendet, um es der Weitenschrittvorrich
tung zu ermöglichen, eine geeignete X-Koordinatenadresse
auszuwählen, um dieselbe zu der Speichersteuerung 60 weiter
zuleiten. Wie es detaillierter im folgenden beschrieben
wird, hilft das Signal WS-CMD der Weitenschrittvorrichtung,
das nächste Pixel in der Unterabtastzeile zu identifizieren,
das verarbeitet werden muß, in dem es dieselbe anweist, vor
her angesammelte E1X-, Farbe-, Z- und Textur-Werte und nicht
WS-E1X-, Farbe-Z- und Textur-Werte, die durch die Sammel
logik geliefert werden, zu verwenden.
Folglich steuert dann in dem Flußdiagramm von Fig. 15 und
unter Verwendung des Beispiels von Fig. 11 bei der Abtast
zeile 2, der Abtastzeile 0, wenn der Länge1-Wert nicht
gleich Null ist, bei einem Schritt 252 die Lesesteuerlogik
das Weiterleiten von WS-E1X, WS-Y, WS-Länge, Maske und WS-
CMD zu der Weitenschrittvorrichtung, wobei WS-CMD = AA_CMD_0
anzeigt, daß die Koordinate, die gesendet wurde, sich vor
einer belegten Region befindet, und wobei der WS-Länge-Wert
gleich Länge1 ist, und die Maske auf 0001 eingestellt ist,
was anzeigt, daß die Unterabtastzeile 0 bei dem Zustand 0001
in dem Prozeß von Fig. 14 verarbeitet wird.
Bei einem Schritt 255 wird bestimmt, ob die Maske 0001
gleicht. Das Vergleichen des Maske-Werts mit 0001 identifi
ziert, ob die belegte Region schon verarbeitet wurde oder
nicht, da die Maske 0000 gleicht, wenn die belegte Region
bei der Unterabtastzeile 0 verarbeitet wird. Gemäß einem
Ausführungsbeispiel der Erfindung wird die belegte Region
lediglich einmal für eine Gruppe von Unterabtastzeilen
verarbeitet, um vorteilhaft die Verarbeitungszeit für das
Pixel zu reduzieren. Wenn dieselbe schon verarbeitet wurde,
fährt der Prozeß zu einem Schritt 258 fort. Wenn die belegte
Region noch nicht verarbeitet wurde, werden bei einem
Schritt 256 die WS-E1X-, WS-Y- und WS-Längen- (gleich der
belegten Länge) Werte zu der Weitenschrittvorrichtung ge
sendet. Der Maske-Wert, der gesendet wird, ist auf 1111
eingestellt, was folglich anzeigt, daß alle Unterabtastungen
des Pixels abgedeckt sind. Der WS-CMD, der gesendet wird,
ist AA_CMD_1, was anzeigt, daß die Weitenschrittvorrichtung
quer über die belegte Region fortfahren sollte, startend bei
der vorher inkrementierten x-Koordinate (d. h. die x-Koordi
nate nach dem Verarbeiten von Länge1), und durch Fortfahren
des Inkrementierens der x-Koordinate von diesem Punkt.
Der Prozeß fährt weiter zu einem Schritt 258 fort, bei dem
das Signal Länge3_klgl_0 von der Weiterleitungseinheit über
prüft wird, um zu bestimmen, ob es Pixel in Länge3 der Un
terabtastzeile gibt, die auszuwerten sind. Wenn Länge3 nicht
Null gleicht, dann werden bei einem Schritt 260 die WS-E1X-,
WS-Y- und WS-Länge- (gleich Länge3) Werte zu der Weiten
schrittvorrichtung gesendet. Der Maske-Wert, der gesendet
wird, wird gemäß dem Verarbeitungszustand des Prozesses von
Fig. 14 eingestellt, der die Routine von Fig. 15 aufruft.
Das WS-CMD, das gesendet wird, ist AA_CMD_2, was anzeigt,
daß die Weitenschrittvorrichtung das Inkrementieren der x-
Koordinate fortfahren sollte, startend bei der x-Koordinate
des letzten Pixels in der belegten Region.
Es gibt weitere Befehle, die zu der Weitenschrittvorrichtung
gesendet werden, die zur Klarheit nicht unter Bezugnahme auf
das Flußdiagramm von Fig. 15 beschrieben wurden. Diese
Befehle umfassen AA_CMD_3, um die belegte Region nach dem
Starten mit Länge1 auszulassen, den AA_CMD_4, um durch
Ansammeln der belegten Region zu starten, und den AA_CMD_5,
um durch Auslassen der belegten Region zu starten. Der
AA_CMD_3 wird gesendet, wenn Länge1 verarbeitet wurde, die
belegte Region schon für eine vorhergehende Abtastzeile
verarbeitet wurde und Länge3 nicht gleich Null ist. AA_CMD_3
wird gesendet, wenn Länge1 gleich Null ist, und es aber eine
zu verarbeitende belegte Region gibt. Der AA_CMD_5 wird ge
sendet, wenn Länge1 gleich Null ist, und die belegte Region
schon durch eine vorhergehende Unterabtastzeile verarbeitet
wurde. Andere Befehle können zusätzlich umfaßt sein, um die
Funktionalität der Weitenschrittvorrichtung zu vergrößern.
Folglich umfaßt jeder Zyklus von Daten, der von der Sammel
logik zu der Weitenschrittvorrichtung weitergeleitet wird,
einen WS-E1X-, einen WS-Y-, einen WS-Länge-, einen Maske-
und einen WS-CMD-Wert. Die Weitenschrittvorrichtung 56
verwendet die obigen Signale, um eine Adresse für jedes
Pixel zu bestimmen, das durch das Primitiv abgedeckt wird.
Um die Adresse für jedes derartige Pixel zu bestimmen,
schreitet die Weitenschrittvorrichtung folgend von einer x-
Koordinate zu einer anderen entlang einer Unterabtastzeile
auf der Gesamtlänge der Unterabtastzeile. Wenn die Weiten
schrittvorrichtung bestimmt, daß ein Pixel abgedeckt ist,
wird eine x- und y-Koordinate für dieses Pixel zu der
Speichersteuerung 60 weitergeleitet, wobei die Pixel-y-
Koordinatenadresse, die weitergeleitet wird, die Abtast
zeilenadresse für dieses Pixel ist. Zusätzlich wird eine
Vier-Bit-Maske zu der Speichersteuerung 60 weitergeleitet,
wobei der Maske-Wert dem Signal Maske entspricht, das von
der Sammellogik gesendet wird. Folglich könnte für ein Pixel
mit vier Unterabtastzeilen die Weitenschrittvorrichtung 56
potentiell die gleiche x, y-Koordinate viermalig zu der Spei
chersteuerung weiterleiten, wobei ein anderes Bit in der
Maske für jede x, y-Koordinatenübertragung eingestellt ist.
Wie vorher erwähnt, beeinflußt das viermalige Weiterleiten
der gleichen x, y-Koordinaten mit unterschiedlichen einge
stellten Maskenbits das Verhalten des Antialiasingsystems.
Das Identifizieren jener Pixel, die sich innerhalb der be
legten Region befinden, durch Vorsehen einer Maske, deren
Bits alle eingestellt sind, reduziert die Anzahl der Über
tragungen zwischen der Weitenschrittvorrichtung und der
Speichersteuerung, da lediglich eine Speicherübertragung pro
Pixel durchgeführt wird.
Da alle vier Bits der Maske in der belegten Region einge
stellt sind, liefert die Identifikation der belegten Region
eine Leistungsverbesserung, wenn dieselbe bei dem Aus
führungsbeispiel der Erfindung verwendet wird, bei dem die
selbe mit einer Speichersteuerung 60 verwendet wird, die
implementiert ist, wie es in der '350er Patentanmeldung, die
oben zitiert ist, beschrieben ist. Wie in der Patentanmel
dung erörtert, kann die Speichersteuerung 60 Pixel mit ent
weder lediglich einem eingestellten Bit in der Maske der
selben oder Pixel, bei denen alle Bits derselben in der
Maske eingestellt sind, verarbeiten. Wenn ein Pixel eine
Maske aufweist, bei der zwei oder drei der Maskenbits einge
stellt sind, werden die Pixelkoordinaten einmal für jeden
Maskenbitsatz, der eingestellt ist, von der Weitenschritt
vorrichtungslogik zu der Speicherungssteuerung zwei- oder
dreimal weitergeleitet. Wenn jedoch alle vier Bits einge
stellt sind, müssen die Pixelkoordinaten lediglich einmal zu
der Speichersteuerung weitergeleitet werden. Weitere Details
bezüglich der Leistungsvorteile des Identifizierens von
belegten Regionen werden im folgenden geliefert.
Unter Bezugnahme nun auf Fig. 16 ist ein Blockdiagramm der
Weitenschrittvorrichtungslogik 56 gezeigt. Die Weiten
schrittvorrichtung schreitet in einer gegebenen Richtung von
der Kante 1 zu der Kante 2 entlang der x-Koordinatenachse,
wie es durch das Richtungssignal angezeigt ist. Das Rich
tungssignal wird verwendet, um einen Multiplexer 262 zu
steuern, um entweder etwa einen Wert a+1 oder einen Wert a-1
für das Signal mit dem Ink/Dek_Wert zu liefern. Das Signal
WS-CMD wird von der Steuereinheit 104 (Fig. 10) zu der
Zustandsmaschine 263 weitergeleitet, die den WS-CMD in die
folgenden Signale decodiert: Laden-Neue-Daten zum Steuern
des Ladens der Koordinate WS-Y in das Register 266, Laden-
Neue-Maske zum Steuern des Ladens der Maske in ein Register
264, ein Signal Ansammeln-Belegt zum Steuern des Inkremen
tierens der Belegt-Zähllogik 270 und Signale Auswahl<1 : 0<,
die verwendet werden, um die Auswahl einer x-Koordinate bei
einem Multiplexer 265 zu steuern.
Die Weitenschrittvorrichtung arbeitet allgemein wie folgt.
Wenn Signale WS-E1X, WS-Y und WS-CMD bei der Weitenschritt
vorrichtung empfangen werden, werden Werte für die Steue
rungssignale Laden-Neue-Daten, Laden-Neue-Maske, Ansammeln-
Belegt und Auswahl<1:0< durch die Zustandsmaschine 263 er
zeugt. Die Signale Auswahl<1 : 0< wählen eines von vier x-
Koordinaten-Eingangssignalen in den Multiplexer 265 aus, und
der Multiplexer leitet das ausgewählte Eingangssignal an das
Register 262 weiter, das als die Pixel-X-Koordinate zu der
Speichersteuerung 60 geliefert werden soll.
Die vier Eingangssignale in den Multiplexer 265 umfassen die
WS-E1X-Koordinate, die von der Sammellogik 54 empfangen
wird, eine Nach-Belegt-Start-X-Koordinate, eine Fortfahren-
X-Koordinate und eine Länge3-X-Koordinate. Bezugnehmend wie
derum auf Tabelle 1 zeigt der Zustand von WS-CMD an, welche
x-Koordinate die Weitenschrittvorrichtung als eine Startko
ordinate für das Weitenschreiten verwendet. Beispielsweise
wird, wenn sich WS-CMD zu AA_CMD_0 decodiert, was anzeigt,
daß das Weitenschreiten bei dem Start von Länge1 beginnen
sollte, dann die WS-E1X-Koordinate durch den Multiplexer 265
ausgewählt. Wenn sich WS-CMD zu AA_CMD_1 decodiert, was an
zeigt, daß das Weitenschreiten das Zählen von dem Ende von
Länge1 quer über die belegte Region fortfahren sollte, wird
die Fortfahren-X-Koordinate durch den Multiplexer 265 aus
gewählt. Die Fortfahren-X-Koordinate wird ferner ausgewählt,
wenn sich WS-CMD zu AA_CMD_2 decodiert, was anzeigt, daß das
Zählen von dem Ende der belegten Region in Länge3 fortfährt.
Wenn sich WS_CMD zu AA_CMD_3 decodiert, was anzeigt, daß die
Weitenschrittvorrichtung das Schreiten nach der Länge1
starten sollte, jedoch die belegte Region auslassen sollte,
wird die Nach-Belegt-X-Koordinate durch den Multiplexer 265
ausgewählt. Wenn sich WS-CMD zu AA_CMD_4 decodiert, was an
zeigt, daß die Weitenschrittvorrichtung das Schreiten bei
der belegten Region beginnen sollte, da die Länge1 kleiner
oder gleich Null ist, wird die WS-E1X-Koordinate ausgewählt.
Wenn WS-CMD sich zu AA_CMD_5 decodiert, was anzeigt, daß die
Weitenschrittvorrichtung das Schreiten nach der belegten
Region beginnen sollte, da die belegte Region vorher ver
arbeitet wurde, wird die Länge3-X-Koordinate durch den Mul
tiplexer 265 ausgewählt.
Die Nach-Belegt-Start-X-Koordinate und Länge3-X-Koordinate
werden durch die Addierer 267 bzw. 269 geliefert. Das andere
Eingangssignal in die Addierer 267 und 269 ist ein Eingangs
signal Delta-X. Das Eingangssignal Delta-X wird durch den
Belegt-Zähler 270 geliefert, und dasselbe zeigt die Änderung
der x-Koordinate quer über die belegte Region an. Der
Delta-X-Wert wird durch den Multiplexer 260 initialisiert,
der den Ink/Dek-Wert, der von dem Multiplexer 262 empfangen
wird, zu dem Register 261 für Initialisierungszwecke weiter
leitet. Wenn das Signal Ansammeln-Belegt aktiviert ist (d. h.
, wenn WS-CMD gleich AA_CMD_1 oder gleich AA_CMD_4 ist),
schaltet der Multiplexer 260, um das Ausgangssignal von dem
Addierer 259 zum Weiterleiten zu dem Register 261 auszu
wählen. Der Addierer inkrementiert (oder dekrementiert) den
Delta-X-Wert für jeden Zyklus, daß eine Pixel-X-Koordinate
während des Verarbeitens der belegten Region geliefert wird.
Wenn das Signal Ansammeln-Belegt deaktiviert ist, stellt der
Wert Delta-X, der in dem Register 261 gespeichert ist, den
Änderungsbetrag des Werts der x-Koordinate dar, sowie das
Schreiten quer über die belegte Region fortfuhr.
Die Ansammlungslogik kann ähnlich wie der Belegt-Zähler 270
zum Spurverfolgen und Sichern der totalen Änderung der Farbe
und der Textur quer über einer Unterabtastzeile vorgesehen
werden. Die Ansammlungslogik würde, eher daß dieselbe einen
Wert a +/- 1 zu dem Eingang des Addierers liefert, statt
dessen gemäß einem Deltafarb- und Deltatextur-Parameter in
krementieren, der als Teil der Kantengleichung in der Soft
ware abgeleitet würde, um eine Gesamtänderung der Farbe oder
Textur quer über die Unterabtastzeile zu bestimmen.
Der Betrieb der Weitenschrittvorrichtung 56 wird nun unter
Bezugnahme auf das Weitenschreiten quer über die Zeile 2 des
Beispielprimitivs 150 von Fig. 11 beschrieben. Während des
ersten Weitenschrittzyklusses, wie im vorhergehenden be
schrieben, sind die WS-E1X-, WS-Y-Koordinaten (5, 2), der
WS-Länge-Wert ist 1, die Maske ist gleich 0001 und der
WS-CMD bewirkt, daß die WS-E1X-Koordinate durch den Multi
plexer 265 weitergeleitet, in das Register 262 geladen und
als Pixel-X-Koordinate ausgegeben wird. Die Pixel-X-Koor
dinate wird zu den Addierern 267 und 268 weitergeleitet. Da
der WS-Länge-Wert eine 1 war, und eine Pixel-X-Koordinate
ausgegeben wurde, werden bei dem nächsten Zyklus WS-E1X,
WS-Y, Maske, WS-Länge und WS-CMD entsprechend der belegten
Region 152 empfangen.
Unter Verwendung des Beispielprimitivs von Fig. 11 gleicht
der empfangene WS-CMD zum Verarbeiten der belegten Region
der Unterabtastzeile 0 AA_CMD_1. Der Befehl AA_CMD_1 be
wirkt, daß die Signale Laden-Neue-Maske, Laden-Neue-Daten
und Ansammeln-Belegt aktiviert werden. Wie oben erwähnt, be
wirkt der AA_CMD_1-Wert für den WS-CMD, daß die Fortfahren-
X-Koordinate für das Schreiten ausgewählt wird. Die Fort
fahren-X-Koordinate wird durch Dekrementieren der Pixel-
X-Koordinate (durch Addieren eines negativen Einswerts zu
der Pixel-X-Koordinate, da die Schrittrichtung von links
nach rechts geht) erhalten, in dem Register 262 gespeichert
und als Pixel-X-Koordinate (4, 2) ausgegeben. Die Maske, die
in dem Register 264 gespeichert ist, ist gleich 1111, wie es
in Schritt 256 von Fig. 15 beschrieben ist. Die Fortfahren-
X-Koordinate wird weiter für jedes Pixel in der belegten Re
gion ausgewählt. Zum gleichen Zeitpunkt zählt der Delta-X-
Wert den Änderungsbetrag der x-Koordinate quer über die
belegte Region. Folglich wird in einem nächsten Zyklus eine
Pixel-X,Y-Koordinate (3, 2) mit einer Maske 1111 erzeugt.
Nachdem das zweite Pixel-X,Y-Koordinatenpaar und die zuge
ordnete Maske zu der Speichersteuerung weitergeleitet wur
den, ist das Abschreiten der belegten Region abgeschlossen,
und der gespeicherte Delta-X-Wert ist gleich 2.
Bei dem Beispiel von Fig. 11 fährt, sobald die belegte Re
gion 152 für die Unterabtastzeile 0 verarbeitet wurde, da
die Länge3 der Unterabtastzeile 0 gleich Null ist, das
Verarbeiten bei der Unterabtastzeile 1 fort. Während des
ersten Zyklusses des Verarbeitens der Unterabtastzeile 1
gleicht Länge1 Null, so würde das Verarbeiten mit der
belegten Region beginnen. Die belegte Region wurde jedoch
schon verarbeitet. Folglich sind die ersten Koordinaten, die
weitergeleitet werden WS-E1X, WS-Y, Maske, WS-Länge (von
einer Länge3), und WS-CMD = AA_CMD_5, was anzeigt, daß durch
Auslassen der belegten Region gestartet werden soll. Die
Signale Auswahl<1:0< sind eingestellt, um die Länge3-X-Ko
ordinate von dem Addierer auszuwählen. Folglich sind für die
Unterabtastzeile 1 die ersten Pixel-X,Y-Koordinaten, die zu
der Speichersteuerung weitergeleitet werden, (2, 2). Die
Pixel-Maske, die weitergeleitet wird, wird durch den Verar
beitungszustand des Prozesses von Fig. 14 bei Schritt 236
angezeigt und ist folglich 0010 bei diesem Beispiel.
Folglich wird bei einem Ausführungsbeispiel der Erfindung
die Maske entweder lediglich mit einem eingestellten Bit,
oder wobei alle Bits eingestellt sind, weitergeleitet. Die
Maskenbits werden auf die oben erwähnte Art und Weise wei
tergeleitet, da das Ausführungsbeispiel der Speichersteu
erung, das in der Patentanmeldung beschrieben ist, auf die
oben Bezug genommen wurde, lediglich die Kapazität aufweist,
um die Pixeldaten entweder als diskrete Unterpixel oder als
ein Gesamtpixel zu verarbeiten. Folglich verbessert die
Identifikation der belegten Region, während dieselbe die
Leistung der Weitenschrittvorrichtungseinheit 58 verbessert,
ferner die Gesamtspeicherleistung, dadurch, daß dieselbe es
ermöglicht, daß jene Pixelkoordinaten, die als vollständige
Pixelaktualisierungen gehandhabt werden können, identifi
ziert werden können und schnell zu dem Speicher zum Verar
beiten übertragen werden können.
Es sei jedoch bemerkt, daß die vorliegende Erfindung nicht
auf das Übertragen von Unterabtastinformationen als entweder
eine vollständige Vier-Bit-Maske oder eine Einzelbitmaske
begrenzt ist. Dieser Effekt ist lediglich eine Einschränkung
der Speichersteuerung 60, die bei einem Ausführungsbeispiel
der Erfindung verwendet wird. Die Maske für jedes Pixel
könnte direkt von der Weitenschrittvorrichtungslogik mit
einer einzigen Übertragung gesendet werden, wenn dieselbe
mit einer anderen Speichersteuerung verwendet würde, die den
Empfang von Maskendaten mit mehr als einem aber weniger als
allen Bitsätzen unterstützt.
Folglich wurde ein Verfahren und eine Vorrichtung beschrie
ben, die es ermöglichen, daß ein Antialiasing mit lediglich
geringen Modifikationen an der existierenden Hardware unter
stützt wird. Durch Unterteilen einer Abtastzeile in eine
Mehrzahl von Unterabtastzeilen und Durchführen eines Kanten
abschreitens entlang der Unterabtastzeilengrenzen können Un
terabtastinformationen während eines herkömmlichen Kanten
schrittprozesses unter Verwendung einer herkömmlichen Hard
ware ausfindig gemacht werden.
Claims (10)
1. Verfahren zum Bestimmen eines Prozentsatzes mindestens
eines Pixels (73) auf einem Graphiksystemanzeigebild
schirm, das durch ein Primitiv (74) abgedeckt ist, das
auf dem Anzeigebildschirm angezeigt werden soll, wobei
das Verfahren folgende Schritte aufweist:
- a) Aufteilen des mindestens einen Pixels in eine Mehrzahl von Unterabtastzeilen, die eine Mehrzahl von Unterabtastpunkten für das mindestens eine Pi xel definieren, wobei jeder der Mehrzahl von Un terabtastpunkten auf einer entsprechenden der Mehrzahl von Unterabtastzeilen positioniert ist;
- b) Schreiten zwischen der Mehrzahl von Unterabtast zeilen des mindestens einen Pixels (73);
- c) Bestimmen bei jeder der Mehrzahl von Unterabtast zeilen, ob der entsprechende Unterabtastpunkt auf der einen der Mehrzahl von Unterabtastzeilen durch das Primitiv (74) abgedeckt ist; und
- d) Nähern des Prozentsatzes des mindestens einen Pi xels, das durch das Primitiv (74) abgedeckt ist, basierend auf der Anzahl der Mehrzahl von Unter abtastpunkten des mindestens einen Pixels (73), die durch das Primitiv (74) abgedeckt wird.
2. Verfahren gemäß Anspruch 1, bei dem das Primitiv (74)
eine Mehrzahl von Kanten aufweist, und bei dem der
Schritt (c) folgende Schritte aufweist:
Bestimmen für jede der Mehrzahl von Kanten des Primi tivs (74) von x- und y-Koordinaten jedes Schnittpunk tes, bei dem eine der Mehrzahl von Kanten des Primitivs die eine der Mehrzahl von Unterabtastzeilen kreuzt; und
Bestimmen ansprechend auf die x- und y-Koordinaten jedes Schnittpunktes und die x- und y-Koordinaten des Unterabtastpunkts, der auf der einen der Mehrzahl von Unterabtastzeilen positioniert ist, ob der Unterab tastpunkt, der auf einer der Mehrzahl von Unterab tastzeilen positioniert ist, durch das Primitiv (74) abgedeckt ist.
Bestimmen für jede der Mehrzahl von Kanten des Primi tivs (74) von x- und y-Koordinaten jedes Schnittpunk tes, bei dem eine der Mehrzahl von Kanten des Primitivs die eine der Mehrzahl von Unterabtastzeilen kreuzt; und
Bestimmen ansprechend auf die x- und y-Koordinaten jedes Schnittpunktes und die x- und y-Koordinaten des Unterabtastpunkts, der auf der einen der Mehrzahl von Unterabtastzeilen positioniert ist, ob der Unterab tastpunkt, der auf einer der Mehrzahl von Unterab tastzeilen positioniert ist, durch das Primitiv (74) abgedeckt ist.
3. Verfahren gemäß Anspruch 2, bei dem der Schritt des Be
stimmens der x- und y-Koordinaten jedes Schnittpunktes
ferner folgende Schritte aufweist:
Bestimmen mit Software von Startkoordinaten und Neigun gen für jede Kante des Primitivs;
Schreiten entlang jeder der Mehrzahl von Kanten begin nend bei den Startkoordinaten für die eine der Mehrzahl von Kanten; und
Bestimmen der x-Koordinate für jede der Kanten bei je der y-Koordinate, die einer der Mehrzahl von Unterab tastzeilen entspricht, ansprechend auf eine Neigung der Kante.
Bestimmen mit Software von Startkoordinaten und Neigun gen für jede Kante des Primitivs;
Schreiten entlang jeder der Mehrzahl von Kanten begin nend bei den Startkoordinaten für die eine der Mehrzahl von Kanten; und
Bestimmen der x-Koordinate für jede der Kanten bei je der y-Koordinate, die einer der Mehrzahl von Unterab tastzeilen entspricht, ansprechend auf eine Neigung der Kante.
4. Verfahren gemäß einem beliebigen der Ansprüche 1-3,
das ferner folgende Schritte aufweist:
Identifizieren, für die Mehrzahl der Unterabtastzeilen, von Pixeln (153, 154) in dem Primitiv (150), bei denen alle jeweiligen Unterabtastungen jeder der Unterabtast zeilen durch das Primitiv (150) abgedeckt sind; und
Übertragen der Pixel, bei denen alle der Mehrzahl von Unterabtastpunkten durch das Primitiv abgedeckt sind, zu einer Speichersteuerung (60) mit einer einzigen Übertragungsoperation.
Identifizieren, für die Mehrzahl der Unterabtastzeilen, von Pixeln (153, 154) in dem Primitiv (150), bei denen alle jeweiligen Unterabtastungen jeder der Unterabtast zeilen durch das Primitiv (150) abgedeckt sind; und
Übertragen der Pixel, bei denen alle der Mehrzahl von Unterabtastpunkten durch das Primitiv abgedeckt sind, zu einer Speichersteuerung (60) mit einer einzigen Übertragungsoperation.
5. Verfahren gemäß einem beliebigen der Ansprüche 1-4,
bei dem die Koordinaten der Unterabtastungen auf der
Unterabtastzeile derart ausgewählt werden, daß die Un
terabtastungen eine nicht-regelmäßige Struktur in dem
Pixel bilden.
6. Kantenschrittvorrichtung (52) bei einem Graphiksystem
(10), das ein Primitiv (74) wiedergeben kann, zum Er
zeugen von Koordinatendaten zum Anzeigen von Pixeln auf
einem Anzeigegerät, die das Primitiv (74) darstellen,
wobei die Kantenschrittvorrichtung (52) Kantenglei
chungsdaten (40, 42, 44) empfängt, die ein erstes und
ein zweites Paar von Endpunktkoordinaten (V0, V1) und
einen Neigungswert (44) für mindestens eine Kante des
Primitivs, das wiedergegeben werden soll, aufweisen,
wobei die Kantenschrittvorrichtung (52) folgendes Merk
mal aufweist:
ein Paar von Addierern (86, 98), einer für X-Koordina ten- und einer für Y-Koordinaten-Operationen, zum In krementieren einer der ersten Endpunktkoordinaten durch Inkrementwerte, um Kanten-x- bzw. Kanten-y-Koordinaten der mindestens einen Kante des Primitivs, das wieder gegeben wird, zu liefern, wobei der Inkrementwert klei ner als eine Größe eines Anzeigepixels bei einer Be triebsart ist.
ein Paar von Addierern (86, 98), einer für X-Koordina ten- und einer für Y-Koordinaten-Operationen, zum In krementieren einer der ersten Endpunktkoordinaten durch Inkrementwerte, um Kanten-x- bzw. Kanten-y-Koordinaten der mindestens einen Kante des Primitivs, das wieder gegeben wird, zu liefern, wobei der Inkrementwert klei ner als eine Größe eines Anzeigepixels bei einer Be triebsart ist.
7. Kantenschrittvorrichtung (52) gemäß Anspruch 6, bei der
die Inkrementwerte aus einer ersten Gruppe von Inkre
mentwerten ausgewählt (81) werden, wenn die Kanten
schrittvorrichtung in einer Aliasedbetriebsart arbei
tet, und dieselben aus einer zweiten Gruppe von Inkre
mentwerten ausgewählt werden, wenn die Kantenschritt
vorrichtung in einer Antialiasedbetriebsart arbeitet.
8. Kantenschrittvorrichtung (52) gemäß Anspruch 7, bei der
jedes Pixel (99) des Primitivs in eine Mehrzahl von
Unterabtastzeilen aufgeteilt wird, wenn die Kanten
schrittvorrichtung (52) in der Antialiasedbetriebsart
arbeitet, und bei der die zweite Gruppe von Inkrement
werten Inkremente zum Schreiten zwischen der Mehrzahl
von Unterabtastzeilen aufweist.
9. Kantenschrittvorrichtung gemäß einem beliebigen der An
sprüche 6-8, die ferner eine Einrichtung zum Bestim
men eines Prozentsatzes (126) jedes Pixels aufweist,
das durch das Primitiv abgedeckt ist.
10. Kantenschrittvorrichtung gemäß Anspruch 9, bei der die
Einrichtung zum Bestimmen eines Prozentsatzes jedes Pi
xel, das durch ein Primitiv abgedeckt ist, ferner fol
gende Merkmale aufweist:
eine Einrichtung (21) zum Bestimmen für jede Kante ei ner x-Richtung, die eine Richtung hin zu einer gegen überliegenden Kante des Primitivs anzeigt; und
einen Komparator (89), der gekoppelt ist, um die Kan ten-x- und Kanten-y-Koordinaten für jede Unterabtast zeile zu empfangen, und um die Kanten-x- und Kanten-y- Koordinaten mit Koordinaten einer Unterabtastung zu vergleichen, die auf der Unterabtastzeile positioniert ist, um ansprechend auf die x-Richtung zu bestimmen, ob die Unterabtastung durch das Primitiv abgedeckt ist.
eine Einrichtung (21) zum Bestimmen für jede Kante ei ner x-Richtung, die eine Richtung hin zu einer gegen überliegenden Kante des Primitivs anzeigt; und
einen Komparator (89), der gekoppelt ist, um die Kan ten-x- und Kanten-y-Koordinaten für jede Unterabtast zeile zu empfangen, und um die Kanten-x- und Kanten-y- Koordinaten mit Koordinaten einer Unterabtastung zu vergleichen, die auf der Unterabtastzeile positioniert ist, um ansprechend auf die x-Richtung zu bestimmen, ob die Unterabtastung durch das Primitiv abgedeckt ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US887441 | 1992-05-21 | ||
US08/887,441 US6057855A (en) | 1997-07-02 | 1997-07-02 | Method and apparatus for providing polygon pixel sub-sample information using incremental means |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19827726A1 true DE19827726A1 (de) | 1999-01-07 |
DE19827726B4 DE19827726B4 (de) | 2005-02-24 |
Family
ID=25391134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19827726A Expired - Fee Related DE19827726B4 (de) | 1997-07-02 | 1998-06-22 | Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung |
Country Status (4)
Country | Link |
---|---|
US (1) | US6057855A (de) |
JP (2) | JPH1186007A (de) |
DE (1) | DE19827726B4 (de) |
GB (1) | GB2327178B (de) |
Families Citing this family (126)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098297B2 (en) * | 1997-05-08 | 2015-08-04 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
US6738527B2 (en) * | 1997-06-09 | 2004-05-18 | Seiko Epson Corporation | Image processing apparatus, an image processing method, a medium on which an image processing control program is recorded, an image evaluation device, and image evaluation method and a medium on which an image evaluation program is recorded |
US6137918A (en) * | 1998-03-23 | 2000-10-24 | Xerox Corporation | Memory efficient method and apparatus to enable tagging of thin antialiased lines |
US6167166A (en) * | 1998-03-23 | 2000-12-26 | Xerox Corporation | Method to enable the recognition and rendering of antialiased images |
US6480205B1 (en) | 1998-07-22 | 2002-11-12 | Nvidia Corporation | Method and apparatus for occlusion culling in graphics systems |
US6646639B1 (en) | 1998-07-22 | 2003-11-11 | Nvidia Corporation | Modified method and apparatus for improved occlusion culling in graphics systems |
US6377273B1 (en) * | 1998-11-04 | 2002-04-23 | Industrial Technology Research Institute | Fast area-coverage computing method for anti-aliasing in graphics |
US6377274B1 (en) * | 1999-07-15 | 2002-04-23 | Intel Corporation | S-buffer anti-aliasing method |
US6765575B1 (en) | 1999-12-06 | 2004-07-20 | Nvidia Corporation | Clip-less rasterization using line equation-based traversal |
US7209140B1 (en) | 1999-12-06 | 2007-04-24 | Nvidia Corporation | System, method and article of manufacture for a programmable vertex processing model with instruction set |
US6198488B1 (en) * | 1999-12-06 | 2001-03-06 | Nvidia | Transform, lighting and rasterization system embodied on a single semiconductor platform |
US6844880B1 (en) | 1999-12-06 | 2005-01-18 | Nvidia Corporation | System, method and computer program product for an improved programmable vertex processing model with instruction set |
US6650325B1 (en) * | 1999-12-06 | 2003-11-18 | Nvidia Corporation | Method, apparatus and article of manufacture for boustrophedonic rasterization |
US6353439B1 (en) * | 1999-12-06 | 2002-03-05 | Nvidia Corporation | System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline |
US6865301B1 (en) * | 2000-02-28 | 2005-03-08 | Adobe Systems Incorporated | Reducing aliasing artifacts when shaping a digital image |
US7119809B1 (en) | 2000-05-15 | 2006-10-10 | S3 Graphics Co., Ltd. | Parallel architecture for graphics primitive decomposition |
US6809740B1 (en) * | 2000-07-26 | 2004-10-26 | Lexmark International, Inc. | Dithered quantization using neighborhood mask array to approximate interpolate |
US7061507B1 (en) * | 2000-11-12 | 2006-06-13 | Bitboys, Inc. | Antialiasing method and apparatus for video applications |
KR20030009364A (ko) * | 2000-12-20 | 2003-01-29 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 메뉴 생성방법과 기록매체용 기록장치 |
US6636232B2 (en) * | 2001-01-12 | 2003-10-21 | Hewlett-Packard Development Company, L.P. | Polygon anti-aliasing with any number of samples on an irregular sample grid using a hierarchical tiler |
US7006101B1 (en) | 2001-06-08 | 2006-02-28 | Nvidia Corporation | Graphics API with branching capabilities |
US6882685B2 (en) * | 2001-09-18 | 2005-04-19 | Microsoft Corporation | Block transform and quantization for image and video coding |
AU2003207495A1 (en) | 2002-01-08 | 2003-07-24 | Seven Networks, Inc. | Connection architecture for a mobile network |
WO2003083680A1 (en) * | 2002-03-22 | 2003-10-09 | Deering Michael F | Scalable high performance 3d graphics |
US7242713B2 (en) * | 2002-05-02 | 2007-07-10 | Microsoft Corporation | 2-D transforms for image and video coding |
JP4456003B2 (ja) * | 2002-12-20 | 2010-04-28 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 低コスト・スーパーサンプリング・ラスタライゼーション |
US8468126B2 (en) | 2005-08-01 | 2013-06-18 | Seven Networks, Inc. | Publishing data in an information community |
US7853563B2 (en) | 2005-08-01 | 2010-12-14 | Seven Networks, Inc. | Universal data aggregation |
US6828068B2 (en) * | 2003-01-23 | 2004-12-07 | Photronics, Inc. | Binary half tone photomasks and microscopic three-dimensional devices and method of fabricating the same |
EP1447774B1 (de) * | 2003-02-13 | 2018-03-07 | ATI Technologies Inc. | Verfahren und Vorrichtung zum Abtasten mit einem nicht-zweierpotenz-Pixelgitter |
AU2004202826B2 (en) * | 2003-06-26 | 2007-09-06 | Canon Kabushiki Kaisha | Antialiasing Compositing in Graphic Object Rendering |
AU2003903445A0 (en) * | 2003-06-26 | 2003-07-17 | Canon Kabushiki Kaisha | Optimising compositing calculations for a run of pixels |
AU2003903448A0 (en) * | 2003-06-26 | 2003-07-17 | Canon Kabushiki Kaisha | A method for tracking depths in a scanline based raster image processor |
AU2003903447A0 (en) * | 2003-06-26 | 2003-07-17 | Canon Kabushiki Kaisha | Rendering successive frames in a graphic object system |
US7280120B2 (en) * | 2003-06-26 | 2007-10-09 | Canon Kabushiki Kaisha | Compositing with a sub-pixel mask in graphic object rendering |
US7487193B2 (en) * | 2004-05-14 | 2009-02-03 | Microsoft Corporation | Fast video codec transform implementations |
US7441271B2 (en) | 2004-10-20 | 2008-10-21 | Seven Networks | Method and apparatus for intercepting events in a communication system |
US8010082B2 (en) | 2004-10-20 | 2011-08-30 | Seven Networks, Inc. | Flexible billing architecture |
US7706781B2 (en) | 2004-11-22 | 2010-04-27 | Seven Networks International Oy | Data security in a mobile e-mail service |
GB0426170D0 (en) * | 2004-11-29 | 2004-12-29 | Falanx Microsystems As | Processing of computer graphics |
FI117152B (fi) | 2004-12-03 | 2006-06-30 | Seven Networks Internat Oy | Sähköpostiasetusten käyttöönotto matkaviestimelle |
JP4327105B2 (ja) * | 2005-01-25 | 2009-09-09 | 株式会社ソニー・コンピュータエンタテインメント | 描画方法、画像生成装置、および電子情報機器 |
US7877703B1 (en) | 2005-03-14 | 2011-01-25 | Seven Networks, Inc. | Intelligent rendering of information in a limited display environment |
US8438633B1 (en) | 2005-04-21 | 2013-05-07 | Seven Networks, Inc. | Flexible real-time inbox access |
US7796742B1 (en) | 2005-04-21 | 2010-09-14 | Seven Networks, Inc. | Systems and methods for simplified provisioning |
WO2006129902A1 (en) * | 2005-06-03 | 2006-12-07 | Polidigm Co., Ltd. | Fast anti-aliasing method |
WO2006136660A1 (en) | 2005-06-21 | 2006-12-28 | Seven Networks International Oy | Maintaining an ip connection in a mobile network |
JP4669334B2 (ja) * | 2005-07-06 | 2011-04-13 | 株式会社ディジタルメディアプロフェッショナル | エッジ・マルチサンプリングハイブリッドアンチエイリアス |
US8069166B2 (en) | 2005-08-01 | 2011-11-29 | Seven Networks, Inc. | Managing user-to-user contact with inferred presence information |
US7496416B2 (en) * | 2005-08-01 | 2009-02-24 | Luxology, Llc | Input/output curve editor |
US7616202B1 (en) * | 2005-08-12 | 2009-11-10 | Nvidia Corporation | Compaction of z-only samples |
US7689052B2 (en) * | 2005-10-07 | 2010-03-30 | Microsoft Corporation | Multimedia signal processing using fixed-point approximations of linear transforms |
US8269788B2 (en) * | 2005-11-15 | 2012-09-18 | Advanced Micro Devices Inc. | Vector graphics anti-aliasing |
US7769395B2 (en) | 2006-06-20 | 2010-08-03 | Seven Networks, Inc. | Location-based operations and messaging |
JP4855853B2 (ja) * | 2006-07-05 | 2012-01-18 | 富士通株式会社 | 解析装置、コンピュータの制御方法およびモデル作成プログラム |
JP4818053B2 (ja) | 2006-10-10 | 2011-11-16 | 株式会社東芝 | 高解像度化装置および方法 |
US8942289B2 (en) * | 2007-02-21 | 2015-01-27 | Microsoft Corporation | Computational complexity and precision control in transform-based digital media codec |
US8693494B2 (en) | 2007-06-01 | 2014-04-08 | Seven Networks, Inc. | Polling |
US8805425B2 (en) | 2007-06-01 | 2014-08-12 | Seven Networks, Inc. | Integrated messaging |
US8364181B2 (en) | 2007-12-10 | 2013-01-29 | Seven Networks, Inc. | Electronic-mail filtering for mobile devices |
US8793305B2 (en) | 2007-12-13 | 2014-07-29 | Seven Networks, Inc. | Content delivery to a mobile device from a content service |
US9002828B2 (en) | 2007-12-13 | 2015-04-07 | Seven Networks, Inc. | Predictive content delivery |
US8107921B2 (en) | 2008-01-11 | 2012-01-31 | Seven Networks, Inc. | Mobile virtual network operator |
US8862657B2 (en) | 2008-01-25 | 2014-10-14 | Seven Networks, Inc. | Policy based content service |
US20090193338A1 (en) | 2008-01-28 | 2009-07-30 | Trevor Fiatal | Reducing network and battery consumption during content delivery and playback |
US8044971B2 (en) * | 2008-01-31 | 2011-10-25 | Arm Norway As | Methods of and apparatus for processing computer graphics |
US8115783B2 (en) * | 2008-01-31 | 2012-02-14 | Arm Norway As | Methods of and apparatus for processing computer graphics |
US8787947B2 (en) | 2008-06-18 | 2014-07-22 | Seven Networks, Inc. | Application discovery on mobile devices |
US8078158B2 (en) | 2008-06-26 | 2011-12-13 | Seven Networks, Inc. | Provisioning applications for a mobile device |
JP4698709B2 (ja) * | 2008-08-28 | 2011-06-08 | シャープ株式会社 | データ作成装置、データ作成方法、データ作成用プログラム、描画装置、描画方法、描画用プログラム、および、コンピュータ読取可能な記録媒体 |
JP4703695B2 (ja) * | 2008-08-28 | 2011-06-15 | シャープ株式会社 | データ作成装置、データ作成方法、データ作成用プログラム、描画装置、描画方法、および、描画用プログラム |
US8909759B2 (en) | 2008-10-10 | 2014-12-09 | Seven Networks, Inc. | Bandwidth measurement |
GB0819570D0 (en) * | 2008-10-24 | 2008-12-03 | Advanced Risc Mach Ltd | Methods of and apparatus for processing computer graphics |
JP4766576B2 (ja) * | 2009-03-25 | 2011-09-07 | 株式会社ソニー・コンピュータエンタテインメント | 描画方法、画像生成装置、および電子情報機器 |
KR101025475B1 (ko) | 2009-06-17 | 2011-04-04 | 계명대학교 산학협력단 | 안티 에일리어싱 방법 및 장치 |
TW201209697A (en) | 2010-03-30 | 2012-03-01 | Michael Luna | 3D mobile user interface with configurable workspace management |
EP2599003B1 (de) | 2010-07-26 | 2018-07-11 | Seven Networks, LLC | Koordinierung eines mobilnetzwerkverkehrs zwischen mehreren anwendungen |
CA2806557C (en) | 2010-07-26 | 2014-10-07 | Michael Luna | Mobile application traffic optimization |
CA2806548C (en) | 2010-07-26 | 2015-03-31 | Seven Networks, Inc. | Distributed implementation of dynamic wireless traffic policy |
US8838783B2 (en) | 2010-07-26 | 2014-09-16 | Seven Networks, Inc. | Distributed caching for resource and mobile network traffic management |
US8484314B2 (en) | 2010-11-01 | 2013-07-09 | Seven Networks, Inc. | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
US9330196B2 (en) | 2010-11-01 | 2016-05-03 | Seven Networks, Llc | Wireless traffic management system cache optimization using http headers |
EP2635973A4 (de) | 2010-11-01 | 2014-01-15 | Seven Networks Inc | An das verhalten einer mobilen anwendung und an netzwerkbedingungen angepasste zwischenspeicherung |
WO2012061437A1 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Cache defeat detection and caching of content addressed by identifiers intended to defeat cache |
WO2012060995A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
US8326985B2 (en) | 2010-11-01 | 2012-12-04 | Seven Networks, Inc. | Distributed management of keep-alive message signaling for mobile network resource conservation and optimization |
US8843153B2 (en) | 2010-11-01 | 2014-09-23 | Seven Networks, Inc. | Mobile traffic categorization and policy for network use optimization while preserving user experience |
US8166164B1 (en) | 2010-11-01 | 2012-04-24 | Seven Networks, Inc. | Application and network-based long poll request detection and cacheability assessment therefor |
US9060032B2 (en) | 2010-11-01 | 2015-06-16 | Seven Networks, Inc. | Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic |
EP2636268B1 (de) | 2010-11-22 | 2019-02-27 | Seven Networks, LLC | Optimierung von ressourcenabfrageintervallen zur zufriedenstellenden beantwortung von anfragen auf mobilen vorrichtungen |
EP2596658B1 (de) | 2010-11-22 | 2018-05-09 | Seven Networks, LLC | Ausrichtung einer datenübertragung an der optimierung von verbindungen für übertragungen über ein drahtloses netzwerk |
CN102486870B (zh) * | 2010-12-01 | 2014-02-12 | 财团法人资讯工业策进会 | 绘图系统及其像素更新方法 |
EP2661697B1 (de) | 2011-01-07 | 2018-11-21 | Seven Networks, LLC | System und verfahren zur reduzierung eines mobilnetzwerkverkehrs für domänennamensystem (dns)-anfragen |
WO2012145544A2 (en) | 2011-04-19 | 2012-10-26 | Seven Networks, Inc. | Device resource sharing for network resource conservation |
WO2012149221A2 (en) | 2011-04-27 | 2012-11-01 | Seven Networks, Inc. | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
US8621075B2 (en) | 2011-04-27 | 2013-12-31 | Seven Metworks, Inc. | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system |
EP2737741A4 (de) | 2011-07-27 | 2015-01-21 | Seven Networks Inc | Überwachung der aktivitäten von mobilanwendungen für böswilligem verkehr auf einer mobiler vorrichtung |
CN103108197A (zh) | 2011-11-14 | 2013-05-15 | 辉达公司 | 一种用于3d视频无线显示的优先级压缩方法和系统 |
US8918503B2 (en) | 2011-12-06 | 2014-12-23 | Seven Networks, Inc. | Optimization of mobile traffic directed to private networks and operator configurability thereof |
WO2013086225A1 (en) | 2011-12-06 | 2013-06-13 | Seven Networks, Inc. | A mobile device and method to utilize the failover mechanisms for fault tolerance provided for mobile traffic management and network/device resource conservation |
US9277443B2 (en) | 2011-12-07 | 2016-03-01 | Seven Networks, Llc | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
US9208123B2 (en) | 2011-12-07 | 2015-12-08 | Seven Networks, Llc | Mobile device having content caching mechanisms integrated with a network operator for traffic alleviation in a wireless network and methods therefor |
US8861354B2 (en) | 2011-12-14 | 2014-10-14 | Seven Networks, Inc. | Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization |
US20130159511A1 (en) | 2011-12-14 | 2013-06-20 | Seven Networks, Inc. | System and method for generating a report to a network operator by distributing aggregation of data |
WO2013090834A1 (en) | 2011-12-14 | 2013-06-20 | Seven Networks, Inc. | Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic |
EP2801236A4 (de) | 2012-01-05 | 2015-10-21 | Seven Networks Inc | Detektion und verwaltung von benutzerinteraktionen mit vordergrundanwendungen auf einer mobilvorrichtung in verteilten cache-speichern |
US9829715B2 (en) | 2012-01-23 | 2017-11-28 | Nvidia Corporation | Eyewear device for transmitting signal and communication method thereof |
US9633458B2 (en) * | 2012-01-23 | 2017-04-25 | Nvidia Corporation | Method and system for reducing a polygon bounding box |
WO2013116856A1 (en) | 2012-02-02 | 2013-08-08 | Seven Networks, Inc. | Dynamic categorization of applications for network access in a mobile network |
WO2013116852A1 (en) | 2012-02-03 | 2013-08-08 | Seven Networks, Inc. | User as an end point for profiling and optimizing the delivery of content and data in a wireless network |
US8812695B2 (en) | 2012-04-09 | 2014-08-19 | Seven Networks, Inc. | Method and system for management of a virtual network connection without heartbeat messages |
US20130268656A1 (en) | 2012-04-10 | 2013-10-10 | Seven Networks, Inc. | Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network |
WO2014011216A1 (en) | 2012-07-13 | 2014-01-16 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
US9105250B2 (en) | 2012-08-03 | 2015-08-11 | Nvidia Corporation | Coverage compaction |
US9578224B2 (en) | 2012-09-10 | 2017-02-21 | Nvidia Corporation | System and method for enhanced monoimaging |
US9002125B2 (en) | 2012-10-15 | 2015-04-07 | Nvidia Corporation | Z-plane compression with z-plane predictors |
US9161258B2 (en) | 2012-10-24 | 2015-10-13 | Seven Networks, Llc | Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion |
US20140177497A1 (en) | 2012-12-20 | 2014-06-26 | Seven Networks, Inc. | Management of mobile device radio state promotion and demotion |
US9241314B2 (en) | 2013-01-23 | 2016-01-19 | Seven Networks, Llc | Mobile device with application or context aware fast dormancy |
US8874761B2 (en) | 2013-01-25 | 2014-10-28 | Seven Networks, Inc. | Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
US9326185B2 (en) | 2013-03-11 | 2016-04-26 | Seven Networks, Llc | Mobile network congestion recognition for optimization of mobile traffic |
US9633469B2 (en) * | 2013-03-15 | 2017-04-25 | Nvidia Corporation | Conservative rasterization of primitives using an error term |
US9342891B2 (en) * | 2013-03-15 | 2016-05-17 | Nvidia Corporation | Stencil then cover path rendering with shared edges |
US9065765B2 (en) | 2013-07-22 | 2015-06-23 | Seven Networks, Inc. | Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network |
US10935788B2 (en) | 2014-01-24 | 2021-03-02 | Nvidia Corporation | Hybrid virtual 3D rendering approach to stereovision |
US9906981B2 (en) | 2016-02-25 | 2018-02-27 | Nvidia Corporation | Method and system for dynamic regulation and control of Wi-Fi scans |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381519A (en) * | 1987-12-04 | 1995-01-10 | Evans & Sutherland Computer Corp. | System for line interpolation for computer graphics displays |
EP0430501B1 (de) * | 1989-11-17 | 1999-02-03 | Digital Equipment Corporation | System und Verfahren zum unverfälschten Polygonenzeichnen |
US5299308A (en) * | 1990-02-28 | 1994-03-29 | Ricoh Company, Ltd. | Graphic data processing apparatus for producing a tone for an edge pixel and reducing aliasing effects |
US5123085A (en) * | 1990-03-19 | 1992-06-16 | Sun Microsystems, Inc. | Method and apparatus for rendering anti-aliased polygons |
GB2245805A (en) * | 1990-06-29 | 1992-01-08 | Philips Electronic Associated | Generating an anti-aliased image |
KR100243174B1 (ko) * | 1993-12-28 | 2000-02-01 | 윤종용 | 서브픽셀 마스크 발생방법 및 장치 |
US5668940A (en) * | 1994-08-19 | 1997-09-16 | Martin Marietta Corporation | Method and apparatus for anti-aliasing polygon edges in a computer imaging system |
JP3609189B2 (ja) * | 1995-03-14 | 2005-01-12 | 株式会社リコー | アンチエイリアシング機能を有する画像生成装置 |
US5777629A (en) * | 1995-03-24 | 1998-07-07 | 3Dlabs Inc. Ltd. | Graphics subsystem with smart direct-memory-access operation |
JPH09102048A (ja) * | 1995-10-03 | 1997-04-15 | Matsushita Electric Ind Co Ltd | 画像処理装置 |
US5821949A (en) * | 1996-07-01 | 1998-10-13 | Sun Microsystems, Inc. | Three-dimensional graphics accelerator with direct data channels for improved performance |
-
1997
- 1997-07-02 US US08/887,441 patent/US6057855A/en not_active Expired - Fee Related
-
1998
- 1998-06-22 DE DE19827726A patent/DE19827726B4/de not_active Expired - Fee Related
- 1998-06-26 JP JP10180764A patent/JPH1186007A/ja active Pending
- 1998-07-01 GB GB9814268A patent/GB2327178B/en not_active Expired - Fee Related
-
2003
- 2003-03-03 JP JP2003055630A patent/JP2003271987A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
GB9814268D0 (en) | 1998-09-02 |
DE19827726B4 (de) | 2005-02-24 |
GB2327178B (en) | 2002-03-20 |
JPH1186007A (ja) | 1999-03-30 |
JP2003271987A (ja) | 2003-09-26 |
GB2327178A (en) | 1999-01-13 |
US6057855A (en) | 2000-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19827726A1 (de) | Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung | |
DE68927471T2 (de) | Verfahren zur Schattierung eines graphischen Bildes | |
DE3750784T2 (de) | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. | |
DE3853393T2 (de) | Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung. | |
EP1227444B1 (de) | Verfahren zur Rasterisierung eines Graphikgrundelements | |
DE69816824T2 (de) | Texturabbildung in 3-d-rechnergraphik | |
DE60031337T2 (de) | Geräteabhängige Darstellung von Zeichen | |
DE10053439B4 (de) | Grafik-Beschleuniger mit Interpolationsfunktion | |
DE68925399T2 (de) | Verfahren und Gerät zur Bildtransformation | |
DE3687668T2 (de) | Verfahren und einrichtung zur verbesserung der bildqualitaet in einem nach dem rasterverfahren arbeitenden anzeigegeraet. | |
DE3854543T2 (de) | Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung. | |
DE68919024T2 (de) | Verfahren und Prozessor zur Abtastumsetzung. | |
DE60126967T2 (de) | Verfahren und Vorrichtung für Anti-Aliasing durch Überabtastung | |
DE3750803T2 (de) | Schattierungsschaltung zur Schattierung mehrerer Polygone, die ein Festkörpermodel einsetzen, und Schattierungsverfahren dafür. | |
DE69720131T2 (de) | System und Verfahren zur Perspektivetransformation | |
DE19619288A1 (de) | System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern | |
DE3315148C2 (de) | ||
DE102005050846A1 (de) | Perspektiveneditierwerkzeuge für 2-D Bilder | |
DE19807013B4 (de) | Volumetrisches Vorabschneidungsverfahren, das eine minimale Anzahl von Abtastpunkten durch ein Volumen gewährleistet | |
DE69029987T2 (de) | Verfahren und Gerät zur parallelen Wiedergabe von Polygonen und Pixeln | |
DE19709220A1 (de) | System und Verfahren für eine beschleunigte Verdeckungsauslese | |
DE60008867T2 (de) | Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten | |
DE60122333T2 (de) | Verfahren und System zur kachelweisen Bildwiedergabe | |
DE102018125472A1 (de) | Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben | |
DE3854619T2 (de) | Quadratische interpolation zur schattierten bilderzeugung. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8127 | New person/name/address of the applicant |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |