DE19827726A1 - Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung - Google Patents

Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung

Info

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
Application number
DE19827726A
Other languages
English (en)
Other versions
DE19827726B4 (de
Inventor
Anthony C Barkans
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19827726A1 publication Critical patent/DE19827726A1/de
Application granted granted Critical
Publication of DE19827726B4 publication Critical patent/DE19827726B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing 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:
TABELLE I
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.
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.
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.
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.
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.
DE19827726A 1997-07-02 1998-06-22 Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung Expired - Fee Related DE19827726B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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