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

Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung Download PDF

Info

Publication number
DE19827726B4
DE19827726B4 DE19827726A DE19827726A DE19827726B4 DE 19827726 B4 DE19827726 B4 DE 19827726B4 DE 19827726 A DE19827726 A DE 19827726A DE 19827726 A DE19827726 A DE 19827726A DE 19827726 B4 DE19827726 B4 DE 19827726B4
Authority
DE
Germany
Prior art keywords
sub
edge
primitive
pixel
coordinate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19827726A
Other languages
English (en)
Other versions
DE19827726A1 (de
Inventor
Anthony C. Redmond 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

Abstract

Verfahren zum Bestimmen eines Prozentsatzes mindestens eines Pixels (73) auf einem Graphiksystemanzeigebildschirm, 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 Pixel definieren, wobei jeder der Mehrzahl von Unterabtastpunkten auf einer entsprechenden der Mehrzahl von Unterabtastzeilen positioniert ist;
(b) Schreiten zwischen der Mehrzahl von Unterabtastzeilen des mindestens einen Pixels (73);
(c) Bestimmen bei jeder der Mehrzahl von Unterabtastzeilen, 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 Pixels, das durch das Primitiv (74) abgedeckt ist, basierend auf der Anzahl der Mehrzahl von Unterabtastpunkten des mindestens einen Pixels (73), die durch das Primitiv (74) abgedeckt wird.

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 graphischen Darstellungen von zwei- oder dreidimensionalen Objekten auf einem zweidimensionalen Anzeigebildschirm verwendet. Ein herkömmliches Computergraphiksystem umfaßt einen Hostcomputer zum Liefern von Anweisungen und Daten zu einem Graphikgerät, das den Anzeigebildschirm umfaßt. Durch Weiterleiten von Befehlen und Daten zu dem Graphikgerät steuert der Hostcomputer die Anzeige von Bildern auf dem Anzeigebildschirm.
  • Bei typischen Computergraphiksystemen wird ein Objekt, das auf einem Anzeigebildschirm dargestellt werden soll, in eine Anzahl von Primitiven zerlegt. Die Primitive sind Grundkomponenten eines Graphikbilds, wie z. B. Punkte, Linien, Vektoren und Polygone (z. B. Dreiecke). Typischerweise arbeitet eine Graphiksoftware, die auf dem Hostcomputer ausgeführt wird, in Verbindung mit dem Graphikgerät, um die Graphikprimitive 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 dreidimensionalen Objektraums und die Rot-, Grün-, Blau- (RGB-)Farbwerte für jeden Scheitelpunkt des Dreiecks umfassen. Die Wiedergabehardware in dem Graphikgerät interpoliert die Primitivdaten, um zu bestimmen, welche Pixel auf dem Anzeigebildschirm 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 entsprechenden Array von Pixeldaten ist als "Abtastumwandlung" bekannt. Der Abtastumwandlungsprozeß, der bei einem Graphiksystem verwendet wird, wird ziemlich häufig aufgerufen, typischerweise Tausende von Malen für jedes Bild, das erzeugt oder modifiziert wird. Daher ist es wünschenswert, daß der Abtastumwandlungsprozeß 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 Primitive, die wiedergegeben werden, erscheinen jedoch derart, als wenn dieselben gezackte Kanten aufweisen. Das Erscheinungsbild der gezackten Kanten resultiert aus der Auswahl einer nicht optimalen Farbe für die Pixel an den Kanten des Primitivs. 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 Betriebsart arbeitet, die nicht versucht, die gezackten Kanten zu korrigieren, wird davon gesprochen, daß derselbe in einer Aliasedbetriebsart arbeitet.
  • Beispielsweise stellt 1 ein Primitiv (d. h. ein Dreieck 74) dar, das durch einen Abtastwandler, der in der Aliasedbetriebsart 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 Primitiv abgedeckt) ist oder nicht. Die Grundbestimmung wird durch Auswerten des Zustands jedes Pixels bei einem Ur sprungspunkt, wie z. B. ein Punkt 1 in 1, bestimmt. Die Adresse oder der Ursprung jedes Pixels in dem x,y-Koordinatenraum ist durch die Koordinaten an den x-y-Schnittpunkten des Gitters in der oberen rechten Ecke des Pixels definiert. Wenn der Ursprungspunkt durch das Primitiv abgedeckt ist, ist das Pixel ein. Wenn nicht, ist das Pixel aus. Da lediglich eine einzige Farbabtastung pro Pixel vorgenommen wird, wird die Wiedergabe des Primitivs in der Aliasedbetriebsart schnell durchgeführt. Wie es jedoch in dem Beispiel von 1 sichtbar ist, ist, obwohl die Aliasedprimitive oftmals schnell wiedergegeben werden können, das resultierende Primitiv oftmals von einer schlechten Qualität.
  • Auf den Prozeß des Lieferns eines Primitivs mit einem Erscheinungsbild mit glatten Kanten wird allgemein als "Antialiasing" Bezug genommen. Die Abtastumwandlungsalgorithmen, die in einem Antialiasedbetrieb arbeiten, sind allgemein langsamer, oder dieselben erfordern wesentlich mehr Hardware, da mehr Berechnungen bei jedem Pixel durchgeführt werden, um eine geeignete Farbe auszuwählen. Primitive, die unter Verwendung des Antialiasing wiedergegeben werden, weisen jedoch glattere Kanten als ein Resultat von optimaleren Farbauswahlkriterien auf. Ein Verfahren des Antialiasing verwendet ein Mehrpunktabtasten innerhalb jedes Pixels, um eine optimalere Farbe für Pixel an den Kanten eines Primitivs auszuwählen. Beim Auswählen einer optimaleren Farbe mischt das Mehrpunktabtasten die Farbe des Hintergrunds, einschließlich jeder unterliegenden Geometrie, mit der Farbe des Primitivs, um gezackte Kanten des Primitivs 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 gemischte 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 abdeckt, derart, daß 50% der Unterpixelabtastpositionen abgedeckt 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 eingetragene Marke) vorgesehen, das kommerziell durch die Silicon Graphics Computer Systems, U.S.A., erhältlich ist. Das Silicon-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 Nachschlagtabelle zuzugreifen, die Strukturen von Unterpixeln für jede mögliche Kombination von Parameterwerten speichert. Die Struktur von Unterpixeln in der Nachschlagtabelle wird verwendet, 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 Ebenengleichungsparameter mit hoher Leistung zu lösen, sind viele Pixelprozessoren erforderlich. Da die mathematischen Berechnungen und das Nachschlagen mit Hardware durchgeführt werden, ist das Silicon-Graphics-System in der Lage Unterpixeldaten relativ schnell zu liefern. Ein Nachteil des obigen Verfahrens besteht jedoch darin, daß die Hardware, die erforderlich ist, um die mathematischen Funktionen durchzuführen, hinsichtlich der Toranzahl teuer ist, was folglich die Kosten und die Größe der Graphikschaltungsanordnung erhöht.
  • Eine herkömmliche Antialiasing-Technik ist bei BARKANS, A.C.: Hardware-Assisted Polygon Antialiasing. IEEE Computer Graphics and Applications, January 1991, Seite 80–88, der einen Überabtasten-Lösungsansatz für ein Anti-Aliasing beschreibt. Ein Überabtasten ist eine Technik, bei der das Bild, das wiedergegeben werden soll, in ein größeres Bild skaliert und dann für eine Wiedergabe auf dem Anzeigebildschirm größenmäßig reduziert wird. Während der Bildreduzierung werden Pixelfarbwerte von einem oder mehreren benachbarten Pixeln der übergroßen Bilder interpoliert („gemittelt" bid BARKANS). Bekannte Interpolationstechniken umfassen beispielsweise Interpolationstechniken des nächsten Nachbarn, eine bilineare Interpolation und eine bikubische Interpolation. Im Gegensatz zu dem Abtasten von mehreren Punkten in einem einzelnen Pixel vergrößert der Überabtast-Lösungsansatz für ein Anti-Aliasing ein Bild, um mehr Pixel zu erzeugen, von denen nachfolgend Gruppen kombiniert werden, um einen Mittelwert für jedes Pixel in dem resultierenden Bild zu bestimmen.
  • Die EP 0430 501 A2 offenbart ferner einen Überabtast-Lösungsansatz für ein Antialiasing, der in dieser Schrift als „Supersampling" bezeichnet wird. Dieser Überabtast-Lösungsansatz für Anti-Aliasing-Polygonkanten verwendet einen einzelnen Abtastwert pro Pixel und addressiert keine Mehrpunkt-Abtastung von Pixeln zum Durchführen eines Antialiasing.
  • Bei FOLEY, J.D.; et al.: Computer Graphics- Principles and Practice. Addison-Wesley, 1996, S. 882–887, ist eine herkömmliche Kenten-Schritttechnik beschrieben, d.h. von einer Abtastlinie zur nächsten und von einem Pixel zum nächsten in jeder Abtastlinie. Ein Abtasten einer Mehrzahl von Punkten entlang einer Mehrzahl von Unterabtastlinien für jedes Pixel ist dieser Schrift nicht zu entnehmen.
  • Schließlich ist aus der US 5 123 085 A ein Abtastumwandlungsverfahren bekannt, das auf einem Polygon unter Verwendung einer Einzeldurchlauftechnik durchgeführt wird. Die Pixel, die Kanten und Scheitelpunkte des Polygons umfassen, werden zunächst auf den Scheitelpunkten, die das Polygon definieren, bestimmt. Der Alphakanal umfasst entweder eine Unterpixelmaske, die jedem Pixel zugeordnet ist, die den Betrag der abgedeckten Unterpixelregionen anzeigt, oder einen einzelnen Wert, der den Prozentsatz der Abdeckung eines Pixels anzeigt. Ferner wird ein z-Wert, der die Tiefe jedes Pixels anzeigt, beibehalten. Die Pixel zwischen den Kantenpixeln des Polygons werden dann eingeschaltet, wodurch das Polygon gefüllt wird. Die Pixel, die das Polygon aufweist, werden mit den Hintergrundpixeln auf einer Pixel-um-Pixel-Basis zusammengesetzt. Der Tiefenwert jedes Pixels des Polygons (der z-Wert) wird verwendet, um die Zusammensetzungsgleichungen zu bestimmen, die verwendet werden sollen, um jedes Pixel des Polygons mit dem Hintergrund zusammenzusetzen. Die Zusammensetzungsgleichungen aktualisieren die Farbe des Pixels, den z-Pufferwert des Hintergrundpixels und die Unterpixelmaske, um die Hinzufügung von Informationen von der Zusammensetzungsoperation widerzuspiegeln. Durch dieses Verfahren können einem Anti-Aliasing unterworfene Polygone hoher Qualität aufbereitet werden, um die zeitaufwendige Verarbeitung des Sortierens der Polygone in der Tiefenreihenfolge vor dem Zusammensetzen durchzuführen. Diese Schrift offenbart nicht ein Antialiasing eines Grundelements durch das Abtasten von Punkten entlang einer Mehrzahl von Unterabtastlinien für jedes Pixel des Grundelements.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, ein verbessertes Verfahren und eine verbesserte Vorrichtung zum Bestimmen der Unterpixelabdeckung eines Primitivs zur Verwendung bei Antialiasingoperationen zu schaffen.
  • Diese Aufgabe wird durch ein Verfahren zum Bestimmen eines Prozentsatzes mindestens eines Pixels auf einem Graphiksystemanzeigebildschirm, das durch ein Primitiv abgedeckt ist, das auf dem Anzeigebildschirm angezeigt werden soll, gemäß Anspruch 1 und durch eine Kantenschrittvorrichtung zum Erzeugen von Koordinatendaten zum Anzeigen von Pixeln auf einem Anzeigegerät, die das Primitiv darstellen, in einem Graphiksystem, das ein Primitiv wiedergeben kann, gemäß Anspruch 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 abgedeckt ist, das auf dem Anzeigebildschirm angezeigt werden soll, geschaffen. Das Verfahren umfaßt die Schritte des Aufteilens des mindestens einen Anzeigepixels in eine Mehrzahl von Unterabtastzeilen, die eine Mehrzahl von Unterabtastpunkten für das mindestens eine Pixel definieren, wobei jeder der Mehrzahl von Unterabtastpunkten auf einer entsprechenden der Mehrzahl von Unterabtastzeilen positioniert ist. Das Abschreiten wird zwischen der Mehrzahl von Unterabtastzeilen 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 Primitiv abgedeckt ist, wird basierend auf der Anzahl der Mehrzahl von Unterabtastpunkten des mindestens einen Pixels, die durch das Primitiv abgedeckt sind, genähert.
  • Gemäß einem weiteren Aspekt der Erfindung ist bei einem Graphiksystem, das in einer Aliasedbetriebsart zum Wiedergeben von Primitiven und in einer Antialiasedbetriebsart zum Wie dergeben von Primitiven mit relativ glatteren Kanten arbeiten 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 erstes und zweites Paar von Kantenkoordinaten und einen Neigungswert für mindestens eine Kante des Primitivs, das auf der Anzeige wiedergegeben werden soll, umfassen. Die Kantenschrittvorrichtung umfaßt einen Addierer zum Inkrementieren mindestens der ersten Endpunktkoordinaten durch einen Inkrementwert, um eine Kanten-x- und eine Kanten-y-Koordinate der mindestens eine Kante des wiedergegebenen Primitivs zu liefern, wobei der Inkrementwert kleiner als eine Größe eines Pixels ist.
  • Gemäß einem weiteren Aspekt der Erfindung ist ein Graphikgerä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 aufweist. Das Graphikgerät umfaßt einen Graphikbeschleuniger, der gekoppelt ist, um Daten von dem Hostprozessor zu empfangen, 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 mindestens einen Kante identifizieren. Zusätzlich umfaßt das Graphikgerät einen Abtastumwandler, der gekoppelt ist, um die Kantengleichungen von dem Graphikbeschleuniger zu empfangen, und um die Ebenengleichungen in Koordinaten von Pixeln des Anzeigegeräts zu übersetzen. Der Abtastumwandler umfaßt eine Kantenschrittvorrichtung, um von einer der Koordinaten 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 Kantenschrittvorrichtung 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:
  • 1 ein Beispiel eines Aliasedwiedergebens eines Primitivs;
  • 2 ein Blockdiagramm eines darstellenden Graphiksystems, bei dem die vorliegende Erfindung verwendet werden kann;
  • 3 ein Blockdiagramm eines Graphikbeschleunigers zur Verwendung bei dem Graphiksystem von 2;
  • 4 ein Beispiel einer Transformierungsmatrix, die zum Skalieren von Primitivdaten bei einem Ausführungsbeispiel der vorliegenden Erfindung verwendet wird;
  • 4A ein Beispiel von Kantengleichungen, die durch den Graphikbeschleuniger von 2 erzeugt werden;
  • 5 ein Blockdiagramm eines Ausführungsbeispiels einer Rahmenpuffersteuerung eines Graphiksystems, wie dasselbe, das in 2 gezeigt ist, das die vorliegende Erfindung verwendet;
  • 6 eine Darstellung eines Primitivs, das auf einem Pixelgitter gezeichnet ist;
  • 7 ein Blockdiagramm eines Ausführungsbeispiels einer Kantenschrittvorrichtungseinheit der Rahmenpuffersteuerung von 5 gemäß der vorliegenden Erfindung;
  • 8 ein darstellendes Beispiel des Skalierens von Pi xeln, das bei einem Ausführungsbeispiel der vorliegenden Erfindung zum Bestimmen von Abtastpunkten während des Mehrpunktabtastens verwendet wird;
  • 9 eine darstellende Zuweisung von x- und y-Koordinaten-Adreßbits während des Aliased- und Antialiased-Betriebs gemäß der vorliegenden Erfindung;
  • 10 ein Blockdiagramm eines Ausführungsbeispiels einer Sammeleinheit, die zum Sammeln von Mehrpunktabtastungen gemäß der vorliegenden Erfindung verwendet wird;
  • 11 eine Darstellung eines Primitivs, das auf einem Pixelgitter zum Erklären des Betriebs der Sammellogik von 10 gezeichnet ist;
  • 12 ein Flußdiagramm, das ein Betriebsverfahren einer Datenwegssammeleinheit der Sammellogik von 10 darstellt;
  • 13 ein Blockdiagramm eines Ausführungsbeispiels einer Datenwegweiterleitungseinheit der Sammellogik von 10;
  • 14 ein Flußdiagramm, das ein Verfahren zum Betreiben der Lesesteuerlogik der Sammeleinheit von 10 darstellt, um die Unterabtastzeilen zu einer Weitenschrittvorrichtung gemäß der vorliegenden Erfindung weiterzuleiten;
  • 15 ein Flußdiagramm, das ein Verfahren zum Weiterleiten von Unterabtastzeilen bei der Lesesteuerlogik von 14 darstellt; und
  • 16 ein Blockdiagramm eines Ausführungsbeispiels einer Weitenschrittvorrichtungseinheit, die in der Rahmenpuffersteuerung von 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 wiedergegeben wird. Der Anzeigebildschirm umfaßt eine Anzahl von Abtastzeilen, wobei jede Abtastzeile eine Anzahl von Anzeigepixeln umfaßt. Das Graphikgerät umfaßt Software- und Hardware-Werkzeuge zum Zeichnen oder Wiedergeben eines Primitivs auf der Anzeige. Die Graphikwerkzeuge erzeugen eine Startkantenkoordinate und Neigungsinformationen für jedes Primitiv. 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 eines Primitivs unter Verwendung eines Mehrpunktabtastens durchzuführen, wird bei einem Ausführungsbeispiel der vorliegenden Erfindung ein Bild, das eine Mehrzahl von Abtastzeilen aufweist, in eine Mehrzahl von Unterabtastzeilen unterteilt, derart, daß eine Anzahl von Unterabtastzeilen jedes Pixel kreuzt. Ein Abtastpunkt wird auf jeder Unterabtastzeile plaziert, derart, daß jedes Pixel mehrere Abtastpunkte 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 verwendet, 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 Primitiv 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 Auswerten der Pixelabdeckwerte bestimmt werden, ohne daß die komplexe Hardware erforderlich ist, die im Stand der Technik verwendet wird.
  • Die Konzepte der vorliegenden Erfindung werden nun unter Bezugnahme auf die angehefteten Zeichnungen beschrieben, in denen sich gleiche Ziffern auf gleiche Elemente in den Zeichnungen beziehen. 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 Computergraphiksystem 10 umfaßt einen Hostprozessor 12, ein vorgelagertes 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-Koordinatendaten, R-, G-, B-Farbdaten und Texturdaten für gewisse Abschnitte des Primitivs spezifiziert, wie z. B. Scheitelpunkte, wenn das Primitiv ein Dreieck ist. Das vorgelagerte 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 Kantengleichungsdaten, die von dem vorgelagerten Untersystem 14 für jedes Primitiv empfangen werden, um die Pixeladressen in Anzeigebildschirmkoordinaten und Pixelfarbdaten zu berechnen, die verwendet werden, um jedes Primitiv auf dem Anzeigebildschirm darzustellen. Die Pixelfarbdaten umfassen Bits, die Rot-, Grün- und Blau-Farbkomponenten der Pixel identifizieren, 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 weitergeleitet, der die binären Farbdaten, die in dem Rahmenpufferspeicher 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 2 umfaßt das vorgelagerte Untersystem 14 eine Hostschnittstelle 16 und einen dreidimensionalen (3-D-)Geometriebeschleuniger 18. Die Hostschnittstelle 16 empfängt die x-, y-, z-Scheitelpunktkoordinate und die Farbprimitivdaten über den Bus 11 von dem Hostprozessor 12. Diese Daten werden dann von der Hostschnittstelle 16 zu dem Geometriebeschleuniger 18 über den Bus 11 geliefert. Der Geometriebeschleuniger 18 führt herkömmliche Geometriebeschleunigerfunktionen, wie z. B. eine dreidimensionale Transformation, die Beleuchtung, das Abschneiden 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ührungsbeispiel von 2 werden die Kantengleichungen durch den Geometriebeschleuniger 18 über den Bus 18a zu der Hostschnittstelle 16 geliefert, die diese Kantengleichungsdaten auf dem Bus 19 zu dem Rahmenpufferuntersystem 20 weiterleitet.
  • Unter Bezugnahme nun auf 3 ist ein Blockdiagramm eines Abschnitts des Geometriebeschleunigers 18 als eine Transformierungseinheit 30, eine Kantenerzeugungseinheit 34 und eine Formatumwandlungseinheit 36 umfassend gezeigt. Die Transformierungseinheit 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 Scheitelpunktkoordinaten dargestellt. Die Transformierungseinheit 30 umfaßt eine Transformierungsmatrix 32, die verwendet wird, um geometrisch die Eingabekoordinaten von Primitivscheitelpunkten in Koordinaten zum Darstellen des Primitivs auf einem Anzeigegerät zu transformieren. Kurz bezugnehmend auf 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 Standardmatrixmultiplikationstechniken zu skalieren. Diese Fähigkeit wird bei vielen 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 transformierten Primitivdaten zu der Kantenerzeugungseinheit 34 (3) weitergeleitet. Die Kantenerzeugungseinheit 34 wandelt die empfangenen Primitivscheitelpunktdaten in Kantengleichungen um, die das Primitiv darstellen. Bezugnehmend nun kurz auf 4A ist ein Beispiel von einigen Kantengleichungen gezeigt, die für ein Dreieck erzeugt wurden. Die Scheitelpunktkoordinaten, die durch die Transformierungseinheit 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 Perspektivbetrag "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ängeninformationen, die die Gesamtlänge der Kante identifizieren, und Farbdeltainformationen, die die Änderung der Farbe entlang 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 angrenzt, 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 Kantengleichungen durch Durchführen einer Gleitkomma-zu-Festkomma-Umwandlung neu formatiert, um spätere Berechnungen unter Verwendung der Gleichungen zu vereinfachen. Die obigen Kantengleichungsdaten werden aus dem Geometriebeschleuniger 18 (2) heraus über den Bus 18a zu der Hostschnittstelle 16 weitergeleitet. Die Hostschnittstelle 16 leitet dann die Kantengleichungsdaten zu dem Rahmenpufferuntersystem 20 weiter.
  • Bei dem Computergraphiksystem, das in 2 gezeigt ist, umfaßt das Rahmenpufferuntersystem 20 zwei Rahmenpuffersteuerungen 24 und 26, von denen jede die Anzeige eines Abschnitts (22a, 22b) des Rahmenpufferspeichers 22 steuert. Die Rahmenpuffersteuerung 24 steuert die Inhalte und die Anzeige von Daten in dem Abschnitt 22a des Rahmenpufferspeichers, und die Rahmenpuffersteuerung 26 steuert die Inhalte und die Anzeige von Daten in dem Abschnitt 22b des Rahmenpufferspeichers. 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 Rahmenpuffersteuerung 24 und 26 Primitivdaten handhabt, die für unterschiedliche Adressen in dem Rahmenpufferspeicher 22 bestimmt sind, ist die verbleibende Funktionalität der Steuerungen im wesentlichen identisch. Folglich wird nun lediglich eine Rahmenpuffersteuerung detailliert im folgenden beschrieben.
  • Bezugnehmend auf 5 ist eine darstellende Anordnung einer 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 Pixeldaten. Die Speichersteuerung 60 steuert das Schreiben der Pixeldaten, 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 Abtastumwandlungseinheit 50, die sich auf das Mehrpunktabtasten von Primitiven beziehen. Bei einem Ausführungsbeispiel der Erfindung ist die Speichersteuerung 60, wie in der U.S.-Patentanmeldung Seriennummer 08/692,350, mit dem Titel "Antialiasing System and Method that Minimize Memory Requirements and Memory Accesses by Storinq 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 beschrieben 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 Unterabtastabdeckungsinformationen zu liefern, die bei dem Antialiasingverfahren verwendet werden, das in der '350er Patentanmeldung beschrieben ist. Das Verfahren und die Vorrichtung zum Erzeugen von Unterabtastinformationen, das hierin beschrieben ist, kann jedoch ferner mit Speichersteuerungen verwendet werden, die auf eine andere Art und Weise implementiert sind, und folglich ist die vorliegende Erfindung nicht auf die Verwendung der '350er Speichersteuerung begrenzt.
  • Wie oben erwähnt, leitet die Abtastumwandlungseinheit 50 Pixelkoordinate und Farbdaten zu der Speichersteuerung weiter. Gemäß einem Aspekt der Erfindung leitet die Abtastumwandlungseinheit 50 ferner eine Unterabtastsmaske zu der Speichersteuerung weiter. Jedes der Bits der Maske entspricht einer Unterabtastung eines zugeordneten Pixels. Die Unterabtastsmaske wird während des Antialiasing verwendet, um einen geeigneten Farbwert für das Pixel auszuwählen. Bevor beschrieben wird, wie die Umwandlungseinheit 50 die Unterabtastsmaske bestimmt, wird zuerst eine kurze Beschreibung des Betriebs des Mehrpunktabtastens vorgesehen.
  • Unter Bezugnahme nun auf 6 ist ein Abschnitt eines Anzeigebildschirms 70 als ein 6-Zeilen-mal-6-Spalten-Pixelgitter 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-Koordinatenraum ist durch die Koordinaten an den x,y-Schnittpunkten des Gitters definiert, Jedes Gitter umfaßt die Unterabtastungen innerhalb des Pixels, das sich in einer steigenden x- und steigenden y-Richtung zu dem nächsten Gitterschnittpunkt erstreckt. Folglich umfaßt das Pixel (1, 0) Unterabtastungen in dem Gitterblock 75.
  • Das Primitiv von 6 ist ein Dreieck 74, das in einer ersten Farbe auf einem Hintergrund einer zweiten Farbe gezeichnet ist. Wie im vorhergehenden unter Bezugnahme auf 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 abgedeckt 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 werden, die als Mehrpunktabtasten bekannt ist. Bei dem Mehrpunktabtasten wird jedes Pixel bei mehreren Koordinaten innerhalb des Pixels abgetastet, um eine Anzahl von Pixelunterabtastungen 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 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 reduzieren. Das Mehrpunktabtasten ist ferner zum Anzeigen von Objekten nützlich, die kleiner sind als die Größe des Pixels. Beispielsweise wird, wenn ein Objekt kleiner als die Größe des Pixels ist, und wenn dasselbe keinen einzigen Abtastpunkt des Pixels abdeckt, dasselbe nicht in der Aliasedbetriebsart angezeigt. Da das Mehrpunktabtasten das Bild bei mehreren Punkten innerhalb eines Anzeigepixels abtastet, das durch das Pixelgitter definiert ist, können Objekte mit Unterpixelgröße abgetastet werden, und die Farbe des Pixels kann auf der Anzeige dargestellt werden. Eine Komponente des Mehrpunktabtastens ist die Bestimmung, wieviele Unterabtastungen bei jedem Pixel durch das Primitiv abgedeckt werden. Die Unterabtastinformationen werden während einer Abtastumwandlung bestimmt, und dieselben werden in der Form einer Maske zu der Speichersteuerung weitergeleitet, die die Pixelfarbe gemäß der Maske moduliert.
  • Wie oben erörtert, haben herkömmliche Verfahren zum Bestimmen 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 Abtastumwandlungsverfahren 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 Abdeckung der Unterabtastungen innerhalb des Pixels zu sammeln.
  • Zurück bezugnehmend auf 5 ist der Abtastwandler 50 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung eine 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 6 gezeigt ist, beschrieben. Die Kantenschrittvorrichtungen und die Weitenschrittvorrichtungen sind häufig in Graphikhardware 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 eines Ausführungsbeispiels der vorliegenden Erfindung ferner Maskeninformationen zur Verwendung durch die Speichersteuerung 60 während der Antialiasingoperationen liefern.
  • Die Kantenschrittvorrichtung 52 empfängt die Kantengleichungen, wie dieselben, die in 4A gezeigt sind, von dem Graphikbeschleuniger 18. Unter Verwendung der Kantengleichungen schreitet die Kantenschrittvorrichtung inkremental entlang den Kanten des Primitivs unter Verwendung eines vorher berechneten Kantenpunkts und von vorher berechneten Kantenneigungsdaten fort, um die Kantenkoordinaten des Primitivs zu bestimmen. Gemäß einem Ausführungsbeispiel der Erfindung kann die Kantenschrittvorrichtung in entweder einer Aliasedbetriebsart oder einer Antialiasedbetriebsart arbeiten. Bei beiden Betriebsarten ist das Betriebsgrundverfahren identisch, lediglich die Eingabeparameter der Kantenschrittvorrichtung unterscheiden sich. Für Zwecke der Er klärung wird zunächst eine Einführung des Kantenschrittprozesses 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 6 als Kante 1, Kante 2 und Kante 3 gezeigt. Wie im vorhergehenden beschrieben, empfängt die Kantenschrittvorrichtung Kantenstart- und End-Informationen und Neigungs-Informationen 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 Kantenschrittvorrichtung von dem Start der Kante 1 (dort wo die Kante 1 die Abtastzeile mit der niedrigsten y-Koordinate schneidet; d. h. Punkt A in 6) zu der nächsten Pixelkoordinate 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 Ausführungsbeispiels einer Kantenschrittvorrichtung zum Implementieren sowohl von einer Aliased- als auch einer Antialiased-Betriebsart der vorliegenden Erfindung ist in 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 Kantengleichungsdaten von dem Graphikbeschleuniger 18 empfangen werden. Die Start-y-Komponente ist die y-Adresse, bei der die Kante 1 zuerst eine Abtatstzeile kreuzt. Die Stopp-y-Komponente ist die y-Komponente des Scheitelpunkts v1. Bei dem Dreiecksprimitivbeispiel von 6 ist der Start-y-Wert (d. h. die y-Komponente des Punkts A in 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-Komponente 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 Kantenschrittvorrichtung in einer Aliased- oder Antialiased-Betriebsart arbeitet, und eine Untergitteradresse, die im folgenden 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 verbleibenden möglichen Inkrementwerte, die in den Multiplexer 82 eingegeben werden, werden zum Unterstützen von Operationen in einer Antialiasingbetriebsart geliefert, wie es detaillierter 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-Komponente wird in einem Register 96 gespeichert. Die Start-x- und Neigung-x-Komponente werden als Teil der Kantengleichungsdaten 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-Koordinate, die der Start-y-Koordinate (d. h. die x-Komponente des Punkts A in 6) entspricht. Die Neigung-x ist die Neigung der Kante 1. Bei dem Beispiel von 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 Kantenschrittvorrichtungseinheit weitergeleitet wird. Die Start-x-Komponente wird durch den Multiplexer 95 weitergeleitet, wenn das Signal Neues-Primitiv aktiviert ist und in dem Register 94 gespeichert 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ünden addiert, die im folgenden beschrieben werden. Der aktuelle 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-Kantel (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, eingestellter 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 verschobenen aktuellen Y-Wert oder einen nicht-verschobenen aktuellen Y-Wert als einen Wert Kante1-Y<31:16> abhängig von dem Zustand des Aliasedbits auswählt. Folglich ist bei diesem Beispiel 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 Inkrementwert 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ächstes-X wird durch den Multiplexer 95 weitergeleitet und in das Register 94 geladen. Als Resultat wird ein zweites Koordinatenpaar (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 Kantenschrittvorrichtung 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 durchgefü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 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 6), und eine Kante-2-Koordinate (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 7 durchgeführt wird, durchgeführt, um den Nächstes-Y-Wert mit dem Stopp-Y-Wert zu vergleichen, der in einem Register ä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 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 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. Folglich wird die Logik in 7 in der Kante-2/3-Schrittvorrichtung durch Hinzufügen eines Multiplexers vor dem Startx-Register 94 (um zwischen einem Kante-2-Start-x und einem Kante-3-Start-x auszuwählen) und Hinzufügen eines Multiplexers 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-Koordinaten für jede Abtastzeile werden bei der Aliasedbetriebsart die Koordinaten zu der Weitenschrittvorrichtung 56 (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 dieser Abtastzeile abgedeckt werden.
  • 1 ist ein Beispiel der Wiedergabe von Primitiv 74 in der Aliasedbetriebsart, wobei die Pixelkoordinaten unter Verwendung der Kantenschritt- und der Weitenschritt-Operationen, die im vorhergehenden beschrieben sind, erzeugt wurden. Da lediglich die Pixelkoordinaten während des Weitenschreitens 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 aufweist. Folglich ist die Aliasedbetriebsart zum Wiedergeben von Primitiven nützlich, wenn eine hohe Leistung erforderlich ist. Wie in 1 gezeigt, sind jedoch Aliasedkanten häufig gezackt und visuell unbefriedigend.
  • Das Antialiasing unter Verwendung der Mehrpunktabtastverfahren 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 bestimmt wird. Wie im vorhergehenden beschrieben, werden das Kantenschreiten und das Abtastschreiten in der Aliasedbetriebsart 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 Kantenschreiten 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 Speichersteuerung durch die Weitenschrittvorrichtung weitergeleitet. Bei einem Ausführungsbeispiel der Erfindung wird die gleiche Hardware für das Kantenschreiten und das Weitenschreiten in sowohl der Aliased- als auch der Antialiasedbetriebsart vorteilhaft verwendet. Folglich können die Unterabtastungsinformation mit minimalen Änderungen zu der Kantenschrittvorrichtungs- und der Weitenschrittvorrichtungs-Hardware geliefert werden.
  • Bei einem Ausführungsbeispiel der Erfindung wird, bevor jede Abtastzeile in eine Mehrzahl von Unterabtastzeilen unterteilt 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 gebrochenen Pixeladressen handhaben, was die Hardware vereinfacht. Obwohl dieses Merkmal vorteilhaft ist, ist die Erfindung jedoch in dieser Hinsicht nicht begrenzt. Folglich muß das Skalieren nicht verwendet werden, und die Unterabtastzeilenkoordinaten können Bruchteilen von Pixelkoordinaten 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 (3) des Graphikbeschleunigerchips 18 durch Multiplizieren der Werte in der Transformierungsmatrix 32 (3) mit einem gewünschten Skalierwert durchgeführt. Es muß keine zusätzliche Funktionalität zu der Transformierungseinheit hinzugefü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 Erfindung 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 einem Ausführungsbeispiel der Erfindung wurde herausgefunden, daß die Verwendung von vier Abtastpunkten pro Pixel eine wesentlich verbesserte Bildqualität gegenüber dem Aliasedbild liefert, während die gute Leistung beibehalten wird.
  • Wie im vorhergehenden erörtert, ist bei einem Ausführungsbeispiel der Erfindung der Skalierfaktor (z. B. 8) größer als die Anzahl der Abtastpunkte (z. B. 4). Dies ist dahingehend 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 Plazieren 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 werden, 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 vorliegenden 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 Anwendungen, wie z. B. X-Windows, erfordern einen Bildpixeladreß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-Operationen unterstützt werden.
  • Obwohl ein Ausführungsbeispiel der vorliegenden Erfindung einen Skalierfaktor von 8 mit vier Unterabtastungen verwendet, ist die vorliegende Erfindung nicht auf diese Werte begrenzt. Es können vielmehr andere Skalierfaktoren und andere Unterabtastzahlen alternativ verwendet werden. Wie im vorhergehenden 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 gewünschten Leistung bestimmt.
  • Unter Bezugnahme nun auf 8 ist ein Beispielpixel 97 gezeigt. Vor dem Skalieren werden die Abtastzeilengrenzen des Pixels durch die Abtastzeile 0 und die Abtastzeile 1 definiert. Das Pixel 97 wird durch einen Faktor von 8 skaliert, 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 Unterabtastzeile 7 positioniert. Bei dem Beispiel von 8 sind die Unterabtastungen bei den folgenden Positionen positioniert: Unterabtastung 0 = (0, 0), Unterabtastung 1 = (7, 3), Unterabtastung 2 = (3, 5) und Unterabtastung 3 = (5, 7). Die Unterabtastungen können alternativ bei anderen Punkten entlang der Unterabtastzeilen plaziert werden.
  • Obwohl das Mehrpunktabtasten nun hinsichtlich einer Kantenschrittechnik beschrieben wird, kann die obige Skaliertechnik ferner verwendet werden, um die mathematischen Berechnungen bei anderen Verfahren von Antialiasoperationen zu vereinfachen, wobei die mathematischen Berechnungen minde stens auf ein Informationsstück, das sich auf das Bild bezieht, wirken, und wobei die Informationen gebrochene Komponenten umfassen. Beispiele der Informationen können Unterabtastpunkte 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 Gleitkommaberechnungen zu eliminieren.
  • Das Kantenschreiten wird auf dem skalierten Gitter für Antialiasedbilder auf eine Art und Weise durchgeführt, die ähnlich zu derselben ist, die unter Bezugnahme auf die 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 Abtastzeilenadresse bei einer Aliasedbetriebsart.
  • Unter Bezugnahme nun auf 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-Format sind die höchstwertigsten 16 Bit Ganzzahlen, und die niedrigstwertigsten 16 Bit stellen einen gebrochenen Abschnitt der Adresse dar. Eine darstellende Zuweisung von X- oder Y-Adreßregisterbits ist, wenn in einer Aliasedbetriebsart 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 gezeigt, wobei der Ganzzahlabschnitt der X- oder Y-Adresse eine 13-Bit-X- oder Y-Adresse 103a und eine 3-Bit-Untergitteradresse 103b umfaßt, wobei die 3-Bit-Untergitteradresse eine Adresse von einer der 8 Unterabtastzeilen des Pixels codiert. Das Kantenschreiten verwendet bei der Aliasedbetriebsart den Ganzzahlabschnitt der Y-Adreßregisterbits (31:16, in 9 gezeigt) als eine Basis für das inkremen tale Schreiten, während das Kantenschreiten bei der Antialiasedbetriebsart die gleichen Y-Bits <31:16> verwendet, wobei jedoch, wie es gezeigt wird, Untergitteradreßbits <18:16> verwendet werden, um einen Teil des Antialiasingprozesses zu steuern.
  • Obwohl es acht mögliche Untergitter-Y-Werte gibt, werden bei dem darstellenden Ausführungsbeispiel lediglich vier Unterabtastungen verwendet. Als ein Resultat werden lediglich vier Unterabtastzeilen, auf denen die Unterabtastungen liegen (wie in 8 gezeigt) während des Kantenschrittprozesses analysiert. Daher wird, wenn das Anfangs-Y-Adreß-Untergitterfeld 103b kein Untergitterwert ist, der einer Unterabtastzeile 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 inkrementiert, da dies die nächste Unterabtastzeile ist, die einen Abtastpunkt in dem Gitter aufweist.
  • Zurück bezugnehmend auf 7 ist eine Beschreibung darüber angegeben, wie bei einem Ausführungsbeispiel der Erfindung die Kantenschritthardware ferner für das Antialiasedkantenschreiten 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 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 Antialiasedbetriebsart 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-Komponente aus den Bits <28:16> des aktuellen Y-Werts gebildet.
  • Der aktuelle Y-Wert wird ferner zu dem Addierer 86 weitergeleitet. 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 beschrieben, anzeigt, ob ein Graphikgerät in der Aliasedbetriebsart arbeitet oder nicht) und basiert ferner auf der Anfangsuntergitteradresse. Wie im vorhergehenden beschrieben, addiert, wenn die Untergitteradresse nicht eine Unterabtastzeilenadresse 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 Unterabtastzeilenadresse und einem Delta-y zu der nächsten Unterabtastzeilenadresse ausgewählt. Beispielsweise ist, wenn die y-Komponente der Unterabtastzeilenadressen (0), (3), (5) und (7) ist, dann das Unterabtastzeilendelta von der Unterabtastzeile 0 zu der Unterabtastzeile 1 +3, von der Unterabtastzeile 1 zu der Unterabtastzeile 2 +2, von der Unterabtastzeile 2 zu der Unterabtastzeile 3 +2, und von Unterabtastzeile 3 zu der Unterabtastzeile 0 des nächsten Pixels +1.
  • Unter Verwendung des Beispiels von 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 Multiplexer 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 Weiterleiten 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 Neigungs-x-Werts bei dem Multiplizierer 91 mit dem Inkrementwert von +2 und durch Addieren der Resultate zu dem aktuellen X-Wert bei dem Addierer 98 bestimmt. Die Resultate von dem Addierer 98 werden zurück durch den Multiplexer 95 gespeist, und dieselben werden in einem Register 94 gespeichert, 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 Inkrementbetrag, der benötigt wird, um die nächste Unterabtastzeile (y=5) zu erhalten a+2. Der Prozeß fährt, wie im vorhergehenden 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ächstes-Y-Komponente von dem Addierer 86 mit den oberen 13 Bits des Kante1-Y-Werts von dem Register 80. Wie im vorhergehenden erwähnt, stellen die oberen 13 Bits die Abtastzeilenkomponente der Y-Adresse dar. Die zwei sind jedesmal ungleich, 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 weitergeleitet.
  • Während der Analyse des Pixels 99 werden vier Sätze von Kante1-X-, Kante1-Y-Koordinatenpaaren erzeugt, obwohl lediglich 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 Kantenunterabtastzeilenkoordinaten-x-y-Paar erzeugt wird, wird dasselbe zu der Sammellogik 54 (5) gespeist. Zusätzlich wird zusammen mit jedem Kantenunterabtastzeilenkoordinatenx-y-Paar die y-Untergitteradresse der Unterabtastzeile gesendet. Wie es detaillierter im folgenden beschrieben wird, wird die y-Untergitteradresse verwendet, um zwischen den x-, y-Koordinatenpaaren, die sich auf einer gültigen Unterabtastzeile (d. h. Unterabtastzeilen 0, 3, 5 oder 7) befinden, und denselben, die sich nicht auf einer gültigen Unterabtastzeile befinden (d. h. dieselben, die auf die Unterabtastzeilen 1, 2, 4 oder 6 fallen) befinden, zu unterscheiden.
  • Die Kantenschrittvorrichtung 52 umfaßt zusätzlich eine Zustandslogik 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 Unterabtastzeile 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 durchgefü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 Signal 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 weitergeleitet wird.
  • Sowie die Kantenschrittvorrichtung entlang der Unterabtastzeilen schreitet, wobei dieselbe x,y-Unterabtastzeilenkoordinatendaten sammelt, wird ein Zustandsbit, das anzeigt, ob die Unterabtastung auf der Unterabtastzeile abgedeckt ist, durch die Zustandslogik 84 (7) erzeugt. Die Zustandslogik 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 Multiplexer sind die x-Koordinaten der Unterabtastungen für jede Unterabtastzeile. Wie im vorhergehenden beschrieben, sind die Unterabtastkoordinaten bei dem darstellenden Ausführungsbeispiel (0, 0), (7, 3), (3, 5) und (5, 7). Die Auswahleingänge des Multiplexers 87 werden durch die Untergitteradreßbits <18:16> von 9 gesteuert, die den Unterabtastzeilenadreß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, aktiviert die Vergleichslogik die Zustandsleitung für alle Unterabtastzeilen, wobei die x-Koordinate der Kante kleiner ist als die Unterabtast-x-Koordinate (da alle gültigen Unterabtastungen 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 liegen werden. Die Kantenschrittlogik für die Kante 2/3 ist im wesentlichen gleich zu derselben, die in 6 für die Kante 1 gezeigt ist. Ein Unterschied besteht jedoch darin, daß ein invertierter Wert des Richtungssignals in die Zustandslogik 84 eingegeben wird, um sicherzustellen, daß die geeigneten Unterabtastpixel für die Kante 2/3 ausgewählt wer den.
  • Das Kantel-Zustandssignal wird verwendet, um den Multiplexer 100 zu steuern. Wenn die aktuelle x-Koordinate keine Unterabtastung abdeckt, dann wird das Kantel-Zustandssignal bewirken, daß der Multiplexer 100 einen modifizierten aktuellen x-Wert als die Kante1-X-Komponente auswählt, die zu der Sammellogik weitergeleitet wird. Die modifizierte x-Koordinate ist die nächste folgende Ganzzahl-x-Koordinate in der Richtung des Schreitens relativ zu der aktuellen x-Koordinate. 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 durchgeführt wird, anzeigt, daß die aktuelle x-Koordinate keinen Abtastpunkt auf der Unterabtastzeile abdeckt. Das Inkrementieren oder Dekrementieren der x-Koordinate wird vorgesehen, 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 beschrieben.
  • 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 Unterabtastzeilenberechnung weitergeleitet. Das Signal Neues-Y wird aktiviert, wenn alle Unterabtastzeilen in einer gegebenen Unterabtastzeile verarbeitet wurden. Das Signal Ende-Primitiv wird aktiviert, wenn das Abschreiten des Primitivs abgeschlossen ist.
  • Unter Bezugnahme nun auf 10 ist ein Blockdiagramm eines darstellenden Ausführungsbeispiels der Sammellogik umfassend einer Steuereinheit 104, eines Datenwegs 106, eines Y-Koordinatenpuffers 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 Unterabtastzeilenkantenkoordinatendaten 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 eingegeben werden können, während Daten aus der anderen Hälfte des Puffers gelesen werden.
  • Die Steuerlogik 104 empfängt die Unterabtastzeilen-Y-Koordinate, das Signal Neues-Y, das Signal Ende-Primitiv und ein CMD-Feld zum Identifizieren einer Funktion, die an den Pixeldaten 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 Schreitens zeigt. Die Steuereinheit umfaßt zwei Funktionseinheiten, eine Schreibsteuereinheit 104a und eine Lesesteuereinheit 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 Datenweg 106 weitergeleitet. Der Datenweg verarbeitet die Kante1-X- und Kante23-X-Koordinaten, um einen gesammelten Längenwert zu liefern. Die Schreibsteuerlogik steuert das anschließ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-Gruppe 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 einer der vier Unterabtastlinien und zeigt an, ob die Unterabtastzeile 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 Masken-Daten zu der Weitenschrittvorrichtung (WS) umfaßt. Insbesondere 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 Unterabtastzeileninformationen 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 Weitenschrittvorrichtungslogik 58 (5) steuert. Die Lesesteuerlogik 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 Weitenschrittvorrichtung zu steuern, wie es im folgenden detaillierter beschrieben ist.
  • Der Datenweg 106 umfaßt ähnlich eine Sammeleinheit 128 und eine Weiterleitungseinheit 130. Die Sammeleinheit 128 empfängt Kante1-X- und Kante23-X-Koordinaten-Daten von der Kantenschrittvorrichtung 52. Die Kante1-X- und Kante23-X-Koordinaten entsprechen den Koordinaten der Kante 1 und der Kante 2/3 für die Y-Unterabtastzeilenkoordinate, die verarbeitet 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 gespeichert.
  • 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 Abtastungen durch das Primitiv abgedeckt werden. Unter Bezugnahme nun auf 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" Regionen des Primitivs Bezug genommen wird.
  • Der belegte Startwert entspricht der x,y-Koordinate des Pixels, bei dem die belegte Region beginnt. Der belegte Längenwert entspricht der Anzahl von Pixeln, die entlang der Unterabtastzeile in der belegten Region abgeschritten werden. 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 weitesten in der Richtung des Schreitens für den Satz der vier Unterabtastzeilen ist. Unter Verwendung des Primitivs 150 von 11 als ein Beispiel und unter Verwendung der vier Unterabtastzeilen startend von Abtastzeile 2, sind die Kante-1-Pixel-x-Koordinaten, bei denen die Kante die Unterabtastzeilen 0, 1, 2 und 3 schneidet, 5, 4 bzw. 5, wobei die Pixel-X-Koordinate 4 auf der Unterabtastzeile 1 durch die Einstellogik in 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 Unterabtastzeilen-x-Koordinate liegt. Folglich ist, wenn der belegte Startwert für das Pixel (5, 2) bestimmt wird, die Pixel-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 abgeschnitten 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 Weiterleiten der gleichen x,y-Koordinate zu der Speichersteuerung mit unterschiedlichen Maskenbitsätzen die Leistung des Antialiasingsystems beeinflußt. Das Identifizieren jener Pixel, die sich innerhalb der belegten Region befinden, durch Vorsehen einer Maske, deren Bits alle gesetzt sind, reduziert die Anzahl der Übertragungen zwischen der Weitenschrittvorrichtung und der Speichersteuerung, da lediglich eine Speicherübertragung pro Pixel durchgeführt wird.
  • Unter Bezugnahme nun auf 12 ist ein Flußdiagramm gezeigt, 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 Startwert und der belegte Längenwert werden bestimmt, nachdem alle Unterabtastzeilen ausgewertet wurden.
  • Beispielsweise wird bei einem Schritt 200 das Richtungssignal 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 Verarbeitungswege 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 durchgefü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 Schrittrichtung wird der belegte Startwert entweder auf die Kante1-X-Koordinate oder auf die Kante23-X-Koordinate der Unterabtastzeile eingestellt, während der belegte Endwert als Gegenüber des belegten Starts initialisiert wird. Die belegten Startwerte werden auf diese Art und Weise initialisiert, um folgende Koordinaten zu identifizieren, die gröber (oder kliener) 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 empfangen. Bei einem Schritt 205 wird die Kante1-X-Koordinate mit dem belegten Startwert verglichen. Bei dem ersten Durchlauf durch die Schritte von 2 wird der Vergleich mit dem belegten Startwert durchgeführt, während bei den folgenden 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 bestimmen, ob die Kante23-X-Koordinate größer als der belegte Endwert 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 einem Schritt 211 wird die Gesamtlänge der Unterabtastzeile durch Subtrahieren der Kante23-X-Koordinate von der Kante1-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 Kantenschrittvorrichtung 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 Unterabtastzeilen 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 Kantenschrittvorrichtung 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 Weiterleitungseinheit 130 des Datenwegs 106 weitergeleitet.
  • Sowie eine Gruppe von Unterabtastzeilen gemäß dem Prozeß verarbeitet werden, der in 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 Unterabtastzeilen-Kante1-X- und Kante1-Y-Koordinatnepaar jeder Unterabtastzeile, das in den Puffern 108 und 110 gespeichert ist, gibt es potentiell drei Datenübertragungen, die für die Unterabtastzeile auftreten können. Bei allen Datenübertragungen werden die gleichen Kante1-X- und Kante1-Y-Werte weitergeleitet, 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 bezeichnet. Die Länge1- und Länge3-Werte können sich für jede Unterabtastzeile unterscheiden. Beispielsweise weist unter Bezugnahme wiederum auf 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 innerhalb der belegten Region befinden. Der Länge3-Wert für die Unterabtastzeile 0 ist 0, da sich keine Pixel auf der Unterabtastzeile 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änge2- und Länge3-Werte werden durch die Weiterleitungseinheit 130 (10) bestimmt, und dieselben werden verwendet, um den geeigneten Längenwert für jeden der drei Datenübertragungszyklen der Unterabtastzeile auf der Leitung WS-Länge zu der Weitenschrittvorrichtung 56 zu liefern.
  • Unter Bezugnahme nun auf 13 ist ein Blockdiagramm der Weiterleitungseinheit 130 als einen ersten Subtrahierer 220 umfassend gezeigt, zum Bestimmen des Länge1-Werts ansprechend 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 Subtrahierer 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 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änge_klgl_0 und Länge3_klgl_0 aktiviert und zu der Lesesteuerlogik 104b weitergeleitet, die dieselben zum Steuern der Übertragung der Pixeldaten zu der Weitenschrittvorrichtung verwendet, wie es unter Bezugnahme auf 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 erzeugen, das zu der Lesesteuerlogik 104b zum Anzeigen weitergeleitet wird, ob derselbe kleiner oder gleich Null ist. Der Wert der belegten Länge wird ferner zu dem Tester 227 gespeist, 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 Weitenschrittvorrichtung 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 Weitenschrittvorrichtung 56 durch die Lesesteuerung 104b weitergeleitet wird, wird der geeignete Längenwert als WS-Länge zu der Weitenschrittvorrichtung durch die Steuerlogik 229 ansprechend auf das Signal Mux-Auswah1<2:0> weitergeleitet, das von der Lesesteuerlogik 104b empfangen wird.
  • Unter Bezugnahme nun auf 14 ist ein Flußdiagramm vorgesehen, das den Betrieb einer Zustandsmaschine, die in einer 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 Unterabtastzeile nicht aktiviert ist; d. h. solange die Gesamtlänge der Unterabtastzeile größer als Null ist. Folglich wird bei einem Schritt 230 GÜLTIG<0> überprüft, um zu bestimmen, 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 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 Unterabtastzeile 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 Unterabtastzeile 1, wie in 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 15 beginnt ein Flußdiagramm, das das Verarbeiten jeder Unterabtastzeile durch den Prozeß von 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 Unterabtastzeilen 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 Unterabtastzeilen 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 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 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änge1_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
    Figure 00460001
    Figure 00470001
  • Das WS-CMD wird verwendet, um es der Weitenschrittvorrichtung zu ermöglichen, eine geeignete X-Koordinatenadresse auszuwählen, um dieselbe zu der Speichersteuerung 60 weiterzuleiten. 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, vorher angesammelte E1X-, Farbe-, Z- und Textur-Werte und nicht WS-E1X-, Farbe-Z- und Textur-Werte, die durch die Sammellogik geliefert werden, zu verwenden.
  • Folglich steuert dann in dem Flußdiagramm von 15 und unter Verwendung des Beispiels von 11 bei der Abtastzeile 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 14 verarbeitet wird.
  • Bei einem Schritt 255 wird bestimmt, ob die Maske 0001 gleicht. Das Vergleichen des Maske-Werts mit 0001 identifiziert, 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 gesendet. 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-Koordinate 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 überprüft wird, um zu bestimmen, ob es Pixel in Länge3 der Unterabtastzeile 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 Weitenschrittvorrichtung gesendet. Der Maske-Wert, der gesendet wird, wird gemäß dem Verarbeitungszustand des Prozesses von 14 eingestellt, der die Routine von 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 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 gesendet, 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 Sammellogik 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 Weitenschrittvorrichtung 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 Abtastzeilenadresse 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 Speichersteuerung 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 eingestellten Maskenbits das Verhalten des Antialiasingsystems. Das Identifizieren jener Pixel, die sich innerhalb der belegten Region befinden, durch Vorsehen einer Maske, deren Bits alle eingestellt sind, reduziert die Anzahl der Übertragungen 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 Ausführungsbeispiel der Erfindung verwendet wird, bei dem dieselbe mit einer Speichersteuerung 60 verwendet wird, die implementiert ist, wie es in der '350er Patentanmeldung, die oben zitiert ist, beschrieben ist. Wie in der Patentanmeldung erörtert, kann die Speichersteuerung 60 Pixel mit entweder lediglich einem eingestellten Bit in der Maske derselben 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 eingestellt sind, werden die Pixelkoordinaten einmal für jeden Maskenbitsatz, der eingestellt ist, von der Weitenschrittvorrichtungslogik zu der Speicherungssteuerung zwei- oder dreimal weitergeleitet. Wenn jedoch alle vier Bits eingestellt 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 16 ist ein Blockdiagramm der Weitenschrittvorrichtungslogik 56 gezeigt. Die Weitenschrittvorrichtung 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 Richtungssignal 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 (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 Inkrementierens 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 Weitenschrittvorrichtung empfangen werden, werden Werte für die Steuerungssignale Laden-Neue-Daten, Laden-Neue-Maske, Ansammeln-Belegt und Auswahl<1:0> durch die Zustandsmaschine 263 erzeugt. 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 wiederum auf Tabelle 1 zeigt der Zustand von WS-CMD an, welche x-Koordinate die Weitenschrittvorrichtung als eine Startkoordinate 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 anzeigt, 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 ausgewä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 anzeigt, 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 verarbeitet wurde, wird die Länge3-X-Koordinate durch den Multiplexer 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 Eingangssignal 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 weiterleitet. 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 auszuwä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, stattdessen gemäß einem Deltafarb- und Deltatextur-Parameter inkrementieren, der als Teil der Kantengleichung in der Software 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 11 beschrieben. Während des ersten Weitenschrittzyklusses, wie im vorhergehenden beschrieben, 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 Multiplexer 265 weitergeleitet, in das Register 262 geladen und als Pixel-X-Koordinate ausgegeben wird. Die Pixel-X-Koordinate 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 11 gleicht der empfangene WS-CMD zum Verarbeiten der belegten Region der Unterabtastzeile 0 AA_CMD_1. Der Befehl AA_CMD_1 bewirkt, daß die Signale Laden-Neue-Maske, Laden-Neue-Daten und Ansammeln-Belegt aktiviert werden. Wie oben erwähnt, bewirkt der AA_CMD_1-Wert für den WS-CMD, daß die Fortfahren-X-Koordinate für das Schreiten ausgewählt wird. Die Fortfahren-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 15 beschrieben ist. Die Fortfahren-X-Koordinate wird weiter für jedes Pixel in der belegten Region 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 zugeordnete Maske zu der Speichersteuerung weitergeleitet wurden, ist das Abschreiten der belegten Region abgeschlossen, und der gespeicherte Delta-X-Wert ist gleich 2.
  • Bei dem Beispiel von 11 fährt, sobald die belegte Region 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-Koordinate 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 Verarbeitungszustand des Prozesses von 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 weitergeleitet, da das Ausführungsbeispiel der Speichersteuerung, 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, identifiziert werden können und schnell zu dem Speicher zum Verarbeiten ü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 beschrieben, die es ermöglichen, daß ein Antialiasing mit lediglich geringen Modifikationen an der existierenden Hardware unterstützt wird. Durch Unterteilen einer Abtastzeile in eine Mehrzahl von Unterabtastzeilen und Durchführen eines Kantenabschreitens entlang der Unterabtastzeilengrenzen können Unterabtastinformationen während eines herkömmlichen Kantenschrittprozesses unter Verwendung einer herkömmlichen Hardware ausfindig gemacht werden.

Claims (10)

  1. Verfahren zum Bestimmen eines Prozentsatzes mindestens eines Pixels (73) auf einem Graphiksystemanzeigebildschirm, 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 Pixel definieren, wobei jeder der Mehrzahl von Unterabtastpunkten auf einer entsprechenden der Mehrzahl von Unterabtastzeilen positioniert ist; (b) Schreiten zwischen der Mehrzahl von Unterabtastzeilen des mindestens einen Pixels (73); (c) Bestimmen bei jeder der Mehrzahl von Unterabtastzeilen, 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 Pixels, das durch das Primitiv (74) abgedeckt ist, basierend auf der Anzahl der Mehrzahl von Unterabtastpunkten 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 Primitivs (74) von x- und y-Koordinaten jedes Schnittpunktes, 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 Unterabtastpunkt, der auf einer der Mehrzahl von Unterabtastzeilen positioniert ist, durch das Primitiv (74) abgedeckt ist.
  3. Verfahren gemäß Anspruch 2, bei dem der Schritt des Bestimmens der x- und y-Koordinaten jedes Schnittpunktes ferner folgende Schritte aufweist: Bestimmen mit Software von Startkoordinaten und Neigungen für jede Kante des Primitivs; Schreiten entlang jeder der Mehrzahl von Kanten beginnend bei den Startkoordinaten für die eine der Mehrzahl von Kanten; und Bestimmen der x-Koordinate für jede der Kanten bei jeder y-Koordinate, die einer der Mehrzahl von Unterabtastzeilen 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 Unterabtastzeilen 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 Unterabtastungen eine nicht-regelmäßige Struktur in dem Pixel bilden.
  6. Kantenschrittvorrichtung (52) bei einem Graphiksystem (10), das ein Primitiv (74) wiedergeben kann, zum Erzeugen von Koordinatendaten zum Anzeigen von Pixeln auf einem Anzeigegerät, die das Primitiv (74) darstellen, wobei die Kantenschrittvorrichtung (52) Kantengleichungsdaten (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 Merkmal aufweist: ein Paar von Addierern (86, 98), einer für X-Koordinaten- und einer für Y-Koordinaten-Operationen, zum Inkrementieren einer der ersten Endpunktkoordinaten durch Inkrementwerte, um Kanten-x- bzw. Kanten-y-Koordinaten der mindestens einen Kante des Primitivs, das wiedergegeben wird, zu liefern, wobei der Inkrementwert kleiner als eine Größe eines Anzeigepixels bei einer Betriebsart ist.
  7. Kantenschrittvorrichtung (52) gemäß Anspruch 6, bei der die Inkrementwerte aus einer ersten Gruppe von Inkrementwerten ausgewählt (81) werden, wenn die Kantenschrittvorrichtung in einer Aliasedbetriebsart arbeitet, und dieselben aus einer zweiten Gruppe von Inkrementwerten ausgewählt werden, wenn die Kantenschrittvorrichtung 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 Kantenschrittvorrichtung (52) in der Antialiasedbetriebsart arbeitet, und bei der die zweite Gruppe von Inkrementwerten Inkremente zum Schreiten zwischen der Mehrzahl von Unterabtastzeilen aufweist.
  9. Kantenschrittvorrichtung gemäß einem beliebigen der Ansprüche 6–8, die ferner eine Einrichtung zum Bestimmen 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 Pixel, das durch ein Primitiv abgedeckt ist, ferner folgende Merkmale aufweist: eine Einrichtung (21) zum Bestimmen für jede Kante einer x-Richtung, die eine Richtung hin zu einer gegenüberliegenden Kante des Primitivs anzeigt; und einen Komparator (89), der gekoppelt ist, um die Kanten-x- und Kanten-y-Koordinaten für jede Unterabtastzeile 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 DE19827726A1 (de) 1999-01-07
DE19827726B4 true 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
EP2199973A3 (de) * 1997-06-09 2010-09-08 Seiko Epson Corporation Bildverarbeitungsgerät und -Verfahren, und Bildauswertungsvorrichtung und -Verfahren
US6167166A (en) * 1998-03-23 2000-12-26 Xerox Corporation Method to enable the recognition and rendering of antialiased images
US6137918A (en) * 1998-03-23 2000-10-24 Xerox Corporation Memory efficient method and apparatus to enable tagging of thin antialiased lines
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
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
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
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
CN100358043C (zh) * 2000-12-20 2007-12-26 皇家菲利浦电子有限公司 菜单生成方法和记录载体的记录装置
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
EP3401794A1 (de) 2002-01-08 2018-11-14 Seven Networks, LLC Verbindungsarchitektur für ein mobiles netzwerk
JP4193990B2 (ja) * 2002-03-22 2008-12-10 ディーリング,マイケル,エフ. スケーラブルな高性能3dグラフィックス
US7242713B2 (en) * 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
US7495672B2 (en) * 2002-12-20 2009-02-24 Telefonaktiebolaget Lm Ericsson (Publ) Low-cost supersampling rasterization
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
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
AU2003903445A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha Optimising compositing calculations for a run of pixels
AU2004202826B2 (en) * 2003-06-26 2007-09-06 Canon Kabushiki Kaisha Antialiasing Compositing in Graphic Object Rendering
AU2003903448A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha A method for tracking depths in a scanline based raster image processor
US7487193B2 (en) * 2004-05-14 2009-02-03 Microsoft Corporation Fast video codec transform implementations
WO2006045102A2 (en) 2004-10-20 2006-04-27 Seven Networks, Inc. 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
US8115783B2 (en) * 2008-01-31 2012-02-14 Arm Norway As Methods of and apparatus for processing computer graphics
US8044971B2 (en) * 2008-01-31 2011-10-25 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 계명대학교 산학협력단 안티 에일리어싱 방법 및 장치
WO2011126889A2 (en) 2010-03-30 2011-10-13 Seven Networks, Inc. 3d mobile user interface with configurable workspace management
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
GB2500333B (en) 2010-07-26 2014-10-08 Seven Networks Inc Mobile application traffic optimization
US9077630B2 (en) 2010-07-26 2015-07-07 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
US8166164B1 (en) 2010-11-01 2012-04-24 Seven Networks, Inc. Application and network-based long poll request detection and cacheability assessment therefor
WO2012061437A1 (en) 2010-11-01 2012-05-10 Michael Luna Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
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
US9330196B2 (en) 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
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
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
GB2499534B (en) 2010-11-01 2018-09-19 Seven Networks Llc Caching adapted for mobile application behavior and network conditions
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
GB2500327B (en) 2010-11-22 2019-11-06 Seven Networks Llc Optimization of resource polling intervals to satisfy mobile device requests
GB2495463B (en) 2010-11-22 2013-10-09 Seven Networks Inc Aligning data transfer to optimize connections established for transmission over a wireless network
CN102486870B (zh) * 2010-12-01 2014-02-12 财团法人资讯工业策进会 绘图系统及其像素更新方法
GB2501416B (en) 2011-01-07 2018-03-21 Seven Networks Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
WO2012145533A2 (en) 2011-04-19 2012-10-26 Seven Networks, Inc. Shared resource and virtual resource management in a networked environment
WO2012149434A2 (en) 2011-04-27 2012-11-01 Seven Networks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
GB2504037B (en) 2011-04-27 2014-12-24 Seven Networks Inc Mobile device which offloads requests made by a mobile application to a remote entity for conservation of mobile device and network resources
WO2013015994A1 (en) 2011-07-27 2013-01-31 Seven Networks, Inc. Monitoring mobile application activities for malicious traffic on a mobile device
CN103108197A (zh) 2011-11-14 2013-05-15 辉达公司 一种用于3d视频无线显示的优先级压缩方法和系统
US8868753B2 (en) 2011-12-06 2014-10-21 Seven Networks, Inc. System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
US9009250B2 (en) 2011-12-07 2015-04-14 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
WO2013086447A1 (en) 2011-12-07 2013-06-13 Seven Networks, Inc. Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
EP2792188B1 (de) 2011-12-14 2019-03-20 Seven Networks, LLC Mobilfunknetzbenachrichtigung und nutzungsanalysesystem sowie verfahren mittels aggregation von daten in einem verteilten verkehrsoptimierungssystem
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
US9832095B2 (en) 2011-12-14 2017-11-28 Seven Networks, Llc Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
GB2499306B (en) 2012-01-05 2014-10-22 Seven Networks Inc Managing user interaction with an application on a mobile device
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
US9326189B2 (en) 2012-02-03 2016-04-26 Seven Networks, Llc 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
US10263899B2 (en) 2012-04-10 2019-04-16 Seven Networks, Llc Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices 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
US9307493B2 (en) 2012-12-20 2016-04-05 Seven Networks, Llc Systems and methods for application 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
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US9466115B2 (en) * 2013-03-15 2016-10-11 Nvidia Corporation Stencil then cover path rendering with shared edges
US9633469B2 (en) * 2013-03-15 2017-04-25 Nvidia Corporation Conservative rasterization of primitives using an error term
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0430501A2 (de) * 1989-11-17 1991-06-05 Digital Equipment Corporation System und Verfahren zum unverfälschten Polygonenzeichnen
US5123085A (en) * 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons

Family Cites Families (9)

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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0430501A2 (de) * 1989-11-17 1991-06-05 Digital Equipment Corporation System und Verfahren zum unverfälschten Polygonenzeichnen
US5123085A (en) * 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BARKANS, A.C.: Hardware-Assisted Polygon Antialiasing IEEE Computer Graphics and Applications, January 1991, S. 80-88 *
FOLEY, J.D. et al.: Computer Graphics- Principles and Practice, Addison-Wesley, 1996, S. 882-887 *
FOLEY, J.D.; et al.: Computer Graphics- Principles and Practice, Addison-Wesley, 1996, S. 882-887

Also Published As

Publication number Publication date
JPH1186007A (ja) 1999-03-30
GB2327178A (en) 1999-01-13
US6057855A (en) 2000-05-02
GB9814268D0 (en) 1998-09-02
GB2327178B (en) 2002-03-20
DE19827726A1 (de) 1999-01-07
JP2003271987A (ja) 2003-09-26

Similar Documents

Publication Publication Date Title
DE19827726B4 (de) Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung
EP1175663B1 (de) Verfahren zur rasterisierung eines graphikgrundelements
DE60031337T2 (de) Geräteabhängige Darstellung von Zeichen
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE60126967T2 (de) Verfahren und Vorrichtung für Anti-Aliasing durch Überabtastung
DE69932059T2 (de) Trilineare texturfilterung mit optimiertem speicherzugriff
DE69729916T2 (de) Dynamische bildgrössenänderung
DE19807013B4 (de) Volumetrisches Vorabschneidungsverfahren, das eine minimale Anzahl von Abtastpunkten durch ein Volumen gewährleistet
DE19709220A1 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
DE19619288A1 (de) System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern
DE3315148C2 (de)
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE3518416A1 (de) Speicher- und prozessorsystem mit schnellem zugriff zur rasteranzeige
DE19713654B4 (de) Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben
EP0654778B1 (de) Verfahren zur Textdarstellung auf Bildschirmgeräten
DE60122333T2 (de) Verfahren und System zur kachelweisen Bildwiedergabe
DE60008867T2 (de) Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
DE19620263B4 (de) Datensynchronisation zwischen einer Mehrzahl von asynchronen Datenaufbereitungen
DE19806985A1 (de) Organisationsverfahren für volumetrische Daten, das effiziente Cache-Aufbereitungsbeschleunigungen und einen effizienten Graphik-Hardwareentwurf ermöglicht
DE69924592T2 (de) Hochauflösende Rasterpufferarchitektur zur Unterdrückung von Alias-Störungen
DE4100691B4 (de) Verfahren zur Darstellung eines dreidimensionalen Modells
DE112011105126T5 (de) Texturkartierungsvorrichtung
DE3508606C2 (de)
DE69927269T2 (de) Vorrichtung und verfahren zum erkennen und erzeugen grafischer elemente

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