Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD OF RASTERIZING A GRAPHICS BASIC COMPONENT
Document Type and Number:
WIPO Patent Application WO/2000/063846
Kind Code:
A1
Abstract:
The invention relates to a method of rasterizing a graphics basic component (120) in a graphics system. According to the inventive method, pixel data for the graphics basic element are generated on the basis of data that describe the graphics basic element. The graphics system comprises a memory that is subdivided into a plurality of blocks (a, a+1, b, b+1) that are allocated to an array on an image screen (114) that is predetermined among a plurality of arrays. Every block of the plurality of blocks (a, a+1, b, b+1) is allocated to a memory page of the memory. The method comprises scanning the pixels allocated to the graphics basic element (120) in a plurality of blocks (a) into which the graphics basic element extends, repeating the previous step until all pixels allocated to the graphics basic element are scanned in the plurality of blocks in which the graphics basic element extends, and outputting the pixel data.

Inventors:
FURTNER WOLFGANG (DE)
Application Number:
PCT/EP2000/003175
Publication Date:
October 26, 2000
Filing Date:
April 10, 2000
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SP3D CHIP DESIGN GMBH (DE)
FURTNER WOLFGANG (DE)
International Classes:
G06T15/50; G06T15/80; (IPC1-7): G06T15/50
Foreign References:
GB2297018A1996-07-17
Attorney, Agent or Firm:
Schoppe, Fritz (Zimmermann & Stöckeler Postfach 71 08 67 München, DE)
Download PDF:
Claims:
Patentansprüche
1. Verfahren zur Rasterisierung eines Graphikgrundelements (120) in einem Graphiksystem (100), um ausgehend von GraphikgrundelementBeschreibungsdaten Pixeldaten für das Graphikgrundelement zu erzeugen, wobei daß Graphik system (100) einen Speicher aufweist, der in eine Mehr zahl von Blöcken (a, a+1, b, b+1) unterteilt ist, die jeweils einem vorbestimmten einer Mehrzahl von Bereichen auf einem Abbildungsschirm (114) zugeordnet sind, dadurch gekennzeichnet, daß jeder Block der Mehrzahl von Blöcken (a, a+l, b, b+1) einer Speicherseite in dem Speicher zugeordnet ist ; und daß Verfahren folgende Schritte aufweist : Abtasten der dem Graphikgrundelement (120) zugeord neten Pixel in einem der Mehrzahl von Blöcken (a), in den sich das Graphikgrundelement erstreckt ; Wiederholen des vorhergehenden Schrittes bis alle dem Graphikgrundelement zugeordneten Pixel in jedem der Mehrzahl von Blöcken, in denen sich das Graphikgrund element erstreckt, abgetastet sind ; und Ausgeben der Pixeldaten.
2. Verfahren nach Anspruch 1, bei dem der Schritt des Ab tasten folgende Schritte umfaßt : Abtasten eines ersten Blocks (a), in dem eine Startpo sition (26) für das Graphikgrundelement (120) angeordnet ist ; wenn alle dem Graphikgrundelement zugeordneten Pixel in dem ersten Block (a) abgetastet sind, Bestimmen, ob ein zu dem ersten Block benachbarter, zweiter Block (a+1) dem Graphikgrundelement zugeordnete Pixel enthält, und, falls dies der Fall ist, Abtasten der dem Graphikgrundelement zugeordneten Pixel in dem zweiten Block (a+1) ; und Wiederholen der vorhergehenden Schritte bis alle dem Graphikgrundelement zugeordneten Pixel in der Mehrzahl von Blöcken abgetastet sind.
3. Verfahren nach Anspruch 1, bei dem die Mehrzahl von Blöcken in Streifen (n, n+1) zusammengefaßt sind, wobei jeder Streifen jeweils Blöcke (a, a+1) umfaßt, die in einer Richtung senkrecht zu einer Abtastrichtung angren zend zueinander angeordnet sind, wobei im Schritt des Abtastens zunächst die dem Graphikgrundelement zugeord neten Pixel für die Blöcke (a, a+1) eines ersten Strei fens n abgetastet werden und nachfolgend die Pixel in Blöcken (b, b+1) weiterer Streifen (n+1).
4. Verfahren nach Anspruch 3, bei dem im Schritt des Abta stens nach dem Abtasten der Blöcke eines Streifens be stimmt wird, ob in den Blöcken eines benachbarten Strei fens (n+1) dem Graphikgrundelements zugeordneten Pixel enthalten sind, und, wenn dies der Fall ist, Abtasten des benachbarten Streifens (n+1).
5. Verfahren nach Anspruch 3 oder 4, bei dem während des Abtastens eines Streifens eine Startposition für die Ab tastung des nächsten Streifens bestimmt wird.
6. Verfahren nach einem der Ansprüche 1 bis 5, bei dem die dem Graphikgrundelements zugeordneten Pixel entlang einer Abtastlinie (124) abgetastet werden, wobei die An zahl der Pixel in der Abtastlinie die Breite eines Spei cherblocks nicht übersteigt, wobei nach dem Abtasten aller dem Graphikgrundelement zugeordneten Pixel in der Abtastlinie (124) die dem Graphikgrundelement zugeord neten Pixel in der nächsten Abtastlinie abgetastet werden.
7. Verfahren nach Anspruch 6, mit folgenden Schritten : Bestimmen, ob ein erstes Pixel (130a), das in der Ab tastlinie benachbart zu dem gerade abgetasteten Pixel angeordnet ist, dem Graphikgrundelement zugeordnet ist ; Bestimmen, ob ein zweites Pixel (130b), das in der näch sten Abtastlinie benachbart zu dem gerade abgetasteten Pixel angeordnet ist, dem Graphikgrundelement zugeordnet ist ; und falls weder das erste noch das zweite Pixel 130a, 130b dem Graphikgrundelement zugeordnet ist, Abtasten eines weiteren, dem Graphikgrundelement zugeordneten Pixels 130c, das benachbart zu dem ersten Pixel 130a und be nachbart zu dem zweiten Pixel 130b ist.
8. Verfahren zur Rasterisierung eines Graphikgrundelements (120) in einem Graphiksystem (100), um Ausgehend von GraphikgrundelementBeschreibungsdaten Pixeldaten für das Graphikgrundelement zu Erzeugen, mit den folgenden Schritten : Abtasten eines dem Graphikgrundelements (120) zugeord neten Pixels ; Bestimmen, ob ein erstes Pixel (130a), das in Abtast richtung benachbart zu dem abgetasteten Pixel angeordnet ist, dem Graphikgrundelement zugeordnet ist ; Bestimmen, ob ein zweites Pixel (130b), das in einer Richtung senkrecht zu der Abtastrichtung benachbart zu dem abgetasteten Pixel angeordnet ist, dem Graphikgrund element zugeordnet ist ; falls weder das erste noch das zweite Pixel (130a, 130b) dem Graphikgrundelement zugeordnet ist, Abtasten eines weiteren, dem Graphikgrundelement zugeordneten Pixel (130c), das benachbart zu dem ersten Pixel und benach bart zu dem zweiten Pixel ist ; Wiederholen der vorhergehenden Schritte, bis alle dem Graphikgrundelement (120) zugeordneten Pixel abgetastet sind ; und Ausgeben der Pixeldaten.
9. Verfahren zur Rasterisierung eines Graphikgrundelements (120) in einem Graphiksystem (100), um ausgehend von GraphikgrundelementBeschreibungsdaten Pixeldaten für das Graphikgrundelement zu erzeugen, wobei das Graphik system (100) eine Mehrzahl von Graphikverarbeitungs pipelines umfaßt, mit folgenden Schritten : gleichzeitiges Abtasten einer Mehrzahl von benachbarten Pixel, wobei die benachbarten Pixel ein Cluster (132) bilden, wobei zumindest eines der Mehrzahl von benach barten Pixel dem Graphikgrundelement (120) zugeordnet ist, wobei die Anzahl der gleichzeitig abgetasteten Pixel von der Anzahl von Graphikverarbeitungspipelines in dem Graphiksystem (100) abhängt ; Wiederholen des vorhergehenden Schrittes, bis alle dem Graphikgrundelement zugeordneten Pixel abgetastet sind ; und Ausgeben der Pixeldaten.
10. Verfahren nach Anspruch 9, bei dem ein Cluster (132) n benachbarte Pixel in Abtastrichtung und m benachbarte Pixel in einer Richtung senkrecht zur Abtastrichtung umfaßt, wobei n und m größer oder gleich Eins sind, wobei die Anzahl der Graphikverarbeitungspipelines durch das Produkt von n und m (n x m) bestimmt ist.
11. Verfahren nach Anspruch 9 oder 10, bei dem alle Pixel eines Clusters (132) in einem Speicherwort, das in einem Speicher des Graphiksystems (100) abgelegt ist, ange ordnet sind.
12. Verfahren nach einem der Ansprüche 9 bis 11, bei dem das Graphiksystem (100) eine Mehrzahl von Graphikverarbei tungsmaschinen (106a, 106b, 108ad) umfaßt, von denen jede eine Mehrzahl von Graphikverarbeitungspipelines aufweist, wobei das Verfahren folgende Schritte umfaßt : gleichzeitiges Abtasten einer Mehrzahl von benachbarten Clustern (132), wobei die Anzahl der gleichzeitig abge tasteten Cluster (132) von der Anzahl der Graphikverar beitungsmaschinen in dem Graphiksystem abhängt ; und Wiederholen des vorhergehenden Schrittes bis alle dem Graphikgrundelement zugeordneten Pixel abgetastet sind.
13. Verfahren nach einem der Ansprüche 9 bis 12, bei dem das Graphiksystem einen Speicher aufweist, der in eine Mehr zahl von Blöcke a, a+1, b, b+1 unterteilt ist, die je weils einem vorbestimmten einer Mehrzahl von Bereichen auf einem Abbildungsbildschirm zugeordnet sind, wobei die dem Graphikgrundelement (120) zugeordneten Pixel entsprechend der Mehrzahl von Blöcken, in die sich das Graphikgrundelement erstreckt, blockweise abgetastet werden.
14. Verfahren nach einem der Ansprüche 9 bis 13, mit folgen den Schritten : Bestimmen, ob ein erster Cluster, der in Abtastrichtung benachbart zu dem benachbarten Cluster angeordnet ist, Pixel enthält, die dem Graphikgrundelement zugeordnet sind ; Bestimmen, ob ein zweiter Cluster, der in einer Richtung senkrecht zur Abtastrichtung benachbart zu dem abgeta steten Cluster angeordnet ist, Pixel enthält, die dem Graphikgrundelement zugeordnet sind ; und falls weder der erste noch der zweite Cluster dem Graphikgrundelement zugeordnete Pixel enthält, Abtasten eines weiteren Clusters, der benachbart zu dem ersten Cluster und benachbart zu dem zweiten Cluster ist.
15. Verfahren nach einem der Ansprüche 9 bis 14, mit folgen den Schritten : für jedes Pixel in einem Cluster, Bestimmen, ob das je weilige Pixel dem Graphikgrundelement zugeordnet ist ; Erzeugen eines Sichtbarkeitssignals für jedes Pixel, wo bei das Sichtbarkeitssignal einen ersten Wert hat, wenn das Pixel dem Graphikgrundelement zugeordnet ist, und einen zweiten Wert hat, wenn das Pixel dem Graphikgrund element nicht zugeordnet ist ; und Ausgeben des Sichtbarkeitssignals für jedes Pixel.
16. Verfahren nach einem der Ansprüche 1 bis 15, mit folgen den Schritten : Empfangen der GraphikgrundelementBeschreibungsdaten, wobei die GraphikgrundelementBeschreibungsdaten folgen de Informationen umfassen : Koordinaten für einen Startpunkt (126) des Graphik grundelements (120) ; Werte für eine lineare Kantenfunktion für den Start punkt (126) ; Inkrementalwerte für die Kanten des Graphikgrundele ments (120), zum pixelweisen Abtasten in eine vorbe stimmte Abtastrichtung ; und Angaben der Zeilen und Spalten, ausgehend von dem Startpunkt (126) in Abtastrichtung, über die sich das Graphikgrundelement erstreckt.
17. Verfahren nach einem der Ansprüche 1 bis 16 mit folgen den Schritten : Empfangen von Graphiksysteminformationen, die folgende Informationen umfassen : Systemverschachtelungsfaktoren in xund yRichtung ; Verschachtelungsverschiebungen in dem System ; Abmessung eines Clusters ; und die Speicherstreifenbreite in Pixel.
18. Verfahren nach einem der Ansprüche 9 bis 17, mit fol genden Schritten vor dem Abtasten : Bestimmen einer Anfangsposition innerhalb eines Clu sters, ausgehend von der Startposition, wobei die An fangsposition durch die Koordinaten des Pixels in dem Cluster festgelegt ist, daß der Abtastrichtung am nächsten ist ; und für jede Graphikverarbeitungsmaschinen, Bestimmen des ersten Clusters in Abtastrichtung, das der jeweiligen Graphikverarbeitungsmaschine zugeordnet ist.
19. Verfahren nach einem der Ansprüche 1 bis 18, bei dem der Schritt des Abtastens eine inkrementales Berechnen der linearen Kantenfunktion für das Graphikgrundelement ge mäß den folgenden Schritten umfaßt : Bestimmen, ob ein benachbartes Cluster eine Kante des Graphikgrundelements überschritten hat, gemäß folgender Schritte : Bestimmen, ob das in yRichtung am nächsten liegende und in xRichtung am entferntesten liegende Pixel des benachbarten Clusters eine führende Kante des Graphik grundelements überschritten hat ; und Bestimmen, ob das in xRichtung am nächsten liegende Pixel des benachbarten Clusters eine nichtführende Kante des Graphikgrundelements überschritten hat ; Bestimmen des Pixels, für das das nächste Inkrement der linearen Kantenfunktion zu berechnen ist.
Description:
VERFAHREN ZUR RASTERISIERUNG EINES GRAPHIKGRUNDELEMENTS Beschreibung Die vorliegende Erfindung bezieht sich auf ein Verfahren zur Rasterisierung eines Graphikgrundelements, um insbesondere auf ein beschleunigtes Verfahren zur Rasterisierung eines Graphikgrundelements in einem Graphiksystem, um ausgehend von Graphikgrundelement-Beschreibungsdaten Pixeldaten fur das Graphikgrundelement zu erzeugen.

Um den Prozeß der Bildaufbereitung (Rendering) von dreidi- mensionalen Bildern zu beschleunigen, ist es bekannt, Mehr- fach-Prozessoren oder Hardware-Pipelines parallel zu verwen- den. Jede dieser Einheiten wirkt auf eine Teilmenge der In- formationen ein, die in einem gesamten Bild enthalten ist, wie dies von James D. Foly u. a. in"Computergraphic Principles and Practice", 2. Ausgabe, 1990, Seiten 887-902 beschrieben ist. Diese Aufgabe kann dadurch aufgeteilt wer- den, daß entweder Objekte (Polygone) in dem Bild parallel verarbeitet werden, oder daß bestimmte Abschnitte des Bildes parallel verarbeitet werden. Eine reine Implementierung der Aufteilung von Objekten führt zu einer Unterteilung der Objektebenenbeschreibung einer Szene (Scheitelpunktliste ; Vertex List), so daß jeder der Prozessoren gleichmäßig belastet wird. Diese Aufteilung wird unabhängig von der Anordnung der jeweiligen Objekte in der dreidimensionalen Welt oder in einem Rahmenpuffer durchgeführt.

Die Implementierung der Aufteilung der Aufgabe durch Bilden von Abschnitten eines Bildes erfolgt durch Unterteilen eines Rahmenpuffers in Teilabschnitte, die normalerweise die gleiche Größe haben. Hinsichtlich der Aufteilung des Rahmen- puffers besteht die Möglichkeit, demselben entweder große, kontinuierliche Pixelblöcke zuzuordnen, oder die Zuordnung in einer verschachtelten Art und Weise vorzunehmen.

In Fig. 21 sind die gerade beschriebenen Partitionierungs- möglichkeiten eines Rahmenpuffers für den Fall eines Gra- phiksystems dargestellt, welches mit vier Graphikbearbei- tungsmaschinen (Engines) arbeitet. In Fig. 21a ist die Zu- ordnung von großen, kontinuierlichen Pixelblöcken zu den je- weiligen Graphikverarbeitungsmaschinen dargestellt. Wie zu erkennen ist, ist der Rahmenpuffer 10 in diesem Beispiels- fall in vier gleichgroße Blöcke unterteilt, die den Ma- schinen zugeordnet sind. In Fig. 21b ist die verschachtelte Rahmenpartitionierung des Rahmenpuffers 10 dargestellt, und es ist zu erkennen, daß die Verarbeitung der einzelnen Pixel 12, die durch die Kästchen in der Fig. 21 dargestellt sind, auf verschachtelte Art und Weise durch die vier Graphikver- arbeitungsmaschinen des Graphiksystems erfolgt.

Die verschachtelte Partitionierung (Interleaved Parti- tioning) wird sehr häufig verwendet, da diese den Vorteil bietet, daß die Arbeitsbelastung der einzelnen Prozessoren automatisch ausgeglichen wird. Mit Ausnahme der kleinsten Polygone liegen sämtliche Polygone in allen Partitionie- rungen des Rahmens, so daß fast jeder Bildaufbereitungsvor- richtung (Renderer) die gleiche Anzahl von Pixeln zugeführt werden. Die verschachtelte Rahmenpufferpartitionierung wird auch als"verteilter Rahmenpuffer"bezeichnet.

In Fig. 22 ist ein Blockdiagramm eines herkömmlichen Gra- phiksystems gezeigt, welches eine Pipeline zur Pixelverar- beitung aufweist. Das Graphiksystem ist in seiner Gesamtheit mit dem Bezugszeichen 14 versehen und umfaßt einen Abtastum- wandler 16 (Scan Converter) der an seinem Eingang Daten emp- fängt, welche das zu verarbeitende Graphikgrundelement, z.

B. ein Polygon, beschreiben. Der Abtastumwandler 16 bearbei- tet die empfangenen Daten und erzeugt an seinem Ausgang In- terpolatorbefehle, die in einen Parameterinterpolator 18 eingegeben werden. Der Ausgang des Parameterinterpolators 18 ist mit einem ersten Eingang einer Pixelpipeline 20 verbun- den. Der Ausgang der Pixelpipeline 20 ist über eine Packungseinheit 22 mit einem Speicherteilsystem 24 verbun- den. Über eine Entpackungseinheit 26 werden Daten aus dem Speicherteilsystem 24 dem zweiten Eingang der Pixelpipeline 20 zugeführt.

In Fig. 23 ist ein Blockdiagramm eines herkömmlichen Gra- phiksystems mit einer Mehrzahl von parallel arbeitenden Pipelines dargestellt. Das Graphiksystem ist in seiner Gesamtheit mit dem Bezugszeichen 28 verbunden, und gleiche oder ähnliche Elemente, wie bei dem System in Fig. 22, sind mit den gleichen Bezugszeichen versehen. In Abweichung von dem in Fig. 22 dargestellten Graphiksystem ist der Abtastum- wandler 16 als paralleler Abtastumwandler ausgeführt, und ebenso ist der Parameterinterpolator 18 als paralleler Para- meterinterpolator ausgeführt. Dieser parallele Parameter- interpolator 18 weist eine Mehrzahl von Ausgängen auf, um Daten einer Mehrzahl von Pixel-Pipelines 200_20n zuzuführen, wobei Ausgänge der Pixel-Pipelines mit der Packungseinheit 22 verbunden sind. Die Entpackungseinheit 26 ist mit den zweiten Eingängen der jeweiligen Pixelpipeline 200_20n ver- bunden.

Die parallele Bildaufbereitung unter Verwendung einer ver- schachtelten Rahmenpartitionierung stellt für die Hardware- implementierung von Bildaufbereitungspipelines, wie sie in Fig. 23 gezeigt sind, ein sehr geeignetes Verfahren dar. Das Speicherteilsystem 24 handhabt in der Regel sogenannte Spei- cherwörter, die eine Mehrzahl von Pixeln enthalten. Ein 128 Bitwort enthält z. B. vier Farbpixel (true color pixel), wobei jedes Pixel 32 Bit umfaßt. Das Speicherteilsystem 24 kann während eines Taktzyklus entweder ein solches Wort lesen oder schreiben. Bei einem Graphiksystem mit einer einzelnen Pixelpipeline, wie es in Fig. 22 gezeigt ist, muß die Entpackungseinheit 26 zur Fragmentberechnung (z. B. Tex- turüberblendungen, spiegelnden Hinzufügungen, Zielüberblen- dungen, Dithering, Rasteroperationen u. a.) ein Pixel pro Takt herausziehen und in das interne Farbformat umwandeln.

Die Packungseinheit 22 wandelt die Ergebnisse der Pixel- Pipelineberechnung in das im Speicher gespeicherte Farbfor- mat um und stellt mehrere Pixel zu einem Speicherwort zu- sammen.

Systeme mit mehreren Bildaufbereitungspipelines, wie sie in Fig. 23 gezeigt sind, können mehrere Pixel, die innerhalb eines Speicherwortes enthalten sind, parallel verarbeiten. Wenn die Anzahl der Pixelpipeline gleich der Anzahl von Pixel pro Speicherwort ist, wird das Packen und Entpacken derselben trivial.

In Graphikverarbeitungssystemen werden meistens Bildaufbe- reitungsmaschinen verwendet, deren Grundelemente Polygone sind. Überdies sind diese Polygone auf bestimmte Typen, wie z. B. Dreiecke oder vierseitige Elemente beschränkt. Kom- plexere Polygone können dann unter Verwendung dieser Gra- phikgrundelemente definiert werden.

Die grundsätzliche Herausforderung bei der Verarbeitung von Graphikgrundelementen besteht darin, daß es so einfach wie möglich sein muß, zu bestimmen, ob ein Punkt auf einem Bild- schirmbereich innerhalb oder außerhalb des aufzubereitenden Graphikgrundelements liegt. Für Dreiecke kann dies bei- spielsweise dadurch erreicht werden, daß die drei Kanten, die das Graphikgrundelement bilden, mittels linearer Kanten- funktionen beschrieben werden.

In Fig. 24 ist ein Beispiel für eine lineare Kantenfunktion dargestellt. Beispielhaft ist in dem karthesischen Koordina- tensystem in Fig. 24 eine Kante 30 eines Graphikgrundele- ments dargestellt, und mit den Koordinaten x0 und yo bzw. xl und yl, sind der Anfangs-bzw. Endpunkt der Kante bestimmt.

Durch die im rechten Abschnitt der Fig. 24 angegebene Kan- tenfunktion kann bestimmt werden, ob ein Punkt innerhalb des karthesischen Koordinatensystems links oder rechts der Kante oder auf der Kante liegt. Der Punkt P liegt auf der Kante 30 und in diesem Fall ist der Wert für die Kantenfunktion gleich 0. Der Punkt Q liegt rechts von der Kante 30, und in diesem Fall ist das Ergebnis der Kantenfunktion größer als 0, wohingegen für den Punkt R, welcher links von der Kante 30 liegt, daß Ergebnis der Kantenfunktion kleiner ist als 0.

Mit anderen Worten ergibt jede der linearen Kantenfunktionen einen Wert von 0 für Koordinaten, die sich genau auf der Kante bzw. der Linie befinden, einen positiven Wert für Ko- ordinaten auf einer Seite der Linie bzw. Kante, und einen negativen Wert für Koordinaten auf der anderen Seite der Linie bzw. Kante. Das Vorzeichen der linearen Kantenfunktion unterteilt die Zeichenoberfläche in zwei Halbebenen.

Die linearen Kantenfunktionen (Linear Edge Functions) sind in den folgenden Artikeln näher beschrieben : J. Pineda"A Parallel Algorithm for Polygon Rasterisation"Seggraph Proceedings, Band 22, Nr. 4,1988, Seiten 17-20 ; H. Fuchs, o. a."Fast Spheres Shadows, Textures, Transparences, and Image Enhancements in Pixel-Planes"Seggraph Proceedings, Band 19, Nr. 3,1985, Seiten 111-120 ; Dunnet, White, Lister, Grinsdale University of Sussex,"The Image Chip for High Performance", IEEE Computer Graphics and Applications, Nov.

1992, Seiten 41-51.

Durch die Multiplikation der Kantenfunktionen mit dem Wert -1 kann das Vorzeichen für die Halbebenen invertiert werden, und ferner kann die Kantenfunktion normalisiert werden, um eine Entfernung eines Punktes zu der Kante anzuzeigen, wie dies von A. Schilling in"A New, Simple and Efficient Antialiasing with Subpixel Marks", Seggraph Proceedings, Band 25, Nr. 4,1991, Seiten 1,2,3-141 beschrieben wird.

Dies ist besonders für Pixelüberdeckungsberechnungen sinn- voll, um ein Kanten-Antialiasing durchzuführen (Antialiasing = Maßnahme zur Minderung von Bildverzerrungen).

Die linearen Kantenfunktionen werden von einem gegebenen Startpunkt aus inkremental berechnet, was für Hardware- implementierungen besonders wünschenswert ist, nachdem es die Möglichkeit eröffnet, anstelle der aufwendigen Multi- plizierer nur einfache Addierer zu verwenden. In Fig. 25 ist ein Beispiel für die Kantenfunktionsinkremente dargestellt, wobei mit E der Startpunkt bezeichnet ist, und E+dex die Inkrementierung in die x-Richtung anzeigt, und E+dey die Inkrementierung in die y-Richtung. Im rechten Teil der Fig. 25 ist die Bestimmung der Inkrementalwerte dex bzw. dey beschrieben. Ist die Kantenfunktion selbst normalisiert oder invertiert, ist es erforderlich, die in Fig. 25 angegebenen Delta-Werte für die inkrementalen Schritte ebenfalls zu normalisieren und zu invertieren.

Für ein Dreieck können die drei Kantenfunktionen so ange- ordnet werden, daß alle drei Kantenfunktionen nur für solche Koordinaten einen positiven Wert liefern, die innerhalb des Dreiecks liegen. Wenn zumindest eine Kantenfunktion einen negativen Wert ergibt, liegt die betreffende Koordinate, d. h. daß betreffende Pixel, außerhalb des Dreiecks. In Fig.

26A ist die Vorzeichenverteilung für die drei Kanten 30a, 30b, 30c eines dreieckförmigen Graphikgrundelements 32 dar- gestellt. Die in Fig. 26 dargestellten Kästchen 12 stellen jeweils ein darstellbares Pixel dar. Wie zu erkennen ist, ergeben die Kantenfunktionen für die Kanten 30a-30d immer dann einen negativen Wert, wenn die Koordinate außerhalb des Graphikgrundelements 32 liegt und nur wenn die Koordinate innerhalb desselben liegt, wird ein Ergebnis mit positivem Vorzeichen ausgegeben.

Typischerweise erhält die Abtastumwandlungshardware (Scan Conversion Hardware) die Kantenfunktionswerte aller drei Kanten für einen gegebenen Startpunkt zusammen mit den Del- ta-Werten für die x-und y-Richtung, um so die inkrementale Berechnung der nachfolgenden Koordinaten zu ermöglichen. Bei jedem Takt rückt der Abtastumwandler um ein Pixel in hori- zontaler Richtung oder ein Pixel in vertikaler Richtung wei- ter. In Fig. 26B ist ein möglicher überquerungsalgorithmus dargestellt, um das in Fig. 26A bereits dargestellte Dreieck 32 zu durchlaufen. Der Abtastpfad ist in Fig. 26B darge- stellt, und wie zu erkennen ist, wird das Dreieck beginnend mit einem Startpixel 34 auf die dargestellte Weise durchlau- fen, bis zum letzten Pixel 36. Von hieraus springt der Algo- rithmus zu einem weiteren, zu verarbeitenden Graphikgrund- element. Beim Überqueren des Graphikgrundelementes können Kantenfunktionswerte für ältere Positionen gespeichert wer- den, um eine Rückkehr zu dem selben oder zu deren Nachbarn zu ermöglichen. Das Ziel besteht darin, so wenig Taktzyklen pro Dreieck wie möglich zu verbrauchen, oder, mit anderen Worten, das Abtasten von Pixeln außerhalb des Dreiecks, welche in weiterem Verlauf der Beschreibung als unsichtbare Pixel bezeichnet werden, zu vermeiden. Ein einfaches Ver- fahren könnte z. B. darin bestehen, alle Pixel, die inner- halb des Umgrenzungsrechteckes des Graphikgrundelements enthalten sind, zu überqueren, und diese hinsichtlich ihrer Sichtbarkeit zu überprüfen. Dies wurde offensichtlich bedeu- ten, daß mindestens 50% von nicht-sichtbaren Pixeln über- quert werden müßten. Dem gegenüber ist der in Fig. 26B dar- gestellte Algorithmus weiterentwickelt, nachdem dieser das Dreieck Abtastlinie für Abtastlinie abgetastet, wobei hier- bei einer führenden Kante des Dreiecks gefolgt wird. Die führende Kante des Dreiecks ist diejenige, die die größte Ausdehnung in eine Richtung senkrecht zur Abtastrichtung bzw. zur Abtastlinie hat. Bei den meisten Dreiecksformen wird hierdurch das uberqueren von unsichtbaren Pixeln in großem Umfang vermieden, und nur für sehr schmale Dreiecke steigt der Prozentsatz von abgetasteten unsichtbaren Pixeln an.

Die Abtastlinien können entweder horizontal oder vertikal oder sogar mit sich ändernden Ausrichtungen abhängig von dem zu untersuchenden Dreieck definiert werden. In der Praxis ist es sinnvoll, die Abtastumwandlung auf horizontale Ab- tastlinien zu beschränken, da dies die Abtastung mit der Anzeige-Auffrisch-Abtastung ausrichtet und ferner kann ein Speicherzugriff typischerweise nur für eine Abtastachse op- timiert werden. Wenn die Abtastzeilen horizontal definiert sind, ist die führende Kante des Dreiecks durch die zwei Scheitelpunkte definiert, die den größten Unterschied bzgl. ihrer y-Koordinaten aufweisen. Um ein symmetrisches Verhal- ten der Rasterisierung bzw. Abtastumwandlung sicher zu stel- len, ist es wünschenswert, die vertikale bzw. horizontale Abtastrichtung abhängig von der Neigung der führenden Kante und abhängig von der Ausrichtung des Dreiecks zu verändern.

In Fig. 27 sind verschiedene Abtastrichtungen für unter- schiedliche Dreieckstypen dargestellt. Wie zu erkennen ist, ist für das Dreieck des Typ A die horizontale Abtastrichtung in positiver x-Richtung und die vertikale Abtastrichtung in positiver y-Richtung definiert. Für das Dreieck vom Typ B ist die horizontale Abtastrichtung in negativer x-Richtung und die vertikale Abtastrichtung in positiver y-Richtung definiert. Für das Dreieck vom Typ C ist die horizontale Abtastrichtung in positiver x-Richtung und die vertikale Abtastrichtung in negativer y-Richtung definiert, und für das Dreieck vom Typ D ist die vertikale Abtastrichtung in negativer y-Richtung und die horizontale Abtastrichtung in negativer x-Richtung definiert.

Nachfolgend wird noch auf das Speicherteilsystem, welches anhand der Fig. 22 und 23 erwähnt wurde, näher eingegangen.

Bekannte Graphiksysteme verwenden typischerweise dynamische Speicher mit wahlfreiem Zugriff (z. B. synchrone DRAMs), für die Rahmenpufferspeicherung. Nachdem das Verhalten des Ra- sterisierers durch die Speicherbandbreite bestimmt ist, ist es wünschenswert, mit dem Speicher auf effiziente Art und Weise zu kommunizieren.

Große Rahmenpuffer (z. B. 1600 x 1280 x 32 Bit-8M Bit) können in einer nur geringen Anzahl von Speicherbauelementen aufgenommen werden. Um eine ausreichende Bandbreite sicher- zustellen, wird auf den Speicher über einen breiten Weg zu- gegriffen, und dieser ist nur durch die Anzahl der Ein-/Aus- gänge (I/Os) begrenzt, die an der Verbindung zwischen Gra- phikchip und Speicher vorhanden sind (z. B. 128 Datenbits).

Unter Verwendung moderner Technologien, wie z. B. der dop- pelten Datenratenübertragung, können Rahmenpuffer mit Band- breiten von größer als 2 GByte/sek pro Graphiksteuerung erreicht werden. Diese Bandbreite ist jedoch nicht für den vollständig wahlfreien Zugriff verfügbar.

Ein DRAM-Array besteht aus Zeilen und Spalten, und der Zu- griff innerhalb einer Zeile (Seite) auf wechselnde Spalten wird normalerweise sehr schnell sein. Synchrone DRAMs können Daten in jedem Taktzyklus übertragen, sofern sie in der gleichen Zeile bleiben. Der Übergang auf eine andere Zeile bedeutet den Verbrauch von mehreren Taktzyklen, um die alte Spalte zu schließen, und die neue zu öffnen.

Diese Zyklen können nicht für die tatsächliche Datenübertra- gung verwertet werden, so daß sich die Gesamtbandbreite re- duziert. Um diesen Effekt zu minimieren, enthalten moderne DRAMs einige, 2 bis 4, Speicherbänke, die unterschiedliche Zeilen offen haben können. Ein effizientes Bildaufberei- tungssystem muß diese Eigenschaften berücksichtigen, um ein optimales Verhalten an den Tag zu legen.

Eine bekannte Technik bei Speichern wird als"Memory Tiling" bezeichnet, also die Unterteilung des Speichers in Kacheln bzw. Blöcke. In diesem Fall sind rechteckförmige Bereiche eines Abbildungsbildschirms auf Blöcke (tiles) in dem Speicher abgebildet. Kleine Dreiecke tendieren dazu, voll- ständig in einen Block zu fallen, was bedeutet, daß diese während der Bildaufbereitung zu keinen Seitenfehlern beim Zugriff auf den Speicher führen. Die Graphiksystemeigen- schaften für die Verarbeitung von Dreiecken, die mehrere Blöcke schneiden, d. h. sich über mehrere Blöcke erstrecken, kann dadurch erhöht werden, daß benachbarte Blöcke in unter- schiedliche Speicherbänke in Form eines Schachbretts abge- bildet werden. Ein Beispiel für eine mögliche Speicherein- teilung ist in Fig. 28 gezeigt, bei der jeder Block eine Größe von 2 KByte hat.

Aus der US-A-5,367,632 ist ein Graphiksystem mit einer Mehr- zahl von pipelineartig angeordneten Graphikaufbereitungsele- menten bekannt, wobei jeder Pipeline eine Rasterisierung mit entsprechendem Speicher zugeordnet ist. Die einzelnen Spei- cher sind herkömmliche Speicherelemente, die jeweils für sich genommen einen Rahmenpuffer für die jeweilige Pipeline bilden. Die Speicher sind in keiner spezifischen Organisa- tion angeordnet.

Die US-A-5,821,944 beschreibt das"Memory Tiling", bei dem ein Bildschirmbereich, auf dem ein Graphikgrundelement abzu- bilden ist, ist in eine Vielzahl von Feldern oder Blöcken unterteilt. Nach Festlegung der Blöcke erfolgt eine zwei- stufige Abtastung und es wird festgestellt, welche der Blöcke einen Abschnitt des zu bearbeitenden Graphikgrundele- ments aufweisen. Dann werden in der zweiten Stufe die gerade bestimmten Blöcke abgetastet. Die einzelnen Blöcke sind aus- gewählt, um entsprechenden Speicherbereichen zugeordnet zu sein, wobei die den jeweiligen Blöcken zugeordneten Spei- cherbereiche während der Bearbeitung in einen Cache-Speicher abgelegt werden.

Die aus dem Stand der Technik bekannten Graphiksysteme zur Verarbeitung von dreidimensionalen Bildern sind jedoch da- hingehend nachteilhaft, daß keine optimale Ausnutzung der Speicherkapazitäten sichergestellt ist. Daher und durch die aus dem Stand der Technik bekannten Rasterisierungs-Ver- fahren ist die Leistungsfähigkeit dieser Systeme beschränkt.

Ausgehend von diesem Stand der Technik liegt der vorliegen- den Erfindung die Aufgabe zugrunde, ein Verfahren zur Raste- risierung eines Graphikgrundelements zu schaffen, das gegen- über den im Stand der Technik bekannten Verfahren eine er- höhte Leistungsfähigkeit aufweist.

Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1, durch ein Verfahren gemäß Anspruch 8 und durch ein Verfahren gemäß Anspruch 9 gelöst.

Gemäß einem ersten Aspekt schafft die vorliegende Erfindung ein Verfahren zur Rasterisierung eines Graphikgrundelements in einem Graphiksystem, um ausgehend von Graphikgrundele- ment-Beschreibungsdaten Pixeldaten für das Graphikgrundele- ment zu erzeugen, wobei das Graphiksystem einen Speicher aufweist, der in eine Mehrzahl von Blöcken unterteilt ist, die jeweils einem vorbestimmten einer Mehrzahl von Bereichen auf einem Abbildungsbildschirm zugeordnet sind. In einem er- sten Schritt werden die dem Graphikgrundelement zugeordneten Pixel in einem der Mehrzahl von Blöcken abgetastet, in den sich das Graphikgrundelement erstreckt, und dieser Schritt wird wiederholt, bis alle dem Graphikgrundelement zugeordne- ten Pixel in jedem der Mehrzahl von Blöcken, in den sich das Graphikgrundelement erstreckt, abgetastet sind. Anschließend werden die erhaltenen Pixeldaten zur weiteren Verarbeitung ausgegeben.

Gemäß einem zweiten Aspekt wird ein Verfahren zur Raste- risierung eines Graphikgrundelements in einem Graphiksystem geschaffen, um ausgehend von Graphikgrundelement-Beschrei- bungsdaten Pixeldaten für das Graphikgrundelement zu erzeu- gen, wobei in einem ersten Schritt ein dem Graphikgrundele- ment zugeordnetes Pixel abgetastet wird, und anschließend bestimmt wird, ob ein erstes Pixel, das in Abtastrichtung benachbart zu dem abgetasteten Pixel angeordnet ist, dem Graphikgrundelement zugeordnet ist. Anschließend wird be- stimmt, ob ein zweites Pixel, das in einer Richtung senk- recht zur Abtastrichtung benachbart zu dem abgetasteten Pixel angeordnet ist, dem Graphikgrundelement zugeordnet ist. Falls weder das erste noch das zweite Pixel dem Gra- phikgrundelement zugeordnet ist, wird ein weiteres, dem Gra- phikgrundelement zugeordnetes Pixel abgetastet, das benach- bart zu dem ersten Pixel und benachbart zu dem zweiten Pixel angeordnet ist. Anschließend werden diese Schritte wieder- holt, bis alle dem Graphikgrundelement zugeordneten Pixel abgetastet sind. Abschließend werden die Pixeldaten zur weiteren Verarbeitung ausgegeben.

Gemäß einem dritten Aspekt wird ein Verfahren zur Rasteri- sierung eines Graphikgrundelements in einem Graphiksystem geschaffen, um ausgehend von Graphikgrundelementen-Beschrei- bungsdaten Pixeldaten für das Graphikgrundelement zu erzeu- gen, wobei das Graphiksystem eine Mehrzahl von Graphikver- arbeitungspipelines umfaßt. Zunächst werden gleichzeitig eine Mehrzahl von benachbarten Pixeln abgetastet, wobei die benachbarten Pixel einen Cluster bilden, wobei zumindest eines der Mehrzahl von benachbarten Pixeln dem Graphikgrund- element zugeordnet ist, und wobei die Anzahl der gleichzei- tig abgetasteten Pixel von der Anzahl von Graphikverarbei- tungspipelines in dem Graphiksystem abhängt. Anschließend wird dieser Schritt wiederholt, bis alle dem Graphikgrund- element zugeordneten Pixel abgetastet sind, und abschließend werden die Pixeldaten ausgegeben.

Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß die Leistungsfähigkeit von Graphikverarbeitungssystemen dadurch erhöht werden kann, daß zum einen die abzutastenden Graphikgrundelemente auf"intelligente"Art und Weise über- quert werden, und/oder daß zum anderen die Leistungsfähig- keit des Systems durch eine weitere Parallelisierung der Datenverarbeitung erhöht wird.

Gemäß der vorliegenden Erfindung wird ein Verfahren gelehrt, welches einen"monolitischen Algorithmus"implementiert, bei dem sämtliche der oben ausgeführten Aspekte gemeinsam, ein- zeln oder in beliebiger Kombination verwendet werden können, um so die Leistungsfähigkeit des Systems zu erhöhen. Hier- durch ergibt sich eine"skalierbare Architektur"der zu ver- wendenden Graphikverarbeitungseinrichtung.

Mehrere Bildaufbereitungspipelines werden auf einem ein- zelnen Chip derart unterstützt, daß jede derselben ein an- deres Pixel eines Speicherwortes verarbeitet. Dies erfor- dert, daß der parallele Abtastumwandler in einem Betriebs- modus, der als verriegelte Abtastung (locked scan) bezeich- net wird, arbeitet. Dies bedeutet, daß die parallel verar- beiteten Pixel immer eine feste geometrische Beziehung zu- einander haben (pixel cluster). Dies vereinfacht die Hard- wareimplementierung bezüglich des Speicherteilsystems. Fer- ner wird hierdurch unabhängig vom Chiplayout auch die Anwen- dung des Verfahrens auf Chips mit mehreren Bildaufberei- tungspipelines ermöglicht.

Ein weiterer Vorteil des Verfahrens besteht darin, daß es möglich ist, mehrere einzelne Chips (s. o.) in einem System zu kombinieren, um die Leistungsfähigkeit desselben mit je- dem hinzugefügten Chip zu erhöhen. Überdies können unter- schiedliche Chips in dem System unterschiedlichen Aufgaben dienen und eine unterschiedliche Anzahl von Pixeln parallel verarbeiten, d. h. Cluster mit unterschiedlicher Größe. In diesem Fall ist es nicht erforderlich, daß die Abtastumwand- ler der parallelen Bildaufbereitungschips in dem System mit- einander verriegelt sind, da jeder derselben einen privaten Rahmenpufferspeicher hat, und die Zuführung der Polygondaten kann unter Verwendung von FIFOs entkoppelt werden.

Ein weiterer Vorteil der vorliegenden Erfindung besteht in der Speicherausnutzung. Die Speicherausnutzung hängt haupt- schlich von der Effizienz der Speichersteuerung und der Speicherentscheidungsschaltung (Arbitration-Schaltung) ab. Aber sogar mit einer idealen Speicherschnittstelleneinheit kann die Wahlfreiheit der Pixelzugriffe insbesondere bei Abtastung kleiner Dreiecke die Speicherausnutzung ruinieren, wobei dieser Effekt bei der parallelen Bildaufbereitung, bei der Dreiecke in kleinere Abschnitte unterteilt sind, sogar weiter verschlimmert wird. Dieses Problem wird gemäß der vorliegenden Erfindung vermieden, da dieser die Erkenntnis zugrunde liegt, daß für den Fall, daß der Abtastumwandler Kenntnis bezüglich der Abbildung der Bildschirmbereiche auf den Speicheradressbereich hat (tiling), die Anzahl von Sei- tenfehlern pro Dreieck minimiert werden kann. Ferner kann auch die durchschnittliche Anzahl von gleichzeitig offenen Speicherbänken reduziert werden, was wiederum die möglichen Kollisionen in Systemen reduziert, in denen mehrere Anfragen (Textur-Leseoperation, Graphikaufbereitungsmaschine-Lese/ Schreib-Operation, Anzeigebildschirm-Leseoperation) auf ein gemeinsam verwendetes Speicherelement (verbundener Speicher) erfolgt.

Ein weiterer Vorteil der vorliegenden Erfindung besteht da- rin, daß durch das erfindungsgemäße Verfahren die Effizienz der Cache-Speicherung von Texturdaten verbessert werden kann. Typischerweise wird für die Texturabbildung eine bili- neare oder trilineare Filterung verwendet. Ohne eine Zwi- schenspeicherung der Texturdaten werden vier (bilineare Fil- terung) oder sogar acht (trilineare Filterung) ungefilterte Texel erforderlich, die von dem Speicherteilsystem pro Pixel bereitgestellt werden müßten. Ein Textur-Cache-Speicher kann sich die Tatsache zunutze machen, daß während des Durchlau- fens einer Abtastlinie benachbarte Texel erneut verwendet werden können. Der Umfang der erneuten Verwendung hängt stark von der Vergrößerung/Verkleinerung ab, die ausgewählt wurde, und ist signifikant, wenn eine geeignete MIP-Tabel- lenebene (MIP-map level) ausgewählt ist. Innerhalb einer Ab- tastlinie ist nur ein sehr kleiner Textur-Cache-Speicher er- forderlich, um diesen Vorteil zu nutzen. Um jedoch die be- nachbarten Texel einer vorhergehenden Abtastlinie erneut zu verwenden, muß in dem Textur-Cache-Speicher eine vollständi- ge Abtastlinie der Texel enthalten sein. In der Praxis wird eine Cache-Speichergröße ausgewählt sein, die fähig ist, Ab- tastzeilen für Dreiecke bzw. Graphikgrundelemente von durch- schnittlicher Größe zu speichern, wodurch die Effizienz für größere Dreiecke etwas abfällt. In diesem Zusammenhang be- steht ein weiterer Vorteil der vorliegenden Erfindung darin, daß eine maximale Länge einer Abtastlinie durch den Abtast- umwandler garantiert werden kann, so daß der Cache-Speicher genau dimensioniert werden kann, und normalerweise erheblich kleiner ist als derjenige, der erforderlich ist, um Abtast- zeilen für Durchschnittsdreiecke zu speichern.

Bevorzugte Weiterbildungen der vorliegenden Erfindung sind in den Unteransprüchen definiert.

Nachfolgend werden bevorzugte Ausführungsbeispiele der vor- liegenden Erfindung anhand der beiliegenden Zeichnungen näher erläutert. Es zeigen : Fig. 1 eine schematische Darstellung eines Graphiksystems ; Fig. 2 eine Darstellung des erfindungsgemäßen Rasterisie- rungsverfahrens gemäß einem ersten Ausführungsbeispiel ; Fig. 3 eine Darstellung des erfindungsgemäßen Rasterisie- rungsverfahrens gemäß einem zweiten Ausführungsbei- spiel ; Fig. 4 eine Darstellung des erfindungsgemäßen Rasterisie- rungsverfahrens gemäß einem dritten Ausführungsbei- spiel ; Fig. 5 eine Tabelle, die Abmessungen für verschiedene Cluster zeigt, die gemäß dem dritten Ausführungs- beispiel verwendet werden können ; Fig. 6A und 6B eine Darstellung des erfindungsgemäßen Raste- risierungsverfahrens gemäß einem vierten Ausfüh- rungsbeispiel ; Fig. 7 ein Beispiel für ein Verschachtelungsschema in einem Graphiksystem gemäß Fig. 1 ; Fig. 8 ein Blockdiagramm eines parallelen Abtastumwand- lers ; Fig. 9 eine Darstellung der aktiven Zeilen/Spalten bei der Darstellung eines Graphikgrundelements ; Fig. 10 eine Darstellung der Bestimmung eines führenden Pi- xels in einem Cluster ; Fig. 11 eine Tabelle zur Bestimmung der Clusterkorrektur- faktoren ; Fig. 12 eine Tabelle zur Bestimmung der Verschachtelungs- korrekturfaktoren ; Fig. 13 eine Tabelle zur Bestimmung der Startwertkorrektur- werte ; Fig. 14 ein Blockdiagramm eines Kanteninterpolators für eine führende Kante ; Fig. 15 eine Darstellung der Bestimmung des Überschreitens einer Kante eines Graphikgrundelements ; Fig. 16 eine Tabelle, die die Ergebnisse der Bestimmung aus Fig. 15 zeigt ; Fig. 17 eine Tabelle, die die Bewegungsschritte des Abtast- umwandlers zeigt ; Fig. 18 eine Tabelle, die die Aktualisierungsregeln für die Aktualisierung der Interpolatorregister in Fig. 14 zeigt ; Fig. 19 eine Tabelle der Abtastbefehle ; Fig. 20A ein Beispiel für eine Sichtbarkeitsberechnung ; Fig. 20B Zeilen und Spalten bei der Sichtbarkeitsberechnung ; Fig. 21A ein Beispiel für eine herkömmliche kontinuierliche Rahmenpartitionierung eines Rahmenpuffers ; Fig. 21B ein Beispiel für eine herkömmliche verschachtelte Rahmenpartitionierung eines Rahmenpuffers ; Fig. 22 ein Blockdiagramm eines Graphiksystems mit einer Pipeline ; Fig. 23 ein Blockdiagramm eines Graphiksystems mit paralle- len Pipelines ; Fig. 24 ein Beispiel für eine lineare Kantenfunktion ; Fig. 25 ein Beispiel für die Berechnung der Kantenfunktion ; Fig. 26A eine Darstellung der Vorzeichen der Kantenfunk- tionswerte für ein Dreieck ; Fig. 26B einen möglichen Überquerungsalgorithmus für das Dreieck aus Fig. 26 A ; Fig. 27 eine Darstellung der Abtastrichtungen für unter- schiedliche Dreiecke ; und Fig. 28 ein Beispiel für einen Speicher, der in Blöcke gleicher Größe unterteilt ist.

Anhand der Fig. 1 wird nachfolgend ein Beispiel eines Gra- phiksystems beschrieben, in welchem das erfindungsgemäße Verfahren ausgeführt wird. Das Graphiksystem in Fig. 1 ist in seiner Gesamtheit mit dem Bezugszeichen 100 versehen und umfaßt einen Einstellprozessor 102, der von einem übergeord- neten System eine Beschreibung der darzustellenden Objekte, z. B. in Form einer Scheitelpunktliste empfängt. Der Prozes- sor 102 wandelt diese Beschreibung in individuelle Daten- sätze für jedes Graphikgrundelement bzw. Polygon um. Das Graphiksystem 100 umfaßt in dem dargestellten Beispiel 2 Textur-Maschinen 104a, 104b, die die Polygondaten von dem Prozessor 102 empfangen. Jeder der Texturmaschinen 104a und 104b ist ein Speicher mit wahlfreiem Zugriff 106a und 106b zugeordnet.

Das Graphiksystem umfaßt ferner eine Mehrzahl von Bildauf- bereitungsmaschinen (Render-Engine) 108a bis 108d, denen jeweils ein Speicher 110 a bis 110 d zugeordnet ist. Die Bildaufbereitungsmaschinen 108a bis 108d empfangen die von dem Prozessor 102 bereitgestellten Polygondaten an einem ersten Eingang und ferner die durch die Texturmaschinen auf- bereiteten Daten an einem zweiten Eingang, wobei jeweils zwei Bildaufbereitungsmaschinen 108a, 108b bzw. 108c, 108d einer Texturmaschine 104a bzw. 104b zugeordnet ist. Die Bildaufbereitungsmaschinen 108a bis 108d sind mit einer RAMDAC-Schaltung 112 verbunden, die die erforderliche Digi- tal/Analog-Umwandlung der empfangenen Signale zur Anzeige auf einem Bildschirm 114 durchführt.

Die gemäß der vorliegenden Erfindung beschriebenen Verfahren sind in dem in Fig. 1 dargestellten Graphiksystem 100 imple- mentierbar, es wird jedoch darauf hingewiesen, daß die vor- liegende Erfindung nicht auf die in Fig. 1 dargestellte spe- zielle Ausgestaltung begrenzt ist. Für das Verständnis der vorliegenden Erfindung erfolgt die Beschreibung unter Bezug- nahme auf das Graphiksystem in Fig. 1. Hinsichtlich der einzelnen Maschinen in Fig. 1 wird darauf hingewiesen, daß jede der einzelnen Maschinen an ihrem Eingang einen Abtast- umwandler (nicht dargestellt) umfaßt, der später noch ge- nauer beschrieben wird.

Das in Fig. 1 dargestellte Graphiksystem ist eine beispiel- hafte Architektur zur parallelen Bildaufbereitung unter Ver- wendung der verschachtelten Rahmenpartitionierung. Diese Ar- chitektur kann selbstverständlich hinsichtlich der Anzahl von teilnehmenden Bildaufbereitungs-und Texturmaschinen verändert werden.

Wie bereits ausgeführt wurde, bedient der Prozessor 102 das gesamte Bildaufbereitungs-Teilsystem, und er wandelt insbe- sondere die scheitelpunktbezogenen Objektbeschreibungen in individuelle Datensätze pro Polygon um. Diese Polygondaten werden dann den verschiedenen Maschinen innerhalb des Sy- stems über einen gemeinsamen Bus 116 zugeführt. Die Polygon- datensätze enthalten die Startwerte, x-und y-Ableitungen für die linearen Kantenfunktionen und für die Farbwerte und Textur-Koordinaten, die über das Dreieck interpoliert wer- den. Der Prozessor 102 ist unabhängig von der Anzahl von Ma- schinen, die die Bildaufbereitungsaufgabe übernehmen. Jede der einzelnen Maschinen weiß, welches der Pixel in dem Ver- schachtelungsschema ihr zugeordnet ist.

Nachfolgend werden die einzelnen Aspekte der vorliegenden Erfindung im Detail beschrieben.

Anhand der Fig. 2 wird zunächst die sog. streifenbasierte Abtastumwandlung (Strip Based Scan Conversion) näher be- schrieben. In Fig. 2 ist ein Graphikgrundelement 120 in der Form eines Dreiecks dargestellt, das sich über eine Mehrzahl von Pixeln 122 erstreckt. Die in Fig. 2 dargestellten Käst- chen stellen jeweils ein Pixel dar. Der Verlauf der Abta- stung ist durch die Abtastlinie 124 dargestellt, die sich von einem Eintrittspunkt 126, bei dem beispielsweise von einem vorhergehenden Dreieck in das in Fig. 2 dargestellte Dreieck 120 übergegangen wird, zu einem Ausgangspunkt 128, von dem aus zu einem weiteren Dreieck, welches zu verarbei- ten ist, übergegangen wird, erstreckt.

Wie anhand der Fig. 2 zu erkennen ist, ist der durch die Pi- xel 122 aufgespannte Bereich in vier Blöcke a, a+1, b und b+1 unterteilt. Wie sich ferner aus dem Verlauf der Abtast- linie 124 ergibt, werden zunächst diejenigen Pixel im Block a abgetastet, die dem Dreieck 120 zugeordnet sind. Anschlie- ßend wird zu einem nächsten Block, im vorliegenden Fall zum Block a+1 übergegangen, und die in diesem Block dem Dreieck 120 zugeordneten Pixel werden abgetastet. Auf diese Art und Weise werden die einzelnen Blöcke a bis b+1 abgetastet.

Wie aus Fig. 2 ferner zu ersehen ist, kann gemäß einem be- vorzugten Ausführungsbeispiel die Organisation der einzelnen Blöcke so sein, daß die Blöcke a und a+1 zu einem ersten Streifen n zusammengefaßt sind, und die Blöcke b und b+1 zu einem zweiten Streifen n+1 zusammengefaßt sind. In diesem Fall werden ähnlich wie auf die oben beschriebene Art und Weise zunächst diejenigen Blöcke in einem Streifen n durch- laufen, und erst wenn sämtliche Blöcke dieses Streifens durchlaufen sind, wird in den angrenzenden Block n+1 gewech- selt, und dort werden dann die einzelnen Blöcke b und b+1 auf die oben beschriebene Art abgetastet. Gemäß diesem Aus- führungsbeispiel wird ein Streifen als eine Spalte von Blöcken definiert, wobei der Streifen einen Block breit ist. Ein Dreieck bzw. ein Graphikgrundelement 120 erstreckt sich in einen oder mehrere der Streifen und unterteilt die Ab- tastlinien somit in Fragmente. Gemäß einem bevorzugten Aus- führungsbeispiel enthält ein Abtastlinienfragment nicht mehr Pixel als durch die Breite eines Speicherblocks festgelegt ist.

Anstatt alle Abtastlinien vollständig und unabhängig von irgendeiner Blockgrenze zu durchlaufen, werden gemäß der vorliegenden Erfindung zunächst alle Abtastlinienfragmente innerhalb eines Streifens verarbeitet, bevor zum nächsten Streifen weitergegangen wird-entweder in positiver oder negativer y-Richtung, abhängig von der Ausrichtung des Drei- ecks. Der Eingangspunkt für den nächsten Streifen (Streifen- eintrittsposition) wird während des Abtastens des der- zeitigen Streifens erfaßt. Befindet sich der Abtastumwandler während des Abtastens in der letzten Pixelspalte an der Streifengrenze, kann der Nachbarstreifen dahingegend über- prüft werden, ob dort noch sichtbare Pixel existieren. Dies ist sehr ähnlich zu der Vorausschau in die nächste Linie während der Abtastung der derzeitigen Linie, um die Rück- kehrposition vom Abtastlinienende (Kantenrückkehrposition) zu bestimmen.

Es kann also gesagt werden, daß auf einer Makro-Ebene das Dreieck Streifen um Streifen und Block um Block durchlaufen wird, wohingegen auf einer Mikro-Ebene das Dreieck Abtast- linie um Abtastlinie und Pixel um Pixel durchlaufen wird.

Die primäre Achse zum Durchlaufen der Streifen ist die ver- tikale Achse, und die primäre Achse zum Durchlaufen der Ab- tastlinien ist die horizontale Achse.

Der Vorteil des oben beschriebenen Verfahrens besteht darin, daß dadurch, daß das zunächst einzelne Blöcke vollständig durchlaufen werden, die Anzahl von Speicherseitenfehlern pro Graphikgrundelement auf das absolute Minimum reduziert wer- den kann, da während des Durchlaufens der einzelnen Blöcke nur auf eine entsprechende Speicherseite zugegriffen wird.

Ein weiterer Vorteil besteht darin, daß die Zugriffe auf alle Pixel für das Graphikgrundelement in einem Speicher- block aufeinanderfolgend erfolgen, so daß die erforderliche Zeit, während der eine Seite offen gehalten werden muß, re- duziert wird. Ein weiterer Vorteil besteht darin, daß durch die Bündelung der Zugriffe auf einen Block die Zeitdauer der Datenübertragung (Bursts) erhöht wird, wobei eine längere Zeitdauer der Datenübertragung das Verstecken von Vorlade- und Reihen-Aktivierungsoperationen in Systemen mit mehreren Speicherbänken, wie z. B. SDRAMs, ermöglicht wird. Ein wei- terer Vorteil besteht darin, daß die Textur-Cache-Speicher- größe aufgrund der Verkürzung der Abtastlinien reduziert wird.

Ein weiterer Vorteil besteht darin, daß aufgrund der Erfor- dernisses, daß der Eintrittspunkt für den nächsten Streifen gespeichert werden muß, die damit einhergehende Erhöhung der Gatteranzahl bei einer Hardwarerealisierung nur moderat ist, z. B. ausgehend von einem herkömmlichen System mit 30 K Gat- tern erfordert die vorliegende Erfindung ein System mit 35 K Gattern.

Gemäß einem weiteren Aspekt der vorliegenden Erfindung, kann die Leistungsfähigkeit des Graphiksystems durch eine soge- nannte diagonale Abtastung erhöht werden. zusätzlich zu den Standardbewegungsrichtungen"horizontal"und"vertikal"wird die Möglichkeit von diagonalen Schritten zu dem System hin- zugefügt. Wenn keine Notwendigkeit besteht in der derzei- tigen Abtastzeile fortzufahren, weil beispielsweise das nächste Pixel nicht sichtbar ist, und wenn das Pixel in der vertikalen Abtastrichtung ebenfalls nicht sichtbar ist, kann ein diagonaler Schritt durchgeführt werden. Dies ist insbe- sondere für degenerierte, kleine und schmale Dreiecke sinn- voll, und führt zu einer Einsparung von ca. 50% der Schritte. Betrachtet man durchschnittliche Dreiecksgrößen, sind die Einsparungen geringer (< 10%) und hängen tatsäch- lich stark von der durchschnittlichen Polygongröße ab. In der Praxis muß jedoch eine Abtastumwandlungshardware neben Dreiecken auch Linien handhaben, z. B. für Drahtrahmenmo- delle, und in dieser Situation bringt die Einführung der diagonalen Schritte ihre Vorteile.

Die Vorgehensweise ist in Fig. 3 näher dargestellt. Ausge- gangen wird von einem Pixel E, welches gerade abgetastet wird. Anschließend wird bestimmt, ob ein in Abtastrichtung benachbartes Pixel E+dex dem Graphikgrundelement zugeordnet ist, und ferner wird bestimmt, ob ein Pixel E+dey, das in einer Richtung senkrecht zur Abtastrichtung benachbart zu dem abgetasteten Pixel E angeordnet ist, dem Graphikgrund- element zugeordnet ist. Wenn weder das Pixel E+dex noch das Pixel E+dey dem Graphikgrundelement zugeordnet sind, wird im nächsten Schritt das Pixel E (dex + dey) abgetastet, welches sowohl benachbart zu dem Pixel E+dex als auch benachbart zu dem Pixel E+dey liegt.

Der Vorteil dieser diagonalen Abtastung besteht darin, daß hierdurch beim Linienzeichnen die Leistungsfähigkeit des Sy- stems erheblich erhöht wird, und auch für das Zeichnen von Polygonen kann eine Erhöhung der Leistungsfähigkeit erreicht werden. Es liegt auf der Hand, daß die gerade beschriebenen beiden Aspekte, nämlich die blockweise Abtastung sowie die diagonale Abtastung in Kombination verwendet werden können.

Betrachtet man sich das in Fig. 2 dargestellte Beispiel und hier insbesondere die in Abtastrichtung an den Angriffspunkt 128 angrenzenden Pixel 130a-130c, so ist ohne weiteres fest- zustellen, daß weder das Pixel 130a noch das Pixel 130b sichtbar sind, so daß in diesem Fall ein diagonaler Abtast- schritt direkt zum Pixel 130c sinnvoll ist.

Anhand der Fig. 4 und 5 wird nachfolgend ein weiterer Aspekt der vorliegenden Erfindung beschrieben, nämlich die sogenan- nte Cluster-Abtastung oder der Cluster-Scan. Die Darstellung des Graphikgrundelements 120 in Fig. 4 ist ähnlich zu derje- nigen in Fig. 2, so daß hier für die übereinstimmenden Ele- mente die gleichen Bezugszeichen verwendet werden.

Wie in Fig. 4 zu erkennen ist, sind jeweils zwei vertikal benachbarte Pixel zu einem Cluster 132 zusammengefaßt. Im linken Bereich der Fig. 4 ist beispielhaft, in vergrößerter Darstellung, ein Cluster 132 dargestellt, wobei ein nicht ausgefülltes Clusterelement ein nichtsichtbares Pixel und ein ausgefülltes Clusterelement ein sichtbares Pixel dar- stellt. Für den Cluster-Scan werden, wie erwähnt, mehrere Pixel in einem Cluster gruppiert, wobei hier das Pixel die kleinste Einheit darstellt. Die Gruppierung der einzelnen Cluster er- folgt derart, daß diejenigen Pixel, die durch eine parallele Graphikbearbeitungshardware gleichzeitig verarbeitet werden, in einem Cluster zusammengefaßt sind. Die parallele Verar- beitung erfolgt hier in einer verriegelten (synchronen) Art und Weise. Bei einem beispielhaften Chip, der eine Mehrzahl von Bildaufbereitungspipelines aufweist, ist es wünschens- wert, daß ein gegebenes Graphikgrundelement in Clustern durchlaufen wird und nicht in Pixeln. Das Ausgangssignal, welches durch einen solchen parallelen Abtastumwandler be- reitgestellt wird, umfaßt Bewegungsinformationen für die parallele Interpolation der Parameter der Pixel, die in dem Cluster enthalten sind, sowie eine Sichtbarkeits-Flag für jedes Pixel.

Bei dem in Fig. 4 dargestellten Beispiel sind zwei Pixel zu einem Cluster zusammengefaßt, wobei das jeweils obere Pixel in dem Cluster durch eine erste Pipeline und das jeweils untere Pixel in dem Cluster durch eine zweite Pipeline der Bildaufbereitungseinheit parallel verarbeitet wird.

Ein Verfahren, mittels dem ein Abtastumwandler auf der Grundlage eines Clusters ein Graphikgrundelement durchläuft, muß sämtliche Cluster durchlaufen, die ein oder mehrere sichtbare Pixel enthalten. Cluster, die keine sichtbaren Pixel enthalten, werden nicht überquert. Abhängig von der Anzahl von parallelen Bildaufbereitungspipelines und ab- hängig von der Speicherorganisation kann die optimale Clu- stergröße und-form ausgewählt werden, wie dies in der Ta- belle in Fig. 5 gezeigt ist. In Fig. 5 ist mit"clx"die Ausdehnung eines Clusters in x-Richtung und mit"cly"die Ausdehnung eines Clusters in y-Richtung bezeichnet. All- gemein gesprochen, kann ein Cluster n-benachbarte Pixel in Abtastrichtung und m-benachbarte Pixel in einer Richtung senkrecht zur Abtastrichtung umfassen, wobei n und m größer oder gleich Eins sind. Die Anzahl der erforderlichen Gra- phikverarbeitungspipeline ist durch das Produkt von n und m bestimmt. Betrachtet man beispielhaft den 2x2 Cluster in Fig. 5 (Tabelle unten rechts), so wird deutlich, daß in einem solchen Fall das Graphikverarbeitungssystem eine Bild- aufbereitungseinheit aufweisen muß, die vier parallele Pipe- lines umfaßt.

Bevorzugterweise sind alle Pixel innerhalb eines Clusters in einem Speicherwort abgelegt. Bei einem weiteren bevorzugten Ausführungsbeispiel sind die Formen der Cluster auf recht- eckige Formen beschränkt, und in diesem Fall sind die Clu- ster durch ihre Pixelbreite (clx) und Pixelhöhe (cly) be- stimmt. Bevorzugterweise wird die Clusterbreite und-höhe auf 2x2,4x4,8x8,16x16,... begrenzt.

Der Vorteil des Cluster-Scans besteht darin, daß dadurch eine verriegelte (synchrone) Abtastung einer Mehrzahl von Pixeln unterstützt wird, und daß mittels eines einzelnen Abtastumwandlers mehrfache Pixelpipelines versorgt werden können, bei vernachlässigbarem zusätzlichem Aufwand ver- glichen mit dem Abtasten einzelner Pixel.

Gemäß einem weiteren Aspekt der vorliegenden Erfindung, der nachfolgend anhand der Fig. 6 und 7 näher beschrieben wird, kann die Parallelität innerhalb eines Graphikverarbeitungs- systems durch einen sogenannten verschachtelten Abtastvor- gang (Interleaved Scan) weiter erhöht werden, und somit auch die Leistungsfähigkeit eines solchen Systems.

In Fig. 6A und 6B ist das bereits anhand der Fig. 4 und an- hand der Fig. 2 beschriebene Graphikgrundelement 120 darge- stellt, wobei die Abbildung in Fig. 6A die Verarbeitung durch eine erste Graphikverarbeitungsmaschine, und die Fig.

6B die Verarbeitung durch eine zweite Graphikverarbeitungs- maschine darstellt. Bei diesem Beispiel sind, ähnlich wie in Fig. 4, jeweils 2 vertikal benachbarte Pixel zu einem Clu- ster zusammengefaßt, wobei die erste Graphikverarbeitungsma- schine die Cluster 131a, die bei dem dargestellten Beispiel in den geradzahligen Spalten angeordnet sind, verarbeitet, und die zweite Maschine die Cluster 132b verarbeitet, die in den ungeradzahligen Spalten angeordnet sind. Ferner sind in Fig. 6a und 6b die jeweiligen Abtastlinien 124a und 124b dargestellt, die für die Abtastung der jeweiligen Pixel durchlaufen werden.

Mehrere Cluster-Bildaufbereitungseinheiten teilen sich eine Bildaufbereitungsaufgabe bezüglich eines Polygon 120, und abhängig von der Art der (verschachtelten) Rahmenpufferorga- nisation wird das Polygon 120 in Spalten, Zeilen oder beides unterteilt. Für den Abtastumwandler bedeutet dies, daß die Spalten/Zeilen, die nicht zu seiner Bildaufbereitungseinheit gehören, übersprungen werden müssen. Die bereits oben be- schriebene Strategie hinsichtlich des Durchlaufs über die Abtastlinie und die Verwendung der streifenorientierten Strategie wird beibehalten. Nur die horizontalen/vertikalen Schritte müssen in diesem Fall mehrere Pixel oder Cluster überspringen.

Um den Grad der Parallelität zu beschreiben, der mittels der Verschachtelung in einem System erreicht wird, werden soge- nannte Verschachtelungsfaktoren (Interleave Factor) ilfx, ilfy verwendet. Ferner werden die entsprechenden Spalten und Zeilen eines Clusters über die sogenannten Verschachtelungs- verschiebungen (Interleave Offset) ilox, iloy den Bildaufbe- reitungsmaschinen zugeordnet.

Für die Verschachtelungsverschiebungen gelten die folgenden Beziehungen : 0 s ilox < ilfx 0 : iloy < ilfy. Für das anhand der Fig. 6 dargestellte Beispiel bedeutet dies, daß der der Abtastung in Fig. 6A zugeordnete Abtastum- wandler eine Verschachtelungsverschiebung von 0 (ilox = 0) aufweist, wohingegen der Abtastumwandler für die Verarbei- tung gemäß Fig. 6B eine Verschachtelungsverschiebung von 1 (ilox = 1) aufweist. Der horizontale Verschachtelungsfaktor beträgt bei dem in Fig. 6 dargestellten Beispiel 2 (ilfx = 2), und der vertikale Verschachtelungsfaktor beträgt 1 (ilfy = 1). Die vertikale Verschachtelungsverschiebung ist für alle Maschinen gleich 0 (iloy = 0).

Mit anderen Worten ist die Verschachtelungsebene proportio- nal zur Anzahl der im Graphiksystem enthaltenen Graphikver- arbeitungsmaschinen. Der Cluster stellt die kleinste Einheit beim verschachtelten Abtasten dar, und die Gruppierung er- folgt entsprechend der Cluster.

Die oben beschriebene verschachtelte Abtastung hat den Vor- teil, das hierdurch die Verwendung von mehreren, unabhän- gigen (unverriegelten) Bildaufbereitungseinheiten in einem System unterstützt wird, wobei dies fast ohne Erhöhung der Anzahl der Logikgatter bei einer Hardwareimplementierung er- folgt. Ein weiterer Vorteil besteht darin, daß durch eine Links-Verschiebung der Delta-Werte der Kantenfunktion größere Schritte erreicht werden können, und zwar entweder durch eine Festverdrahtung oder mittels Multiplexern auf eine flexible Art.

Anhand der Fig. 7 wird das Verschachtelungsschema beschrie- ben, daß bei dem in Fig. 1 dargestellten Graphiksystem ver- wendet wird. Dort sind die vier Bildaufbereitungsmaschinen 108a-108d vorgesehen, die eine parallele Fragmentverarbei- tung durchführen. Dies bedeutet, daß der Verschachtelungs- faktor in x-Richtung 4 und in y-Richtung 1 beträgt (iflx = 4, ifly = 1). Jede der Bildaufbereitungsmaschinen speichert nur den Teil des Rahmens, für den die jeweilige Machine in ihrem Speicher verantwortlich ist. Die Bildaufbereitungsma- schinen werden mit Texturen von zwei getrennten Texturma- schinen versorgt, welche einen horizontalen Verschachte- lungsfaktor von 2 und einen vertikalen Verschachtelungsfak- tor von 1 (ilfx = 2, ilfy = 1) haben. In Fig. 7 ist linker Hand die Verschachtelung für die Texturmaschinen und rechter Hand die Verschachtelung für die Bildaufbereitungsmaschinen dargestellt. Jede der Texturmaschinen bedient zwei Bildauf- bereitungsmaschinen und zum Beibehalten einer ausgeglichenen Leistungsfähigkeit bedeutet dies, daß die Texturmaschinen doppelt so viele Pixel pro Systemtakt bereitstellen müssen, wie die Bildaufbereitungsmaschinen. Wie aus Fig. 7 zu er- kennen ist, werden für die Bildaufbereitungsmaschinen Clu- ster verwendet, die in x-Richtung eine Ausdehnung von einem Pixel haben, wohingegen die Texturmaschinen Cluster verwen- den, die in x-Richtung eine Ausdehnung von 2 haben. In y- Richtung haben die entsprechenden Cluster die gleiche Aus- richtung. Hierdurch wird sichergestellt, daß bei jedem Sy- stemtakt ausreichend viele Pixel den Bildaufbereitungsma- schinen bereitgestellt werden. Wie in Fig. 7 dargestellt ist, ist der Rahmenpuffer unter den Bildaufbereitungsma- schinen in Spalten unterteilt, und die Breite der Spalten ist durch die Breite des Bildaufbereitungs-Fußabtritts (Footprint ; die Anzahl der Cluster von Pixeln, die parallel auf einem Chip verarbeitet werden) bestimmt. Der Verschach- telungsfaktor bezeichnet die Beabstandung zwischen Spalten, die durch eine Bildaufbereitungsmaschinen bedient werden, und die Verschachtelungsverschiebung bezeichnet diejenige Spalte, für die eine Bildaufbereitungsmaschine verantwort- lich ist.

Die Spaltenorganisation vereinfacht die Schnittstelle mit einem externen RAMDAC, der die Rahmenpufferinformationen sammelt und sie in eine analoge Form umwandelt und an einen Monitor ausgibt. Es wird darauf hingewiesen, daß die oben beschriebenen Aspekte der vorliegenden Erfindung, sowohl einzeln als auch in beliebiger Kombination miteinander ver- wendet werden können. Dies bedeutet, daß im Zusammenhang mit der Cluster-Abtastung selbstverständlich auch die anhand der Fig. 2 beschriebene streifen-basierte Abtastung durchgeführt werden kann, und ebenso kann die Diagonal-Abtastung durchge- führt werden, wobei in diesem Fall dann, wenn in Abtastrich- tung und senkrecht zur selben benachbarte Cluster nicht sichtbar sind, eine diagonale Abtastung zum nächsten Clu- ster, auf ähnliche Weise wie es anhand der Fig. 3 beschrie- ben wurde, erfolgt.

Gleiches gilt für die Verschachtelungsabtastung, die eben- falls in Verbindung mit der Streifen-basierten Abtastung, die anhand der Fig. 2 beschrieben wurde, durchgeführt werden kann. Eine Diagonal-Abtastung kann bei der verschachtelten Abtastung auch erfolgen.

Nachfolgend wird anhand der Fig. 8 bis 21 die durch einen parallelen Abtastumwandler durchgeführten Schritte näher beschrieben. Anhand der Fig. 8 ist eine Architektur eines parallelen Abtastumwandlers dargestellt. Wie zu erkennen ist, enthält dieser im wesentlichen drei Blöcke, nämlich den Startwertkorrekturblock 134, den Kanteninterpolatorblock 136 und den Sichtbarkeits-Bestimmungsblock 140. Die Polygon- bzw. Graphikgrundelementdaten kommen in einer einheitlichen Form basierend auf linearen Kantenfunktionen an dem paral- lelen Abtastumwandler an, und in der ersten Stufe 136 werden die Startwerte auf eine gültige Startposition für die be- stimmte Bildaufbereitungsmaschine eingestellt, und auch ein ausgewähltes Pixel in diesem Cluster. Ausgehend von dieser Startposition durchläuft der Kanteninterpolator das Polygon, wobei pro Taktzyklus ein Cluster berührt wird. Unsichtbare Cluster werden gemieden.

Abschließend werden im Block 140 für jedes Pixel, das in dem Cluster enthalten ist, Sichtbarkeitsbits berechnet, die an- geben, ob das betreffende Pixel dem Dreieck bzw. Graphik- grundelement zugeordnet ist oder nicht.

Im nachfolgenden wird auf die einzelnen Stufen 136 bis 140 näher eingegangen.

Es sei angenommen, daß der Prozessor 102 (Fig. 1) den fol- genden gleichförmigen Datensatz für jedes Graphikgrundele- ment bzw. Dreieck erzeugt, unabhängig davon, ob eine Clus- ter-Abtastung oder eine verschachtelte Abtastung durchge- führt wird. Dieser gleiche Datensatz enthält : einen x/y-Ort eines Startpunktes (x-Start, y-Start) ; lineare Kantenfunktionswerte für diesen Startpunkt (el- Start, enl-Start, en2-Start), die horizontale und vertikale Abtastrichtung, die ba- sierend auf der Dreiecksausrichtung (s. Fig. 27) bestimmt wird (dir-x, dir-y : 0 = Abtastung in Richtung zunehmender Koordinaten, 1 = Abtastung in Richtung abnehmender Ko- ordinaten), x/y-Inkrementalwerte für alle drei Kanten, um eine Bewe- gung um ein Pixel in horizontaler/vertikaler, gegebener Abtastrichtung zu ermöglichen (el-dx, el-dy, enl-dx, enl-dy, en2-dx, en2-dy) ; und eine Begrenzungsbeschreibung relativ zu dem Startpunkt, nämlich einen Zeilen-und Überspannungszählwert, der die aktiven Spalten/Zeilen ausgehend von dem Startpunkt in Abtastrichtung festlegt (ccnt-Start, scnt-Start, negativ für Pixel außerhalb der Begrenzung).

Die Festlegung des Bereichs der Begrenzung ist anhand der Fig. 9 näher dargestellt, und in diesem Fall sind die Para- meter dir-x gleich 1 und dir-y gleich Null. Der aktive Be- reich ist mit dem Bezugszeichen 142 versehen. Überdies sei angenommen, daß jede Bildverarbeitungseinrich- tung einen statischen Datensatz der folgenden Systeminforma- tionen enthält : Systemverschachtelungsfaktoren in x/y-Richtung (ilfx, ilfy) ; Verschachtelungsverschiebungen innerhalb des Systems (ilox, iloy) ; Clusterabmessungen (clx, cly) ; und Speicherstreifenbreite in Pixel (stw).

In einem ersten Schritt erfolgt zunächst die Korrektur der empfangenen Startwerte, wobei zunächst eine Clusterkorrektur vorgenommen wird.

Der Gedanke hinter der Cluster-Abtastung besteht darin, nicht die Kantenfunktionen für alle Pixel innerhalb eines Clusters zu interpolieren, sondern stattdessen nur ein aus- gewähltes Pixel zu verwenden. Die Startposition, die durch den Prozessor 102 bestimmt wird, ist nicht notwendigerweise die ideale Position, um eine Interpolation während des Durchlaufens eines Dreiecks durchzuführen. Aus Symmetrie- gründen während der Bewegungsbestimmung hat sich herausge- stellt, daß es vorteilhaft ist, die Startposition auf ein sog."führendes Pixel" (leading pixel) innerhalb des Clus- ters einzustellen. Das führende Pixel ist als dasjenige Pi- xel definiert, das den höchsten Spannen-und Spalten-Zähl- wert innerhalb des Clusters hat, also das nächstliegende Pixel in Abtastrichtung ist. Die Bestimmung des führenden Pixels für die vier möglichen Kombinationen von horizonta- ler/vertikaler Abtastrichtung ist in Fig. 10 für ein 2x2- Cluster dargestellt.

Die Clusterkorrekturfaktoren in x-und y-Richtung (clfx, clfy) werden dadurch berechnet, daß die x/y-Koordinaten des gegebenen Startpunktes mit der erwünschten Interpolationspo- sition des führenden Pixels verglichen werden. Die Cluster- korrekturfaktoren können entweder Null oder negativ sein, und ihre absoluten Werte sind immer kleiner als die Cluster- ausbreitung in der bestimmten Richtung. In Fig. 11 ist eine Tabelle dargestellt, die die Bestimmung der Clusterkorrek- turfaktoren erläutert.

Neben der Korrektur der Cluster muß eine Verschachtelungs- korrektur durchgeführt werden, nachdem jede Bildaufberei- tungsmaschine nur diejenigen Cluster durchlaufen darf, die dieser gemäß der verschachtelten Rahmenpufferabbildung zuge- ordnet sind. Nachdem der Startpunkt, der durch den Prozessor 102 bestimmt ist, innerhalb eines Clusters sein kann, das einer anderen Bildaufbereitungsmaschine zugeordnet ist, muß für jede Bildaufbereitungsmaschine dasjenige erste Cluster in positiver Abtastrichtung bestimmt werden, für das diesel- be verantwortlich ist, und der Startwert muß auf ein Pixel in diesem Cluster eingestellt werden.

Die Verschachtelungskorrekturfaktoren (icfx, icfy ; inter- leave correction factors) werden dadurch berechnet, daß die x/y-Koordinate des Startpunktes mit den der Bildaufberei- tungsmaschine zugeordneten Verschachtelungsverschiebungen verglichen werden. Die Werte der Verschachtelungskorrektur- faktoren sind positiv und reichen von Null bis zum Ver- schachtelungsfaktor minus Eins. Anhand der Tabelle in Fig.

12 ist die Berechnung der Verschachtelungskorrekturfaktoren dargestellt.

Nachdem die entsprechenden Korrekturfaktoren berechnet wur- den, werden diese zu allgemeinen Startkorrekturfaktoren (scfx, scfy) zusammengefaßt, die dann auf alle Startwerte in Einheiten der Interpolationsdelta angewandt werden. Die Ta- belle in Fig. 13 zeigt die durchzuführende Startwertkorrek- tur, wobei die in der linken Spalte angeführten Faktoren, die mit einem Apostroph versehen sind, die jeweils korri- gierten Startwerte darstellen.

Nachdem die erforderliche Startwertkorrektur durchgeführt wurde, erfolgt anschließend im Block 138 die Kanteninter- polation, wobei die linearen Kantenfunktionen beginnend von dem korrigierten Startpunkt aus unter Verwendung eines In- terpolators, wie er in Fig. 14 gezeigt ist, inkremental be- rechnet werden.

In Fig. 14 ist der Interpolator in seiner Gesamtheit mit dem Bezugszeichen 150 versehen. Der Interpolator 150 ermöglicht die Speicherung und Rückspeicherung der Kantenfunktionswerte für Kantenrückkehrpositionen (el-edge) im Register 152 und die Streifeneintrittspositionen (el-strip) im Register 154. Ferner werden die horizontalen, vertikalen und diagonalen Inkrementalwerte (el-dx, el-dy, el-dxy) in den Registern 156,158 und 160 gespeichert. Die in diesen Registern ge- speicherten Inkrementalwerte werden dem Arbeitsregister (el) 162 hinzugefügt. Zu Beginn der Abtastung eines Graphikgrund- elements wird das Arbeitsregister 162 mit dem Kantenfunk- tionswert an dem Startpunkt geladen, und die Inkremental- Wert-Register 156 bis 160 werden mit den korrigierten Delta- werten geladen.

Drei solcher Interpolatoren werden verwendet, einer pro Kan- te, was zu einer gesamten Anzahl von neun Kantenfunktions- interpolatoren pro Abtastumwandler führt. Die Multiplexer des Kanteninterpolators werden durch die Bewegungsbestim- mungslogik gesteuert.

Eine ähnliche Struktur, wie die in Fig. 14, wird für die Spalten-und Spannen-Zählwertinterpolation verwendet. Abhän- gig von der Richtung, in die sich der Interpolator bewegt, werden entweder Null oder der Abstand in Pixel zum nächsten führenden Pixel, das durch das System besessen wird, von dem derzeitigen Spalten-oder Spannen-Zählwert abgezogen.

Neben der Interpolation muß natürlich festgestellt werden, ob benachbarte, noch abzutastende Pixel eine Kante des Gra- phikgrundelements überschritten haben, also nicht sichtbar sind.

Um die Bewegungen des Interpolators zu bestimmen, ist es wichtig zu wissen, wann zumindest ein Pixel eines benach- barten Clusters in der nächsten Abtastlinie die führende Kante überschritten hat. Nachdem die Ausrichtung der füh- rende Kante relativ zur Abtastrichtung bekannt ist, muß nur ein spezifisches Pixel, nämlich das in y-Richtung am nächst- liegende und in x-Richtung am weitesten entfernt liegende Pixel innerhalb dieses Clusters bezüglich seiner Kantenüber- querung getestet werden.

Überdies muß festgestellt werden, ob ein nachfolgender Clus- ter in der derzeitigen Abtastlinie eine nicht-führende Kante vollständig überschritten hat. In diesem Fall ist es ausrei- chend, eine Pixelspalte (die nächstliegende in x-Richtung) innerhalb dieses Clusters auf ein Überschreiten der nicht- führenden Kanten zu überprüfen.

Die gerade beschriebenen Schritte sind anhand der Fig. 15 näher dargestellt, in der ein Abschnitt des Graphikgrundele- ments 120 mit seinen Kanten 170 a (führende Kante), 170 b und 170 c dargestellt ist. Oben links ist die jeweilige Ab- tastrichtung in x-und y-Richtung dargestellt.

Wie zu erkennen ist, muß für die Bestimmung, ob eine füh- rende Kante überschritten wurde, ausgehend von dem führenden Pixel 172 a eine erste und eine zweite Addition durchgeführt werden, um an Pixel 172 b im benachbarten Cluster zu gelan- gen, und es ist in diesem Fall ausreichend, nur dieses Pixel 172 b hinsichtlich eines Überschreitens der Kante zu über- prüfen.

Zum Überprüfen, ob ein nachfolgender Cluster eine nicht-füh- rende Kante überschritten hat, wird ausgehend von dem füh- renden Pixel 174a die Pixel 174b und 174 c in der nächst- liegenden Spalte des nachfolgenden Clusters bestimmt. Es ist ausreichend, nur diese zwei Pixel hinsichtlich einer Über- querung der nicht-führenden Kanten zu überprüfen.

Der Vorteil dieser Vorgehensweise besteht darin, daß nicht- alle Pixel eines Clusters überprüft werden müssen.

In Fig. 16 ist eine Tabelle gezeigt, anhand der die Bestim- mung des Überschreitens einer Kante anhand der im vorherge- henden beschriebenen einzelnen Parameter, die durch den In- terpolator verwendet werden, gezeigt ist.

Neben der Bestimmung, ob beim Abtasten einer Abtastlinie eine Kante des Graphikgrundelements überschritten wurde, ist es zusätzlich erforderlich, dem Abtastumwandler anzuzeigen, auf welche Art und Weise er sich durch das Graphikgrundele- ment zu bewegen hat. Hierfür ist eine Bewegungsbestimmungs- logikschaltung vorgesehen, die auf der Grundlage der im vor- hergehenden beschriebenen Bestimmung des Überschreitens einer Kante die Bewegungsrichtung für die Kanteninterpolato- ren bestimmt. In Fig. 17 ist eine Tabelle dargestellt, die Boole'sche-Ausdrücke enthält, die eine Bewegungsrichtung für die Kanteninterpolatoren enthält, die ausgehend von den po- sitiven Kantensensorwerten, die in der Tabelle in Fig. 16 gezeigt sind, abgeleitet werden, und wodurch die korrekte Bewegung für diesen Zustand definiert ist.

Der in der Tabelle in Fig. 17 dargestellte Wert"ef"be- zeichnet eine Kanten-Flag, die anzeigt, ob in der derzei- tigen Abtastlinie bereits eine gültige Kantenrückkehrposi- tion für die nächste Abtastlinie gefunden wurde. Die Strei- fen-Flag an, ob in dem derzeitigen Streifen eine gültige Streifeneintrittsposition für den nächsten Streifen gefunden wurde.

Auf der Grundlage der ausgewählten Bewegungen und dem Status der Kanten-und Streifen-Flags werden die Interpolatorregi- ster und-Flags aktualisiert, wie dies in der Tabelle in Fig. 18 gezeigt ist. Wenn keine der in Fig. 18 gezeigten Be- dingungen erfüllt ist, wird das jeweilige Register nicht aktualisiert.

Neben den Kantenfunktioninterpolatoren müssen auch alle an- deren Interpolatoren für andere Parameter, die sich über das Polygon ändern können, z. B. Texturkoordinaten oder Gouraud- Farben, aktualisiert werden. Zwar könnten diese Interpola- toren direkt durch die Bewegungsvariablen, die Kanten-Flag und die Streifen-Flag gesteuert werden, jedoch wird statt- dessen eine sehr kompakte Kodierung für diese Informationen vorgeschlagen, die den gesamten erforderlichen Inhalt für die Parameterinterpolation bereitstellt. Dieser Kode wird als Interpolator-oder Abtast-Befehl bezeichnet. In der Ta- belle in Fig. 19 sind diese Abtastbefehle gezeigt.

Wie bereits oben ausgeführt wurde, müssen für die einzelnen Pixel, die abgetastet werden, Sichtbarkeitstests durchge- führt werden, um zu bestimmen, ob diese Pixel den abge- tasteten Graphikgrundelement zugeordnet sind oder nicht. Der gesamte Satz von Kantenparametern wird nur für ein Pixel innerhalb eines Clusters interpoliert, jedoch ist es hin- sichtlich der Bestimmung der Sichtbarkeit der einzelnen Pixel (vis) erforderlich, die Kantenparameter für alle Pixel heranzuziehen. Um dies zu erreichen, werden die Kantenpara- meter für diejenigen Pixel, die nicht interpoliert wurden, aus den interpolierten Parametersätzen durch entsprechende Addition der Interpolations-Deltas erhalten, wie dies in Fig. 20A gezeigt ist. Der Abstand eines Pixels innerhalb eines Clusters zu dem führenden Pixel wird als Zeilenversatz (rofs ; 0 : rofs < clx) in y-Richtung und als Spaltenversatz (cofs ; 0 s cofs < cly) in x-Richtung bezeichnet. Zur Ver- deutlichung dieser Notation ist der entsprechende Versatz für unterschiedliche Cluster und unterschiedliche Abtast- richtungen in Fig. 20B schematisch dargestellt.

Nachdem nur das Vorzeichen der Kantenfunktion für die nicht-führenden Pixel berechnet werden muß, hält sich der Anstieg der erforderlichen Gatter bei einer Hardwarereali- sierung für die Sichtbarkeitsbestimmung mehrerer Pixel in Grenzen.

Wie die vorhergehende Beschreibung dargelegt hat, betrifft die vorliegende Erfindung ein Verfahren zum Durchführen von parallelen Pixelabtastumwandlungen in einer Hardware-Pipe- line und schafft eine günstige und sehr vielseitig einsetz- bare Implementierung einer Abtastumwandlung für die paral- lele Bildaufbereitung. Es wird eine flexible Systemarchitek- tur mit einer Skalierbarkeit auf verschiedenen Ebenen unter- stützt, und eine Bildaufbereitungsmaschine kann eine paral- lele Bildaufbereitung bezüglich einer beliebigen Anzahl von Pixeln mit mehreren Bildaufbereitungspipelines durchführen.

Mehrere Bildaufbereitungspipelines innerhalb eines Systems können die Bildaufbereitungsaufgabe in einer verschachtelten Art und Weise durchführen. Der Fußabdruck der Pixel, der in einem Maschinenzyklus parallel aufbereitet werden kann, kann eine beliebige Anzahl von Reihen und Spalten umfassen. Über- dies wird das Problem der verschlechterten Speicherbandbrei- tenausnutzung mit abnehmenden Dreiecksgrößen gelöst, nachdem eine optimierte Abtastsequenz für blockweise organisierte Speicher vorgeschlagen wird.

Somit kann gemäß der vorliegenden Erfindung pro Systemtakt- zyklus auf einem Chip eine Mehrzahl von Pixeln verarbeitet werden, und ferner können mehrere Chips die Rasterisierung eines Graphikelements, z. B. eines Dreiecks, untereinander aufteilen. Somit schafft die vorliegende Erfindung mehrfache Ebenen für die parallele Bildrasterisierung, wobei vorteil- hafterweise für die Rahmenpufferspeicherung die Standard DRAM Technologie (z. B. synchrone DRAMs) verwendet werden.

Durch die vorliegende Erfindung werden die Probleme der ab- nehmenden Speicherverwendung und der gering Textur-Cache- Trefferrate, die normalerweise mit der parallelen Bildraste- risierung einhergehen, gelöst.