DE60038623T2 - Verfahren und vorrichtung zum rendern von makropixeln - Google Patents

Verfahren und vorrichtung zum rendern von makropixeln Download PDF

Info

Publication number
DE60038623T2
DE60038623T2 DE60038623T DE60038623T DE60038623T2 DE 60038623 T2 DE60038623 T2 DE 60038623T2 DE 60038623 T DE60038623 T DE 60038623T DE 60038623 T DE60038623 T DE 60038623T DE 60038623 T2 DE60038623 T2 DE 60038623T2
Authority
DE
Germany
Prior art keywords
pixels
pixel
fragments
macro
rendering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60038623T
Other languages
English (en)
Other versions
DE60038623D1 (de
Inventor
Michael C. San Jose LEWIS
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.)
Broadcom Corp
Original Assignee
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Application granted granted Critical
Publication of DE60038623D1 publication Critical patent/DE60038623D1/de
Publication of DE60038623T2 publication Critical patent/DE60038623T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
  • Peptides Or Proteins (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Graphikverarbeitung in einem Computersystem und spezifischer ein Verfahren und ein System zum effizienteren Rendern eines graphischen Bildes.
  • HINTERGRUND DER ERFINDUNG
  • Ein herkömmliches Computer-Graphiksystem kann ein graphisches Bild auf einem Bildschirm anzeigen. Das graphische Bild umfasst typischerweise eine Mehrzahl an Objekten. Der Bildschirm umfasst eine Mehrzahl von als Pixel bekannten Anzeigeelementen, die typischerweise in einem Gitter angeordnet sind. Zur Anzeige von Objekten teilt ein herkömmliches Computer-Graphiksystem typischerweise die Objekte in eine Mehrzahl von Polygonen auf. Das herkömmliche System rendert die Polygone dann typischerweise in einer bestimmten Reihenfolge. Bei einer dreidimensionalen Szene werden die Polygone im Allgemeinen, gemessen von der Sichtebene des Bildschirms, von hinten nach vorne gerendert. Ebenso kann eine zweidimensionale Szene angezeigt werden, wobei die Polygone basierend auf ihrer Schicht gerendert werden. Oberflächlichere Schichten verdecken tiefere Schichten.
  • Zum Rendern des graphischen Bildes rendern herkömmliche Systeme typischerweise die Mehrzahl an Objekten Polygon für Polygon. Typischerweise wird eine Anzeigeliste erstellt. Die Anzeigeliste stellt die Polygone in der Reihenfolge bereit, in der die Polygone gerendert werden sollen. Ein herkömmliches Graphiksystem rendert dann typischerweise ein erstes Polygon in der Anzeigeliste, ungeachtet der Pixelanzahl oder -positionen, die das Polygon überschneidet. Die Daten für die Pixel in dem Polygon werden typischerweise von links nach rechts und von oben nach unten im Polygon gerendert. Das herkömmliche System fährt so lange damit fort, das graphisch Bild Polygon für Polygon zu rendern, bis alle Polygone gerendert worden sind. Bei einem anderen herkömmlichen System werden Tiles gerendert. Ein Tile (Kachel) ist typischerweise ein zweidimensionales Quadrat, das n×n Pixel enthält. Zum Rendern des Tiles werden die Pixel von links nach rechts und von oben nach unten im Tile gerendert.
  • US 5 363 475 offenbart eine Vorrichtung zum Generieren eines Bildes anhand von Daten, die ein Model definieren, das eine Mehrzahl undurchsichtiger und durchsich tiger Merkmale umfasst. Das Bild soll eine Ansicht des Modells von einer vorgegebenen Augenposition aus darstellen und besteht aus einer Anordnung von Bildschirmraumpixeln (screen space Pixels). Der Bildbereich ist in eine Anordnung von Teilbereichen aufgeteilt, von denen jeder wenigstens ein Pixel abdeckt. Für jedes Merkmal in dem Modell, das von der Augenposition aus potentiell sichtbar ist, wird ein Test durchgeführt, um zu bestimmen, welcher der Teilbereiche wenigstens teilweise durch dieses Merkmal abgedeckt ist. Bei jedem Merkmal, das einen Abtastpunkt abdeckt, wird eine Funktion des Abstands von der Augenposition zu diesem Merkmal am Abtastpunkt bestimmt. Es wird eine Ausgabe für jedes Pixel in einem Teilbereich erzeugt, wobei die Pixelausgabe den kombinierten Effekten der Abtastpunktausgaben aller Abtastpunkte entspricht, die zu diesem Pixel beitragen, wobei die Pixelausgaben angezeigt werden.
  • Es kann ebenfalls auf das US-Patent 5,886,701 Bezug genommen werden. Dieses offenbart ein System, das ein Bild in "Chunks" (Brocken) unterteilt. Siehe Spalte 9, Zeilen 54–56. Das System rendert das Bild durch "Tiling" einzelner Primitiver (auch als Polygone bekannt) Primitive für Primitive. Somit rendert das System "Chunks" auf einer Pro-Primitiven-Basis.
  • Es kann ebenfalls auf das US-Patent 5,598,517 Bezug genommen werden. Das US-Patent 5,598,517 beschreibt ein Mehr-Ebenen-Abtastsystem (multi-level scanning system) zum Rendern von Primitiven (Polygonen), wobei Spans (eine Anordnung von Pixeln) innerhalb einer Primitiven abgetastet und dann verarbeitet werden. Das US-Patent 5,598,517 beschreibet ein Graphiksystem, bei dem die Primitiven, die Teil von Objekten im Bildschirm sind, in Spans aufgeteilt werden. Die Spans in einer Primitiven grenzen aneinander an, überlappen einander nicht und werden in Rasterreihenfolge gerendert. Spans und Abschnitte von Spans außerhalb der aktuell gerenderten Primitiven werden nicht abgetastet. Des Weiteren werden bei einer bestimmten Primitiven nur Spans verarbeitet, die die Primitive überlappen. Folglich beschreibt das US-Patent 5,598,517 das Abtasten der Pixel in einer "partiellen" Rasterabfolge. Sobald eine bestimmte Primitive abgetastet worden ist, werden die Spans in der nächsten Primitiven abgetastet. Somit werden die Daten für das Bild Primitive für Primitive gerendert. Bei der im US-Patent 5,598,517 beschriebenen alternativen Ausführungsform wird eine Primitive in Panels (Felder) unterteilt, die aus mehreren Spans bestehen. Die Spans in einem Panel werden abgetastet und dann werden die Panels einer Primitiven abgetastet. Somit wird die Szene immer noch Primitive für Primitive gerendert. Folglich beschreibt das US-Patent 5,598,517 das Rendern eines Frames in einer "partiellen" Rasterreihenfolge durch Rendern von Spans in Primitiven in Rasterreihenfolge. Die Spans befinden sich jedoch nur innerhalb einer Primitiven. Das US-Patent 5,598,517 rendert daher nur die Spans eines Polygons, das den gesamten Bildschirm einnimmt, in Rasterreihenfolge. Die Spans grenzen nicht unbedingt aneinander an und decken, ungeachtet der Größe der Primitiven, nicht den gesamten Bildschirm ab.
  • Obgleich diese herkömmlichen Verfahren funktionieren, wird ein Durchschnittsfachmann auf dem Gebiet leicht erkennen, dass es erwünscht ist, die Daten für ein Bild in Rasterreihenfolge bereitzustellen. Des Weiteren wäre es erwünscht, das Bild effizient zu rendern.
  • Demgemäß besteht Bedarf an einem System und einem Verfahren zum effizienteren Rendern eines graphischen Bildes. Die vorliegende Erfindung widmet sich diesem Bedarf.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung sieht ein Verfahren und ein System zum Bereitstellen eines graphischen Bildes auf einem Bildschirm vor. Der Bildschirm umfasst eine Mehrzahl an Pixeln. Die Daten umfassen eine Mehrzahl von Fragmenten des mindestens einen Objekts. Die Mehrzahl an Fragmenten überschneidet einen ersten Teil der Mehrzahl an Pixeln. Das Verfahren und das System umfassen das Definieren einer Mehrzahl an Makropixeln. Jedes der Mehrzahl an Makropixeln umfasst einen zweiten Teil der Mehrzahl an Pixeln. Der zweite Teil der Mehrzahl an Pixeln besteht aus aneinander angrenzenden Pixeln und umfasst n Pixel des zweiten Teils der Mehrzahl an Pixeln in einer ersten Richtung und m Pixel des zweiten Teils der Mehrzahl an Pixeln in einer zweiten Richtung. Das Verfahren und das System umfassen ferner das Rendern der Mehrzahl an Pixeln durch Rendern einer Mehrzahl an Makropixeln in Rasterreihenfolge. Gemäß einem Aspekt wird jedes Makropixel durch Rendern des zweiten Teils der Mehrzahl an Pixeln Pixel für Pixel gerendert. Jedes Pixel des zweiten Teils der Mehrzahl an Pixeln wird durch Rendern der das Pixel überschneidenden Fragmente gerendert. Gemäß einem anderen Aspekt wird jedes Makropixel durch Rendern von das Makropixel überschneidenden Makrofragmenten gerendert. Jedes ein Makropixel überschneidende Makrofragment umfasst die Fragmente eines bestimmten Polygons, das das Makropixel überschneidet. Die Daten werden dann Pixel für Pixel ausgegeben. Eine Ausgabe für jedes Pixel umfasst einen ersten Teil der Mehrzahl an das Pixel überschneidenden Fragmenten.
  • Gemäß dem hierin offenbaren System und Verfahren stellt die vorliegende Erfindung das graphische Bild bereit, wobei die Kohärenz berücksichtigt wird, die zwischen Pixeln in mehreren Dimensionen bestehen kann. Somit können Operationen, wie etwa Musterabbildung (Texture Mapping) oder Caching, effizienter durchgeführt werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine Darstellung eines Bildschirms.
  • 2 ist eine Darstellung eines Systems zum Rendern von Pixeln in Rasterreihenfolge, das Anti-Aliasing vorsieht.
  • 3A ist ein Flussdiagramm höherer Ebene, das eine Ausführungsform eines erfindungsgemäßen Verfahrens darstellt.
  • 3B ist eine Darstellung, die eine Ausführungsform eines erfindungsgemäßen Makropixels zeigt.
  • 4A ist ein Flussdiagramm, das eine erste Ausführungsform eines erfindungsgemäßen Verfahrens darstellt.
  • 4B ist ein detaillierteres Flussdiagramm, das die erste Ausführungsform eines erfindungsgemäßen Verfahrens darstellt.
  • 4C ist ein Blockdiagramm, das die Reihenfolge darstellt, in der Pixel und Makropixel bei der bevorzugten Version der ersten Ausführungsform eines erfindungsgemäßen Verfahrens gerendert werden.
  • 5A ist ein Flussdiagramm, das eine zweite Ausführungsform eines erfindungsgemäßen Verfahrens darstellt.
  • 5B ist ein detaillierteres Flussdiagramm, das die zweite Ausführungsform eines erfindungsgemäßen Verfahrens darstellt.
  • 5C ist ein Blockdiagramm, das die Reihenfolge darstellt, in der Makrofragmente und Makropixel gerendert werden.
  • 6 ist ein Blockdiagramm höherer Ebene eines Systems, das das erfindungsgemäße Verfahren und System zum Verarbeiten graphischer Bilder umfasst.
  • 7 ist eine Ausführungsform einer erfindungsgemäßen Bilderzeugungseinheit.
  • 8 ist ein Blockdiagramm höherer Ebene, das einen Teil einer Ausführungsform der erfindungsgemäßen Bilderzeugungseinheit darstellt.
  • 9 ist ein detaillierteres Blockdiagramm einer Ausführungsform der erfindungsgemäßen Bilderzeugungseinheit.
  • 10 ist ein Blockdiagramm einer bevorzugten Ausführungsform des erfindungsgemäßen Pixelsammlers.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine Verbesserung der Verarbeitung graphischer Bilder. Die folgende Beschreibung wird vorgelegt, um es einem Durchschnittsfachmann auf dem Gebiet zu ermöglichen, die Erfindung herzustellen und anzuwenden, und wird im Zusammenhang mit einer Patentanmeldung und deren Anforderungen bereitgestellt. Verschiedene Modifikationen der bevorzugten Ausführungsform sind für Fachleute auf dem Gebiet leicht ersichtlich, wobei die hierin angegebenen allgemeinen Grundlagen auch auf andere Ausführungsformen angewandt werden können. Die vorliegende Erfindung soll daher nicht auf die dargestellte Ausführungsform begrenzt sein, sondern soll in Übereinstimmung mit den hierin beschriebenen Grundlagen und Merkmalen dem breitestmöglichen Schutzumfang entsprechen.
  • 1 ist ein Blockdiagramm eines Bildschirms 1, der ein graphisches Bild darstellt. Der Bildschirm umfasst eine Mehrzahl an Pixeln 6, von denen nur eines beschriftet ist. Das graphische Bild umfasst die Polygone 2, 3, 4 und 5, die Teil eines oder mehrerer Objekte sein können. Jedes der Polygone 2, 3, 4 und 5 deckt mehrere Pixel ab und umfasst eine Mehrzahl an Fragmenten. Jedes Fragment umfasst Daten für ein Pixel, das von dem entsprechenden Polygon überschnitten wird. Somit kann ein Fragment die Farbe, Textur, α-Werte und Tiefenwerte betreffende Daten für ein bestimmtes Polygon und ein bestimmtes Pixel umfassen.
  • In der US-Patentanmeldung Nr. 08/624,261, mit dem Titel "METHOD AND APPARATUS FOR IDENTIFYING AND ELIMINATING THREE-DIMENSIONAL OBJECTS VISUALLY OBSTRUCTED FROM A PLANAR SURFACE", die am 29. März 1996 eingereicht, auf den Inhaber der vorliegenden Anmeldung übertragen und inzwischen als US-Patent Nr. 5,962,181 veröffentlicht wurde, sowie in der gleichzeitig anhängigen US-Patentanmeldung Nr. 08/624,260, mit dem Titel "GRAPHICS PROCESSORS, SYSTEM AND METHOD FOR GENERATING SCREEN PIXELS IN RASTER ORDER UTILIZING A SINGLE INTERPOLATOR", die am 29. März 1996 eingereicht, auf den Inhaber der vorliegenden Anmeldung übertragen und zwischenzeitlich als US-Patent Nr. 5,963,210 veröffentlicht wurde, sind ein Verfahren und ein System zum Rendern des graphischen Bildes in Rasterreihenfolge beschrieben. Die Rasterreihenfolge verläuft von links nach rechts und von oben nach unten über den Bildschirm 1. Ein System, das das graphische Bild in Rasterreihenfolge rendert und Anti-Aliasing (Verminderung des Alias-Effekts oder Treppeneffekts) vorsieht, ist in der gleichzeitig anhängigen US-Patentanmeldung Nr. 09/239,413, mit dem Titel "METHOD AND SYSTEM FOR PROVIDING EDGE ANTIALIASING", die am 28. Januar 1999 eingereicht, auf den Inhaber der vorliegenden Anmeldung übertragen und zwischenzeitlich als US-Patent Nr. 6,906,728 veröffentlicht wurde, beschrieben.
  • 2 zeigt ein Computersystem 10, das in den vorstehend genannten gleichzeitig anhängigen Anmeldungen beschrieben ist. Das Computer-Graphiksystem 10 umfasst eine Zentraleinheit (CPU) 12, einen Bildschirm 14, eine Benutzerschnittstelle 16, wie etwa eine Tastatur oder Maus oder eine andere Kommunikationseinrichtung, einen Speicher 19 und eine Bilderzeugungseinheit 20, die mit einem Bus 18 verbunden sind. Der Bildschirm 14 umfasst einen Bildschirm, wie etwa den Bildschirm 1. Der Bildschirm 14 könnte einen Bildschirmspeicher (nicht gezeigt) umfassen, in den Pixel geschrieben werden. Zur Anzeige von graphischen Bildern werden die Objekte in Polygone unterteilt, die beim Rendern der Objekte zu verwenden sind. Bei einer bevorzugten Ausführungsform werden die Polygone in Rasterreihenfolge gerendert. Das heißt, Teile der Polygone werden Pixel für Pixel in der Reihenfolge der Pixel im Bildschirm 14 gerendert.
  • Die Bilderzeugungseinheit 20 wird beim Rendern des graphischen Bildes verwendet. Die Bilderzeugungseinheit umfasst eine Schnittstelle 21, die mit dem Bus 18 verbunden ist. Die Schnittstelle 21 sendet Daten an eine Datenverarbeitungseinheit 22. Der Prozessorblock 24 identifiziert Daten, die Teile von Polygonen ("überschneidende Polygone") beschreiben, die den Bereich überschneiden, der sich längs einer Z-Achse von einem ausgewählten Pixel in einer X-Y-Ebene erstreckt, die einer Bildfläche des Bildschirms 14 entspricht. Der Prozessorblock 24 kann eine Anzahl von Prozessoren umfassen, die eine parallele Verarbeitung überschneidender Polygone ermöglichen. Der Prozessorblock 24 gibt somit die Fragmente an, die ein aktuell verarbeitetes Pixel überschneiden. Eine Identifikations-/Beseitigungseinheit blockierter Objekte (Quick Z) 26 empfängt zumindest einen Teil des Fragments eines jeden überschneidenden Polygons, das dem ausgewählten Pixel zugeordnet ist, und beseitigt Teile der Fragmente überschneiden Polygone, die blockiert sind.
  • Der Interpolator 28 empfängt die restlichen Fragmente der überschneidenden Polygone für das ausgewählte Pixel und interpoliert die Daten, was das Interpolieren der Textur, Farbe und Alphawerte des Fragments umfasst. Der Interpolator 28 stellt außerdem eine Abdeckmaske für jedes Fragment bereit. Die Abdeckmaske gibt den Teil des Pixels an, den das Fragment abdeckt. Die Fragmente der verbliebenen überschneidenden Polygone werden von dem Interpolator 28 einem Hardware-Sortierer 30 zugeführt. Der Hardware-Sortierer 30 sortiert die Fragmente der überschneidenden Polygone basierend auf einem Schlüsselwert, wie etwa dem Z-Wert oder Tiefenwert, des Fragments.
  • Eine Anti-Aliasing-Einheit 40 führt das Anti-Aliasing unter Verwendung der durch den Interpolator 28 bereitgestellten Maske durch. Die Anti-Aliasing-Einheit 40 kann eine Z-Maskeneinheit 41, einen Akkumulator 42 und eine oder mehrere Mischeinheiten 44 umfassen. Die Anti-Aliasing-Einheit 40 akkumuliert Daten für Subpixel in jedem Pixel. Bei Verwendung der Abdeckmaske können nur Daten für die Subpixel akkumuliert werden, die das Fragment überschneidet und die zu dem Subpixel beitragen können. Die Daten für die Subpixel werden dann kombiniert, um Daten für das Pixel bereitzustellen, die einem Anti-Aliasing unterzogen wurden. Die einem Anti-Aliasing unterzogenen Daten für das ausgewählte Pixel werden dem Bildschirm 14 zugeführt. Dieses Verfahren wird für jedes Pixel in Rasterreihenfolge fortgesetzt, während Daten für andere Pixel durch die Pipeline der Bilderzeugungseinheit 20 laufen.
  • Die vorstehend genannten gleichzeitig anhängigen Anmeldungen rendern somit graphische Bilder in Rasterreihenfolge, und zwar von links nach rechts und von oben nach unten längs des Bildschirms 14. Zum Rendern der Bilder in Rasterreihenfolge werden die ein bestimmtes Pixel überschneidenden Fragmente gerendert. Dann werden die das nächste Pixel in der Rasterreihenfolge überschneidenden Fragmente gerendert. Die Fragmente für die Pixel laufen bevorzugt hintereinander durch den Großteil der in den vorstehend genannten gleichzeitig anhängigen Anmeldungen beschrieben Pipeline.
  • Obgleich die vorstehend genannten gleichzeitig anhängigen Anmeldungen für ihre beabsichtigten Zwecke gut funktionieren, ist eine größere Effizienz beim Rendern graphischer Bilder erwünscht. Eine größere Kohärenz würde eine höhere Effizienz vorsehen. Eine höhere Kohärenz tritt auf, wenn dieselben Daten beim Rendern eines Pixels verwendet werden, die auch bei dem unmittelbar vorher gerenderten Pixel verwendet wurden. Die Kohärenz ist typischerweise niedriger, wenn die Pixel in Rasterreihenfolge gerendert werden, da es wahrscheinlicher ist, dass Daten, die beim Rendern eines Pixels verwendet wurden, nicht beim Rendern des nächsten Pixels verwendet werden. Wenn beispielsweise eine Texturverarbeitung eines Pixels durchgeführt wird, wird eine erste Textur eines das Pixel überschneidenden Fragments gecacht (zwischengespeichert). Die erste Textur wird typischerweise für mehrere Fragmente verwendet, die Teil desselben Polygons sind. Wenn die Pixel in Rasterreihenfolge gerendert werden, besteht eine große Wahrscheinlichkeit, dass ein Fragment desselben Polygons das nächste gerenderte Pixel nicht überschneidet. Es ist wahrscheinlicher, dass eine zweite Textur gecacht wird, um das nächste Pixel zu rendern. Daher kann die erste Textur aus dem Cache-Speicher entfernt werden. Die erste Textur kann jedoch wieder benötigt werden, wenn ein Pixel in der nächsten Zeile oder Abtastlinie gerendert wird. Die erste Textur kann benötigt werden, da ein anderes Fragment in demselben Polygon ein oder mehr Pixel in der nächsten Zeile überschneiden kann. Wenn das Pixel in der nächsten Zeile, das die erste Textur benötigt, gerendert wird, ist es wahrscheinlicher, dass ein Cache-Miss (Cache-Verfehlung) auftritt, da es wahrscheinlicher ist, dass die erste Textur aus dem Cache entfernt worden ist. Ein erneutes Cachen der Textur verringert die Effizienz des Renderns des graphischen Bildes. Daher wird mehr Zeit benötigt, um das graphische Bild zu rendern.
  • Die vorliegende Erfindung sieht ein Verfahren und ein System zum Bereitstellen eines graphischen Bildes auf einem Bildschirm vor. Der Bildschirm umfasst eine Mehrzahl an Pixeln. Die Daten umfassen eine Mehrzahl an Fragmenten des mindestens einen Objekts. Die Mehrzahl an Fragmenten überschneidet einen ersten Teil der Mehrzahl an Pixeln. Das Verfahren und das System umfassen das Bilden einer Mehrzahl an Makropixeln. Jedes der Mehrzahl an Makropixeln umfasst einen zweiten Teil der Mehrzahl an Pixeln. Der zweite Teil der Mehrzahl an Pixeln besteht aus aneinander angrenzenden Pixeln und umfasst n Pixel des zweiten Teils der Mehrzahl an Pixeln in einer ersten Richtung und m Pixel des zweiten Teils der Mehrzahl an Pixeln in einer zweiten Richtung. Das Verfahren und das System umfassen ferner das Rendern der Mehrzahl an Pixeln durch Rendern einer Mehrzahl an Makropixeln in Rasterreihenfolge. Gemäß einem Aspekt wird jedes Makropixel durch Rendern des zweiten Teils der Mehrzahl an Pixeln Pixel für Pixel gerendert. Jedes Pixel des zweiten Teils der Mehrzahl an Pixeln wird durch Rendern der das Pixel überschneidenden Fragmente gerendert. Gemäß einem anderen Aspekt wird jedes Makropixel durch Rendern von das Makropixel überschneidenden Makrofragmenten gerendert. Jedes ein Makropixel überschneidende Makrofragment umfasst die Fragmente eines bestimmten Polygons, das das Makropixel überschneidet. Die Daten werden dann Pixel für Pixel ausgegeben. Eine Ausgabe für jedes Pixel umfasst einen ersten Teil der Mehrzahl an das Pixel überschneidenden Fragmenten.
  • Die vorliegende Erfindung wird im Hinblick auf ein spezifisches System beschrieben. Ein Durchschnittsfachmann auf dem Gebiet wird jedoch leicht erkennen, dass dieses Verfahren und dieses System auch bei anderen Systemen mit anderen Komponenten effizient arbeiten. Ebenso kann die vorliegende Erfindung, obgleich sie im Zusammenhang mit dem Rendern dreidimensionaler Bilder besprochen wird, beim Rendern von Bildern mit anderen Dimensionen verwendet werden.
  • Zur spezifischeren Veranschaulichung des erfindungsgemäßen Verfahrens und Systems wird nun auf 3A Bezug genommen, die ein Flussdiagramm höherer Ebene einer Ausführungsform eines erfindungsgemäßen Verfahrens 100 zum Rendern eines graphischen Bildes zeigt. Das Verfahren 100 wird zum Rendern eines graphischen Bildes auf einem Bildschirm, wie etwa dem Bildschirm 1, verwendet. Der Bildschirm umfasst eine Mehrzahl an Pixeln, wie etwa das Pixel 6. Das graphische Bild umfasst eine Mehrzahl an Objekten, die bevorzugt eine Mehrzahl an Polygonen umfassen, wie etwa die Polygone 2, 3, 4 und 5. Das graphische Bild wird auch durch eine Mehrzahl an Fragmenten der Objekte beschrieben. Die Fragmente überschneiden irgendeinen Teil der Pixel im Bildschirm. Die Fragmente überschneiden beispielsweise die Pixel, die die Polygone 2, 3, 4 und 5 überschneiden.
  • In Schritt 102 werden aus den Pixeln 6 Makropixel gebildet. Die Makropixel umfassen einen Teil der Mehrzahl an Pixeln auf dem Bildschirm. Das Makropixel umfasst Pixel in zwei Dimensionen. Das Makropixel kann beispielsweise n Zeilen und m Spalten von Pixeln umfassen. Das Makropixel hat bevorzugt eine quadratische Form, z. B. 2×2, 4×4 oder 8×8 Pixel. Bei einer Ausführungsform beträgt das Makropixel vier mal vier Pixel. 3B stellt eine solche Ausführungsform eines Makropixels 110 dar. Das Makropixel 110 umfasst vier mal vier Pixel und enthält insgesamt sechzehn Pixel. Bei einer bevorzugten Ausführungsform umfasst das Makropixel jedoch acht mal acht Pixel.
  • Bezug nehmend wieder auf 3A werden die Makropixel dann in Schritt 104 in Rasterreihenfolge gerendert. Zum Rendern der Makropixel wird jedes Pixel eines bestimmten Makropixels in Schritt 104 gerendert. Dann werden die Pixel im nächsten Makropixel gerendert. Somit werden die Makropixel unter Verwendung von Schritt 104 Makropixel für Makropixel, von links nach rechts und von oben nach unten längs des Bildschirms 1 gerendert. Obgleich die Makropixel in Rasterreihenfolge gerendert werden, könnten die Pixel in jedem Makropixel in mehreren Reihenfolgen gerendert werden. Die Pixel werden bevorzugt auf eine von zwei Arten gerendert, die nachfolgend besprochen sind. Bei einer bevorzugten Ausführungsform umfasst der Schritt 104 auch das Neuordnen der gerenderten Daten, so dass die Daten für das graphische Bild Pixel für Pixel ausgegeben werden.
  • Da die Makropixel in Rasterreihenfolge gerendert werden, kann das Verfahren 100 effizienter sein als das Rendern einzelner Pixel in Rasterreihenfolge. In einem Makropixel kann eine größere Kohärenz zwischen Pixeln vorhanden sein, da die Makropixel Pixel in zwei Dimensionen umfassen. Daher ist es wahrscheinlicher, dass Informationen, die zum Rendern eines Pixels in ein Makropixel verwendet werden, auch zum Rendern des nächsten Pixels im Makropixel verwendet werden. Infolgedessen können Operationen, wie etwa solche, die Caching nutzen, effizienter sein. Sobald Daten in einem Cache gespeichert sind, ist es wahrscheinlicher, dass sie wieder verwendet werden. Folglich sind Cache-Hits (Cache-Treffer) bei Verwendung des Verfahrens 100 wahrscheinlicher. Des Weiteren ist es wahrscheinlicher, dass, wenn ein Cache-Miss auftritt, ein Cache-Zugriff für das nächste gerenderte Pixel ebenfalls zu einem Cache-Miss führen würde. Das Rendern der Makropixel umfasst beispielsweise das Vorsehen einer Texturverarbeitung für jedes Pixel in einem Makropixel. Die Texturverarbeitung wird effizienter gemacht, da es, sobald eine Textur zur Verwendung beim Rendern eines Pixels in einem Cache gespeichert wurde, wahrscheinlicher ist, dass das nächste Pixel ebenfalls die Textur verwendet. Daher ist das Rendern des graphischen Bildes effizienter.
  • Die 4A und 4B stellen detailliertere Flussdiagramme einer Ausführungsform eines Verfahrens zum Rendern der Makropixel in Rasterreihenfolge dar. 4A stellt eine erste Ausführungsform eines Verfahrens 112 zum Rendern der Makropixel in Rasterreihenfolge dar, wobei jedes Makropixel durch Rendern von Pixeln in jedem Makropixel Pixel für Pixel gerendert wird, bevorzugt von links nach rechts und von oben nach unten im Makropixel. 4B stellt ein detaillierteres Flussdiagramm der ersten Ausführungsform eines Verfahrens 120 zum Rendern der Makropixel in Rasterreihenfolge dar, wobei jedes Makropixel durch Pixel im Makropixel Pixel für Pixel gerendert wird.
  • Bezug nehmend nun auf 4A werden in Schritt 114 die Fragmente der Polygone des graphischen Bildschirms so geordnet, dass die Makropixel in Rasterreihenfolge und die Pixel in jedem Makropixel in einer spezifischen Reihenfolge gerendert werden. Bei einer bevorzugten Ausführungsform wird Schritt 114 durchgeführt, indem die Fragmente, die Pixel in einem bestimmten Makropixel überschneiden, in Reihe miteinander platziert werden. Somit werden Fragmente, die Pixel im ersten Makropixel im oberen linken Abschnitt des Bildschirms 1 überschneiden, zusammen in der Pipeline platziert. Fragmente, die Pixel im nächsten Makropixel überschneiden, werden als Nächstes platziert. Darüber hinaus werden im Schritt 114 außerdem bevorzugt die Fragmente geordnet, die jedes Pixel in einem Makropixel überschneiden. Folglich werden die Fragmente, die das erste Pixel in einem Makropixel überschneiden, als Erstes platziert, worauf Fragmente folgen, die das zweite zu rendernde Pixel überschneiden. Bei einer bevorzugten Ausführungsform werden die Pixel in einem Makropixel von links nach rechts und von oben nach unten im Makropixel gerendert. Somit werden die Fragmente, die das Pixel in der oberen linken Ecke jedes Makropixels überschneiden, für dieses Makropixel zuerst platziert. Bei einer bevorzugten Ausführungsform werden außerdem Fragmente, die andere Pixel und somit andere Makropixel überschneiden, durch Versehen jedes Fragments mit wenigstens einer Kennung oder Identifikation ("ID") voneinander unterschieden. Fragmente können beispielsweise mit einer "Nächstes"("N-") oder "Letztes-"("L-")Kennung versehen werden. N gibt an, dass das Fragment das nächste (oder erste) Fragment für ein Pixel ist. L gibt an, dass das Fragment das letzte zu rendernde Fragment für ein bestimmtes Pixel ist. Eine ähnliche Kennung kann für Makropixel vorgesehen werden oder es kann ein anderer Mechanismus zum Unterscheiden von Makropixeln verwendet werden.
  • Sobald die Fragmente geordnet sind, werden die Fragmente in Schritt 116 in der vorgesehenen Reihenfolge gerendert. Somit werden die Makropixel in Rasterreihenfolge und die Pixel in einem Makropixel in einer gewählten Reihenfolge gerendert. Darüber hinaus werden alle ein bestimmtes Pixel überschneidenden Fragmente gerendert, bevor ein das nächste Pixel überschneidendes Fragment gerendert wird. Sofern erwünscht, können die Fragmente dann in Schritt 118 neu geordnet werden, so dass Daten für Pixel von links nach rechts und von oben nach unten längs des Bildschirms 1 ausgegeben werden. Unter Verwendung des Verfahrens 112 werden Daten bevorzugt so verarbeitet und ausgegeben, dass ein Durchsatz von einem Pixel pro Taktzyklus unter den meisten Bedingungen aufrechterhalten wird. Daher können die Daten für das graphische Bild auch dann Pixel für Pixel in Rasterreihenfolge ausgegeben werden, wenn die Daten Makropixel für Makropixel in Rasterreihenfolge, anstatt Pixel für Pixel in Rasterreihenfolge, gerendert wurden. Des Weiteren kann das Verfahren 112, da das Verfahren 112 durch Neuordnen der Daten ausgeführt wird, mit nur geringfügigen Veränderungen am System 10 ausgeführt werden.
  • Bezug nehmend nun auf 4B ist ein detaillierteres Flussdiagramm der zweiten Ausführungsform eines Verfahrens 120 zum Rendern von Makropixeln in Rasterreihenfolge und Pixel für Pixel dargestellt. Ein erstes Makropixel wird in Schritt 122 als das aktuell gerenderte Makropixel ausgewählt. Schritt 122 wird bevorzugt durchgeführt, indem bestimmt wird, dass eine Kennung ("ID") eines Fragments angibt, dass das Fragment zu dem ersten zu rendernden Makropixel gehört. Das erste Makropixel umfasst die Pixel in der oberen linken Ecke des Bildschirms 1, da die Makropixel in Rasterreihenfolge gerendert werden. Ein Pixel im aktuellen Makropixel wird dann in Schritt 124 zum Rendern ausgewählt. Die Pixel in einem Makropixel werden bevorzugt von links nach rechts und von oben nach unten im Makropixel gerendert. Die das aktuelle Pixel überschneidenden Fragmente werden dann in Schritt 126 gerendert. In Schritt 128 wird dann bestimmt, ob im aktuellen Makropixel noch weitere zu rendernde Pixel vorhanden sind. Wenn ja, wird in Schritt 130 das nächste Pixel als das aktuelle Pixel ausgewählt. Das nächste Pixel ist bevorzugt das nächste Pixel in der Reihenfolge von links nach rechts und von oben nach unten im Makropixel. Die Schritte 126 und 128 werden dann wiederholt. Wenn im aktuellen Makropixel keine noch zu rendernden Pixel mehr vorhanden sind, wird in Schritt 132 bestimmt, ob alle Makropixel gerendert worden sind. Wenn nicht, wird in Schritt 134 das nächste Makropixel in der Rasterreihenfolge als das aktuelle Makropixel ausgewählt. Die Schritte 124 bis 134 werden dann wiederholt. Wenn alle Makropixel im Bildschirm gerendert worden sind, werden die Daten in Schritt 136 wahlweise neu geordnet, um Pixel für Pixel in Rasterreihenfolge ausgegeben zu werden. Unter Verwendung des Verfahrens 120 werden die Daten bevorzugt so verarbeitet und ausgegeben, dass ein Durchsatz von einem Pixel pro Taktzyklus unter den meisten Bedingungen aufrechterhalten wird.
  • 4C zeigt mehrere Makropixel, die bei der bevorzugten Version der ersten Ausführungsform des erfindungsgemäßen Verfahrens 112 oder 120 gerendert werden. Zu Erläuterungszwecken, wird davon ausgegangen, dass die Makropixel 110-1 bis 110-6 den Bildschirm 1 bilden. Die Makropixel 110-1 bis 110-6 umfassen jeweils sechzehn Pixel. Aus Klarheitsgründen sind nur die Pixel A bis P im Makropixel 110-1 genauer dargestellt. Die Makropixel 110-1 bis 110-6 werden in Rasterreihenfolge gerendert. Daher wird zuerst das Makropixel 110-1 gerendert, auf das in der Reihenfolge die Makropixel 110-2, 110-3, 110-4, 110-5 und 110-6 folgen. Das Makropixel 110-1 stellt die bevorzugte Reihenfolge dar, in der die Pixel in jedem Makropixel gerendert werden. Die Pixel werden bevorzugt von links nach rechts und von oben nach unten in einem Makropixel gerendert. Somit werden die Pixel A bis P bevorzugt in alphabetischer Reihenfolge gerendert.
  • 5A stellt eine zweite Ausführungsform eines Verfahrens 150 zum Rendern der Makropixel in Rasterreihenfolge dar. Jedes Makropixel wird in Schritt 152 gerendert, indem die Abschnitte von Polygonen, die das Makropixel überschneiden ("Makrofragmente"), Makrofragment für Makrofragment gerendert werden. Ein Makrofragment umfasst die Fragmente, die Teil desselben Polygons sind und das Makropixel überschneiden. Schritt 152 wird bevorzugt durch Rendern aller Fragmente desselben Polygons durchgeführt, die Pixel im Makropixel überschneiden, bevor die Fragmente eines anderen Polygons gerendert werden. Somit werden die Abschnitte der Polygone, die jedes Makropixel überschneiden, zusammen gerendert. Die Daten für die Makrofragmente werden dann in Schritt 154 neu geordnet, so dass die Daten für die Pixel Pixel für Pixel ausgegeben werden, bevorzugt von links nach rechts und von oben nach unten längs des Bildschirms 1. Somit können die Daten für das graphische Bild auch dann Pixel für Pixel in Rasterreihenfolge ausgegeben werden, wenn die Daten Makropixel für Makropixel in Rasterreihenfolge gerendert worden sind. Bei Verwendung des Verfahrens 150 werden Daten bevorzugt so verarbeitet und ausgegeben, dass ein Durchsatz von einem Pixel pro Taktzyklus unter den meisten Bedingungen aufrechterhalten wird.
  • 5B stellt ein detaillierteres Flussdiagramm der zweiten Ausführungsform eines Verfahrens 160 zum Rendern der Makropixel in Rasterreihenfolge dar, bei dem jedes Makropixel Makrofragment für Makrofragment gerendert wird. Ein erstes Makropixel wird in Schritt 162 als das aktuell gerenderte Makropixel ausgewählt. Schritt 162 wird bevorzugt durchgeführt, indem bestimmt wird, dass eine Kennung ("ID") eines Fragments angibt, dass das Fragment zu dem ersten zu rendernden Makropixel gehört. Das erste Makropixel umfasst die Pixel in der oberen linken Ecke des Bildschirms 1, da die Makropixel in Rasterreihenfolge gerendert werden. Die das aktuelle Makropixel überschneidenden Makrofragmente werden dann in Schritt 164 bestimmt. Schritt 164 umfasst bevorzugt das Bestimmen der Fragmente, die Pixel im aktuellen Makropixel überschneiden, und das Bestimmen, welche Fragmente, die Pixel im Makropixel überschneiden, zu demselben Polygon gehören. Es wird darauf hingewiesen, dass Schritt 164 bestimmen könnte, dass keine Makrofragmente das aktuelle Makropixel überschneiden. Ein Makrofragment im aktuellen Makropixel wird dann in Schritt 166 als das aktuelle zu rendernde Makrofragment ausgewählt. Die Pixel, die das aktuelle Makrofragment überschneidet, werden dann in Schritt 168 gerendert. Die Pixel im aktuellen Makrofragment werden bevorzugt von links nach rechts und von oben nach unten im Makropixel gerendert. Dann wird in Schritt 170 bestimmt, ob im aktuellen Makropixel weitere noch zu rendernde Makrofragmente vorhanden sind. Wenn ja, wird in Schritt 172 das nächste Makrofragment als das aktuelle Makrofragment ausgewählt. Die Schritte 168 und 170 werden dann wiederholt. Wenn im aktuellen Makropixel keine zu rendernden Makrofragmente mehr vorhanden sind, wird in Schritt 174 bestimmt, ob alle Makropixel gerendert worden sind. Wenn nicht, wird in Schritt 176 das nächste Makropixel in der Rasterreihenfolge als das aktuelle Makropixel ausgewählt. Die Schritte 164 bis 176 können dann wiederholt werden. Wenn alle Makropixel im Bildschirm gerendert worden sind, werden die Daten in Schritt 178 neu geordnet, um Pixel für Pixel, bevorzugt in Rasterreihenfolge, ausgegeben zu werden. Bei Verwendung des Verfahrens 160 werden Daten bevorzugt so verarbeitet und ausgegeben, dass ein Durchsatz von einem Pixel pro Taktzyklus unter den meisten Bedingungen aufrechterhalten wird.
  • 5C stellt mehrere Makropixel dar, die bei der bevorzugten Version der ersten Ausführungsform eines erfindungsgemäßen Verfahrens gerendert werden. Zu Erläuterungszwecken, wird davon ausgegangen, dass die Makropixel 110-1' bis 110-6' den Bildschirm 1 bilden. Die Makropixel 110-1' bis 110-6' umfassen jeweils sechzehn Pixel. Aus Klarheitsgründen sind die Pixel nicht genauer dargestellt. Die Makropixel 110-1' bis 110-6' werden in Rasterreihenfolge gerendert. Daher wird zuerst das Makropixel 110-1' gerendert, auf das in der Reihenfolge die Makropixel 110-2', 110-3', 110-4', 110-5' und 110-6' folgen. Das Makropixel 110-1' stellt die bevorzugte Reihenfolge dar, in der Makrofragmente in jedem Makropixel gerendert werden. Das Makropixel 110-1' umfasst drei Makrofragmente, X, Y und Z. Jedes Makrofragment X, Y und Z überschneidet ein oder mehrere Pixel im Makropixel 110-1'. Das Fragment Z überschneidet das gesamte Makropixel 110-1'. Das Makrofragment X wird zuerst gerendert, worauf das Makrofragment Y und dann das Makrofragment Z folgen. Somit werden die Makrofragmente X bis Z bevorzugt in alphabetischer Reihenfolge gerendert.
  • 6 ist ein Blockdiagramm höherer Ebene eines Computer-Graphiksystems 200, das das erfindungsgemäße Verfahren und System nutzen kann. Das Computer- Graphiksystem 200 umfasst eine Zentraleinheit (CPU) 202, einen Bildschirm 204, eine Benutzerschnittstelle 206, wie etwa eine Tastatur oder Maus oder eine andere Kommunikationseinrichtung, einen Speicher 210 und eine Bilderzeugungseinheit 220, die mit einem oder mehreren Bussen 208 verbunden sind. Der Bildschirm 204 umfasst einen Bildschirm, wie etwa den Bildschirm 1. Der Bildschirm 204 könnte einen Bildschirmspeicher (nicht gezeigt) umfassen, in den Pixel geschrieben werden. Der Bildschirm 204 könnte beispielsweise einen Frame-Puffer, einen Z-Puffer oder einen anderen Bildschirmspeicher umfassen. Die Bilderzeugungseinheit 220 rendert das graphische Bild Makropixel für Makropixel in Rasterreihenfolge.
  • 7 zeigt ein detaillierteres Blockdiagramm einer Ausführungsform der Bilderzeugungseinheit 220. Die Bilderzeugungseinheit 220 umfasst die Speicher-Arbiter 222 und 224. Die Speicher-Arbiter können die Interaktion zwischen den Komponenten der Bilderzeugungseinheit 220 und dem oder den Bussen 208 steuern, die die Bilderzeugungseinheit 220 mit dem restlichen System 200 verbinden. Die Bilderzeugungseinheit 220 umfasst einen Rasterkern (Raster Core) 230, einen Texturkern 260 und einen Pixeloperationsblock 280. Der Rasterkern 230 führt die meisten der bei den Verfahren 112, 120, 150 und 160 besprochenen Operationen durch. Des Weiteren führt die Bilderzeugungseinheit 220 viele der Operationen der in den vorstehend genannten gleichzeitig anhängigen Anmeldungen beschriebenen Bilderzeugungseinheit 20 durch. Der Texturkern 260 unterstützt die Durchführung der Texturverarbeitung. Der Texturkern 260 kann einen Cache-Speicher zum temporären Speichern von Texturen, einen Speicher zum relativ permanenten Speichern bestimmter Texturen oder Texturprozessoren umfassen, die nicht in 7 gezeigt sind. Der Pixeloperationsblock 280 kann mehrere Funktionen ausführen, die das Neuordnen von Daten umfassen, so dass Daten von der Bilderzeugungseinheit 220 auch dann Pixel für Pixel in Rasterreihenfolge ausgegeben werden, wenn die Bilderzeugungseinheit 220 Makropixel in Rasterreihenfolge rendert.
  • 8 ist ein Blockdiagramm einiger Komponenten im Rasterkern 230 und im Pixeloperationsblock 280 der Bilderzeugungseinheit 220. Wenn das Verfahren 150 oder 160 die Makropixel Markofragment für Makrofragment rendert, werden bevorzugt alle in 8 dargestellten Komponenten verwendet. Wenn das Verfahren 112 oder 120 die Makropixel jedoch Pixel für Pixel rendert, können einige der in 8 gezeigten Komponenten weggelassen werden oder andere Funktionen haben. Die in 8 dargestellten Komponenten umfassen einen Fragmentgenerator 238, eine Maskenerzeugungseinheit 240, einen Serialisierer 248, einen Interpolator 250 und einen Pixelneusortierblock 221. Wenn er in Verbindung mit dem Verfahren 150 oder 160 verwendet wird, arbeitet der Fragmentgenerator 238 an Pixelblöcken, dem Makropixel, anstatt an einem einzelnen Pixel. Der Fragmentgenerator 238 stellt daher ein Makrofragment bereit, dass Daten umfasst, wie etwa Farbe, α-Werte oder andere Daten eines das Makropixel überschneidenden Polygons. Makrofragmente, die Makropixeln entsprechen, werden in die Maskenerzeugungseinheit 240 eingegeben. Die Maskenerzeugungseinheit 240 erzeugt eine Maske, die den Teil eines Makropixels angibt, den ein Makrofragment überschneidet. Die Maske ähnelt der Abdeckmaske, die vorstehend in Bezug auf 2 besprochen wurde, gibt jedoch die Pixel des Makropixels an, die von einem Polygon überschnitten werden.
  • Der Serialisierer 248 empfängt die den Masken zugeordneten Makrofragmente. Der Serialisierer 248 nutzt jedes Makrofragment und jede Maske, um eine Reihe von Fragmenten des Makrofragments bereitzustellen. Jedes der Fragmente entspricht einem bestimmten Pixel, das durch das Makrofragment überschnitten wird. Der Serialisierer setzt außerdem die Fragmente des Makrofragments in Reihe, so dass die Fragmente durch den Rest der Pipeline fließen und, bei einer bevorzugten Ausführungsform, so verarbeitet werden können, so dass Daten für ein ein Pixel überschneidendes Fragment, ungefähr in jedem Zyklus ausgegeben werden. Die vom Serialisierer bereitgestellten Fragmente umfassen bevorzugt jeweils einen Index, Offsets (Versatz) und einen Makrofragmenttyp. Der Index ordnet das Fragment einem bestimmten Polygon zu. Somit weist der Index auf Daten für das Fragment hin, wie etwa Farbe oder Textur. Die Offsets umfassen bevorzugt einen x-Offset (in x-Richtung) und einen y-Offset (in y-Richtung). Die Offsets geben die Position der Pixel im gerenderten Makropixel an. Somit könnte ein Fragment mit x- und y-Offsets, die beide null betragen, das obere linke Pixel im Makropixel sein. Fragmente, die die verbliebenen Pixel in der ersten Zeile des Makropixels überschneiden, haben x-Offsets von null, aber abweichende y-Offsets. Fragmente, die Pixel in der ersten Spalte des Makropixels überschneiden, hätten y-Offsets von null, aber abweichende x-Offsets. Der Makrofragmenttyp wird dazu verwendet, anzugeben, wo im Bildschirm sich das gerenderte Makrofragment befindet. Bei einer bevorzugten Ausführungsform ist der Makrofragmenttyp entweder der "Nächste"(N) oder "Letzte-"(L-)Typ. Nur das letzte Pixel des letzten Makrofragments hat den Makrofragmenttyp L.
  • Der Interpolator 250 empfängt Fragmente vom Serialisierer 248 und führt für jedes der Fragmente eine Interpolation durch. Der Interpolator 250 ähnelt dem in 2 gezeigten Interpolator 28. Bezug nehmend wieder auf 8, ermöglicht es der Serialisierer 248 dem Interpolator 250, im Wesentlichen unverändert zu bleiben. Bei einer bevorzugten Ausführungsform umfasst der Interpolator nur einen einzelnen Interpolator. Die Daten für ein bestimmtes Fragment werden bevorzugt so interpoliert, dass ein Datendurchsatz von einem Pixel pro Taktzyklus oder eine Fragmentausgabe pro Taktzyklus aufrechterhalten werden kann. Des Weiteren stellt der Interpolator 250, bei einer bevorzugten Ausführungsform, eine Abdeckmaske für jedes Fragment bereit. Die Abdeckmaske wird bei der Bereitstellung von Anti-Aliasing verwendet. Der Pixelneusortierblock 221 ist fakultativ und kann logisch mehrere Blöcke umfassen. Der Pixelneusortierblock 221 kann dazu verwendet werden, der Tatsache Rechnung zu tragen, dass Makrofragmente Makrofragment für Makrofragment gerendert werden, wobei jedoch auch andere Komponenten (nicht gezeigt) Daten Pixel für Pixel benötigen können. Daher speichert der Pixelneusortierblock 221 bevorzugt Daten für mehrere Pixel und gibt dann die Daten Pixel für Pixel aus. Der Pixelneusortierblock 221 speichert bevorzugt mehrere Zeilen und Spalten von Pixeln.
  • Die in 8 dargestellten Komponenten können andere Funktionen haben oder weggelassen werden, wenn die Daten für ein Makropixel Pixel für Pixel gerendert werden. Wenn das Verfahren 112 oder 120 dazu verwendet wird, ein graphisches Bild zu rendern, werden die Daten für die Pixel in einem Makropixel in einer bestimmten Reihenfolge gerendert. Bei einer bevorzugten Ausführungsform werden die Daten für die Pixel so angeordnet, dass die Fragmente, die das erste zu rendernde Pixel überschneiden, zuerst bereitgestellt werden. Daten für Fragmente, die die verbliebenen Pixel überschneiden, folgen in der bestimmten Reihenfolge. Folglich erfüllt der Fragmentgenerator 238, wenn das Verfahren 112 oder 120 verwendet wird, eine ähnliche Funktion wie der in 2 gezeigte Prozessorblock 22. Somit bestimmt der Fragmentgenerator 238 die Fragmente, die ein bestimmtes Pixel in einem Makropixel überschneiden. Daher wird der Fragmentgenerator 238 in einem solchen Fall für Fragmente betrieben, die Pixel überschneiden, anstatt für Makrofragmente, die ein Makropixel überschneiden. Da Fragmente, die einzelne Pixel überschneiden, bereits genutzt werden, sind der Maskengenerator 240 und der Serialisierer 248 nicht notwendig, wenn das System 200 das Verfahren 112 oder 120 verwendet. Der Interpolator 250 arbeitet dennoch wie vorstehend beschrieben. Da jedoch Daten für einzelne Pixel vom Interpolator 250 im Wesentlichen in derselben Reihenfolge wie sie empfangen wurden ausgegeben werden, kann der Pixelneusortierblock 221 weggelassen werden.
  • 9 stellt ein detaillierteres Blockdiagramm der Komponenten der Bilderzeugungseinheit 220 dar. Die Bilderzeugungseinheit umfasst den Rasterkern 230, den Texturkern 260, den Rendering-Kontext 226, den Pixeloperationsblock 280 und die Speicher-Arbiter 222 und 224. Der Speicher-Arbiter 222 steuert die Interaktionen zwischen der Bilderzeugungseinheit 220 und dem Host-Bus 208' (nicht explizit in 9 gezeigt). Der Speicher-Arbiter 224 steuert die Interaktionen zwischen der Bilderzeugungseinheit 220 und dem Speicher-Bus 208'' (nicht explizit in 9 gezeigt). Der Rasterkern umfasst einen Prozessorlader 232, einen Polygon-Manager 234, eine Polygon-Speichereinheit 236, den Fragmentgenerator 238, den Maskengenerator 240, eine Identifikations-/Beseitigungseinheit blockierter Objekte (Quick Z) 242, eine Anti-Aliasing-Tag-(AA-Voll-Tag-)Einheit 224, einen Sortierer 246, den Serialisierer 248 und den Interpolator 250. Wie vorstehend besprochen, können der Maskengenerator 240 und der Serialisierer 248 nicht verwendet werden, wenn die Bilderzeugungseinheit 220 in Verbindung mit dem Verfahren 112 oder 120 verwendet wird. Der Prozessor 232, der Polygon-Manager 234 und die Polygon-Speichereinheit 236 entsprechen der Datenverarbeitungseinheit 22 aus 2. Bezug nehmend wieder auf 9, entspricht der Fragmentgenerator 238 dem Prozessorblock 24 aus 2 und wurde vorstehend besprochen. Bei einer bevorzugten Ausführungsform werden Daten für Pixel in einem Makropixel parallel verarbeitet, und zwar ungeachtet dessen, ob die Verfahren 112 und 120 oder die Verfahren 150 und 160 verwendet werden. Da Daten für Pixelsätze zusammen verarbeitet werden, können mehrere Takte bei der Verarbeitung genutzt werden, wobei dennoch ein Durchsatz von einem Pixel pro Taktzyklus vorgesehen wird. Der Maskengenerator 240 arbeitet ebenfalls wie vorstehend beschrieben.
  • Die AA-Voll-Tag-Einheit 244 gemäß 9 zeigt an, ob ein Pixel vollständig oder nur teilweise durch ein Fragment abgedeckt wird. Somit unterstützt die AA-Voll-Tag-Einheit 244 die Durchführung von Anti-Aliasing. Der Sortierer 246 entspricht dem in 2 dargestellten Quick Z 26. Bezug nehmend wieder auf 9, sortiert der Sortierer 246 daher die Fragmente oder Makrofragmente basierend auf einem Tiefenwert, wie etwa einem z-Wert. Der Serialisierer 248 und der Interpolator 250 sind vorstehend besprochen. Es wird jedoch darauf hingewiesen, dass die vorliegende Erfindung mit einem anderen Typ von Anti-Aliasing, keinem Anti-Aliasing, einer anderen Art oder keiner Art desselben vereinbar sein kann.
  • Der Texturkern 260 umfasst einen Bump-Adressengenerator 262, einen Bump-Cache 264, einen Texturadressengenerator 266, einen Level-1-Cache 268, eine Multum-In-Parvo-("MIP-)Mischeinheit 270 und eine Texturmischeinheit 272. Folglich ermöglicht es der Texturkern 260 der Bilderzeugungseinheit 220, Texturen zu verarbeiten. Es wird jedoch darauf hingewiesen, dass die Texturverarbeitung auf andere Art und Weise durchgeführt oder gar nicht vorgenommen werden könnte, ohne den Betrieb der vorliegenden Erfindung erheblich zu beeinträchtigen.
  • Der Pixeloperationsblock 280 umfasst einen Quellen-First-in-First-out-("FIFO")Z-Puffer 282, einen Quellen-FIFO-Schablonenpuffer 284 und einen Quellen-FIFO-Farbpuffer 286, eine Fog-Einheit 288, einen Pixelsammler 290, einen Z-Akkumulator 292, einen Pixelakkumulator 294, einen Ziel-FIFO-Z-Puffer 296, einen Ziel-FIFO-Schablonenpuffer 298 und einen Ziel-FIFO-Farbpuffer 300. Die Quellen-FIFOs 282, 284 und 286 führen den Akkumulatoren 292 und 294 Quellendaten zu. Die Ziel-FIFOs 296, 298 und 300 geben Daten für das graphische Bild aus. Bei einer Ausführungsform werden die Daten an einen Bildschirmspeicher des Bildschirms 204 ausgegeben. Bei einer anderen Ausführungsform können Daten für das graphische Bild direkt einem Bildschirm, wie etwa dem Bildschirm 1, zugeführt werden. Bei einer bevorzugten Ausführungsform geben die Ziel-FIFOs 296, 298 und 300 Daten Pixel für Pixel in Rasterreihenfolge aus. Daten können den FIFOs 296, 298 und 300 jedoch nicht Pixel für Pixel in Rasterreihenfolge zugeführt werden. Dem Pixeloperationsblock 280 werden Daten beispielsweise nicht Pixel für Pixel in Rasterreihenfolge zugeführt. Bei einer Ausführungsform können die FIFOs 282, 284, 286, 296, 298 und 300 Daten für mehrere Zeilen von Pixel halten, um Daten in Rasterreihenfolge auszugeben. Dies ermöglicht es, Daten direkt auszugeben, um einen Bildschirmspeicher, wie etwa einen Frame-Puffer, zu umgehen. Daher können Daten für alle Pixel in einer bestimmten Zeile des Bildschirms 1 gespeichert und dann in der gewünschten Reihenfolge direkt an einen Bildschirm ausgegeben werden. Bei einer anderen Ausführungsform jedoch halten die FIFOs 282, 284, 286, 296, 298 und 300 ausreichend Daten, um einen effizienten Speicherzugriff zu ermöglichen. Folglich können die Fragmente, wenn das Verfahren 150 oder 160 verwendet wird, vor der Verwendung durch den Z-Akkumulator 292 und den Pixelakkumulator 294 neu geordnet werden.
  • Der Z-Akkumulator 292 und der Pixelakkumulator 294 werden beim Akkumulieren der Fragmente gerenderter Pixel verwendet. Der Z-Akkumulator 292 und der Pixelakkumulator 294 können auch bei der Bereitstellung von Anti-Aliasing hilfreich sein, beispielsweise durch die Verwendung einer Abdeckmaske. Der Z-Akkumulator 292 und der Pixelakkumulator 294 können auch ein implizites Kanten-Anti-Aliasing (Kantenglättung) durchführen, wenn Tiefenwerte für Subpixel in einem Pixel einzeln berechnet werden. Bei einer Ausführungsform könnten der Z-Akkumulator 292 und der Pixelakkumulator 294 Daten für alle Pixel in einem Makropixel akkumulieren. Ein Direktzugriffsspeicher (RAM) könnte für den Z-Akkumulator 292 und ein anderes RAM für den Pixelakkumulator 294 verwendet werden. Bei einem Makropixel, das eine Größe von vier mal vier Pixel hat, könnte ein RAM mit einer Tiefe von 16 jeweils für den Z-Akkumulator 292 und den Pixelakkumulator 294 verwendet werden. In einem solchen Fall kann der Pixelsammler 290 weggelassen werden oder reduzierte Funktionen haben. In einem solchen Fall können der Z-Akkumulator 292 und der Pixelakkumulator 294 als Teil des Pixelneusortierblocks 221 angesehen werden. Ein solches RAM ist jedoch typischerweise nicht effizient. Daher kann eine bevorzugte Ausführungsform der Bilderzeugungseinheit 220 den Pixelsammler 290 umfassen.
  • Bei einer bevorzugten Ausführungsform akkumulieren der Z-Akkumulator 292 und der Pixelakkumulator 294 Daten für ein einzelnes Pixel. Somit erwarten der Z-Akkumulator 292 und Pixelakkumulator 294, dass alle Fragmente für ein bestimmtes Pixel empfangen werden, bevor Daten für ein nachfolgendes Pixel empfangen werden. Wenn das Verfahren 112 oder 120 verwendet wird, werden Daten vom Rasterkern 230 Pixel für Pixel bereitgestellt. Der Z-Akkumulator 292 und der Pixelakkumulator 294 können Daten in der durch den Rasterkern 230 bereitgestellten Reihenfolge verwenden. Der Pixelsammler 290 könnte daher weggelassen werden, wenn die Bilderzeugungseinheit 220 in Verbindung mit dem Verfahren 112 oder 120 verwendet wird. Wenn jedoch das Verfahren 150 oder 160 verwendet wird, werden die Daten für die Pixel in der Reihenfolge bereitgestellt, in der jedes Makrofragment gerendert wird. Somit wird nur das Fragment eines bestimmten Polygons, das ein erstes Pixel überschneidet, bereitgestellt, bevor das Fragment desselben Polygons für das nächste Pixel bereitgestellt wird. Ein anderes Fragment, das das erste Pixel überschneidet, wird später bereitgestellt, wenn das entsprechende Makrofragment gerendert wird. Bei der bevorzugten Ausführungsform können die Akkumulatoren 292 und 294 in dieser Reihenfolge bereitgestellte Daten nicht ordnungsgemäß akkumulieren. Folglich wird der Pixelsammler 290 verwendet und als Teil des Pixelneusortierblocks 221 angesehen.
  • Der Pixelsammler 290 wird beim Neuordnen der vom Rasterkern 230 zugeführten Daten verwendet. Wenn das Verfahren 150 oder 160 verwendet wird, ordnet der Pixelsammler 290 die Fragmente neu, so dass ein Fragmentstrom für jedes der Pixel in einem Makropixel bereitgestellt wird. Der Fragmentstrom umfasst alle Fragmente für das entsprechende Pixel. Somit werden dem Z-Akkumulator 292 und dem Pixelakkumulator 294 Daten in einer Form zugeführt, die vom Z-Akkumulator 292 bzw. vom Pixelakkumulator 294 verwendet werden kann.
  • 10 stellt eine Ausführungsform des Pixelsammlers 290 dar. Der Pixelsammler 290 umfasst das FIFO 308, einen Entleerer (Emptier) 310, eine Arbitrationseinheit 312 und mehrere Pixelsteuereinheiten. Aus Gründen der Einfachheit sind nur drei Pixelsteuereinheiten, nämlich die Pixelsteuereinheit Null 302, die Pixelsteuereinheit Eins 304 und die Pixelsteuereinheit n 306 dargestellt. Der Pixelsammler 290 umfasst so viele Pixelsteuereinheiten 302, 304 und 306 wie Pixel in einem Makropixel vorhanden sind. Somit umfasst, bei dem System, das den in 10 gezeigten Pixelsammler 290 verwendet, jedes Makropixel n Pixel. Das FIFO 308 umfasst dieselbe Anzahl an FIFOs wie Pixel in einem Makropixel vorhanden sind. Bei einem Makropixel beispielsweise, das vier mal vier Pixel umfasst, sind sechzehn FIFOs im FIFO 308 enthalten. Bei einer bevorzugten Ausführungsform sind die im Pixelsammler 290 verwendeten FIFOs zu einem einzelnen RAM-Exemplar kombiniert, das in 10 als FIFO 308 dargestellt ist. Bei einer bevorzugten Ausführungsform wird außerdem jedes FIFO als gleichwertiger Abschnitt des FIFO 308 betrachtet. Es spricht jedoch nichts dagegen, die FIFOs separat auszuführen. Jede Pixelsteuereinheit 302, 304 und 306 steuert ein entsprechendes FIFO des FIFO 308. Somit steuert jede Pixelsteuereinheit 302, 304 und 306, wie in 10 dargestellt, 1/16 des FIFO 308.
  • Jede Pixelsteuereinheit 302, 304 oder 306 arbeitet mit dem entsprechenden Abschnitt des FIFO 308 zusammen, um alle Fragmente für ein Pixel in dem Makropixel zu gruppieren, das durch den Pixelsammler 290 verarbeitet wird. Fragmente werden basierend auf dem x-Offset und y-Offset des Fragments an eine bestimmte Pixelsteuereinheit 302, 304 oder 306 weitergeleitet. Der x-Offset und der y-Offset des Fragments identifizieren eindeutig die Pixel im Makropixel, die das Fragment überschneidet. Somit empfängt jede Pixelsteuereinheit 302, 304 oder 306 Fragmente, die ein bestimmtes Pixel überschneiden. Die Pixelsteuereinheiten 302, 304 und 306 leiten das Fragment an den entsprechenden Abschnitt des FIFO 308 über die Arbitrationseinheit 312 weiter. Des Weiteren kann, bei einer bevorzugten Ausführungsform, jede Pixelsteuereinheit 302, 304 und 306 Fragmente für mehr als ein Pixel verfolgen. Bevorzugt werden von jeder Pixelsteuereinheit 302, 304 und 306 bis zu zwei Pixel verfolgt. Folglich kann der Pixelsammler 290 gleichzeitig Abschnitte von zwei Makropixeln verarbeiten. Dies trägt dazu bei, sicherzustellen, dass der gewünschte Durchsatz von einem Pixel pro Taktzyklus aufrechterhalten wird.
  • Bei einer Ausführungsform ist eine festgelegte Menge an Speicherplatz für den Abschnitt des FIFO 308 vorhanden, der einer bestimmten Pixelsteuereinheit 302, 304 oder 306 entspricht. Bei einer bevorzugten Ausführungsform kann ein Überlas tungszustand herbeigeführt werden, wenn dem Abschnitt des FIFO 308 für eine Pixelsteuereinheit 302, 304 oder 306 der Platz ausgeht, bevor alle Fragmente für das entsprechende Pixel bereitgestellt wurden. Der Überlastungszustand einer Pixelsteuereinheit 302, 304 oder 306 führt die Fragmente für das entsprechende Pixel im entsprechenden Abschnitt des FIFO 308 dem Z-Akkumulator 292 und dem Pixelakkumulator 294 zu, die in 9 dargestellt sind. In einem solchen Fall werden jedoch die Ergebnisse des Z-Akkumulators 292 und des Pixelakkumulators 204 zum Pixelsammler 290 zurückgeführt, anstatt einem Teil des Bildschirms 204 zugeführt zu werden. Dieses Verfahren kann wiederholt werden, so dass alle Fragmente für das Pixel zu einer Gruppe zusammengefasst werden. Wenn jedoch dieser Überlastungszustand verwendet wird und der Z-Akkumulator zur Bereitstellung von Anti-Aliasing beiträgt, kann der Z-Akkumulator 292 während des Überlastungszustands einen bereichsbezogenen Algorithmus verwenden. Dies kann die Zeitdauer verkürzen, die erforderlich ist, um den Z-Akkumulator 292 zu füllen, der einen Puffer für jedes Subpixel in dem verarbeiteten Pixel umfassen kann. Ohne einen solchen bereichsbezogenen Algorithmus kann für jeden Subpixelpuffer separat ein Z-Wert berechnet werden, um ein implizites Kanten-Anti-Aliasing bereitzustellen. Somit ist der bereichsbezogene Algorithmus bei der Verkürzung der Zeitdauer hilfreich, die nötig ist, um Fragmente für ein verarbeitetes Pixel, das einer Pixelsteuereinheit 302, 304 oder 306 entspricht, zu gruppieren.
  • Die Makropixel werden somit in Rasterreihenfolge gerendert. Daten können jedoch in einer anderen Reihenfolge von der Bilderzeugungseinheit 220 ausgegeben werden, beispielsweise Pixel für Pixel in Rasterreihenfolge. Eine größere Kohärenz zwischen Daten für ein bestimmtes gerendertes Pixel und Daten für ein nachfolgendes Pixel kann erreicht werden, da die gerenderten Makropixel aus Pixeln bestehen, die zwei Dimensionen einnehmen. Die Erhöhung der Kohärenz ist besonders groß, wenn jedes Makropixel durch das Verfahren 150 oder 160 Makrofragment für Makrofragment gerendert wird, anstatt eine bestimmte Reihenfolge für die Pixel zu verwenden, wie bei dem Verfahren 112 oder 120. Wenn beispielsweise Daten, wie etwa eine Textur, zum Rendern eines bestimmten Pixels in einem Makropixel gecacht werden, besteht eine größere Wahrscheinlichkeit, dass die Daten im Cache zum Rendern eines nachfolgenden Pixels verwendet werden. Ebenso besteht eine größere Wahrscheinlichkeit, dass, wenn ein Cache-Miss auftritt, bei einem nachfolgenden Pixel auch ein Cache-Miss auftritt. Dadurch wird die Effizienz beim Rendern eines graphischen Bildes verbessert. Die Verbesserung ist besonders groß, wenn ein Level-2-Cache verwendet wird. Dies ist der Fall, da ein Level-2-Cache eine relativ große Cache-Line-Größe hat, die eine relativ lange Zeitspanne benötigt, um gefüllt zu werden. Das erfindungsgemäße Verfahren und das erfindungsgemäße System können jedoch auch die Effizienz anderer Caches verbessern. Darüber hinaus können Daten für mehr als ein Pixel zu einer bestimmten Zeit verarbeitet werden. Der Fragmentgenerator 238 kann beispielsweise eine Verarbeitung aller Pixel und mehrerer Fragmente im Makropixel gleichzeitig durchführen. Daher können mehrere Taktzyklen verwendet werden, um die gewünschte Verarbeitung durchzuführen, ohne den Durchsatz nachteilig zu beeinflussen.
  • Es wurden ein Verfahren und ein System zum Rendern eines graphischen Bildes offenbart. Obgleich die vorliegende Erfindung in Übereinstimmung mit den dargestellten Ausführungsformen beschrieben worden ist, wird ein Durchschnittsfachmann auf dem Gebiet leicht erkennen können, dass an den Ausführungsformen Abwandlungen durchgeführt werden könnten und dass diese Abwandlungen innerhalb des Schutzumfangs der vorliegenden Erfindung liegen würden. Demgemäß können durch einen Durchschnittsfachmann auf dem Gebiet zahlreiche Modifikationen durchgeführt werden, ohne den Schutzumfang der zugehörigen Ansprüche zu verlassen.

Claims (9)

  1. Verfahren zum Bereitstellen eines graphischen Bildes auf einem Bildschirm anhand von Daten, die mindestens ein Objekt beschreiben, wobei der Bildschirm eine Mehrzahl an Pixeln umfasst und die Daten eine Mehrzahl an Fragmenten für das mindestens eine Objekt umfassen, wobei die Mehrzahl an Fragmenten einen ersten Teil der Mehrzahl an Pixeln überschneidet und jedes Fragment die Überschneidung eines bestimmten Polygons und eines bestimmten Pixels repräsentiert, wobei ein Teil der Mehrzahl an Fragmenten jedes Pixel des ersten Teils der Mehrzahl an Pixeln überschneidet, wobei das Verfahren die Schritte umfasst: a) Definieren einer Mehrzahl an Makropixeln, wobei jedes der Mehrzahl an Makropixeln einen zweiten Teil der Mehrzahl an Pixeln umfasst, und wobei der zweite Teil der Mehrzahl an Pixeln aus aneinander angrenzenden Pixeln besteht und n Pixel des zweiten Teils der Mehrzahl an Pixeln in einer ersten Richtung und m Pixel des zweiten Teils der Mehrzahl an Pixel in einer zweiten Richtung umfasst, b) Rendern der Mehrzahl an Pixeln durch Rendern der Mehrzahl an Makropixeln in Rasterreihenfolge durch Rendern jedes Pixels des zweiten Teils der Mehrzahl an Pixeln in jedem Makropixel Pixel für Pixel, wobei jedes Pixel durch Rendern des Teils der Mehrzahl an Fragmenten gerendert wird, der jedes Pixel überschneidet, wobei die mehreren Makropixel – ungeachtet der Größe und Gestalt des mindestens einen Objekts – in horizontaler und vertikaler Richtung parallel zueinander und aneinander angrenzend ausgerichtet sind und einander nicht überlappen und den Bildschirm vollständig abdecken, und wobei die Mehrzahl an Makropixeln ungeachtet der Größe und Gestalt des mindestens einen Objekts in Rasterreihenfolge gerendert wird, dadurch gekennzeichnet, dass Schritt b) des Renderns der Mehrzahl an Pixeln in Rasterreihenfolge das Rendern der Pixel in jedem Makropixel in einer bestimmten Reihenfolge umfasst, und Schritt b) des Renderns der Mehrzahl an Pixeln durchgeführt wird, indem die Fragmente, die Pixel in einem bestimmten Makropixel überschneiden, in Reihe miteinander platziert werden und die jedes Pixel überschneidenden Fragmente in einem Makropixel geordnet und in dieser Reihenfolge behandelt werden.
  2. Verfahren nach Anspruch 1, wobei die Fragmente, die die Pixel in einem Makropixel überschneiden, in Übereinstimmung mit der bestimmten Reihenfolge der Pixel in jedem Makropixel geordnet werden.
  3. Verfahren nach Anspruch 2, wobei die Pixel in einem Makropixel von links nach rechts und von oben nach unten im Makropixel gerendert werden.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei Fragmente, die verschiedene Pixel und verschiedene Makropixel überschneiden, durch Bereitstellen wenigstens einer Kennung in jedem Fragment voneinander unterschieden werden.
  5. Verfahren nach Anspruch 3, wobei die Fragmente so neu geordnet werden, dass Daten für die Pixel von links nach rechts und von oben nach unten ausgegeben werden.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei Daten so verarbeitet und ausgegeben werden, dass ein Durchsatz von einem Pixel pro Taktzyklus unter den meisten Bedingungen aufrechterhalten wird.
  7. Verfahren nach Anspruch 1, das ferner den Schritt umfasst: Ausgeben der Daten Pixel für Pixel in Rasterreihenfolge.
  8. System zum Bereitstellen eines graphischen Bildes auf einem Bildschirm anhand von Daten, die mindestens ein Objekt beschreiben, wobei der Bildschirm eine Mehrzahl an Pixeln umfasst und die Daten eine Mehrzahl an Fragmenten für das mindestens eine Objekt umfassen, wobei die Mehrzahl an Fragmenten einen ersten Teil der Mehrzahl an Pixeln überschneidet und jedes Fragment die Überschneidung eines bestimmten Polygons und eines bestimmten Pixels repräsentiert, wobei ein Teil der Mehrzahl an Fragmenten, jedes Pixel des ersten Teils der Mehrzahl an Pixeln überschneidet, wobei das System umfasst: – eine Einrichtung zum Definieren einer Mehrzahl an Makropixeln, wobei jedes der Mehrzahl an Makropixeln einen zweiten Teil der Mehrzahl an Pixeln umfasst, und wobei der zweite Teil der Mehrzahl an Pixeln aus aneinander angrenzenden Pixeln besteht und n Pixel des zweiten Teils der Mehrzahl an Pixeln in einer ersten Rich tung und m Pixel des zweiten Teils der Mehrzahl an Pixel in einer zweiten Richtung umfasst, – eine mit der Einrichtung zum Definieren der Makropixel gekoppelte Einrichtung zum Rendern der Mehrzahl an Pixeln durch Rendern der Mehrzahl an Makropixeln in Rasterreihenfolge, wobei jedes Makropixel durch Rendern jedes Pixels des zweiten Teils der Mehrzahl an Pixeln in jedem Makropixel Pixel für Pixel gerendert wird, wobei jedes Pixel durch Rendern des Teils der Mehrzahl an Fragmenten gerendert wird, der jedes Pixel überschneidet, wobei die mehreren Makropixel – ungeachtet der Größe und Gestalt des mindestens einen Objekts – in horizontaler und vertikaler Richtung parallel zueinander und aneinander angrenzend ausgerichtet sind und einander nicht überlappen und den Bildschirm vollständig abdecken, und wobei die Mehrzahl an Makropixeln ungeachtet der Größe und Gestalt des mindestens einen Objekts in Rasterreihenfolge gerendert wird, dadurch gekennzeichnet, dass Schritt b) des Renderns der Mehrzahl an Pixeln in Rasterreihenfolge das Rendern der Pixel in jedem Makropixel in einer bestimmten Reihenfolge umfasst, und Schritt b) des Renderns der Mehrzahl an Pixeln durchgeführt wird, indem die Fragmente, die Pixel in einem bestimmten Makropixel überschneiden, in Reihe miteinander platziert werden und die jedes Pixel überschneidenden Fragmente in einem Makropixel geordnet und in dieser Reihenfolge behandelt werden.
  9. System nach Anspruch 10, das ferner eine Einrichtung zum Ausgeben der Daten Pixel für Pixel in Rasterreihenfolge umfasst.
DE60038623T 1999-08-12 2000-07-14 Verfahren und vorrichtung zum rendern von makropixeln Expired - Lifetime DE60038623T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37407199A 1999-08-12 1999-08-12
US374071 1999-08-12
PCT/US2000/019180 WO2001013334A1 (en) 1999-08-12 2000-07-14 Method and system for rendering macropixels

Publications (2)

Publication Number Publication Date
DE60038623D1 DE60038623D1 (de) 2008-05-29
DE60038623T2 true DE60038623T2 (de) 2009-05-20

Family

ID=23475149

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60038623T Expired - Lifetime DE60038623T2 (de) 1999-08-12 2000-07-14 Verfahren und vorrichtung zum rendern von makropixeln

Country Status (6)

Country Link
US (1) US6795072B1 (de)
EP (1) EP1222629B1 (de)
AT (1) ATE392676T1 (de)
AU (1) AU6097800A (de)
DE (1) DE60038623T2 (de)
WO (1) WO2001013334A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2478909B (en) * 2010-03-19 2013-11-06 Imagination Tech Ltd Demand based texture rendering in a tile based rendering system
US8965933B2 (en) 2012-01-06 2015-02-24 Apple Inc. Multi-tiered caches in data rendering

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4873515A (en) * 1987-10-16 1989-10-10 Evans & Sutherland Computer Corporation Computer graphics pixel processing system
GB8828342D0 (en) * 1988-12-05 1989-01-05 Rediffusion Simulation Ltd Image generator
US5444839A (en) * 1992-04-29 1995-08-22 Canon Kabushiki Kaisha Object based graphics system for rasterizing images in real-time
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
GB2278524B (en) * 1993-05-28 1997-12-10 Nihon Unisys Ltd Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency
KR100243174B1 (ko) * 1993-12-28 2000-02-01 윤종용 서브픽셀 마스크 발생방법 및 장치
US5808627A (en) 1994-04-22 1998-09-15 Apple Computer, Inc. Method and apparatus for increasing the speed of rendering of objects in a display system
TW304254B (de) * 1994-07-08 1997-05-01 Hitachi Ltd
US5598517A (en) * 1995-01-10 1997-01-28 Evans & Sutherland Computer Corp. Computer graphics pixel rendering system with multi-level scanning
FR2735267B1 (fr) 1995-06-08 1999-04-30 Hewlett Packard Co Systeme et procede de convertisseur de balayage de triangles a tampons de trame entrelaces en deux dimensions
US5701405A (en) * 1995-06-21 1997-12-23 Apple Computer, Inc. Method and apparatus for directly evaluating a parameter interpolation function used in rendering images in a graphics system that uses screen partitioning
US5886701A (en) * 1995-08-04 1999-03-23 Microsoft Corporation Graphics rendering device and method for operating same
GB9518696D0 (en) * 1995-09-13 1995-11-15 Philips Electronics Nv Image texture mapping
US5870105A (en) * 1996-05-31 1999-02-09 Hewlett-Packard Company System and method for local storage of image data during object to image mapping
US6034699A (en) 1997-05-01 2000-03-07 Ati Technologies, Inc. Rendering polygons
US6016151A (en) 1997-09-12 2000-01-18 Neomagic Corp. 3D triangle rendering by texture hardware and color software using simultaneous triangle-walking and interpolation for parallel operation
US6104407A (en) * 1997-09-23 2000-08-15 Ati Technologies, Inc. Method and apparatus for processing fragment pixel information in a three-dimensional graphics processing system

Also Published As

Publication number Publication date
AU6097800A (en) 2001-03-13
WO2001013334A1 (en) 2001-02-22
ATE392676T1 (de) 2008-05-15
EP1222629B1 (de) 2008-04-16
EP1222629A1 (de) 2002-07-17
DE60038623D1 (de) 2008-05-29
US6795072B1 (en) 2004-09-21

Similar Documents

Publication Publication Date Title
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE69908966T3 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE60012917T2 (de) Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten
DE69632578T2 (de) Computer-grafiksystem zum schaffen und verbessern von texturabbildungssystemen
DE3855231T2 (de) Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing
DE19600431A1 (de) Computergraphik-Pixel-Wiedergabesystem mit Cache-Speichern
DE69122557T2 (de) Bilderzeugung
DE19709220B4 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
DE3853393T2 (de) Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung.
DE69835408T2 (de) Verfahren und Vorrichtung zur Komposition von Bildfarben unter Speicherbeschränkungen
DE60008520T2 (de) Darstellung von durchsichtigen schichten
DE3854223T2 (de) Erzeugung und Anzeige von Rechnergraphiken.
DE69724512T2 (de) Texturabbildungssystem -medium und -verfahren
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE60008867T2 (de) Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
DE19917092A1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE69029987T2 (de) Verfahren und Gerät zur parallelen Wiedergabe von Polygonen und Pixeln
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
WO1981002205A1 (en) Process and device for the partial post-correction of the colour recognition domains in the recognition of colours
DE102014004841A1 (de) Grafik auf Kachelbasis
DE69122147T2 (de) Verfahren und Einrichtung zum Abschneiden von Pixeln von Quellen- und Zielfenstern in einem graphischen System
DE112005002076T5 (de) Unterteilung von Geometriebildern in Grafikhardware

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M