DE19619288A1 - System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern - Google Patents

System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern

Info

Publication number
DE19619288A1
DE19619288A1 DE19619288A DE19619288A DE19619288A1 DE 19619288 A1 DE19619288 A1 DE 19619288A1 DE 19619288 A DE19619288 A DE 19619288A DE 19619288 A DE19619288 A DE 19619288A DE 19619288 A1 DE19619288 A1 DE 19619288A1
Authority
DE
Germany
Prior art keywords
span
frame buffer
data
span line
line
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.)
Withdrawn
Application number
DE19619288A
Other languages
English (en)
Inventor
Bryan G Prouty
Ronald D Larson
Charles Dowdell
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19619288A1 publication Critical patent/DE19619288A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

Die vorliegende Erfindung bezieht sich allgemein auf ein Rasterungs-System und ein -Verfahren in einem Computergra­ phiksystem und insbesondere auf Rahmenpuffer zur Rasterung, die in zwei Dimensionen verschachtelt sind.
Computergraphiksysteme werden üblicherweise zum Anzeigen graphischer Darstellungen von Objekten auf einem zweidimen­ sionalen Anzeigebildschirm verwendet. Gegenwärtige Computer­ graphiksysteme können hochdetaillierte Darstellungen liefern und werden in einer Vielzahl von Anwendungen verwendet.
Bei typischen Computergraphiksystemen ist ein Objekt, das auf dem Anzeigebildschirm dargestellt werden soll, in eine Mehrzahl von Graphikgrundelementen aufgeteilt. Grundelemente sind elementare Komponenten eines Graphikbildes und können Punkte, Linien, Vektoren und Polygone, beispielsweise Drei­ ecke, einschließen. Typischerweise ist ein Hardware/Soft­ ware-Schema implementiert, um die Graphikgrundelemente, die die Ansicht eines oder mehrerer Objekte, die auf dem Bild­ schirm dargestellt werden, darstellen, aufzubereiten oder auf dem zweidimensionalen Anzeigebildschirm zu zeichnen.
Typischerweise werden die Grundelemente, die das dreidimen­ sionale Objekt, das aufbereitet werden soll, definieren, von einem Hostcomputer geliefert, der jedes Grundelement in Form von Grundelementdaten definiert. Wenn das Grundelement bei­ spielsweise ein Dreieck ist, kann der Hostcomputer das Grundelement in der Form der x-, y- und z-Koordinaten seiner Scheitelpunkte, ebenso wie der Farbwerte R, G, B jedes Scheitelpunkts definieren. Eine Rasterungshardware interpo­ liert die Grundelementdaten, um die Anzeigebildschirmpixel, die eingeschaltet werden, um jedes Grundelement darzustel­ len, und die Werte R, G, B für jedes Pixel zu berechnen.
Fig. 1 zeigt die Komponenten einer typischen Rasterungshard­ ware. Eine Rahmenpuffersteuerung 1 weist einen Kanten­ schrittgeber 3, einen Spannenschrittgeber 5 und eine Spei­ chersteuerung 7 auf. Der Kantenschrittgeber 3 bestimmt durch Interpolation aus den Grundelementdaten die Pixel entlang jeder Kante eines Grundelements und die entsprechenden Farb­ werte. Die Pixel, die durch den Kantenschrittgeber 3 be­ stimmt werden, definieren Punkte auf den Enden der Linien von Pixeln in dem Grundelement. Eine Linie von Pixeln wird als Spanne bezeichnet. Der Spannenschrittgeber 5 empfängt die Pixeldaten von dem Kantenschrittgeber für jede Linie von Pixeln und bestimmt die Farbwerte für jedes Pixel in der Li­ nie von Pixeln. Die Pixel- und Farb-Werte werden der Spei­ chersteuerung 7 geliefert, die die Informationen in einen Video-Direktzugriffspeicher (VRAM) 9 schreibt. Eine Anzei­ gesteuerung (nicht gezeigt) treibt die Anzeige basierend auf dem Inhalt des VRAM.
Da der Berechnungsprozeß in dem Kantenschrittgeber 3 und dem Spannenschrittgeber 5 kompliziert ist, kann der Prozeß lang­ sam sein. Die parallele Verwendung von mehr als einer Rah­ menpuffersteuerung kann die Verarbeitungsgeschwindigkeit er­ höhen. Fig. 2 zeigt zwei parallele Rahmenpuffersteuerungen 1, 2. Jede Rahmenpuffersteuerung 1, 2 weist einen Kanten­ schrittgeber 3, 4, einen Spannenschrittgeber 5, 6 und eine Speichersteuerung 7, 8 auf. Die Speichersteuerung 7, 8 sind mit separaten VRAMs 9, 10 verbunden. Die Anzeigesteuerung kombiniert die Pixel, die in beiden VRAMs 9, 10 gespeichert sind, um die endgültige Anzeige zu erzeugen. Wenn sie paral­ lel betrieben werden, kann jede Rahmenpuffersteuerung die Werte für spezifizierte Linien des Bildschirms (Spannen von Pixeln) bestimmen. Der Kantenschrittgeber 3, 4 auf jeder Rahmenpuffersteuerung 1, 2 läßt die nicht-spezifizierten Li­ nien von Pixeln aus. Obwohl Fig. 2 zwei Rahmenpuffersteue­ rungen zeigt, ist eine beliebige Anzahl möglich. Obwohl die parallele Verwendung mehrerer Rahmenpuffersteuerungen die Verarbeitungsgeschwindigkeit erhöhen kann, kann die Zuwei­ sung von Spannenlinien zu jeder Rahmenpuffersteuerung inef­ fizient sein. Abhängig von der Form und der Ausrichtung ei­ nes Grundelements kann die Verarbeitungszeit für die Span­ nenlinien in den Rahmenpuffersteuerungen stark variieren. Beispielsweise kann für ein kurzes, breites Dreieck-Grund­ element eine Rahmenpuffersteuerung Abtastlinien aufweisen, die einen großen Abschnitt des Grundelements an der Basis abdecken, während eine weitere Rahmenpuffersteuerung Abtast­ linien aufweisen kann, die nur einen kleinen Abschnitt an der Spitze abdecken. Da die Grundelemente gleichzeitig jeder Rahmenpuffersteuerung geliefert werden, hängt die Verarbei­ tungszeit für das gesamte System von der längsten Verarbei­ tungszeit in jeder Rahmenpuffersteuerung ab.
Alternativ können Rahmenpuffersteuerungen zugewiesen sein, um unterschiedliche Grundelemente zu verarbeiten. Da Grund­ elemente in einer beliebigen Reihenfolge verarbeitet werden können, werden jedoch große FIFO-Speicher benötigt, um die Pixeldaten in die richtigen Positionen umzuordnen und um überlappende Grundelemente in Ordnung zu bringen.
Die Aufgabe der vorliegenden Erfindung besteht darin, eine Rahmenpuffersteuerung, ein Rahmenpuffersystem für ein Com­ putergraphiksystem und ein Verfahren zum Betreiben einer Rahmenpuffersteuerung zu schaffen, die verbesserte Verar­ beitungszeiten beim Aufbereiten von Grundelementdaten zu Anzeigebildschirmpixeln für ein Computergraphiksystem lie­ fern.
Diese Aufgabe wird durch eine Rahmenpuffersteuerung gemäß Anspruch 1, ein Rahmenpuffersystem gemäß Anspruch 7 sowie ein Verfahren zum Betreiben einer Rahmenpuffersteuerung ge­ mäß Anspruch 19 gelöst.
Die vorliegende Erfindung schafft mehrere Rahmenpuffersteue­ rungen, die in zwei Dimensionen verschachtelt sind, um die Verarbeitungszeiten zu verbessern. Gemäß einem Aspekt der vorliegenden Erfindung ist jede der mehreren Rahmenpuffer­ steuerungen einem Abschnitt jeder Spannenlinie in der Anzei­ ge zugewiesen. Der Abschnitt der Spannenlinie, der einem Rahmenpuffer zugewiesen ist, kann abhängig von der Spannen­ linie variieren, um ferner den Wirkungsgrad der parallelen Verarbeitung zu verbessern. Bei einem weiteren Aspekt der Erfindung kann die Anzeige in Kacheln oder Blöcke geteilt sein. Jede Kachel oder jeder Block ist ferner unterteilt, so daß jeder Rahmenpuffer die Grundelementdaten verarbeitet, um Pixel auf einem Abschnitt jeder Spannenlinie in jeder Kachel zu liefern.
Gemäß einem weiteren Aspekt der Erfindung weist jede Rahmen­ puffersteuerung zwei Speichersteuerungen auf. Gemäß diesem Aspekt der Erfindung liefert die Rahmenpuffersteuerung ab­ wechselnd Pixel oder Gruppen von Pixeln zu jeder Speicher­ steuerung. Ferner ist jede Speichersteuerung mit einem se­ paraten VRAM verbunden.
Gemäß einem weiteren Aspekt der vorliegenden Erfindung weist der Rahmenpuffer einen Unterspannen-Schrittgeber zwischen dem Kantenschrittgeber und dem Spannenschrittgeber auf. Der Unterspannen-Schrittgeber bestimmt Anfangs- und End-Werte für jeden der Abschnitte der Spanne, der dem Rahmenpuffer zugewiesen ist. Der Unterspannen-Schrittgeber bestimmt fer­ ner die Anfangsfarbwerte für jeden Abschnitt der Spanne.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die bei liegenden Zeich­ nungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm einer herkömmlichen Rahmenpuffer­ steuerung;
Fig. 2 ein Blockdiagramm einer herkömmlichen parallelen Rahmenpuffersteuerung;
Fig. 3 ein Blockdiagramm eines Ausführungsbeispiels des gesamten Computergraphiksystems der vorliegenden Erfindung;
Fig. 4 ein Blockdiagramm eines weiteren Ausführungsbei­ spiels des gesamten Computergraphiksystems der vor­ liegenden Erfindung;
Fig. 5 eine graphische Darstellung der Rasterung eines Grundelements;
Fig. 6 eine weitere graphische Darstellung der Rasterung eines Grundelements;
Fig. 7 ein Diagramm, das verschachtelte Rahmenpuffersteue­ rungen zeigt;
Fig. 8 eine weitere Darstellung verschachtelter Rahmenpuf­ fersteuerungen;
Fig. 9 eine Darstellung verschachtelter Speichersteuerun­ gen;
Fig. 10 ein Blockdiagramm eines Ausführungsbeispiels der Rahmenpuffersteuerung gemäß der vorliegenden Erfin­ dung;
Fig. 11 ein Blockflußdiagramm des Betriebs der Rahmenpuf­ fersteuerung der vorliegenden Erfindung;
Fig. 12 ein Blockflußdiagramm des Betriebs des Unterspan­ nen-Schrittgebers der vorliegenden Erfindung; und
Fig. 13 eine Darstellung der Unterspannen-Anfangs-, End- und Sprung-Werte.
I. Systemüberblick
Fig. 3 ist ein Blockdiagramm eines Ausführungsbeispiels ei­ nes Graphiksystems der vorliegenden Erfindung, das parallele Rahmenpuffersteuerungen aufweist. Es sollte offensichtlich sein, daß die veranschaulichende Implementierung, die ge­ zeigt ist, bezüglich der Anzahl von Platinen und Chips, der Art und Weise, auf die dieselben partitioniert sind, der Busbreiten und der Datenübertragungsraten nur exemplarisch ist. Zahlreiche andere Implementierungen können verwendet werden. Wie gezeigt ist, weist das System eine Eingangspla­ tine 11, eine Texturabbildungsplatine 12 und eine Rahmenpuf­ ferplatine 14 auf. Die Eingangsplatine kommuniziert über ei­ nen 52-Bit-Bus 16 mit einem Hostcomputer 15. Die Eingangs­ platine empfängt Grundelemente, die aufbereitet werden sol­ len, über den Bus 16 von dem Hostcomputer. Die Grundelemente sind durch x-, y-, z-Scheitelpunkt-Koordinatendaten, Farbda­ ten R, G, B und Textur-Koordinaten S, T spezifiziert, alle für Abschnitte der Grundelemente, beispielsweise für die Scheitelpunkte, wenn das Grundelement ein Dreieck ist.
Daten, die die Grundelemente in drei Dimensionen darstellen, werden dann durch die Eingangsplatine 11 zu der Texturab­ bildungsplatine 12 und der Rahmenpufferplatine 14 über einen 85-Bit-Bus 18 geliefert. Die Texturabbildungsplatine inter­ poliert die empfangenen Grundelementdaten, um die Bild­ schirmanzeigepixel, die das Grundelement darstellen werden, zu berechnen, und bestimmt entsprechende resultierende Tex­ turdaten für jedes Grundelementpixel. Die resultierenden Texturdaten werden über fünf 11-Bit-Busse 28, die in Fig. 3 als ein einzelner Bus gezeigt sind, um die Figur klarer zu machen, zu der Rahmenpufferplatine geliefert. Obwohl bei dem Ausführungsbeispiel von Fig. 3 eine Texturabbildung darge­ stellt ist, ist dieselbe für die vorliegende Erfindung nicht erforderlich.
Die Rahmenpufferplatine 14 interpoliert die Grundelementda­ ten, die von der Eingangsplatine empfangen werden, eben­ falls, um die Pixel auf dem Anzeigebildschirm, die jedes Grundelement darstellen werden, zu berechnen, und um Objekt­ farbwerte für jedes Pixel zu bestimmen. Die Rahmenpufferpla­ tine kombiniert dann auf einer Basis Pixel-um-Pixel die Ob­ jektfarbwerte mit den resultierenden Texturdaten, die von der Texturabbildungsplatine geliefert werden, um resultie­ rende Werte R, G, B des Bildes für jedes Pixel zu erzeugen. R-, G-, B-Farbsteuersignale für jedes Pixel werden jeweils über R-, G-, B-Leitungen 29 geliefert, um die Pixel auf dem Anzeigebildschirm (nicht gezeigt) zu steuern, um ein resul­ tierendes Bild auf dem Anzeigebildschirm darzustellen, das die Grundelemente, auf die eine Textur abgebildet ist, dar­ stellt.
Die Eingangsplatine 11, die Texturabbildungsplatine 12 und die Rahmenpufferplatine 14 werden jeweils Pipeline-artig betrieben und arbeiten auf mehreren Grundelementen gleich­ zeitig. Obwohl die Texturabbildungs- und die Rahmenpuffer- Platine gleichzeitig auf Grundelementen arbeiten, die durch die Eingangsplatine geliefert werden, fährt die Eingangs­ platine fort, neue Grundelemente zu bearbeiten und dieselben zu liefern, bis die Pipelines 12 und 14 voll werden.
Die Eingangsplatine 11 weist einen Verteilerchip 30, drei Dreidimensional-(3D)Geometriebeschleunigerchips 32A, 32B und 32C, einen Zweidimensional-(2D-)Geometriebeschleunigerchip 34 und einen Konzentratorchip 36 auf. Der Verteilerchip 30 empfängt die x-, y-, z-Koordinaten- und die Farb-Grundele­ mentdaten über den Bus 16 von dem Hostcomputer und verteilt die 3-D-Grundelementdaten gleichmäßig unter den 3-D-Geome­ triebeschleunigerchips 32A, 32B und 32C. Auf diese Weise ist die Systembandbreite erhöht, da gleichzeitig auf drei Grup­ pen von Grundelementen gearbeitet wird. Daten werden über einen 40-Bit-Bus 38A zu den 3-D-Geometriebeschleunigerchips 32A und 32B und über einen 40-Bit-Bus 38B zu einem Chip 32C geliefert. Beide Busse 38A und 38B übertragen Daten mit ei­ ner Rate von 60 Megahertz und liefern eine ausreichende Bandbreite, um zwei 3-D-Geometriebeschleunigerchips zu un­ terstützen. 2-D-Grundelementdaten werden über einen 44-Bit- Bus 40 mit einer Rate von 40 Megahertz zu den 2-D-Geometrie­ beschleunigerchips 34 geliefert.
Jeder 3-D-Geometriebeschleunigerchip transformiert die x-, y- und z-Koordinaten, die die empfangenen Grundelemente de­ finieren, in entsprechende Bildschirmraumkoordinaten, be­ stimmt R-, G-, B-Werte des Objekts und S-, T-Werte der Tex­ tur für die Bildschirmraumkoordinaten, zerlegt Grundelement­ vierecke in Dreiecke und berechnet eine Dreieckebenenglei­ chung, um jedes Dreieck zu definieren. Jeder 3-D-Geometrie­ beschleunigerchip führt ferner Sichtschnittoperationen durch, um eine genaue Bildschirmanzeige des resultierenden Bilds sicherzustellen, wenn mehrere Fenster in dem Bild­ schirm angezeigt werden, oder wenn ein Abschnitt eines Grundelements sich über das Sichtvolumen, das auf dem Anzei­ gebildschirm dargestellt ist, hinaus erstreckt. Ausgangsda­ ten von den 3-D-Geometriebeschleunigerchips 32A, 32B bzw. 32C werden über 44-Bit-Busse 42A, 42B und 42C mit einer Rate von 60 Megahertz zu dem Konzentratorchip 36 geliefert. Der Zweidimensional-Geometrie-Beschleunigerchip 34 liefert fer­ ner Ausgangsdaten über einen 46-Bit-Bus 44 mit einer Rate von 45 Megahertz zu dem Konzentratorchip 36. Der Konzentra­ torchip 36 kombiniert die 3-D-Grundelementausgangsdaten, die von den 3-D-Geometriebeschleunigerchips 32A bis C empfangen werden, sortiert die Grundelemente in die ursprüngliche Rei­ henfolge um, die dieselben vor der Verteilung durch den Ver­ teilerchip 30 aufwiesen, und liefert die kombinierten Grund­ elementausgangsdaten über den Bus 18 zu der Texturabbil­ dungs- und der Rahmenpuffer-Platine.
Die Texturabbildungsplatine 12 weit einen Texturabbildungs­ chip 46 und einen Lokalspeicher 48 auf, der vorzugsweise als ein Cache-Speicher angeordnet ist. Bei einem bevorzugten Ausführungsbeispiel der Erfindung ist der Lokalspeicher aus einer Mehrzahl von SDRAM-Chips (SDRAM = synchronous dynamic random access memory = synchroner dynamischer Direktzu­ griffsspeicher) gebildet. Der Lokalspeicher 48 speichert Textur-MIP-Tabellendaten, die den Grundelementen zugeordnet sind, die in der Rahmenpufferplatine aufbereitet werden. Die Textur-MIP-Tabellendaten werden aus einem Hauptspeicher 17 des Hostcomputers 15 über einen Bus 40 durch den 2-D-Geome­ triebeschleunigerchip 34 und über einen 24-Bit-Bus 24 herun­ tergeladen.
Der Texturabbildungschip 46 empfängt nacheinander Grundele­ mentdaten über den Bus 18, welche die Grundelemente darstel­ len, die auf dem Anzeigebildschirm aufbereitet werden sol­ len. Wie oben erläutert wurde, weisen die Grundelemente, die von den 3-D-Geometriebeschleunigerchips 32A bis C geliefert werden, Punkte, Linien und Dreiecke auf. Die Texturabbil­ dungsplatine führt keine Texturabbildung von Punkten oder Linien durch und arbeitet nur auf Dreieck-Grundelementen. Die Daten, die die Dreieck-Grundelemente darstellen, weisen die Objektpixelkoordinaten x, y, z für zumindest einen Scheitelpunkt, die Objektfarbwerte R, G, B für den zumindest einen Scheitelpunkt, die Koordinaten S, T, der Abschnitte der Texturtabelle, die dem zumindest einen Scheitelpunkt entsprechen, und die Ebenengleichung des Dreiecks auf. Der Texturabbildungschip 46 ignoriert die Objektpixelkoordinate z und die Objektfarbwerte R, G, B. Der Chip 46 interpoliert die Pixelkoordinaten x, y und interpoliert die Koordinaten s und T, die jedem x-, y-Bildschirmanzeigepixel entsprechen, das das Grundelement darstellt. Für jedes Pixel greift der Texturabbildungschip aus dem Cache-Speicher auf den Ab­ schnitt der Textur-MIP-Tabelle zu, der demselben entspricht, und berechnet resultierende Texturdaten für das Pixel, die einen gewichteten Durchschnitt mehrerer Texel enthalten kön­ nen.
Die resultierenden Texturdaten für jedes Pixel werden über fünf Busse 28 durch den Texturabbildungschip 46 zu der Rah­ menpufferplatine geliefert. Die fünf Busse 28 sind jeweils mit fünf Rahmenpuffersteuerungs-Chips 50A, 50B, 50C, 50D und 50E gekoppelt, die auf der Rahmenpufferplatine vorgesehen sind, und liefern resultierende Texturdaten parallel zu den Rahmenpuffersteuerungs-Chips. Die Rahmenpuffersteuerungs- Chips 50A bis E sind jeweils mit Gruppen von zugeordneten VRAM-Chips (VRAM = video random access memory = Videodirekt­ zugriffsspeicher) 51A-E gekoppelt. Die Rahmenpufferplatine weist ferner vier Videoformatierchips 52A, 52B, 52C und 52D und einen RAMDAW 54 (RAMDAW = Direktzugriffsspeicher-Digi­ tal/Analog-Wandler) auf. Die Rahmenpuffersteuerungs-Chips steuern unterschiedliche, nicht-überlappende Segmente des Anzeigebildschirms. Jeder Rahmenpuffersteuerungs-Chip emp­ fängt Grundelementdaten von der Eingangsplatine über den Bus 18 und resultierende Texturabbildungsdaten von der Texturab­ bildungsplatine über dem Bus 28. Die Rahmenpuffersteue­ rungs-Chips interpolieren die Grundelementdaten, um die Bildschirmanzeige-Pixelkoordinaten in ihren jeweiligen Seg­ menten, die das Grundelement darstellen, und die entspre­ chenden Objektfarbwerte R, G, B für jede Pixelkoordinate zu berechnen. Für diejenigen Grundelemente (d. h. Dreiecke), für die resultierende Texturdaten von der Texturabbildungsplati­ ne geliefert werden, kombinieren die Rahmenpuffersteue­ rungs-Chips auf einer Basis Pixel-um-Pixel die Objektfarb­ werte und die resultierenden Texturdaten, um endgültige Wer­ te R, G, B für jedes Pixel, das auf dem Anzeigebildschirm angezeigt werden soll, zu erzeugen.
Die Art und Weise, auf die die Objekt- und Textur-Farbwerte kombiniert werden, kann auf eine Anzahl von unterschiedli­ chen Arten gesteuert werden. Beispielsweise können in einem Ersetzungsmodus die Objektfarbwerte einfach durch die Tex­ turfarbwerte ersetzt werden, so daß die Texturfarbwerte beim Aufbereiten des Pixels verwendet werden. Alternativ können in einem Modulationsmodus die Objekt- und Textur-Farbwerte miteinander multipliziert werden, um die endgültigen Werte R, G, B für das Pixel zu erzeugen. Außerdem kann ein Farb­ steuerwort für jedes Texel gespeichert werden, das ein Ver­ hältnis spezifiziert, das die Art und Weise definiert, auf die die entsprechenden Texturfarbwerte mit den Objektfarb­ werten kombiniert werden sollen. Ein resultierendes Farb­ steuerwort kann für die resultierenden Texeldaten, die jedem Pixel entsprechen, bestimmt werden und über den Bus 28 zu den Rahmenpuffersteuerungs-Chips geliefert werden, so daß die Steuerungschips das Verhältnis, das durch das entspre­ chende resultierende Steuerwort spezifiziert ist, verwenden können, um die endgültigen Werte R, G, B für jedes Pixel zu bestimmen.
Die resultierenden Bildvideodaten, die durch die Rahmenpuf­ fersteuerungs-Chips 50A bis E, einschließlich der Werte R, G, B für jedes Pixel, erzeugt werden, werden in den entspre­ chenden VRAM-Chips 51A-E gespeichert. Jede Gruppe von VRAM- Chips 51A-E weist acht VRAM-Chips auf, derart, daß 40 VRAM- Chips auf der Rahmenpufferplatine angeordnet sind. Jeder der Videoformatierchips 52A-D ist mit einem unterschiedlichen Satz von zehn VRAM-Chips verbunden und empfängt Daten von demselben. Die Videodaten werden seriell aus den VRAM-Chips geschoben und jeweils über 64-Bit-Busse 58A, 58B, 58C und 58D mit einer Rate von 27 Megahertz zu den vier Videoforma­ tierchips 52A, 52B, 52C und 52D geliefert. Die Videoforma­ tierchips formatieren die Videodaten, so daß dieselben durch den RAMDAW gehandhabt werden können, und liefern die forma­ tierten Daten über 32-Bit-Busse 60A, 60B, 60C und 60D mit einer Rate von 33 Megahertz zu dem RAMDAW 54. Der RMMDAW 54 wiederum wandelt die digitalen Farbdaten in analoge R-, G-, B-Farbsteuersignale um und liefert die R-, G-, B-Steuersig­ nale für jedes Pixel zu einer Bildschirmanzeige (nicht ge­ zeigt) entlang von R-, G-, B-Steuerleitungen 29.
Bei einem Ausführungsbeispiel der Erfindung ist die Hardware auf der Texturabbildungsplatine 12 und der Rahmenpufferpla­ tine 14 dupliziert, so daß bestimmte Grundelementaufberei­ tungsaufgaben parallel auf mehreren Grundelementen durchge­ führt werden können, wodurch die Bandbreite des Systems er­ höht wird. Ein Beispiel eines solchen alternativen Ausfüh­ rungsbeispiels der vorliegenden Erfindung ist in Fig. 4 ge­ zeigt, welche ein Blockdiagramm eines Computergraphiksystems der vorliegenden Erfindung ist, wobei ein bestimmter Teil der Hardware dupliziert ist. Das System von Fig. 4 weist vier 3-D-Geometriebeschleunigerchips 32A, 32B, 32C und 32D, zwei Texturabbildungschips 46A und 46B, die jeweils Cache- Speichern 48A und 48B zugeordnet sind, und zehn Rahmenpuf­ ferchips 50A-50J auf, von denen jeder eine zugeordnete Grup­ pe von VRAM-Chips aufweist. Der Betrieb des Systems von Fig. 4 ist ähnlich dem des Systems von Fig. 3, der oben beschrie­ ben wurde. Die Duplizierung der Hardware bei dem Ausfüh­ rungsbeispiel von Fig. 4 ermöglicht eine erhöhte Systemband­ breite, da bestimmte Grundelementaufbereitungsoperationen parallel auf mehreren Grundelementen durchgeführt werden können.
II. Rasterungsüberblick
Fig. 5 zeigt den Rasterungsprozeß für ein Grundelement, der in den Rahmenpuffern durchgeführt wird. Grundelemente können Punkte, Linien oder Dreiecke einschließen. Gemäß dem Gesamt­ system der vorliegenden Erfindung sind die elementaren Grundelemente Dreiecke. Die Grundelementinformationen werden durch drei Scheitelpunkte 101, 102, 103 geliefert. Die In­ formationen über jeden Scheitelpunkt weisen Koordinatenwerte x, y, z und Farbwerte R, G, B auf. Die Scheitelpunktinforma­ tionen für die drei Scheitelpunkte werden verwendet, um eine Ebenengleichung für das Grundelement zu bestimmen. Ein Farb­ gradient und ein z-Gradient werden aus der Ebenengleichung bestimmt und beim Bestimmen der Pixeldaten verwendet. Bei dem Rasterungsprozeß werden die Kanten 110, 120, 130 (e₁, e₂, e₃) des Dreiecks bestimmt, wobei ferner die Kante mit dem längsten y-Wert 110 bestimmt wird. Bei dem Rasterungs­ prozeß werden die Pixel entlang jeder Kante bestimmt. Ver­ schiedene Verfahren können verwendet werden, um die Pixel entlang jeder Kante zu bestimmen. Bei einem Verfahren werden die Pixel durch das Interpolieren zwischen den Scheitelpunk­ ten 101, 103 entlang der Kante 110 für jede Pixelreihe oder Spannenlinie interpoliert, um die Pixel zu bestimmen, die am nächsten an der Kante 110 sind. Gemäß einem weiteren Ausfüh­ rungsbeispiel werden Pixel ausgewählt, um stets innerhalb des Grundelements zu sein. Dies kann erreicht werden, indem x- und y-Werte interpoliert werden, um eine mathematische Position für jede Kante an jeder Spannenlinie zu bestimmen. Pixel werden dann ausgewählt, um größer als der Kantenwert für linke Kanten und geringer als der Kantenwert für eine rechte Kante zu sein. Spezifische Regeln werden benötigt, um zu bestimmen, ob ein Pixel als innerhalb eines Grundelements befindlich betrachtet werden kann, wenn dasselbe direkt auf einer Kante liegt. Durch die Verwendung von Pixeln innerhalb von Kanten werden keine Pixel überschrieben, wenn benachbar­ te Grundelemente verarbeitet werden.
Eine oder mehrere Reihen von Pixel werden als eine Spannen­ linie bezeichnet. Die Farbwerte R, G, B für die Kantenpixel 111, 112 werden ebenfalls durch Interpolation der Werte an den Scheitelpunkten 101, 103 bestimmt. In gleicher Weise werden Pixel 121, 122 entlang der gegenüberliegenden Kante des Grundmusters entlang der gleichen Spannenlinien be­ stimmt. Dann werden entlang jeder Spannenlinie die Farbwerte für die Pixel basierend auf den Farbwerten für die Punkte entlang jeder Kante bestimmt.
Fig. 6 ist eine detailliertere graphische Darstellung des Rasterungsprozesses. Wie in Fig. 6 dargestellt ist, bilden Pixel des Anzeigebildschirms ein Gitter von Punkten mit ent­ sprechenden Farbwerten. Daher werden die Pixel innerhalb des Grundelements auf jeder Spannenlinie des Gitters bestimmt. Beispielsweise entsprechen die Pixel 102, 111-113 den er­ sten vier Spannenlinien für die Kante 110. Das Pixel 102 ist das dem Scheitelpunkt 101, der das Grundelement definiert, nächstliegende Pixel.
Die Pixel 141-143 auf jeder Spannenlinie zwischen den Kan­ ten werden basierend auf den Pixeln 112, 113, 122, 123 auf jeder den Kanten nächstliegenden Spannenlinie bestimmt.
III. Rahmenpuffersteuerungen die in zwei Dimensionen verschachtelt sind
Gemäß der vorliegenden Erfindung weisen die Rahmenpuffer­ steuerungen zum Rastern der Grundelemente mehrere in zwei Dimensionen verschachtelte Rahmenpuffersteuerungen auf, die Abschnitten des Pixelgitters zugewiesen sind. Wie in Fig. 7 dargestellt ist, ist der Anzeigebildschirm 200 in Kacheln 210-213 geteilt. Gemäß einem Ausführungsbeispiel der Er­ findung ist jede Kachel acht Pixel × achtzig Pixel groß. Jede Spannenlinie 220, 230, 240, 250 umfaßt einen Abschnitt jeder Kachel über die Breite des Bildschirms. Das Ausführungsbei­ spiel, das in Fig. 3 gezeigt ist, weist fünf Rahmenpuffer­ steuerungen auf. Daher ist jede Abtastlinie in der Kachel in fünf Abschnitte 221-225 unterteilt. Jeder Rahmenpuffer ist für die Verarbeitung einem Abschnitt jeder Spannenlinie in der Kachel zugewiesen. Da Grundelemente eine beliebige Posi­ tion, Ausrichtung und Größe aufweisen können, können sie ei­ nen beliebigen Abschnitt einer oder mehrerer Kacheln be­ decken. Daher können den Rahmenpuffersteuerungen Blöcke zu­ gewiesen werden, die durch jede Kachel hindurch verstreut sind, um die Verarbeitungseffizienz zu verbessern. Die Menge der Verarbeitungsdaten in der Steuerung ist über mehrere Grundelemente abgeglichen. Tatsächlich wird ein einzelnes Grundelement wahrscheinlich nicht alle Rahmenpuffersteuerun­ gen verwenden. FIFO-Speicher in den Rahmenpuffersteuerungen können für eine Pipeline-Verarbeitung verwendet werden, so daß die Gesamtverarbeitung über die Rahmenpuffersteuerungen näherungsweise konstant ist. Die Rahmenpuffersteuerungs-Zu­ weisungen sind auf jede Kachel in dem Bildschirm anwendbar. Fig. 7 zeigt Zuweisungen für die fünf Rahmenpuffersteuerun­ gen des Ausführungsbeispiels, das in Fig. 3 gezeigt ist.
Fig. 8 offenbart Rahmenpuffersteuerungs-Kachelzuweisungen, die dem zweiten Ausführungsbeispiel des Systems, wie es in Fig. 4 gezeigt ist, entsprechen. Bei diesem Ausführungsbei­ spiel sind zehn Rahmenpuffer für einen verbesserten Paral­ lelismus und eine verbesserte Geschwindigkeit verwendet. Bei diesem Ausführungsbeispiel ist jede Kachel 300 sechzehn Pi­ xel × achtzig Pixel groß und bedeckt Abschnitte von acht Ab­ tastlinien, von denen jede zwei Reihen von Pixeln aufweist. Jede Kachel ist in fünf Spalten 321-325 unterteilt. Jeder Rahmenpuffersteuerung ist ein Block in jeder zweiten Span­ nenlinie der Kachel zugewiesen, so daß die Blöcke, die durch jede Rahmenpuffersteuerung verarbeitet werden, durch die ge­ samte Kachel verteilt sind. Durch das Zuweisen von Blöcken in abwechselnden Reihen ist das Verhalten jedes Kanten­ schrittgebers verbessert, da derselbe Linien auslassen kann, in denen sich kein zugewiesener Block befindet. Ein Muster zum Zuweisen der Rahmenpuffersteuerungen ist in Fig. 8 ge­ zeigt.
Rahmenpuffer sind in zwei Dimensionen verschachtelt, um die Bandbreite für eine Bildschirmauffrischung zu erhöhen. Indem die Speichersteuerungen entlang einer Spannenlinie ver­ schachtelt sind, ist die erforderliche Bandbreite, die pro Speichersteuerung notwendig ist: (totale Bandbreite)/(Anzahl der Speichersteuerungen). Ferner ist für große Polygone, große gefüllte Flächen und Blockübertragungen das Verhalten zum Schreiben von Pixeln entlang der Abtastlinie aufgrund des Verschachtelns der Rahmenpuffersteuerungen, die auf Spannenlinien verschachtelt sind, verbessert. Das Verhalten beim Verarbeiten kleiner Dreiecke und Vektoren, hauptsäch­ lich in der y-Richtung ist durch das Verschachteln der Rah­ menpuffersteuerungen in der y-Richtung verbessert.
IV. Rahmenpuffer-Konfiguration und -Betrieb
Fig. 10 ist ein Blockdiagramm einer Rahmenpuffersteuerung gemäß der vorliegenden Erfindung. Die Rahmenpuffersteuerung ist als ein Rahmenpuffersteuerungs-Chip 50A gebildet und weist einen Kantenschrittgeber 500, einen Unterspannen- Schrittgeber 510, einen Spannenschrittgeber 520 und zwei Speichersteuerungen 530, 531 auf. Jede der Speichersteuerun­ gen 530, 531 ist wiederum mit einem VRAM 540, 541 verbunden.
Die zwei VRAMs 540, 541, die mit der Rahmenpuffersteuerung verbunden sind, bilden den VRAM 51A für den Rahmenpuffer­ steuerungs-Chip, wie in Fig. 3 gezeigt ist. Wie oben erläu­ tert wurde, kann jeder VRAM mehrere VRAM-Chips aufweisen. Zwei Speichersteuerungen 530, 531 sind verwendet, um die Verarbeitungsgeschwindigkeit zu erhöhen. Um die Verarbeitung zu beschleunigen, werden die Daten, die den Speichersteue­ rungen geliefert werden, durch die Rahmenpuffersteuerung verschachtelt. Die Rahmenpuffersteuerung liefert abwechselnd zwei benachbarte Pixel von Daten auf einer ersten und dann einer zweiten Pixelleitung einer Spannenlinie zu jeder der Speichersteuerungen. Wie in Fig. 9 dargestellt ist, ist je­ der Datenblock von der Rahmenpuffersteuerung zwei Pixel × sechzehn Pixel groß. Daher werden bis zu acht 2×2-Unter­ blöcke von Pixeln abwechselnd eine Linie und ein Pixel ein­ zeln zu den Speichersteuerungen für jeden Datenblock gesen­ det. Die Zuweisung von Pixeln zu einer Speichersteuerung in 2×2-Unterblöcken ist für z-Daten-Zugriffe vorteilhaft. Die Speichersteuerungen weisen jeweils einen Cache für z-Daten auf. z-Daten sind allgemein in 2×2-Blöcken organisiert. Ein Block von z-Daten wird für eine spätere Verwendung in den Cache gelesen, wobei aufeinanderfolgende Pixel der Speiche­ rungssteuerung zugewiesen werden. Selbstverständlich können andere Prozeduren, um Pixel jeder der Speichersteuerungen zuzuweisen, verwendet werden.
Der Kantenschrittgeber 500, der Unterspannen-Schrittgeber 510 und der Spannenschrittgeber 520 wandeln die ankommenden Grundelementdaten in die Ausgabepixeldaten um. Wie oben er­ läutert wurde, weisen die Grundelementdaten Werte für drei Scheitelpunkte eines Dreiecks und Farbwerte R, G, B für die gleichen drei Scheitelpunkte auf. Der Kantenschrittgeber 500 arbeitet auf eine ähnliche Art und Weise wie ein Kanten­ schrittgeber eines herkömmlichen Rahmenpuffers, wie in Fig. 1 gezeigt ist. Derselbe bestimmt durch Interpolation die Pi­ xel auf jeder Pixellinie, die die Kanten des Grundelements definieren. Für das Fünf-Rahmenpuffersteuerungs-System, das in Fig. 3 dargestellt ist, verarbeitet jede Rahmenpuffer­ steuerung Daten für jede Spannenlinie, während jeder ent­ sprechende Kantenschrittgeber auf eine ähnliche Art und Wei­ se wie ein Kantenschrittgeber in einer Rahmenpuffersteuerung mit nicht-paralleler Verarbeitung (Fig. 1) arbeitet. Wenn 10 Rahmenpuffersteuerungen verwendet sind, wie bei dem Ausfüh­ rungsbeispiel von Fig. 4, verarbeitet jede Rahmenpuffer­ steuerung Daten auf alternierenden Spannenlinien, wie in Fig. 8 dargestellt ist. In diesem Fall arbeiten die Kanten­ schrittgeber 500 der Rahmenpuffersteuerungen ähnlich wie die Kantenschrittgeber in herkömmlichen Rahmenpuffersteuerungen mit paralleler Verarbeitung, wie in Fig. 2 dargestellt ist. Jeder Kantenschrittgeber 500 liefert Pixeldaten für Punkte entlang der Kante in alternierenden Spannenlinien von zwei Pixeln.
Der Kantenschrittgeber 500 liefert die Kantenpixeldaten zu dem Unterspannen-Schrittgeber 510. Die Kantenpixelinforma­ tionen können den y-Wert der Spannenlinie, die x-Werte jeder Kante, die Farbwerte R, G, B der ersten Kante und einen Farbgradienten für die Spanne aufweisen. Der Unterspannen- Schrittgeber 500 identifiziert Anfangs-, End- und Sprung- Werte für einen Block, der der Rahmenpuffersteuerung in je­ der Kachel entlang der Spannenlinie zugewiesen ist. Die An­ fangs- und End-Werte zeigen die Pixel-Werte in dem Grundele­ ment in den entsprechenden Blöcken an, die der Rahmenpuffer­ steuerung zugewiesen sind. Fig. 13 zeigt die Beziehung zwi­ schen den Anfangs- und End-Werten für Unterspannen. Wenn ein Block der Spannenlinie, die der Rahmenpuffersteuerung zuge­ wiesen ist, gesamt in dem Grundelement liegt (FB3), wären die Anfangs- und End-Werte die Grenzen dieses Blockes. Wenn eine Kante des Grundelements durch einen Block der Spannen­ linie, die der Rahmenpuffersteuerung zugewiesen ist, läuft (FB2, FB4), kann sich der Anfangs- oder End-Wert auch auf die Position der Kante in diesem Block beziehen. Der Sprung-Wert stellt den Abstand zwischen dem Anfang eines Blocks und der Anfangskante dar und kann verwendet werden, um die Farbe, die dem Pixel an der Anfangsposition des Blocks entspricht, zu bestimmen.
Die Anfangs-, End- und Sprung-Werte werden einem Spannen­ schrittgeber 520 geliefert, der die Pixeldaten erzeugt. Zwi­ schen dem Unterspannen-Schrittgeber und dem Spannenschritt­ geber kann ein FIFO-Speicher (nicht gezeigt) angeordnet sein. Der FIFO-Speicher hat eine Pipeline-Verarbeitung von Grundelementen zur Folge, was Verarbeitungszeiten für die Rahmenpuffersteuerungen vergleichmäßigt. Basierend auf den Anfangs-, End- und Sprung-Werten bestimmt der Spannen­ schrittgeber 520 alle Pixel in allen Blöcken der Spannenli­ nie, die der Rahmenpuffersteuerung zugeordnet ist. Der Span­ nenschrittgeber 520 gibt die Pixeldaten Pixel für Pixel zu den Speichersteuerungen 530, 531 aus.
Die Operation der Rahmenpuffersteuerung ist in dem Block­ flußdiagramm von Fig. 11 dargestellt. In einem Schritt 602 werden die Grundelementdaten empfangen. Basierend auf den Grundelementdaten werden in einem Schritt 604 die Kanten e₁, e₂, e₃ bestimmt. Die Kanten werden bestimmt, so daß die er­ ste Kante e₁ die Kante des Grundelements ist, die den größ­ ten y-Bereich überspannt. In einem Schritt 606 werden Koor­ dinaten- und Farb-Daten für die Schrittgebung entlang einer Kante bestimmt. Diese Koordinaten- und Farb-Daten könnten einen y-Wert des oberen Scheitelpunkts der Kante e₁ (101 in Fig. 5), den y-Wert des untersten Scheitelpunkts auf der Kante e₁ (103 in Fig. 5), den x-Wert des obersten Scheitel­ punkts, die Steigung in x von e₁, den x-Wert und die Stei­ gung für e₂ oder e₃, die Farbwerte R, G, B des obersten Scheitelpunkts, den Farbgradienten entlang e₁ und einen Spannen-Farbgradienten für jede Spannenlinie aufweisen. Um sich schrittweise entlang e₁ zu bewegen, bestimmt der Kan­ tenschrittgeber iterativ den x-Wert von e₁ (Schritt 612), den x-Wert von e₂ oder e₃, abhängig von der Spannenlinie (Schritt 616), den y-Wert der Spannenlinie (Schritt 602) und die Spannen-Anfangsfarbe (Schritt 626). Der y-Wert definiert die Spannenlinie, die x-Werte definieren die Anfangs- und End-Werte des Grundelements in der Spannenlinie, und der Farbwert definiert die Anfangsfarbe für diese Spannenlinie.
Ferner wird ein Spannen-Farbgradient 627 bestimmt. Der Span­ nen-Farbgradient wird verwendet, um die Farbe an dem Anfang jedes Blocks und die Farbe für jedes Pixel in einem Block zu bestimmen. Bei jeder Iteration wird der y-Wert mit dem letz­ ten y-Wert verglichen (Schritt 621) um zu bestimmen, ob die Kantenschrittgebung beendet werden soll (Schritt 622).
Der Unterspannen-Schrittgeber empfängt die X-Werte für e₁, e₂ und e₃ und erzeugt Anfangs-, End- und Sprung-Werte für jeden Block der Spannenlinie, die dieser Rahmenpuffersteue­ rung zugewiesen ist (Schritt 700). Der Sprungwert wird mit dem Spannen-Farbgradienten multipliziert (Schritt 640) und zu der Anfangsfarbe 633 addiert (im Schritt 642), um den An­ fangsfarbwert für jeden Block der Spannenlinie zu liefern. Der Anfangs-, der End- und der Anfangsfarb-Wert werden zu einem Spannenschrittgeber geliefert, der dann die Pixeldaten zwischen den Anfangs- und End-Werten unter Verwendung des anfänglichen Farb- und Spannenfarb-Gradienten erzeugt, um die Werte und Farben zu bestimmen.
Die Operation des Unterspannengenerators ist in dem Block­ flußdiagramm von Fig. 12 dargestellt. Die x-Werte für e₁, e₂ und e₃ werden in einem Schritt 710 verglichen, um die Rich­ tung der Schrittgebung in der Spanne zu bestimmen. Der Span­ nenschrittgeber bewegt sich schrittweise stets von e₁ zu e₂ oder e₃. Wenn der x-Wert für e₁ größer als der x-Wert für e₂, e₃ ist, werden die Unterspannen-Anfangs- und End-Werte und die Schrittgebungsrichtung rückwärts eingestellt (Schritt 715). Der x-Wert von e₁ wird der Spannenlinienan­ fang 711, und der x-Wert von e₂, e₃ wird das Spannenlinien­ ende 712 für das Grundelement in dieser Spannenlinie.
Der Spannenlinien-Anfangswert wird dann im Schritt 720 modu­ liert, um eine Kachelnummer, einen Block und einen Versatz für den Spannenlinienanfang zu bestimmen. Die Kachel ist die Kachel in der Reihe der Spannenlinie, in der sich der Span­ nenlinien-Anfangswert befindet. Der Block ist die Spalte 221-225 in der Kachel, in der sich der Spannenlinien-Anfangs­ wert befindet. Der Versatzwert ist die Pixelposition in den sechzehn Pixeln des Blocks, an der sich der Spannenlinien- Anfangswert befindet. In der Praxis ist der Anfangswert ein digitaler binärer Wert. Folglich können die niedrigsten vier Bits des Anfangswerts als der Versatz verwendet werden. Die übrigen Bits werden um vier Bits nach links geschoben, was den Anfangswert durch sechzehn teilt (die Breite eines Blocks). Danach wird eine MOD-Funktion mit einem Operanden von 5 (der Anzahl der Blöcke in einer Kachel) auf die ver­ schobenen Bits angewendet. Die MOD-Funktion liefert ein Er­ gebnis und einen Rest. Das Ergebnis stellt die Kachelnummer dar, während der Rest die Blocknummer darstellt.
Um den Unterspannen-Anfangswert für den ersten Block, der der Rahmenpuffersteuerung zugewiesen ist, zu bestimmen, wird der Block in einem Schritt 725 mit dem zugewiesenen Block für die Rahmenpuffersteuerung in dieser Abtastlinie vergli­ chen (gemäß der Einstellung entsprechend den Mustern in den Fig. 7 und 8). Wenn der Block des Anfangswerts kleiner ist als der zugewiesene Block, dann befindet sich der zugewiese­ ne Block vollständig in dem Grundelement (FB3 in Fig. 13) und wird zum nächsten Schritt ausgegeben. Wenn der Block größer als der zugewiesene Block ist, dann befindet sich der zugewiesene Block vollständig außerhalb des Grundelements (FB1 in Fig. 13) und die Kachelnummer wird um 1 erhöht (Schritt 726). Wenn der Block gleich dem zugewiesenen Block ist, dann liegt die Kante in dem zugewiesenen Block (FB2 in Fig. 13) und der Versatzwert wird zu dem nächsten Schritt (Schritt 724) geleitet. In einem Schritt 750 wird der Anfang der ersten Unterspanne basierend auf der eingestellten Ka­ chelnummer, dem zugewiesenen Block und dem Versatz bestimmt. Bei dem offenbarten Ausführungsbeispiel, das Kacheln von achtzig Pixeln Breite und Rahmenpufferpositionen von sechzehn Pixeln Breite aufweist, wäre der Anfangswert gleich folgen­ der Gleichung:
Kachel × 80 + Block × 16 + Versatz (1)
Der Endwert für die Unterspanne wird durch Addieren von 15 (der Breite des Blocks) zu dem Anfangswert bestimmt. Wenn e₁ größer als e₂, e₃ ist (Schritt 715), wird der Endwert durch Subtrahieren von 15 von dem Anfangswert bestimmt.
Der gleiche Prozeß wird verwendet, um den Endwert für die letzte Unterspanne zu bestimmen (Schritte 730, 734, 735, 736, 751). Der Spannen-Endwert wird moduliert, um die Ka­ chel, den Block und den Versatz für das Ende zu bestimmen. Der Block wird dann mit dem zugewiesenen Block und der Ka­ chel verglichen, und Versatzwerte werden geeignet einge­ stellt.
Jede Unterspanne in der Spannenlinie kann bestimmt werden, indem iterativ 80 (die Breite einer Kachel) zu den anfängli­ chen Anfangs- (Schritt 760) und End- (Schritt 765) -Werten addiert wird. Wenn e₁ größer als e₂, e₃ ist, wird 80 von dem anfänglichen Anfangswert subtrahiert, um sich schrittweise rückwärts zu bewegen. Wenn anfänglich ein Versatzwert ver­ wendet wurde, da eine Kante durch den zugewiesenen Block verläuft, würde der Versatzwert bei nachfolgenden Iteratio­ nen zum Bestimmen von Unterspannen selbstverständlich igno­ riert werden. Statt des Addierens (oder Subtrahierens) von 80 von dem Anfangswert und des Subtrahierens eines Versatz­ wertes, wenn ein solcher vorliegt, können nachfolgende Un­ terspannen-Anfangswerte durch das Erhöhen (oder Erniedrigen) der Kachelnummer, das Einstellen des Versatzwertes auf Null und das Neuberechnen des Anfangswertes gemäß der Gleichung (1) bestimmt werden.
Der Endwert für die Unterspanne wird bei jeder Iteration mit dem endgültigen Endwert verglichen, um die letzte Unterspan­ ne in der Spannenlinie zu bestimmen. Der Sprungwert wird als der Unterschied zwischen dem Anfangswert der Unterspanne und dem anfänglichen x-Wert (Schritt 770) am Anfang der Spanne für das Grundelement bestimmt.
Wie in den Fig. 2 und 3 dargestellt ist, sendet das Graphik­ system der vorliegenden Erfindung Texturabbildungsinforma­ tionen zu den Rahmenpuffern. Texeldaten, die Werte R, G, B und Alpha für die Pixel aufweisen, werden von der Textur­ abbildungsplatine 12 zu allen Rahmenpuffersteuerungen 50A-50E gesendet. Da Pro-Pixel-Texeldaten geliefert werden, müs­ sen die Texeldaten nicht durch den Kantenschrittgeber 500, den Unterspannen-Schrittgeber 510 oder den Spannenschrittge­ ber 520 laufen und können mit den Pixeldaten kombiniert und zu den Speichersteuerungen geliefert werden. Wie oben erläu­ tert wurde, können verschiedene Verfahren verwendet werden, um die Grundelement-Pixeldaten und die Texeldaten zu kombi­ nieren.
Der Schaltungsaufbau, der hierin gezeigt und beschrieben ist, ist nur zu beispielhaften Zwecken angegeben. Der Schal­ tungsaufbau ist vorzugsweise in einer kundenspezifischen in­ tegrierten Schaltung großer Stückzahl unter Verwendung einer logischen Synthesesoftware, die kommerziell erhältlich ist, beispielsweise von Synopsys, implementiert. Die logische Synthesesoftware optimiert und übersetzt Schaltungsbeschrei­ bungen, die in Hochpegelsprachen, beispielsweise Veralog, geschrieben sind, in logische Gatter. Der Schaltungsaufbau kann unter Verwendung eines CMOS-Prozesses, der 1-Mikrome­ ter-FETs erzeugt, die bei 5 Volt arbeiten, eines CMOS-Pro­ zesses, der Bauelemente mit einer gezogenen Gatelänge von 0,6 Mikrometer erzeugt, die bei 3,3 Volt arbeiten, oder ei­ nes beliebigen anderen geeigneten Verfahrens zum Implemen­ tieren digitaler Schaltungen implementiert sein. Da die Ein­ gabe in die logische Synthesesoftware funktionell und nicht strukturell ist, können sich die tatsächlichen Schaltungen, die durch die logische Synthesesoftware erzeugt werden, von den hierin offenbarten unterscheiden.

Claims (20)

1. Rahmenpuffersteuerung (50A) mit folgenden Merkmalen:
einem Kantenschrittgeber (500), der Grundelementdaten empfängt und eine Reihe von Spannenliniendaten erzeugt;
einem Unterspannen-Schrittgeber (510), der die Reihe von Spannenliniendaten empfängt und basierend auf allen Spannenliniendaten der Reihe eine Reihe von Unterspan­ nendaten erzeugt; und
einem Spannenschrittgeber (520), der jede Reihe von Un­ terspannendaten empfängt und entsprechend den Unterspan­ nendaten Pixeldaten erzeugt.
2. Rahmenpuffersteuerung (50A) gemäß Anspruch 1, bei der die Unterspannendaten einen Anfangswert, einen Endwert und einen Farbanfangswert für Abschnitte einer Spannen­ linie aufweisen.
3. Rahmenpuffersteuerung (50A) gemäß Anspruch 2, bei der die Abschnitte einer Spannenlinie, die durch die Unter­ spannendaten definiert sind, basierend auf der Spannen­ linie variieren.
4. Rahmenpuffersteuerung (50A) gemäß Anspruch 3, bei der die Abschnitte der Spannenlinie für jede Spannenlinie vorbestimmt sind.
5. Rahmenpuffersteuerung (50A) gemäß einem der Ansprüche 1 bis 4, die ferner folgende Merkmale aufweist:
zumindest einen Speicher (540, 541) zum Speichern von Pixeldaten; und
zumindest eine Speichersteuerung (530, 531), die die Pi­ xeldaten von dem Spannenschrittgeber (520) empfängt und die Pixeldaten in dem zumindest einen Speicher (540, 541) speichert.
6. Rahmenpuffersteuerung (50A) gemäß einem der Ansprüche 1 bis 5, bei der die Spannenliniendaten einen Spannenli­ nien-Anfangswert, einen Spannenlinien-Endwert, einen Spannenlinien-Farbwert und einen Spannenlinien-Farbgra­ dientenwert aufweisen.
7. Rahmenpuffersystem (14) für ein Computergraphiksystem mit folgenden Merkmalen:
einer Mehrzahl von Rahmenpuffersteuerungen (50A, 50B), die Grundelementdaten von dem Computergraphiksystem empfangen, wobei jede Rahmenpuffersteuerung folgende Merkmale aufweist:
einen Kantenschrittgeber (500) zum schrittweisen Be­ wegen entlang von Spannenlinien einer Kante des Grund­ elements und zum Erzeugen von Spannenliniendaten ent­ sprechend den Spannenlinien;
einen Unterspannen-Schrittgeber (510), der die Span­ nenliniendaten, die jeder Spannenlinie entsprechen, empfängt und eine Reihe von Unterspannenliniendaten, die Abschnitte von Spannenlinien, die den Spannenli­ niendaten entsprechen, darstellen, erzeugt; und
einen Spannenschrittgeber (520), der die Reihe von Unterspannendaten empfängt und Pixeldaten für das Grundelement in den Abschnitten der Spannenlinien, die durch die Unterspannendaten dargestellt sind, erzeugt.
8. Rahmenpuffersystem gemäß Anspruch 7, bei dem der Kanten­ schrittgeber (500) jeder Rahmenpuffersteuerung (50A, 50B) Spannenliniendaten entsprechend jeder Spannenlinie erzeugt.
9. Rahmenpuffersystem gemäß Anspruch 7, bei dem der Kanten­ schrittgeber (500) jeder Rahmenpuffersteuerung (50A, 50B) Spannenliniendaten entsprechend vorbestimmter Span­ nenlinien erzeugt.
10. Rahmenpuffersystem gemäß Anspruch 9, bei dem die vorbe­ stimmten Spannenlinien alternierende Spannenlinien sind.
11. Rahmenpuffersystem gemäß Anspruch 7, das ferner zumin­ dest einen Speicher (51A, 51B) zum Speichern der Pixel­ daten aufweist.
12. Rahmenpuffersystem gemäß Anspruch 11, bei dem jede Rah­ menpuffersteuerung (50A, 50B) zumindest eine Speicher­ steuerung (530, 531) zum Schreiben von Pixeldaten in den zumindest einen Speicher (540, 541) aufweist.
13. Rahmenpuffersystem gemäß Anspruch 11, bei dem der zumin­ dest eine Speicher (51A, 51B) eine Mehrzahl von Spei­ chern aufweist, die der Mehrzahl von Rahmenpuffersteue­ rungen (50A, 50B) zugeordnet sind.
14. Rahmenpuffersystem gemäß Anspruch 12, bei dem der zumin­ dest eine Speicher (540, 541) eine Mehrzahl von Spei­ chern aufweist, die jeder der Mehrzahl von Rahmenpuffer­ steuerungen (50A, 50B) zugeordnet sind, wobei die zumin­ dest eine Speichersteuerung (530, 531) eine Mehrzahl von Speichersteuerungen für jede Rahmenpuffersteuerung auf­ weist, und wobei alternierende Abschnitte der Pixeldaten zur Speicherung in einem entsprechenden Speicher zu je­ der der Mehrzahl von Speichersteuerungen (530, 531) für jede Rahmenpuffersteuerung geliefert werden.
15. Rahmenpuffersystem gemäß Anspruch 7, bei dem die Unter­ spannendaten einen Anfangswert, einen Endwert und einen Farbanfangswert für Abschnitte einer Spannenlinie auf­ weisen.
16. Rahmenpuffersystem gemäß Anspruch 15, bei dem die Ab­ schnitte einer Spannenlinie, die durch die Unterspannen­ daten definiert sind, basierend auf der Spannenlinie va­ riieren.
17. Rahmenpuffersystem gemäß Anspruch 15, bei dem die Ab­ schnitte der Spannenlinie für jede Spannenlinie vorbe­ stimmt sind.
18. Rahmenpuffersystem gemäß Anspruch 7, bei dem eine gesam­ te Spannenlinie in Abschnitte der Spannenlinie geteilt ist, die durch eine der Mehrzahl von Speicherpuffer­ steuerungen (50A, 50B) abgedeckt sind.
19. Verfahren des Betreibens einer Rahmenpuffersteuerung (50A, 50B) mit folgenden Schritten:
Umwandeln (750) von Grundelementdaten in Spannenanfangs- und Spannenend-Werte für jede Spannenlinie in dem Grund­ muster;
Unterteilen (760, 765) jeder Spannenlinie zwischen dem Spannenanfangs- und dem Spannenend-Wert in eine Mehrzahl von Unterspannenabschnitten; und
Erzeugen von Pixeldaten, die zumindest einem der Unter­ spannenabschnitte in jeder Spannenlinie entsprechen.
20. Verfahren gemäß Anspruch 19, das ferner den Schritt des Bestimmens der Mehrzahl von Unterspannenabschnitten ba­ sierend auf der Spannenlinie aufweist.
DE19619288A 1995-06-08 1996-05-13 System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern Withdrawn DE19619288A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US48864295A 1995-06-08 1995-06-08

Publications (1)

Publication Number Publication Date
DE19619288A1 true DE19619288A1 (de) 1996-12-12

Family

ID=23940519

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19619288A Withdrawn DE19619288A1 (de) 1995-06-08 1996-05-13 System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern

Country Status (5)

Country Link
US (1) US5982384A (de)
JP (1) JPH0916144A (de)
DE (1) DE19619288A1 (de)
FR (1) FR2735267B1 (de)
GB (1) GB2302002B (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US6215500B1 (en) 1995-08-04 2001-04-10 Sun Microsystems, Inc. Compression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US6747644B1 (en) 1995-08-04 2004-06-08 Sun Microsystems, Inc. Decompression of surface normals in three-dimensional graphics data
US6256041B1 (en) 1995-08-04 2001-07-03 Sun Microsystems, Inc. Decompression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US5842004A (en) 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US5760783A (en) * 1995-11-06 1998-06-02 Silicon Graphics, Inc. Method and system for providing texture using a selected portion of a texture map
JPH10334269A (ja) * 1997-06-03 1998-12-18 Sega Enterp Ltd 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体
US7554510B1 (en) * 1998-03-02 2009-06-30 Ati Technologies Ulc Method and apparatus for configuring multiple displays associated with a computing system
US6072505A (en) * 1998-04-01 2000-06-06 Real 3D, Inc. Method and apparatus to efficiently interpolate polygon attributes in two dimensions at a prescribed clock rate
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
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
US6801203B1 (en) * 1999-12-22 2004-10-05 Microsoft Corporation Efficient graphics pipeline with a pixel cache and data pre-fetching
US6823525B1 (en) * 2000-01-21 2004-11-23 Ati Technologies Inc. Method for displaying single monitor applications on multiple monitors driven by a personal computer
US20050052459A1 (en) * 2000-06-07 2005-03-10 Lewis Michael C. Method and system for rendering macropixels in a graphical image
US6556203B1 (en) * 2000-06-30 2003-04-29 Intel Corporation Tile-based digital differential analyzer rasterization
US6636218B1 (en) * 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
US6961803B1 (en) 2001-08-08 2005-11-01 Pasternak Solutions Llc Sliced crossbar architecture with no inter-slice communication
DE60205856D1 (de) * 2002-03-11 2005-10-06 Sgs Thomson Microelectronics Verfahren und Vorrichtung zur Auswertung, ob ein Bildpunkt innerhalb eines Dreiecks liegt
US7038697B2 (en) * 2003-02-25 2006-05-02 Microsoft Corporation Color gradient paths
US7936362B2 (en) * 2004-07-30 2011-05-03 Hewlett-Packard Development Company L.P. System and method for spreading a non-periodic signal for a spatial light modulator
US9009441B2 (en) 2012-06-04 2015-04-14 Qualcomm Incorporated Memory channel selection in a multi-channel memory
US9299124B2 (en) * 2012-06-07 2016-03-29 Qualcomm Incorporated Padding for multi-channel memory
US10410081B2 (en) 2014-12-23 2019-09-10 Intel Corporation Method and apparatus for a high throughput rasterizer
US10269154B2 (en) * 2015-12-21 2019-04-23 Intel Corporation Rasterization based on partial spans
US10482577B2 (en) * 2016-07-27 2019-11-19 Adobe Inc. Dynamic spread anti-aliasing
US10388060B2 (en) * 2017-08-28 2019-08-20 Futurewei Technologies, Inc. System and method for multi-view rendering

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB464907A (en) * 1936-11-09 1937-04-27 Clarke Chapman Ltd An improvement relating to hoisting and like means
US5222204A (en) * 1990-03-14 1993-06-22 Hewlett-Packard Company Pixel interpolation in perspective space
JP3071229B2 (ja) * 1990-04-09 2000-07-31 株式会社リコー 図形処理装置
GB2245806A (en) * 1990-06-29 1992-01-08 Philips Electronic Associated Generating an image
EP0464907B1 (de) * 1990-06-29 1996-10-09 Philips Electronics Uk Limited Bilderzeugung
US5293480A (en) * 1990-08-06 1994-03-08 At&T Bell Laboratories High resolution graphics system architecture
GB2251770B (en) * 1991-01-09 1995-01-11 Du Pont Pixel Systems Graphics accelerator system with polygon traversal operation
GB2251773B (en) * 1991-01-09 1995-01-18 Du Pont Pixel Systems Graphics accelerator system with line drawing and tracking operations
JP2712912B2 (ja) * 1991-08-23 1998-02-16 日本電気株式会社 エッジリスト作成装置
US5307449A (en) * 1991-12-20 1994-04-26 Apple Computer, Inc. Method and apparatus for simultaneously rendering multiple scanlines
US5404448A (en) * 1992-08-12 1995-04-04 International Business Machines Corporation Multi-pixel access memory system
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
EP0631252B1 (de) * 1993-06-23 2002-06-26 Sun Microsystems, Inc. Zeichnungsverarbeitungsgerät für drei-dimensionalen graphischen Hoch-Leistungsbeschleuniger
US5528738A (en) * 1993-10-06 1996-06-18 Silicon Graphics, Inc. Method and apparatus for antialiasing raster scanned, polygonal shaped images
US5598517A (en) * 1995-01-10 1997-01-28 Evans & Sutherland Computer Corp. Computer graphics pixel rendering system with multi-level scanning

Also Published As

Publication number Publication date
FR2735267B1 (fr) 1999-04-30
FR2735267A1 (fr) 1996-12-13
US5982384A (en) 1999-11-09
GB2302002B (en) 2000-06-21
JPH0916144A (ja) 1997-01-17
GB9611742D0 (en) 1996-08-07
GB2302002A (en) 1996-12-18

Similar Documents

Publication Publication Date Title
DE19619288A1 (de) System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern
DE69130123T2 (de) Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts
DE69122557T2 (de) Bilderzeugung
DE3853393T2 (de) Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung.
DE68927471T2 (de) Verfahren zur Schattierung eines graphischen Bildes
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE69424716T2 (de) Verfahren und Vorrichtung zur adaptiven Steuerung der Texturabbildung
DE69130545T2 (de) System zur Erzeugung einer texturierten Perspektivsicht
DE19827726B4 (de) Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE68919024T2 (de) Verfahren und Prozessor zur Abtastumsetzung.
DE3855231T2 (de) Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE69130132T2 (de) Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven
DE69032932T2 (de) System und Verfahren zum unverfälschten Polygonenzeichnen
EP1227444B1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE69331031T2 (de) Vorrichtung zur parallelen Bilderzeugung
DE69127516T2 (de) Verfahren und Gerät zur Bilderzeugung
DE69331486T2 (de) Bilddatenverarbeitung
DE69609534T2 (de) Rechnerbasierte 3D-Darstellungsverfahren und -System
DE3022454A1 (de) Optisches abbildesystem mit computererzeugtem bild fuer einen bodenfesten flugsimulator
DE3315148C2 (de)
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE69230774T2 (de) Anti-aliasing Tiefenpuffer
DE69606177T2 (de) Verfahren und gerät zur texturabbildung

Legal Events

Date Code Title Description
ON Later submitted papers
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8130 Withdrawal