DE69312505T2 - Polygonaufrasterung - Google Patents
PolygonaufrasterungInfo
- Publication number
- DE69312505T2 DE69312505T2 DE69312505T DE69312505T DE69312505T2 DE 69312505 T2 DE69312505 T2 DE 69312505T2 DE 69312505 T DE69312505 T DE 69312505T DE 69312505 T DE69312505 T DE 69312505T DE 69312505 T2 DE69312505 T2 DE 69312505T2
- Authority
- DE
- Germany
- Prior art keywords
- pixel
- edge
- triangle
- span
- pixels
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 45
- 230000015654 memory Effects 0.000 claims description 11
- 230000000873 masking effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 29
- 239000013598 vector Substances 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 241001253201 Pineda Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010894 electron beam technology Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Description
- Die vorliegende Erfindung betrifft allgemein Computergraphiken und insbesondere ein System und ein Verfahren zum Bestimmen, weiche Pixel als Teil eines Dreieckes zum Rastern von Polygonen einzuordnen sind.
- Rasteranzeigen werden gemeinhin bei Computergraphik-Systemen benutzt. Diese Anzeigen speichern Graphikbilder als eine Matrix von Bildelementen oder "Pixeln" (auch als PELs bezeichnet), wobei die das jeweilige Pixel darstellenden Daten in einem Anzeigepuffer gespeichert werden. Diese Daten bestimmen die Anzeigeattribute für jedes Pixel am Bildschirm, wie Intensität und Farbe des Pixels. Aus dem Anzeigepuffer wird ein Gesamtbild ausgelesen und auf dem Bildschirm aufgezeichnet durch aufeinanderfolgendes Auslesen von horizontalen Zeilen von Pixeldaten oder "Abtastzeilen" und Benutzen dieser Daten zum Steuern von einem oder von mehreren Elektronenstrahl(en) (selbstverständlich können auch andere Anzeigetechnologien, wie LCDs, verwendet werden). Dieses Verfahren des Auslesens von Pixeldaten aus dem Anzeigepuffer Zeile um Zeile wird bei jedem Durchgangszyklus wiederholt.
- Rasteranzeige-Systeme benutzen gemeinhin Polygone als Grundbausteine oder "Primitive" zum Zeichnen komplexerer Abbilder. Dreiecke sind ein gemeingebräuchliches Grundprimitiv für Polygon-Zeichensysteme, da ein Dreieck das einfachste Polygon ist und kompliziertere Polygone immer durch einen Satz von Dreiecken dargestellt werden können. Das Verfahren zum Zeichnen von Dreiecken und anderen geometrischen Primitiven an dem Schirm ist als "Rastern" bekannt. Das Rastern von Polygonen ist sowohl bei zweidimensionalen wie bei dreidimensionalen Graphik- Systemen ein fundamentales Problem. Die meisten Techniken, die auf das Rastern von Dreiecken angewendet werden, können für ein Polygon mit einer beliebigen Anzahl von Seiten verallgemeinert werden.
- Ein wichtiger Teil des Rasterns enthält das Bestimmen, welche Pixel in ein gewisses Dreieck fallen. Raster-Systeme schreiten allgemein von Pixel zu Pixel weiter und bestimmen, ob sie das jeweilige Pixel als Teil des Dreieckes "einordnen" (d.h. in einen Rahmenpuffer oder eine Pixelkarte einzeichnen). Dies bestimmt wiederum, wie die Daten bei der Darstellung jedes Pixels in den Anzeigepuffer einzusetzen sind. Verschiedene Durchquerungs-Algorithmen wurden entwickelt, um sich in einer solchen Weise von Pixel zu Pixel zu bewegen, daß alle Pixel innerhalb des Dreieckes überstrichen werden.
- Rasterungs-Systeme stellen manchmal ein Dreieck als einen Satz von drei Kantenfunktionen dar. Eine Kantenfunktion ist eine lineare Gleichung, die eine gerade Linie repräsentiert, die dazu dient, eine zweidimensionale Ebene zu unterteilen. Kantenfunktionen klassifizieren jeden Punkt innerhalb der Ebene als in einen von drei Bereichen fallend: den Bereich zur "Linken" der Linie, den Bereich zur "Rechten" der Linie oder den Bereich, den die Linie selbst darstellt. Die Art von Kantenfunktion, die nun diskutiert wird, hat die Eigenschaft, daß Punkte zur "Linken" der Linie einen größeren Wert als Null besitzen, Punkte zur "Rechten" einen Wert kleiner als Null und genau auf der Linie befindliche Punkte einen Wert Null besitzen (dies ist in Fig. 1 zu sehen). An Rasterungs-Systeme angewendet, wird die zweidimensionale Ebene durch den Graphik-Schirm und werden die Punkte durch die einzelnen Pixel dargestellt, und die Kantenfunktion dient dazu, den Graphik-Schirm zu unterteilen.
- Dreiecke werden durch die Vereinigung von drei Kanten geschaffen, von denen jede durch eine Kantenfunktion dargestellt ist. Es ist möglich, komplexere Polygone durch Benutzen voil "Boole'schen Kombinationen von mehr als drei Kanten zu definieren.
- Da das Rastern von Dreiecken das Bestimmen umfaßt, welche Pixel wo einzuordnen sind, wird allgemein eine Tie-Break-Regel angewendet auf Pixel, die genau an irgendeiner der Kanten liegen, um zu bestimmen, ob die Pixel als innerhalb oder außerhalb des Dreieckes liegend zu betrachten sind.
- Jedem Pixel ist ein Satz von Kantenvariablen (e&sub0;, e&sub1;, e&sub2;) zugeordnet, welche, wie in Fig. 2 gezeigt, den mit Vorzeichen versehenen Abstand zwischen dem Pixel und den drei jeweiligen Kanten darstellen&sub4; Der Wert jeder Kantenvariablen wird für ein bestimmtes Dreieck durch Bewerten der drei Kantenfunktionen f&sub0;(x,y), f&sub1;(x,y) und f&sub2;(x,y) für den Pixelort bestimmt. Kantenvariable können Bruchwerte besitzen, da eine Kante zwischen zwei benachbarte Pixel fallen kann. Es ist deshalb vorteilhaft, Kantenvariable in einem Festkomma-Zweierkomplement-Ganzzahlenformat darzustellen. Es ist zu bemerken, daß bestimmt werden kann, ob ein Pixel in ein Dreieck fällt oder nicht durch Ansehen der Vorzeichen von e&sub0;, e&sub1; und e&sub2;, wenn es bekannt ist, ob jede Kante eine "rechte" Kante oder eine "linke" Kante des Dreieckes ist. Man bemerke, daß die Vorzeichen der Kanten ggf. umgekehrt werden können.
- Beim Bestimmen, welche Pixel innerhalb eines Dreieckes einzuordnen sind, errechnen typische Rasterungs-Systeme die Werte der Kantenvariablen (e&sub0;, e&sub1;, e&sub2;) für einen bestimmten Satz von drei Kantenfunktionen und eine bestimmte Pixelposition, und benutzen dann einen Satz von Zuwachswerten (Δelinks, Δerechts, usw.), um die Werte der Kantenvariablen für benachbarte Pixel zu bestimmen. Das Rasterungs-System durchquert das Dreieck mit Hinzufügen der Zuwachswerte zu den laufenden Werten, wenn ein Durchquerungs-Algorithmus von Pixel zu Pixel fortschreitet. Ein Pixel, das sich gemäß den drei Kantenvariablenwerten des Pixels (und ggf. von Tie-Break-Regeln) innerhalb der Begrenzungen des Dreieckes befindet, wird eingeordnet.
- Systeme mit einfacher Hardware führen diese Berechnungen allgemein für jedes Pixel separat aus, während komplexere Systeme mit mehr arithmetischen Einheiten die Werte für mehrere Pixel gleichzeitig errechnen können. Obwohl Parallelauswertungen der Kantenvariablen für mehrere Pixel ein schnelleres Rastern ergeben, bleibt der Vorgang begrenzt durch die Notwendigkeit, die Kantenvariablen für jedes überquerte Pixel separat zu bestimmen. Eine Überprüfung einer Kantenfunktion, die benutzt werden kann, um Dreiecke zu rastern, und von verschiedenen Algorithmen zum Durchqueren des Dreieckes ergibt ein besseres Verständnis des vorstehend beschriebenen Verfahrens. Eine detaillierte Beschreibung der Verwendung von Kantenfunktionen und Durchquerungs-Algorithmen kann gefunden werden in dem Aufsatz "A Parallel Algorithm for Polygon Rasterization", von J. Pineda, Computer Graphics 22(4):17-20 (1988), der hier zu Vergleichszwecken angeführt wird. Wesentliche Abschnitte dieses Aufsatzes von Pineda werden nachstehend zur Bequemlichkeit für den Leser wiedergegeben.
- Man betrachte, wie in Fig. 3 gezeigt, einen durch zwei Punkte (X,Y) und (X+dX,Y+dY) definierten Vektor und die Linie, die durch die beiden Punkte hindurchgeht. Wie vorher angegeben, kann dieser Vektor und die Linie benutzt werden, um den zweidimensionalen Raum in drei Bereiche zu unterteilen: alle Punkte zur "Linken" der Linie, alle zu ihrer "Rechten" und alle genau auf der Linie befindlichen.
- Die Kante f(x,y) kann definiert werden als:
- f(x,y) = (x-X)dY - (y-Y)dX
- Diese Fünktion hat die nützliche Eigenschaft, daß ihr Wert auf die Position des Punktes (x,y) relativ zu der durch die Punkte (X,Y) und (X+dx, Y+dY) definierten Kante bzogen ist:
- f(x,y) > 0, falls (x,y) auf der "rechten" Seite
- f(x,y) = 0, falls (x,y) genau an der Linie
- f(x,y) < 0, falls (x,y) auf der "linken" Seite.
- Um sich selbst zu überzeugen, daß dies gilt, wird der Fachmann auf diesem Gebiet erkennen, daß die für f(x,y) gegebene Formel die gleiche ist, wie die Formel für die Größe des Vektorproduktes für Vektor von (X,Y) nach (X+dx, Y+dY) und den Vektor von (X,Y) nach (x,y). Nach den gut bekannten Eigenschaften von Vektorprodukten ist die Größe Null, falls die Vektoren kollinear sind, und wechselt das Vorzeichen, wenn die Vektoren von der einen Seite zur anderen überschreiten.
- Diese Funktion wird gemeinhin durch bestehende Raster-Systeme benutzt, da sie inkremental durch einfache Addition berechnet werden kann:
- f(x+1,y) = f(x,y) + dY
- f(x,y+1) = f(x,y) + dX
- Die Kantenfunktion wird auf den Fehlerwert oder "die Zeichensteuervariable" (draw control variable DCV) in Bresenham- Linienzieh-Algorithmen bezogen, die beschrieben sind in "Algorithm for Computer Control of a Digital Plotter", J. Bresenham, IBM Systems Journal 4(1):25-30 (1965). Der Unterschied besteht darin, daß die Bresenham-Linienzieh-Algorithmen den DCV-Wert nur bei Pixeln innerhalb von einem halben Pixel der Zeile aufrechterhalten, während f(x,y) für alle Pixel in der Ebene definiert ist. Zusätzlich unterscheidet sich der Wert der DCV bei einem bestimmten Punkt von f(x,y) durch einen konstanten Versatz. Auf jeden Fall ist die Begründung, daß beide Algorithmen funktionieren, grundsätzlich die gleiche.
- Diese gleiche Eigenschaft von f(x,y) wird durch das Graphiksystem benutzt, das in dem "PIXELPLANES"-Graphiksystem nach dem Aufsatz von Fuchs u.a., VLSI Design (3rd Quarter):20-28 (1981) beschrieben ist, wo diese Funktion parallel für alle Pixel im Rahmenpuffer durch einen Multipliziererbaum errechnet wird.
- Es wird gegenwärtig bei verschiedenen Raster-Systemen eine Vielheit unterschiedlicher Durchquerungs-Algorithmen in dem Zuordnungsvorgang benutzt. Jeder Algorithmus kann benutzt werden, für den garantiert ist, das er alle Pixel innerhalb des Dreieckes überdeckt. Fig. 4 zeigt zwei einfache Ausführungen von Durchquerungs-Algorithmen. Das Durchqueren des Begrenzungskastens ist vielleicht die einfachste Strategie, wie in Fig. 4(a) gezeigt, jedoch im allgemeinen nicht die wirksamste. Ein schlauerer Algorithmus nach Fig. 4(b) geht zur nächsten Durchquerungs-Zeile weiter, wenn er von der Kante eines Dreieckes weg"wandert". Eine Komplizierung des schlaueren Algorithmus ist, daß, wenn er zur nächsten Zeile weitergeht, er möglicherweise zu einem Punkt innerhalb des Dreieckes übergehen kann. In diesem Fall muß der Algorithmus nach der Außenseite der Kante suchen, bevor er die nächste Abtastzeile beginnt. Ein Beispiel dieses Problems ist an der oberen rechten Kante des Dreieckes in Fig. 5 gezeigt.
- Eine Verwirklichung eines noch schlaueren Algorithmus ist in Fig. 6 gezeigt. Er geht von dem Ausgangspunkt nach unten weiter und arbeitet seinen Weg von einer Mittellinie nach außen ab. Der Vorteil dieses Algorithmus gegenüber dem einfacheren Algorithmus besteht darin, daß er niemals nach einer Kante suchen und dann den gleichen Weg zurückgehen muß. Der zugehörige Nachteil ist, daß der Interpolator-Zustand für die Mittellinie gespeichert werden muß, während die äußeren Punkte überschritten werden, da der Interpolator immer an der Mittellinie gestartet werden muß. Man bemerke, daß sich die "Mittel"Linie an der Unterseite verschiebt, wenn sie außerhalb des Dreieckes endet.
- Es gibt eine Anzahl unterschiedlicher Wege, die Pixel in dem Dreieck zu durchqueren. Die Wirksamkeit jedes Verfahrens hängt von dem bestimmten einzuordnenden Dreieck ab. Viele Systeme organisieren Pixel in dem Speicher in rechtwinkligen Blöcken. Einige dieser Systeme können diese Blöcke in einem schnellen Speicher schnellpuffern (cachen) ähnlich der Weise, wie eine CPU Daten und Befehle schnellpuffert. Bei Verwendung im Zusammenhang mit einem angemessenen Durchquerungs-Algorithmus kann dieses Organisieren das Verhalten verbessern, indem die Speicherzugriffe minimal gehalten werden.
- Ohne Rücksicht auf die Größe der verfügbaren Hardware oder das Verfahren zum Durchqueren der Pixel innerhalb des Dreieckes müssen mindestens zwei Zusatzliche Betätigungen pro Pixel ausgeführt werden, wenn das vorangehend beschriebene Pixel-um- Pixel-Verfahren benutzt wird. Diese drei Zusätze entsprechen den drei Zuwachswerten, die den Werten e&sub0;, e&sub1; und e&sub2; der Kantenvariablen hinzugefügt werden müssen, um die jeweiligen Werte für ein benachbartes Pixel zu bestimmen, wie oben diskutiert. So ist bei den gegenwärtigen Raster-Techniken der Wirkungsgrad begrenzt durch die Anzahl von Rechenvorgängen pro Pixel, die erforderlich sind, ob das Pixel in das Dreieck fällt oder nicht. Dieser begrenzte Wirkungsgrad wirkt sich zur Verlangsamung von Graphikanzeigesystemen aus. Es ist deshalb ein Verfahren zum Einordnen von Dreiecken erforderlich, das die Anzahl der pro Pixel erforderlichen Rechenvorgänge herabsetzt.
- Die vorliegende Erfindung, wie sie in den Ansprüchen 1 und 6 dargestellt ist, schafft ein System bzw. ein Verfahren zum Rastern von Polygonen. Jede Ecke des Polygons (z.B. eines Dreieckes) wird durch eine Linearkantenfunktion dargestellt, die jedes Pixel in der Ebene des Polygons klassifiziert. Insbesondere befinden sich Pixel mit einem Wert größer als Null an einer Seite einer Kante und mit einem Wert kleiner als Null an der gegenüberliegenden Seite einer Kante. Jedem Pixel innerhalb der Polygonebene ist ein Satz von Kantenvariablen zugeordnet, die den mit Vorzeichen versehenen Horizontalabstand zwischen dem Pixel und den jeweiligen Kanten des Polygons darstellen. Ein Pixel wird eingeordnet aufgrund des Wertes seiner Kantenvariablen, die mit Bezug auf die Kantenfunktionen erzeugt werden.
- Die vorliegende Erfindung erlaubt es, die Kantenfunktionen auf eine lineare Spanne von Pixeln anzuwenden. Anfangs wird der Wert eines Satzes von Kantenvariablen für ein bestimmtes Pixel innerhalb eines Dreieckes bestimmt durch Auswerten der drei dem Dreieck zugeordneten Kantenfunktionen. Um zu bestimmen, welche Pixel einzuordnen sind, erzeugt die vorliegende Erfindung eine W-Bit-Einordnungsmaske aufgrund der Werte dieser Kantenvariablen. Die vorliegende Erfindung läßt diese Werte auf die Pixelspanne anwenden, ohne Notwendigkeit, zusätzliche Berechnungen für den Rest der Pixel innerhalb der Spanne auszuführen.
- Die genannten und weitere Vorteile dieser Erfindung können besser verstanden werden durch Bezug auf die nachfolgende Beschreibung, wenn sie in Zusammenhang mit den beigefügten Zeichnungen genommen wird, in welchen:
- Fig. 1 die Unterteilung jedes Punktes innerhalb einer Ebene als in eine von drei Regionen fallend darstellt.
- Fig. 2 die Zuordnung eines Satzes von Kantenvariablen zu einem bestimmten Pixel darstellt.
- Fig. 3 graphisch einen Vektor und eine Linie darstellt, welche eine Kantenfunktion repräsentieren, die zum Unterteilen eines zweidimensionalen Raumes in drei Regionen benutzt werden kann.
- Fig. 4(a) und Fig. 4(b) zwei einfache Algorithmen zum Durchqueren der Pixel innerhalb eines bestimmten Dreieckes zeigen.
- Fig. 5 eine Lösung des in Fig. 4(b) gezeigten Problems darstellt.
- Fig. 6 einen ausgeklügelteren Algorithmus (mit Bezug auf den in Fig. 4 gezeigten) zum Durchqueren der Pixel innerhalb eines bestimmten Dreieckes darstellt.
- Fig. 7 ein Blockschaltbild der durch die vorliegende Erfindung benutzten Abtast-Hardware ist.
- Fig. 8 eine in drei Bitfelder aufgeteilte Kantenvariable darstellt.
- Fig. 9 ein Beispiel eines einzuordnenden Dreieckes darstellt.
- Fig. 10 ein Beispiel einer Maskenerzeugung für eine linke Kante darstellt.
- Fig. 11(a) und Fig. 11(b) ein Flußdiagramm eines Polygon- Rasterverfahrens zeigen.
- Fig. 12 ein Beispiel eines Dreieckes zeigt, das teilweise aus einem Fenster herausfällt.
- In den Zeichnungen bezeichnen gleiche Bezugszahlen identische oder funktionell gleichartige Elemente. Zusätzlich identifiziert die ganz links stehende Ziffer (oder Zifferngruppe) die Zeichnung, in der die Bezugszahl zum ersten Mal auftritt.
- Die vorliegende Erfindung schafft ein System und ein Verfahren zum Rastern von Polygonen. Die vorliegende Erfindung erfordert weniger Rechenvorgänge, um Pixel innerhalb eines Polygons einzuordnen, als das übliche Pixel-um-Pixel-Verfahren. Jede Kante eines Polygons (z.B. eines Dreieckes) wird durch eine Linearkantenfunktion dargestellt, die an einer Seite der Kante einen Wert größer Null und an der gegenüberliegenden Seite der Kante einen Wert kleiner Null besitzt. Die vorliegende Erfindung erlaubt das Anwenden von Kantenfunktionen auf eine Linear- Spanne von Pixeln, während sie nur die Kantenfunktions-Zusatzvorgänge für eines der Pixel innerhalb der Spanne auszuführen erfordert. Die bei der vorliegenden Erfindung anfangs zum Rastern benutzten Rechenwerte (d.h. beim Rastern mit Benutzen einer einzigen linearen Spanne) sind gleichartig denen, die für Pixel-um-Pixel-Rastern erforderlich sind. Es sind folgende:
- Die gegenwärtige Abtastposition (d.h. ein vorgegebenes Pixel) in dem Durchquerungs-Algorithmus wird durch Koordinaten (x,y) repräsentiert.
- Ein Satz von Kantenvariablen e&sub0;, e&sub1;, e&sub2;, repräsentiert im Festkomma-Zweierkomplement-Ganzzahlenformat, entsprechend den drei jeweiligen Kantenfunktionen f&sub0;, f&sub1;, f&sub2; (z.B. e&sub0;=f&sub0;(y)-x). Jede Kantenvariable besteht aus einem ganzzahligen Feld (das ein Vorzeichenbit enthält) und einem Bruchteilefeld.
- Ein 1Bit-Kantenmerker für jede Kante, der angibt, ob die Kante als eine "rechte Kante" oder eine "linke Kante" des Dreieckes zu behandeln ist. Ein gesetzter Merker bezeichnet eine rechte Kante und zeigt an, daß Pixel, die zur rechten Seite der Kante liegen, und so einen entsprechenden Kantenvariablenwert größer als Null besitzen, nicht innerhalb des Dreieckes liegen. Pixel mit einem negativen Wert für eine rechte Kante können in das Dreieck fallen. Ein gelöschter Merker bezeichnet eine linke Kante, und daß nur Pixel mit positiven Werten in das Dreieck fallen können. Der Merker spezifiziert deshalb, wie die Werte in Bezug auf eine bestimmte Kante zu deuten sind. Wenn eine Kantenvariable den Wert Null besitzt, ist es Entscheidungssache, ob das zugehörige Pixel innerhalb des Dreieckes oder außerhalb des Dreieckes liegt (vorausgesetzt, daß die Entscheidung konsistent durchgeführt wird).
- Es ist möglich, die Kantenvariablen so zu organisieren, daß nur ein Merker zum Deuten der Kantenvariablen benötigt wird. In diesem Falle bezeichnet ein gesetzter Merker, daß das Dreieck rechtsorientiert ist, was bedeutet, daß e&sub1; eine linke Kante ist und e&sub0;, e&sub2; rechte Kanten sind. Wenn der Merker nicht gesetzt ist, ist das Dreieck linksorientiert und die Kanten haben umgekehrten Sinn. Alle Dreiecke passen in einen dieser beiden Fälle.
- Ein Satz von "Schrittwerten" für jede Kantenvariable (nach rechts, nach links usw.): die Schrittwerte werden zu den Werten der Kantenvariablen hinzugefügt oder von ihnen abgezogen, um die Werte für benachbarte Pixel zu bestimmen. Jede Kantenvariable hat für irgendeine Richtung, in der die Durchquerung abgetastet wird, einen Zuwachswert. Diese Werte sind ebenfalls Festkomma-Zweierkomplement-Ganzzahlwerte.
- Die vorliegende Erfindung arbeitet mit einer W Pixel breiten Spanne von Pixeln. W kann irgendeine Potenz von 2 sein. Die Dimensionen der Spanne brauchen nicht notwendigerweise den Datenblöcken entsprechen, auf die durch das Speichersyystem zugegriffen wird, obwohl dadurch allgemein die Speicherbandbreiten-Benutzung abnimmt.
- Nach Fig. 7 wird die durch die gegenwärtige Erfindung benutzte Abtast-Hardware in drei Teile unterteilt: (1) ein einfacher Ganzzahlen-Datenweg 710; (2) eine Pixelmasken-Erzeugungseinheit 720; und (3) eine Einordnungseinheit 730. Der Ganzzahlen- Datenweg 710 ist eine einfache Geradeauseinheit, die Register für die Rechenwerte, eine oder mehrere Addier/Subtrahier- Einheiten und zugehörige Steuerlogik enthält. Insbesondere enthält der Ganzzahlen-Datenweg 710 Hardware zum Erzeugen der Kantenvariablen für jede Kante in dem Dreieck, in das gerade eingeordnet wird. Die Pixelmasken-Erzeugungseinheit 720 bestimmt, welche Pixel innerhalb einer Spanne von w Pixeln einzuordnen sind durch Erzeugen einer Pixel-Maske aufgrund der durch den Ganzzahlen-Datenweg 710 geschaffenen Kantenvariablen. Diese Einheit erzeugt eine separate Maske, die als Einordnungsmaske für jede Kantenvariable bezeichnet wird, und erzeugt die logische UND-Verknüpfung der drei Masken als endgültiges Ausgangssignal (d.h. Einordnungsmaske 725). Wie nachstehend beschrieben wird, werden bei einer bevorzugten Ausführung nur zwei Masken verwendet, um die Einordnungsmaske zu erzeugen. Jedes Bit in der Einordnungsmaske repräsentiert ein einzelnes Pixel an dem Bildschirm. Die Einordnungseinheit 730 nimmt die Einordnungsmaske 725 von der Maskenerzeugungseinheit 720 und gibt Befehle 735 für jedes Pixel an das Speichersystem aus, um es entweder einzuordnen oder nicht.
- Um zu bestimmen, welche Pixel einzuordnen sind, erzeugt das System eine W-Bit Einordnungsmaske 725 aufgrund der Werte der Kantenvariablen für ein einzelnes Pixel (d.h. das erste Pixel in der Pixelspanne). Bits, die in der Einordnungsmaske gesetzt sind, bezeichnen, welche Pixel als Teil des Dreieckes einzuordnen sind. Um das jeweilige Einordnungsmaskenbit für ein bestimmtes Pixel zu bestimmen, werden drei Kantenmaskenbits erzeugt (wie im Hintergrundabschnitt beschrieben), von denen jedes anzeigt, wie das Pixel zur Dreieckseite einer der jeweiligen Kanten liegt. Das Einordnungsmaskenbit wird dann durch logisches UNDen der drei Kantenmaskenbits erzeugt. Das sich ergebende Einordnungsmaskenbit ist "1", wenn das Pixel als Teil des Dreieckes einzuordnen ist, und ist "0", wenn dies nicht zutrifft. Jede Einordnungsmaske, die aus einer Folge von W Bits besteht, besteht aus dem Einordnungsmaskenbit für das Pixel an der Position (x,y) und den Einordnungsmaskenbits für die nächsten W-1 Pixel in der horizontalen Zeile. Es sollte bemerkt werden, daß die vorliegende Erfindung leicht mit Benutzung von Vertikalabständen zwischen den Pixeln und den Kanten des Dreieckes statt von Horizontalabständen angewendet werden kann. Bei jeder Kantenvariable sind drei interessierende Bitfelder bei der Kantenmaskenerzeugung vorhanden. Das erste Feld ist das Vorzeichenbit. Das zweite Feld besteht aus den Teilspannen- Positionsbits, die die N Bits geringster Mächtigkeit des ganzzahligen Abschnitts der Kantenvariablenbits sind, wobei W=2N. Das dritte Feld besteht aus den Spannenpositionsbits, welche die restlichen Bits im ganzzahligen Teil der Kantenvariablen sind. Fig. 8 zeigt diese Felder für eine Spanne von 4 Bits. Die sich ergebende Kantenvariable beträgt 16 Bits mit einem ganzzahligen Abschnitt von 8 Bits und einem Bruchteileabschnitt von 8 Bits. Man bemerke, daß für W=4 die Größe des Teilspannen-Feldes N = W/2 = 2 beträgt. Der Bruchteileabschnitt wird nicht für die Maskenerzeugung benutzt. Stattdessen wird er benutzt, um die Genauigkeit aufrecht zu erhalten, wenn die Kantenvariablen erhöht oder aufgezählt werden.
- Die drei Bitfelder des Kantenvariablenwertes werden benutzt, um zu bestimmen, wie die entsprechenden Pixel zur Dreieckseite der Kante liegen. Zusätzlich werden diese gleichen drei Felder benutzt, um zu bestimmen, wie jedes der anderen W-1 Pixel der Horizontalspanne zur Dreieckseite der Kante liegt. Selbstverständlich werden die Werte der Kantenvariablen für linke und rechte Kanten unterschiedlich gedeutet, jedoch ist die allgemeine Idee für beide Fälle gleich. Die Tabellen 1 und 2 zeigen die für linke bzw. rechte Kanten erzeugten Masken. In diesem Beispiel wird eine Spannengröße vier (w=4) benutzt, obwohl diese Tabelle leicht für jede Spannengröße, die eine Potenz von 2 ist, verallgemeinert werden kann. In den Tabellen wird angenommen, daß Pixel auf der Dreieckskante sich bei linken Kanten in dem Dreieck und bei rechten Kanten außerhalb des Dreieckes befinden. Tabelle 1: Maskenerzeugung für linke Kanten Tabelle 2: Maskenerzeugung für rechte Kanten
- Die Erzeugung dieser Tabellen wird mit Bezug auf Fig. 9 und Fig. 10 beschrieben. Fig. 9 zeigt ein Beispiel eines Pixelgitters mit einem darin enthaltenen einzuordnenden Dreieck. Die drei Ecken sind die Punkte (5,2), (2,15) und (14,11). Diese Eckpunkte bilden drei Kanten, die in dem Diagramm als e&sub0;, e&sub1; und e&sub2; gezeigt sind. Dieses bestimmte Beispiel stellt ein rechtsorientiertes Dreieck dar, da die beiden Kanten e&sub0; und e&sub2; die Begrenzungen der rechten Seite des Dreieckes bilden und nur eine Kante die Begrenzung an der linken Seite bildet. Ein linksorientiertes Dreieck hat zwei linke Kanten und eine rechte Kante. Das Pixelgitter wird in Spannen unterteilt, die eine Breite von 4 Pixel haben. Jedoch ist wiederum jede Spanne, die eine Potenz von 2 ist, für den später zu beschreibenden Pixelspannen-Mechanismus akzeptabel.
- Tabellen 1 und 2 sind begründet auf der Definition von Kantenvariablen als dem Horizontalabstand zwischen einem Pixel und der Kante. Fig. 10 zeigt unterschiedliche Werte der Kantenvariablen für eine linke Kante bei verschiedenen Pixelpositionen. Für eine linke Kante bezeichnet ein negativer Wert, daß das betreffende Pixel und alle Pixel nach rechts innerhalb der Begrenzung der Kante liegen (Spanne a). Die der Spanne a zugeordnete Kantenvariable ist gleich -2,1 (binär 1...1110). Die Maske für alle Linkskantenvariablen mit einem negativen Wert ist 1111. Mit anderen Worten, diese Maske bezeichnet, daß alle Pixel in der Spanne eingeordnet werden sollten.
- Wenn die linke Kante nichtnegativ ist, sind zwei Fälle zu betrachten. Der erste besteht, wenn der Wert der Kantenvariablen kleiner als w ist (Spanne b). In diesem Fall sind alle Spannenbits Nullen, und die Teilspannen-Bits werden benutzt, um zu bestimmen, welche Bits in der Maske gesetzt sind. Die Teilspannen-Bits können entweder gleich 00, 01 10 oder 11 sein. Es bestehen vier Möglichkeiten, da vier Pixel in der Maske repräsentiert sind. Jede Möglichkeit repräsentiert einen unterschiedlichen Satz von einzuordnenden Pixeln. In dem gezeigten Beispiel ist die Kantenvariable für b gleich 1,4 (binär 0...0001). Die Teilspannen-Positionsbits sind 01, und damit ist die Maske 0011. Mit anderen Worten, diese Maske stellt die Tatsache dar, daß die zwei am weitesten rechts liegenden Pixel in der Maske eingeordnet werden sollten.
- Der zweite Fall eines nichtnegativen Wertes einer Kantenvariablen besteht dann, wenn der Wert größer oder gleich w ist (Spanne c). Hier werden die Spannen-Positionsbits nicht Null sein. Die sich ergebende Maske sollte so anzeigen, daß alle in der Maske repräsentierten Pixel nicht eingeordnet werden sollten, da alle Pixel in der Spanne links von der Kante liegen. Bei dem Beispiel ist die Kantenvariable für die Spanne c gleich 5,1 (binär 0...0101). Demzufolge werden alle Bits in der Maske Null sein (d.h. 0000). Die Maskenerzeugungstabelle für rechte Kanten wird in einer gleichartigen Weise bestimmt.
- Fig. 11 stellt ein Flußdiagramm der Durchführung der Pixelspannen-Technik dar. Mit einem zum Einordnen bestimmten Dreieck wird ein Ausgangspixel ausgewählt, wie im Schritt 1110 gezeigt. Drei Kantenvariable werden entsprechend dem ausgewählten Pixel erzeugt, wie im Schritt 1115 gezeigt.
- Um zu bestimmen, ob ein Pixel eingeordnet werden sollte, müssen nur zwei der drei Kanten benutzt werden, nämlich eine rechte Kante und eine linke Kante. Wenn beispielsweise das betrachtete Dreieck zwei rechte Kanten besitzt (d.h. ein rechtsorientiertes Dreieck ist), hängt die Kante, die als die rechte Grenze benutzt wird, von dem Wert von y ab. Wenn y über dem Eckpunkt liegt, der die beiden rechten Kanten verbindet, wird die obere rechte Kante benutzt. Sonst wird die untere rechte Kante benutzt. Wie im Schritt 1120 gezeigt, werden die zwei zum Erzeugen der Einordnungsmaske erforderlichen Kanten ausgewählt.
- Die Schritte 1125 bis 1170 repräsentieren die Verwendung der Tabellen 1 und 2. Man bemerke, daß diese Schritte sich je nach Größe der benutzten Spanne unterscheiden werden. Wie im Schritt 1125 gezeigt, wird das Vorzeichen der Kantenvariable für die rechte Kante geprüft. Wenn es negativ ist (was symbolisiert, daß die Spanne sich außerhalb des Dreieckes befindet), wird die Maske auf 0000 gesetzt, wie im Schritt 1130 gezeigt. Als nächstes werden die Spannen-Positionsbits geprüft, wie im Schritt 1135 gezeigt. Wenn die Spannen-Positionsbits nicht Null sind (was symbolisiert, daß die Spanne sich innerhalb des Dreieckes befindet), wird die Maske auf 1111 gesetzt, wie im Schritt 1140 gezeigt. Sonst werden die Teilspannen-Bits geprüft, wie im Schritt 1145 gezeigt, und die zugehörige Maske wird aufgrund der Werte dieser Bits ausgewählt.
- Die Schritte 1150 bis 1170 stellen die Erzeugung der Maske für die linke Kante dar. Die Schritte sind analog den vorstehend für die rechte Kante beschriebenen.
- Die sich ergebende Maske, die bestimmt, welche Pixel einzuordnen sind, ist einfach das logische UND der für die beiden Kanten (d.h. der rechten Kante und der linken Kante) geschaffenen Masken, wie im Schritt 1175 gezeigt. Die Einordnungspixelmaske wird zu der Einordnungseinheit 730 durchgeleitet, wo die entsprechenden Steuersignale für jedes einzuordnende Pixel zu dem Speichersystem gesendet werden, wie im Schritt 1185 gezeigt.
- Parallel zum Schritt 1185 wird ein Zuwachswert zu der Kantenvariablen hinzugefügt, und der Vorgang kann im Schritt 1120 für das nächste Pixel beginnen, wo das nächste Pixel das erste Pixel nach der Spanne ist, welches in den Weg des jeweils verwendeten Durchquerungs-Algorithmus fällt.
- Das Durchqueren des Dreieckes kann in einer Anzahl von Weisen vollbracht werden, gleichartig zu den vorstehend beschriebenen herkömmlichen Raster-Verfahren. Beim Durchqueren in einer horizontalen Richtung muß der Datenweg die Kantenwege für die Pixel in der Position (x±w,y) errechnen. Das kann mit Benutzen der horizontalen Schrittwerte für ein Einzelpixel erledigt werden, das um n Bits nach links verschoben ist, wobei w=2n. Das erfordert keine Verschiebungs-Hardware, sondern einfach einen Multiplexer, der entweder den geschobenen oder den ungeschobenen Wert auswählt.
- Gelegentlich besitzt ein einzuordnendes Dreieck eine horizontale Kante. In diesen Fällen benutzt die vorliegende Erfindung die restlichen zwei Kanten (und nicht die horizontale Kante) zusammen mit dem vorstehend umrissenen Vorgang, um zu bestimmen, welche Pixel innerhalb einer Pixelspanne einzuordnen sind. Mit anderen Worten, da nur zwei Kanten benutzt werden, um zu bestimmen, ob ein Pixel eingeordnet werden soll, und nur eine rechte und eine linke Kante vorhanden ist, besteht keine Notwendigkeit, den Wert von y zu überprüfen, um zu bestimmen, ob er über oder unter der Ecke des Dreieckes liegt, welche die zwei rechten bzw. zwei linken Kanten verbindet. Im Falle eines Dreieckes mit einer horizontalen Kante befindet sich die Ecke entweder an der ersten Spanne (z.B. wenn die horizontale Kante die obere Kante des Dreieckes ist), oder der letzten Spanne (z.B., wenn die horizontale Kante die untere Kante des Dreiekkes ist). Demzufolge sind nur die zwei restlichen Kanten zur Erzeugung der Pixelmasken erforderlich.
- Die vorliegende Erfindung bietet verschiedene Vorteile gegenüber herkömmlichen Dreieck-Rasterungsverfahren. Erstens sind weniger Rechenvorgänge pro Pixel erforderlich. Die Anzahl von arithmetischen Vorgängen, die zum Aufrechterhalten der Kantenvariablen während der Durchquerung erforderlich sind, ist ein Satz für jede Pixelspanne. Das wird erreicht ohne Benutzung zusätzlicher Addier/Subtrahier-Hardware für jedes Pixel. Zweitens besitzt die vorliegende Erfindung einen "Pipeline"- Betrieb. Der Ganzzahlen-Datenweg 710, die Maskenerzeugungseinheit 720 und die Einordnungseinheit 730 können unabhängig in einer hintereinander geschalteten (Pipeline-) Gestaltung arbeiten. Das erlaubt Parallelberechnung ohne besondere Hardware. Drittens ist die vorliegende Erfindung mit wirksamen Speicherarchitekturen konsistent. Das Einordnen von Pixeln in horizontalen Spannen erlaubt eine leichte Ausführung von Durchquerungs-Algorithmen, die mit blockorganisierten Pixelspeichern kompatibel sind.
- Es folgt eine Beschreibung von zwei Mechanismen zum Rastern von Dreiecken in Graphik-Hardware-Systemen. Der erste Mechanismus, der als Einzelpixel-Mechanismus bezeichnet wird, ist eine Version einer herkömmlich benutzten Technik. Er wird an dieser Stelle im Dokument beschrieben, so daß er klar in Gegensatz zu dem verbesserten Betrieb der vorliegenden Erfindung gebracht werden kann, der unmittelbar danach beschrieben wird. Die vorliegende Erfindung wird als zweites beschrieben und wird als Pixelspannen-Verfahren bezeichnet. Die Pixelspannen-Technik kann Dreiecke mit Benutzung von weniger Vorgängen pro Pixel einordnen.
- Dreieck-Einordnen benutzt eine Routine, welche einen Supersatz der Pixel innerhalb des Dreieckes durchquert und bei jedem Pixel einen Test ausführt, um zu bestimmen, ob es eingeordnet werden sollte. Verfahren zum Bestimmen der Reihenfolge der Durchquerung werden hier nicht besprochen, sondern stattdessen werden bei der Beschreibung des Beispiels einfache Annahmen bezüglich des Durchquerungs-Algorithmus gemacht. Die Entscheidung, ein Pixel einzuordnen, wird üblicherweise aufgrund des Satzes von Kantenvariablen gefällt, die bei jedem Pixel aktualisiert werden. Die Kantenvariablen werden mit e&sub0;, e&sub1; und e&sub2; bezeichnet. Bei dieser Besprechung wird eine Kantenvariable als der horizontale Abstand von der betreffenden Pixelposition in der Abtastzeile zu der durch die Dreieckkante gebildeten Linie definiert. Es gibt viele Abwandlungen, wie die Kantenvariablen definiert werden können, doch sind alle allgemein von diesem allgemeinen Konzept abgeleitet.
- Wenn f(y) eine Funktion ist, welche die x-Position einer Kante bei einem bestimmten y ergibt, wird der zu e = f(y) - x. f(y) bestimmte Wert der Kantenvariablen e am Pixel (x,y) die Kantenfunktion für die bestimmte Kante genannt, und sie ist leicht aus den Dreieckkoordinaten unter Benutzung von Grundsatz- Algebra zu bestimmen. Bei dem Beispiel sind die Kantenfunktionen für die drei Kanten wie folgt:
- f&sub0;(y) = y + 3
- f&sub1;(y) = -0,231y + 5,46
- f&sub2;(y) = 3y + 47.
- Unter Benutzung unserer Definition für die Kantenvariablen gilt die folgende Interpretation der Werte: falls die Kantenvariable positiv ist, liegt das Pixel (x,y) zur Linken der Kante, falls sie negativ ist, zur Rechten der Kante, und falls sie Null ist, auf der Kante. Um zu bestimmen, ob das Pixel sich innerhalb der Begrenzungen des Dreieckes befindet, werden zwei Kantenvariable benutzt; eine, welche die linke Begrenzung definiert und eine, welche die rechte definiert. Ein Pixel befindet sich innerhalb der Grenzen eines Dreieckes, wenn die dem Pixel zugehörige Kantenvariable nicht negativ ist. Wenn die Kantenvariable für ein bestimmtes Pixel Null ist, ist es Entscheidungssache, ob das Pixel als innerhalb der Begrenzungen an der Kante liegend angesehen wird. Es ist jedoch zum Einordnen benachbarter Dreiecke nützlich, wenn der Fall einer nullwertigen Kantenvariablen für die linke und die rechte Kante unterschiedlich behandelt wird (z.B. innen für rechte Kanten und außen für linke Kanten).
- Bei dem Beispiel sind zwei rechte Begrenzungen bestimmende Kanten vorhanden, da es sich um ein rechtsorientiertes Dreieck handelt. Das betrachtete Dreieck ist ein rechtsorientiertes Dreieck und besitzt zwei rechte Kanten. Da y sich über der die beiden rechten Kanten verbindenden Ecke befindet, wird die obere rechte Kante benutzt.
- Der Durchquerungs-Algorithmus beginnt das Abtasten bei einem Pixel und bestimmt den Wert der Kantenvariablen aufgrund der vorstehenden angegebenen Funktionen. Für das Beispiel wird angenommen, daß der Einzelpixel-Durchquerungs-Algorithmus die Pixel (5,2), die obere Ecke, als Ausgangspunkt benutzt. Deswegen sind die Anfangswerte der Kantenvariablen wie folgt:
- e&sub0; = 0
- e&sub1; = 0
- e&sub2; = 36
- e&sub0; ist die interessierende rechte Kantenvariable für das Anfangspixel, da die Vertikalposition der Abtastung über (14,11) liegt - der Stelle, an der sich die beiden rechten Kanten treffen. Die Variable e&sub1; ist die einzige linke Kantenvariable und wird so zum Prüfen jedes Pixels benutzt. Für das Anfangspixel ist die linke Kantenvariable nicht negativ und so wird dieses Pixel nicht eingeordnet.
- Bei einem Einzelpixel-Verfahren bewegt sich der Durchquerungs- Algorithmus zu einem anderen Pixel, errechnet die Werte der Kantenvariablen bei diesem Pixel und führt die Prüfung aus, um zu überprüfen, ob es innerhalb der Dreieckbegrenzungen liegt. Eine Bewegung von Pixel zu Pixel während der Durchquerung wird als "Schreiten" bezeichnet. Das nächste Pixel bei der Durchquerung ist üblicherweise zu dem vorherigen Pixel benachbart, was die Bewertung der Kantenvariablen vereinfacht. Ein Bestimmen des Wertes der Kantenvariablen bei einem benachbarten Pixel ist eine Sache des Addierens einer Konstante zu den gegenwärtigen Werten, da die Kantenfunktionen linear sind. Diese Konstanten werden als Zuwachswerte oder Schrittwerte bezeichnet. Die Zuwachswerte für einen Schritt in der Horizontalrichtung sind immer ± 1, da die Kantenvariable als der horizontale Abstand zwischen dem Pixel und der Kante definiert ist. Die Zuwachswerte für einen Schritt in der vertikalen Richtung werden ± m sein, wenn die Kantenfunktionen der vorstehend benutzten Form vorhanden ist: f(y) = my + c. Für das Beispieldreieck werden die Zuwachswerte für jede Kantenvariable wie folgt:
- In unserem Beispiel werden wir die Durchquerungs-Algorithmus- Schritte (5,3) annehmen bei dem Pixel unter dem gegenwärtigen. Der neue Wert der Kantenvariablen wird dann wie folgt:
- e&sub0; = e&sub0; + Δe0ab = 1
- e&sub1; = e&sub1; + Δe1ab = -0,231
- e&sub2; = e&sub2; + Δe2ab = 66.
- Für Pixel (5,3) ist die linke Kantenvariable e&sub1; negativ und die rechte Kantenvariable e&sub0; nichtnegativ. Das bedeutet, daß das Pixel sich innerhalb der Dreiecksgrenzen befindet und eingeordnet wird.
- Die Durchquerung setzt das Schreiten von Pixel zu Pixel fort, wobei die entsprechenden Zuwachswerte den Kantenvariablen hinzugefügt und die Werte für die linken und rechten Begrenzungen geprüft werden. Das muß mindestens für jedes Pixel im Dreieck geschehen. Die Gesamtanzahl der durchquerten Pixel hängt dann von dem Wirkungsgrad des betreffenden benutzten Durchquerungs-Algorithmus ab.
- Das Pixel-Spannen-Verfahren ist gleichartig zu dem Einzelpixel- Verfahren, erlaubt jedoch das Ausführen des Einordnungstests für mehrere Pixel aufgrund einer Bewertung der Kantenvariablen. Das Verfahren arbeitet an Pixeln, die in horizontale Spannen mit w Bit Breite gruppiert sind (das Beispiel benutzt w=4). Diese Technik deutet Kantenvariablen und Zuwachswerte in der gleichen Weise wie das Einzelpixel-Verfahren, jedoch schreitet der Durchquerungs-Algorithmus horizontal in Einheiten der Größe w weiter, so daß die Links/Rechts-Zuwachswerte statt ±1 nun ±w betragen.
- Beim Bestimmen, welche Pixel eingeordnet werden sollen, wird die Maskenerzeugungseinheit 720 benutzt, um zu bezeichnen, welche Pixel in einer Spanne einzuordnen sind. Diese Information wird durch eine Maske von w Bits repräsentiert; eine Eins bezeichnet, daß das Pixel einzuordnen ist, eine Null bezeichnet, daß es nicht einzuordnen ist. Die Maske repräsentiert Pixel (w,y) bis (x+w-1,y). Wie vorstehend diskutiert, ist die Berechnung der Einordnungsmaske das Ergebnis des logischen UND von Masken, die für das betreffende Pixel geltende linke und rechte Kante erzeugt werden.
- Die Maskenerzeugung benutzt die Binär-Repräsentation der Kantenvariablen, wie durch die vorstehenden Tabellen 1 und 2 gezeigt wird. In den Tabellen sind die Teilspannen-Positionsbits diß n geringstwertigen Bits der Binärdarstellung des ganzzahligen Teils der Kantenvariablen, wobei w=2n. Die Spannenpositionsbits sind die restlichen Bits außer dem Vorzeichenbit. Das Vorzeichenbit ist das im Zweierkomplement-Format definierte Bit höchster Mächtigkeit.
- Ein Durchquerungs-Algorithmus für das Pixel-Spannen-Verfahren verhält sich grundsätzlich in der gleichen Weise, wie es bei Benutzung des Einzelpixel-Verfahrens der Fall ist. Zwei Unterschiede sind darin zu sehen, daß der Pixel-Spannen-Durchquerungs-Algorithmus sich horizontal in Schritten von w Pixeln bewegt, und die Ausgangs-x-Position muß ein Vielfaches von w sein. Unter Beachtung von diesem wird wiederum das in Fig. 9 gezeigte Beispielsdreieck betrachtet. Nun beginnt der Durchquerungs-Algorithmus beim Pixel (4,2) (wie durch ein X in Fig. 9 bezeichnet), da 4 ein Vielfaches von w ist. Die Werte der Kantenvariablen sind wie folgt:
- e&sub0; = 1,
- e&sub1; = 1,
- e&sub2; = 37.
- Unter Benutzung der Tabellen 1 und 2 bestimmen wir die Maske für die linke Kantenvariable e&sub0; zu 0011 und die rechte Kantenvariable e&sub1; zu 1100. Das logische UND dieser beiden Masken ist 0000, und es sind deshalb keine Pixel einzuordnen.
- Der Durchquerungs-Algorithmus schreitet nun eine Spanne zum Pixel (4,3) herab. Die neuen Werte für die interessierenden Kantenvariablen sind dann e&sub0;=2 und e&sub1;=0,769. Das ergibt die jeweiligen linken und rechten Masken 1110 bzw. 0111. Das logische UND davon ist 0110, so daß die Pixel (4,3) und (7,3) nicht eingeordnet werden, da die Werte für diese Pixel in der Maske Null sind. Jedoch werden die Pixel (5,3) und (6,3) eingeordnet, da die Werte für diese Pixel in der Maske Eins sind.
- Dieses Pixel-Spannen-Verfahren besitzt Vorteile gegenüber der Einzelpixel-Technik, da weniger arithmetische Vorgänge pro eingeordnetem Pixel nötig sind. Die vorstehend beschriebene Einzelpixel-Technik erfordert drei Additionsvorgänge pro Pixel bei dem Fortschreiten des Durchquerungs-Algorithmus. (Es ist möglich, dies für einige Pixel zu reduzieren, wenn der Durchquerungs-Algorithmus so ist, daß er alle Pixel einordnet, die e&sub0; als rechte Kante benutzen, bevor irgendwelche Pixel eingeordnet werden, die e&sub2; als die rechte Kante benutzen (die "untere Hälften des Dreiecks). Wenn die untere Hälfte eingeordnet wird, braucht e&sub0; nicht mehr aktualisiert zu werden, so daß nur zwei Vorgänge pro Pixel erforderlich sind. Jedoch ist die Erhöhung des Wirkungsgrades bei einer tatsächlichen Verwirklichung von Graphik-Hardware nicht immer dieser hinzugefügten Komplexheits-Wert.) Bei Benutzung des Pixel-Spannen-Verfahrens werden die Kantenvariablen nur einmal für jeweils w Pixel aktualisiert. Das wird mit Hilfe der Maskenerzeugungseinheit 720 vollbracht, welche die eine Pixelspanne repräsentierenden Maskenwerte erzeugt. Diese Funktionseinheit kann, wie für den Fachmann ersichtlich, unter Benutzung von einfacher Kombinationslogik leicht ausgeführt werden.
- Die vorliegende Erfindung kann mit dem vorstehend beschriebenen Polygonraster-Verfahren auch eine Fensterabschneide-Routine integrieren. Fig. 12 zeigt ein Beispiel eines Fensters 1210 und eines Dreiecks 1220, bei dem eine fenstergebundene Maskenerzeugungsroutine angewendet wird. Bei dem gezeigten Beispiel liegt ein Teil des Dreiecks 1220 außerhalb des Fensters 1210, und nur solche Abschnitte des Dreiecks, die innerhalb des Fensters liegen, müssen eingeordnet werden. Um zu bestimmen, ob die Pixelspanne 1230 sich innerhalb des Fensters 1210 befindet, wird eine separate Maske für die Kanten des Fensters 1210 erzeugt. Bei dem in Fig. 12 gezeigten Beispiel wird je eine Maske für die Kanten 1240 und 1250 erzeugt. Diese Masken werden dann mit der für das Dreieck 1220 erzeugten Einordnungsmaske geundet. Die sich ergebende fenstergebundene Maske repräsentiert, welche Pixel innerhalb der Spanne 1230 eingeordnet werden.
- Schließlich kann Hardware für komplexere Polygone generalisiert werden. Die komplexen Polygone können in einfachere Polygone oder Dreiecke aufgebrochen werden. Mehrfach-Kantensätze können zum Rastern der Polygone benutzt werden. Insbesondere werden zusätzliche Masken für jede Kante des Polygons erzeugt und die sich ergebenden Masken werden miteinander geundet. Alternativ können die komplexen Polygone in mehrere Dreiecke aufgebrochen und durch die Polygonraster-Hardware durchgeleitet werden.
Claims (10)
1. Computergestütztes Verfahren zum Bestimmen, welche Pixel
als ein Teil eines Dreieckes einzuordnen sind, um Polygone
zu rastern, welches Verfahren die Schritte umfaßt:
(1) Erzeugen von drei Kantenvariablen für die drei Kanten
des Dreieckes, welche bezeichnen, ob ein erstes Pixel
innerhalb oder außerhalb eines Dreieckes liegt, wobei die
drei Kantenvariablen den mit Vorzeichen bewerteten Abstand
zwischen dem ersten Pixel und jeweils einer der drei Kanten
des Dreieckes repräsentieren;
(2) Erzeugen von drei Masken aufgrund der Werte der
Kantenvariablen, welche Masken für eine Pixelspanne
repräsentativ sind, bei denen das erste Pixel das Anfangspixel in
der Pixeispanne ist; und
(3) logisches UNDen der drei Masken zum Erzeugen einer
Einordnungsmaske, welche repräsentiert, welche Pixel
innerhalb der Pixelspanne eingeordnet werden sollen.
2. Verfahren nach Anspruch 1, das weiter umfaßt die Schritte
des Durchquerens des Dreieckes zu einem nächsten Pixel, das
nach der Pixelspanne gelegen ist; Hinzufügen eines
Zuwachswertes zu jeder der Kantenvariablen; und Wiederholen der
Schritte (2) und (3).
3. Verfahren nach Anspruch 1 oder 2, bei dem die
Einordnungsmaske, die aus einer Kette von W Bits besteht, ein
Einordnungsmasken-Bit für das Pixel in der Position (x,y) und
Einordnungsmasken-Bits für die nächsten W-1 Pixel in der
horizontalen Zeile besitzt.
4. Verfahren nach mindestens einem der Ansprüche 1 bis 3, bei
dem jede Kantenvariable ein Vorzeichen-Bit,
Spannenpositions-Bits und Teilspannenpositions-Bits enthält.
5. Verfahren nach mindestens einem der Ansprüche 1 bis 4, bei
dem die Anzahl von Pixeln in der Pixelspanne eine Potenz
von zwei ist.
6. Computergestütztes System zum Bestimmen, welche Pixel als
Teil eines Dreieckes einzuordnen sind, um Polygone zu
rastern, welches System umfaßt:
(a) einen Ganzzahlen-Datenweg (710) mit einer Vielzahl von
Registern und mindestens einer. Addier/Subtrahier-Einheit,
wobei der Ganzzahlen-Datenweg (710) konfiguriert ist zur
Erzeugung von drei Kantenvariablen, von denen jede anzeigt,
ob ein erstes Pixel innerhalb oder außerhalb eines
Dreiekkes liegt, und die drei Kantenvariablen den mit Vorzeichen
versehenen Abstand zwischen dem ersten Pixel und der
jeweiligen der drei Kanten des Dreieckes repräsentieren;
(b) eine Pixelmasken-Erzeugungseinheit (720), die ausgelegt
ist, die drei Kantenvariablen von dem Ganzzahlen-Datenweg
(710) anzunehmen, welche Pixelmasken-Erzeugungseinheit
(720) weiter ausgelegt ist zum Erzeugen von drei Masken aus
den drei Kantenvariablen, welche drei Masken für eine
Pixelspanne repräsentativ sind, bei der das erste Pixel das
Anfangspixel in der Pixelspanne ist, wobei die drei Masken
logisch geundet werden zum Erzeugen einer Einordnungsmaske,
welche anzeigt, welche Pixel innerhalb der Pixelspanne als
ein Teil des Dreieckes einzuordnen sind; und
(c) eine Einordnungseinheit (730), welche die
Einordnungsmaske von der Pixelmasken-Erzeugungseinheit (720) nimmt und
für jedes Pixel Befehle, ob es als Teil des Dreieckes
einzuordnen ist oder nicht, zu einem Speichersystem ausgibt.
7. System nach Anspruch 6, bei dem die
Pixelmasken-Erzeugungseinheit (720) Maskierungsmittel zum Erzeugen von drei
Masken aufgrund der Werte der Kantenvariablen umfaßt, welche
Masken für eine Pixelspanne repräsentativ sind; und Mittel
(730) zum logischen UNDEN der drei Masken zum Erzeugen
einer Einordnungsmaske, welche repräsentiert, welche Pixel
innerhalb der Pixelspanne in das Dreieck eingeordnet werden
sollen.
8. System nach Anspruch 7, bei dem das Maskierungsmittel (720)
eine Nachschautabelle umfaßt, welche in Abhängigkeit von
dem Wert der Kantenvariablen unterschiedliche Masken
schafft.
9. System nach mindestens einem der Ansprüche 6 bis 8, bei dem
die Pixelspanne Datenblöcken entspricht, auf die durch das
Speichersystem zugegriffen wird.
10. System nach mindestens einem der Ansprüche 6 bis 10, bei
dem die Kantenvariablen den mit Vorzeichen versehenen
horizontalen Abstand zwischen einem bestimmten Pixel und
einer der Kanten des Dreieckes repräsentieren.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/968,901 US5446836A (en) | 1992-10-30 | 1992-10-30 | Polygon rasterization |
PCT/US1993/009754 WO1994010647A1 (en) | 1992-10-30 | 1993-10-12 | Polygon rasterization |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69312505D1 DE69312505D1 (de) | 1997-09-04 |
DE69312505T2 true DE69312505T2 (de) | 1997-11-06 |
Family
ID=25514914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69312505T Expired - Lifetime DE69312505T2 (de) | 1992-10-30 | 1993-10-12 | Polygonaufrasterung |
Country Status (6)
Country | Link |
---|---|
US (1) | US5446836A (de) |
EP (1) | EP0667018B1 (de) |
JP (1) | JP3356779B2 (de) |
KR (1) | KR950704750A (de) |
DE (1) | DE69312505T2 (de) |
WO (1) | WO1994010647A1 (de) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100243174B1 (ko) * | 1993-12-28 | 2000-02-01 | 윤종용 | 서브픽셀 마스크 발생방법 및 장치 |
TW304254B (de) * | 1994-07-08 | 1997-05-01 | Hitachi Ltd | |
TW293899B (de) * | 1994-10-18 | 1996-12-21 | Seiko Epson Corp | |
FR2735267B1 (fr) * | 1995-06-08 | 1999-04-30 | Hewlett Packard Co | Systeme et procede de convertisseur de balayage de triangles a tampons de trame entrelaces en deux dimensions |
US5758128A (en) * | 1996-06-27 | 1998-05-26 | Cirrus Logic, Inc. | Object referenced memory mapping |
US6034699A (en) * | 1997-05-01 | 2000-03-07 | Ati Technologies, Inc. | Rendering polygons |
US6141463A (en) * | 1997-10-10 | 2000-10-31 | Electric Planet Interactive | Method and system for estimating jointed-figure configurations |
US6611272B1 (en) * | 1998-07-02 | 2003-08-26 | Microsoft Corporation | Method and apparatus for rasterizing in a hierarchical tile order |
US7224364B1 (en) * | 1999-02-03 | 2007-05-29 | Ati International Srl | Optimal initial rasterization starting point |
US6421053B1 (en) * | 1999-05-24 | 2002-07-16 | International Business Machines Corporation | Block rendering method for a graphics subsystem |
US6407736B1 (en) | 1999-06-18 | 2002-06-18 | Interval Research Corporation | Deferred scanline conversion architecture |
US6795072B1 (en) * | 1999-08-12 | 2004-09-21 | Broadcom Corporation | Method and system for rendering macropixels in a graphical image |
US6504542B1 (en) * | 1999-12-06 | 2003-01-07 | Nvidia Corporation | Method, apparatus and article of manufacture for area rasterization using sense points |
US7027650B2 (en) * | 1999-12-10 | 2006-04-11 | Christian Williame | Dynamic computing imagery, especially for visceral osteopathy and for articular kinetics |
WO2001043047A2 (en) * | 1999-12-10 | 2001-06-14 | Christian Williame | Dynamic computing imagery for visceral osteopathy and for articular kinetics |
US20050052459A1 (en) * | 2000-06-07 | 2005-03-10 | Lewis Michael C. | Method and system for rendering macropixels in a graphical image |
US6636218B1 (en) * | 2000-06-30 | 2003-10-21 | Intel Corporation | Title-based digital differential analyzer rasterization |
US6556203B1 (en) * | 2000-06-30 | 2003-04-29 | Intel Corporation | Tile-based digital differential analyzer rasterization |
US7126600B1 (en) * | 2000-08-01 | 2006-10-24 | Ati International Srl | Method and apparatus for high speed block mode triangle rendering |
US6784894B2 (en) * | 2000-08-24 | 2004-08-31 | Sun Microsystems, Inc. | Mapping time-sorted to direction-sorted triangle vertices |
US7061507B1 (en) * | 2000-11-12 | 2006-06-13 | Bitboys, Inc. | Antialiasing method and apparatus for video applications |
US6900800B2 (en) * | 2001-02-27 | 2005-05-31 | David Robert Baldwin | Tile relative origin for plane equations |
US7081903B2 (en) * | 2001-12-12 | 2006-07-25 | Hewlett-Packard Development Company, L.P. | Efficient movement of fragment stamp |
KR100487461B1 (ko) * | 2002-07-31 | 2005-05-03 | 학교법인연세대학교 | 타일링 트래버설 방식의 주사변환 유닛 |
US7800631B2 (en) * | 2003-03-18 | 2010-09-21 | Qualcomm Incorporated | Triangle rendering using direct evaluation |
US20060204616A1 (en) * | 2003-04-15 | 2006-09-14 | Novozymes A/S | Tea production process |
US8775997B2 (en) | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for testing and configuring semiconductor functional circuits |
US8872833B2 (en) * | 2003-09-15 | 2014-10-28 | Nvidia Corporation | Integrated circuit configuration system and method |
US8732644B1 (en) | 2003-09-15 | 2014-05-20 | Nvidia Corporation | Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits |
US8711161B1 (en) | 2003-12-18 | 2014-04-29 | Nvidia Corporation | Functional component compensation reconfiguration system and method |
US7551174B2 (en) * | 2003-12-23 | 2009-06-23 | Via Technologies, Inc. | Method and apparatus for triangle rasterization with clipping and wire-frame mode support |
US7139997B1 (en) * | 2004-05-11 | 2006-11-21 | Altera Corporation | Method and system for checking operation of a mask generation algorithm |
FR2865563B1 (fr) * | 2004-06-17 | 2006-03-17 | Raphael Lemoine | Procede et dispositif de remplissage d'une forme geometrique |
US8723231B1 (en) | 2004-09-15 | 2014-05-13 | Nvidia Corporation | Semiconductor die micro electro-mechanical switch management system and method |
US8711156B1 (en) | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
US7555163B2 (en) * | 2004-12-16 | 2009-06-30 | Sony Corporation | Systems and methods for representing signed distance functions |
US7362325B2 (en) * | 2004-12-21 | 2008-04-22 | Qualcomm Incorporated | 2D/3D line rendering using 3D rasterization algorithms |
US20060235610A1 (en) * | 2005-04-14 | 2006-10-19 | Honeywell International Inc. | Map-based trajectory generation |
US8427496B1 (en) | 2005-05-13 | 2013-04-23 | Nvidia Corporation | Method and system for implementing compression across a graphics bus interconnect |
US8698811B1 (en) | 2005-12-15 | 2014-04-15 | Nvidia Corporation | Nested boustrophedonic patterns for rasterization |
US9117309B1 (en) | 2005-12-19 | 2015-08-25 | Nvidia Corporation | Method and system for rendering polygons with a bounding box in a graphics processor unit |
US8390645B1 (en) | 2005-12-19 | 2013-03-05 | Nvidia Corporation | Method and system for rendering connecting antialiased line segments |
JP4621617B2 (ja) * | 2006-03-28 | 2011-01-26 | 株式会社東芝 | 図形描画装置、図形描画方法、及びプログラム |
US8928676B2 (en) * | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
KR100762811B1 (ko) | 2006-07-20 | 2007-10-02 | 삼성전자주식회사 | 하프 플레인 에지 함수를 이용한 타일 비닝 방법 및 시스템 |
US8427487B1 (en) | 2006-11-02 | 2013-04-23 | Nvidia Corporation | Multiple tile output using interface compression in a raster stage |
US8237738B1 (en) | 2006-11-02 | 2012-08-07 | Nvidia Corporation | Smooth rasterization of polygonal graphics primitives |
US8139058B2 (en) * | 2006-11-03 | 2012-03-20 | Vivante Corporation | Hierarchical tile-based rasterization algorithm |
US8482567B1 (en) * | 2006-11-03 | 2013-07-09 | Nvidia Corporation | Line rasterization techniques |
US8724483B2 (en) * | 2007-10-22 | 2014-05-13 | Nvidia Corporation | Loopback configuration for bi-directional interfaces |
US9064333B2 (en) * | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) * | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
KR100954638B1 (ko) * | 2008-04-03 | 2010-04-27 | 재단법인서울대학교산학협력재단 | 벡터 그래픽스 래스터라이제이션 방법 |
US8681861B2 (en) * | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8923385B2 (en) * | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
JP5151946B2 (ja) * | 2008-12-09 | 2013-02-27 | 富士通株式会社 | 描画装置 |
US20110063306A1 (en) * | 2009-09-16 | 2011-03-17 | Nvidia Corporation | CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE |
US9530189B2 (en) | 2009-12-31 | 2016-12-27 | Nvidia Corporation | Alternate reduction ratios and threshold mechanisms for framebuffer compression |
US9331869B2 (en) | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US8378319B2 (en) * | 2010-03-22 | 2013-02-19 | Taiwan Semiconductor Manufacturing Company, Ltd. | System and method for generating direct-write pattern |
JP5273087B2 (ja) * | 2010-04-14 | 2013-08-28 | 株式会社Jvcケンウッド | 映像処理装置および映像処理方法 |
US9171350B2 (en) | 2010-10-28 | 2015-10-27 | Nvidia Corporation | Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up |
CN102486870B (zh) * | 2010-12-01 | 2014-02-12 | 财团法人资讯工业策进会 | 绘图系统及其像素更新方法 |
US8860742B2 (en) | 2011-05-02 | 2014-10-14 | Nvidia Corporation | Coverage caching |
US9607407B2 (en) | 2012-12-31 | 2017-03-28 | Nvidia Corporation | Variable-width differential memory compression |
US9591309B2 (en) | 2012-12-31 | 2017-03-07 | Nvidia Corporation | Progressive lossy memory compression |
US9710894B2 (en) | 2013-06-04 | 2017-07-18 | Nvidia Corporation | System and method for enhanced multi-sample anti-aliasing |
US9501859B2 (en) | 2013-07-19 | 2016-11-22 | Adobe Systems Incorporated | Triangle rasterization |
US9832388B2 (en) | 2014-08-04 | 2017-11-28 | Nvidia Corporation | Deinterleaving interleaved high dynamic range image by using YUV interpolation |
US10410081B2 (en) * | 2014-12-23 | 2019-09-10 | Intel Corporation | Method and apparatus for a high throughput rasterizer |
CN109346028B (zh) * | 2018-11-14 | 2021-03-23 | 西安翔腾微电子科技有限公司 | 一种基于tlm的三角形光栅化扫描结构 |
US10692271B1 (en) * | 2018-12-13 | 2020-06-23 | Advanced Micro Devices, Inc. | Robust ray-triangle intersection |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4962468A (en) * | 1987-12-09 | 1990-10-09 | International Business Machines Corporation | System and method for utilizing fast polygon fill routines in a graphics display system |
JPH0760465B2 (ja) * | 1989-10-23 | 1995-06-28 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 凹ポリゴン描出方法及びプロセツサ |
US5187658A (en) * | 1990-01-17 | 1993-02-16 | General Electric Company | System and method for segmenting internal structures contained within the interior region of a solid object |
-
1992
- 1992-10-30 US US07/968,901 patent/US5446836A/en not_active Expired - Lifetime
-
1993
- 1993-10-12 WO PCT/US1993/009754 patent/WO1994010647A1/en active IP Right Grant
- 1993-10-12 JP JP51109794A patent/JP3356779B2/ja not_active Expired - Fee Related
- 1993-10-12 DE DE69312505T patent/DE69312505T2/de not_active Expired - Lifetime
- 1993-10-12 EP EP93923379A patent/EP0667018B1/de not_active Expired - Lifetime
- 1993-10-12 KR KR1019950701768A patent/KR950704750A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
US5446836A (en) | 1995-08-29 |
EP0667018B1 (de) | 1997-07-23 |
JPH08502845A (ja) | 1996-03-26 |
WO1994010647A1 (en) | 1994-05-11 |
EP0667018A1 (de) | 1995-08-16 |
KR950704750A (ko) | 1995-11-20 |
JP3356779B2 (ja) | 2002-12-16 |
DE69312505D1 (de) | 1997-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69312505T2 (de) | Polygonaufrasterung | |
DE69428491T2 (de) | Bildlinse | |
DE69221414T2 (de) | Intelligenter Schriftartdarstellungskoprozessor | |
DE68927471T2 (de) | Verfahren zur Schattierung eines graphischen Bildes | |
DE69129712T2 (de) | Arbeitsraumanzeigen | |
DE3750784T2 (de) | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. | |
DE69534558T2 (de) | Effizientes Verfahren, Gerät und Rechnerprogramm zur Auswertung graphischer Programmiersprache | |
DE69032932T2 (de) | System und Verfahren zum unverfälschten Polygonenzeichnen | |
DE69626394T2 (de) | Verfahren und vorrichtung zur verminderung des speicherbedarfs für anzeigedaten | |
DE68923227T2 (de) | Vektor-zu-Raster-Umwandlungsverfahren. | |
DE69831385T2 (de) | Verfahren und Anordnung zum Mischen von graphischen Objekten mit Planarkarten | |
DE69331871T2 (de) | Verfahren und Vorrichtung zur Datenverarbeitung für ein Bildschirmgerät mit reduzierten Pufferspeichersforderungen | |
DE69100140T2 (de) | Verfahren zur Anzeige eines Bildteiles einer physikalischen Struktur. | |
DE68919024T2 (de) | Verfahren und Prozessor zur Abtastumsetzung. | |
DE3689271T2 (de) | Verfahren zur Bildanzeige. | |
EP1227444B1 (de) | Verfahren zur Rasterisierung eines Graphikgrundelements | |
DE69131927T2 (de) | Verfahren und gerät um verfälschte polygone darzustellen | |
DE69130132T2 (de) | Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven | |
DE60032832T2 (de) | Darstellung einer gekrümmten Oberfläche in mehreren Auflösungen | |
DE19709220B4 (de) | System und Verfahren für eine beschleunigte Verdeckungsauslese | |
DE69322575T2 (de) | Verfahren und Gerät zur Wiedergabe von abgeglichenen NURB Oberflächen | |
DE69423129T2 (de) | System und Verfahren zur Kurvendarstellung | |
DE69624868T2 (de) | Computergraphiksystem mit leistungsfähiger Vorverarbeitung des Clippings von Primitiven | |
DE69535098T2 (de) | Verfahren und -vorrichtung zur Suche von Bildern in einer Datenbank | |
DE69826044T2 (de) | Vektorkartenplanarisierung und -einfang |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
R082 | Change of representative |
Ref document number: 667018 Country of ref document: EP Representative=s name: PATENTANWAELTE RUFF, WILHELM, BEIER, DAUSTER & PAR |