DE69836924T2 - Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe - Google Patents

Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe Download PDF

Info

Publication number
DE69836924T2
DE69836924T2 DE69836924T DE69836924T DE69836924T2 DE 69836924 T2 DE69836924 T2 DE 69836924T2 DE 69836924 T DE69836924 T DE 69836924T DE 69836924 T DE69836924 T DE 69836924T DE 69836924 T2 DE69836924 T2 DE 69836924T2
Authority
DE
Germany
Prior art keywords
texture
space
map
logarithm
cache
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
DE69836924T
Other languages
English (en)
Other versions
DE69836924D1 (de
Inventor
X. Randy Fremont ZHAO
Dong-Ying Pleasanton KUO
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.)
S3 Graphics Co Ltd
Original Assignee
S3 Graphics Co Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25382775&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69836924(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by S3 Graphics Co Ltd filed Critical S3 Graphics Co Ltd
Publication of DE69836924D1 publication Critical patent/DE69836924D1/de
Application granted granted Critical
Publication of DE69836924T2 publication Critical patent/DE69836924T2/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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf das Texturabbilden bei grafischen Systemen, und insbesondere auf ein System und ein Verfahren des Block- und Bandorientierten Durchlaufs, um eine verbesserte Bandbreite bei solchen Systemen zu erreichen.
  • 2. Beschreibung des Standes der Technik
  • Texturabbilden ist der Prozess des Abbildens eines Bildes auf eine Fläche bei einem dreidimensionalen grafischen System. Diese Technik ist im Fachgebiet wohlbekannt und ist zum Beispiel beschrieben in J. Foley et al., Computer Graphics: Principles and Practice, 2d. ed., Addison-Wesley, 1990, auf 741–44.
  • Bezugnehmend auf 1 wird ein Beispiel des Texturabbildens entsprechend dem Stand der Technik gezeigt. Das abzubildende Bild wird als Texturabbildung 101 bezeichnet und seine einzelnen Elemente werden als Texel bezeichnet. Die Texturabbildung 101 ist üblicherweise in einem rechtwinkligen Koordinatensystem bezeichnet mit (u, v) dargestellt und ist gewöhnlich in einem Bereich eines herkömmlichen Speichers gespeichert, wie zum Beispiel einem herkömmlichen dynamischen Direktzugriffsspeicher (DRAM) mit seitenweisem Betrieb oder anderen seitenweisen Speichern. Beim Beispiel von 1 sind vier Seiten 110, 111, 112, 113 gezeigt, wobei jede einem Teil des Bildbereichs entspricht, der einen entsprechenden Teil der Texturabbildung 101 enthält.
  • Eine Fläche 104 im dreidimensionalen Raum hat ihr eigenes Koordinatensystem (s, t). Bei einem typischen dreidimensionalen grafischen System kann die Fläche 104 eine Primitive wie ein Polygon sein; viele solcher Polygone können im Dreiraum definiert werden, um ein dreidimensionales Objekt oder eine Szene zu bilden. Jedes dieser Polygone würde dann sein eigenes Koordinatensystem (s, t) haben, ähnlich zu der in 1 angezeigten Fläche 104. Auf Basis der Ausrichtung der Fläche 104 im Dreiraum und der Position und der Ausrichtung der "Kamera" wird die Fläche 104 ihrerseits wieder auf ein zweidimensionales Anzeigengitter 103 abgebildet, das zur Anzeige durch das Computersystem im Bildspeicher gespeichert ist. Das Abbilden der Fläche 104 auf das Anzeigengitter 103 wird durch Matrix-Transformationen ausgeführt, die im Fachgebiet wohlbekannt sind. Das Anzeigengitter 103 hat ein Koordinatensystem (x, y) und ist typischerweise in einem Bereich des Speichers implementiert, der für Videoanzeigen vorbehalten ist, wie ein Videodirektzugriffsspeicher (Video RAM), zum Beispiel VRAM oder ein synchroner Grafikdirektzugriffsspeicher (SGRAM). Das Anzeigengitter 103 enthält als Pixel bekannte einzelne Elemente, die durch eindeutige Speicherstellen im Video RAM repräsentiert werden.
  • Die Koordinaten im Anzeigengitter 103 werden oft als im "Bildraum" befindlich angesehen. Ähnlich werden Koordinaten auf einer Fläche 102 als im "Flächenraum" befindlich angesehen und Koordinaten in einer Texturabbildung 101 werden als im "Texturraum" befindlich angesehen. Die Ursprünge für jedes der Koordinatensysteme können an jeder Position angeordnet sein, obwohl typischerweise der Ursprung des Bildraums entweder unten-links oder oben-rechts angeordnet ist.
  • Jedes Pixel in einem Bereich des Anzeigengitters 103 wird auf einen Punkt auf der Fläche 104 und seinerseits wieder auf einen Punkt in der Texturabbildung 101 abgebildet. So wird beim Beispiel von 1 der Punkt Axy des Anzeigengitters 103 auf den Punkt Ast in den Koordinaten der Fläche 102 und den Punkt Auv in der Texturabbildung 103 abgebildet, oder eine Gruppe von Punkten, die eine Region in der Texturabbildung 101 bilden. Jede der Abbildungen zwischen dem Anzeigengitter 103, der Region 102 und der Texturabbildung 101 kann Punkt-zu-Punkt, Punkt-zu-Region, Region-zu-Punkt oder Region-zu-Region sein. Bei herkömmlichen Implementierungen von Texturabbildungssystemen erzeugt das Abbilden vom Anzeigengitter 103 zur Fläche 104 und wiederum zur Texturabbildung 101 auch einen Wert d, der den Detailgrad für das bestimmte Texel darstellt. Typischerweise ist d ein Maß für den wahrgenommenen Abstand des Punktes in der Texturabbildung, wie er durch einen z-Wert für den Punkt im Bildpufferspeicher festgelegt ist. Punkte, die als weiter weg wahrgenommen werden, haben einen niedrigeren Detailgrad, was eine verringerte Auflösung bedeutet. Beim Abrufen von Texeln der Texturabbildung 101 wird d verwendet, um ein multum in parvo-Abbildungs (MIP-Abbildungs) Schema zu implementieren, wobei mehrere Texel gemittelt (oder auf andere Weise gefiltert) und auf ein Pixel des Bildpuffers abgebildet werden können. Dieses Filtern kann on-the-fly ausgeführt werden oder gefilterte Pixel können in mehreren ausgewählten Auflösungsgraden vorausberechnet und für einen späteren Abruf gespeichert werden, woraus sich eine verbesserte Leistung ergibt. Je höher der Wert von d, desto niedriger der Detailgrad und desto mehr Pixel-Filterung wird ausgeführt. Im Grenzfall kann theoretisch die ganze Texturabbildung auf ein Pixel im Bildpufferspeicher reduziert werden.
  • Herkömmliche Rasterisierungs-Funktionsmaschinen(-Engines) ziehen das Bild in den Bildpuffer mit der bekannten Technik der Abtastumwandlung von Primitiven, wie Polygonen und Linien (siehe z.B. Foley et al.). Als Eingabe bei der Abtastumwandlung werden Primitive benutzt, die im Hinblick auf Eckpunkte und Ausrichtungen definiert sind, und die Abtastumwandlung liefert als Ausgabe eine Serie von Pixeln, die auf dem Schirm darzustellen sind. Da jedes Pixel durch Abtastumwandlung erzeugt wird, führt eine Rasterisierungs-Funktionamaschine die nötigen Abbildungsberechnungen aus, um zu bestimmen welches Texel der Texturabbildung 101 dem Pixel entspricht. Die Rasterisierungs-Funktionamaschine gibt dann die Speicherbezüge aus, welche auch immer benötigt werden, wie einen Texturabruf, einen z-Abruf, ein z-Writeback, einen Farbabruf, ein Farb-Writeback und ähnliches, um Texel-Informationen zum Schreiben auf das bearbeitete Pixel abzurufen. Daher werden Speicherbezüge ausgegeben in der Reihenfolge, in der sie durch die Abtastumwandlung erzeugt werden. Herkömmlich werden solche Speicherbezüge entsprechend einem first-in first-out (FIFO) Schema unter Verwendung einer FIFO-Warteschlange gespeichert und verwaltet.
  • Es ist bekannt, dass sich herkömmliche DRAM-Komponenten mit seitenweisem Betrieb Zugriffszeit-Strafen zuziehen, wenn auf Speicherorte von unterschiedlichen Speicherseiten zugegriffen wird. Zum Beispiel benötigt in einigen Speicherarchitekturen (wie SGRAM) ein Zugriff auf eine offene Seite einen Zyklus, ein Auslesen von einer nicht geöffneten Seite benötigt neun Zyklen, ein Schreiben auf eine nicht geöffneten Seite benötigt sechs Zyklen und ein Zugriff auf eine geöffnete Seite auf einer anderen Bank benötigt drei Zyklen. Daher kann sich das oben beschriebene Schema des Ausgebens von Speicherbezügen in der Reihenfolge in der sie durch Abtastumwandlung erzeugt werden, solche Strafen nach sich führen, da die in Bezug genommenen Gebiete der Texturabbildung 101 in verschiedenen Seiten liegen können. Tatsächlich können in Abhängigkeit der Störung der Texturgrenzen, die aus der bestimmten verwendeten Abbildungstransformation resultiert, die aus der Reihenfolge der Abtastumwandlung erzeugten Bezüge ein wiederholtes Seitenschalten nach Vorn und nach Hinten benötigen, das auch als "thrashing" bekannt ist. Da die Speicherbandbreite im Allgemeinen die Engstelle bei einer schnellen Erzeugung von dreidimensionalen Bildern ist, resultiert aus solchen wiederholten Seitenwechseln eine verringerte Leistung.
  • Zusätzlich verwenden viele Speichersysteme ein Stoßbetrieb-Zugriff Schema, wobei eine gemeinsame Speicherressource für eine bestimmte Zeitspanne einem Prozess zugänglich gemacht wird und dann für diesen Prozess unzugänglich ist, während sie andere Prozesse bedient. Um die Datenübertragung zu maximieren, ist es vorteilhaft, Seitenbrüche innerhalb eines Stoßes zu vermeiden. Im Wesentlichen heißt das, wenn ein Prozess einmal Zugriff auf die gemeinsame Speicherressource hat, ist es für den Prozess effizient, den Zugriff beizubehalten bis das gewünschte Datensegment übertragen wurde; Seitenbrüche können bewirken, dass der Zugriff auf andere Prozesse verschoben wird, wodurch die Leistung weiter verringert wird.
  • Das Bilden von Kacheln hat sich bei der Verbesserung der Datenübertragung im Stoßbetrieb-Zugriff und bei der Verringerung der Seitenbrüche als nützlich herausgestellt. Wieder im Bezug auf 1 wird gezeigt, wie der Texturraum 101 in vier Flächen 110, 111, 112, 113 aufgeteilt ist, entsprechend den Seiten im Speicher. Dies ist ein Beispiel eines typischen Kachel-Schemas, wobei jede Fläche (oder Kachel) in einer Seite des Speichers gespeichert ist, so dass jede Abtastung innerhalb einer Kachel keine Seitenbrüche verursacht. Im Allgemeinen treten Seitenbrüche nur auf, wenn die Abtastung einer Kachel abgeschlossen ist und die Abtastung einer anderen Kachel beginnt. Typischerweise ergibt das Schema des Speicherns in Kacheln einen verbesserten Durchlaufweg, der Seitenbrüche im Vergleich zum linearen Durchlauf reduziert.
  • Kacheln und zugeordnete Seiten können irgendeine Abmessung haben, so zum Beispiel 32×32 Pixel für eine Summe von 1024 Pixeln. Bei 16-bit Pixeln entspricht dies einer Seitenabmessung von 2KB.
  • Nimmt man nun Bezug auf 1A und 1B, so wird ein Beispiel eines Vorteils eines Kachel-Adressierungs-Schemas gezeigt. 1A zeigt eine Primitive 120, die in einem linearen Adressierung-Schema dargestellt ist. In Abhängigkeit der Breite des Bildpuffer und des Seitenabmessung kann jede Abtastlinie 120 im Speicher auf ihrer eigenen Seite abgebildet werden. Zum Beispiel bei einer Breite des Bildpufferspeichers von 1024 und einer Höhe von 768 kann eine 2KB Seite eine einzelne Abtastlinie beinhalten, falls jedes Pixel eine 16-bit-Tiefe hat. Daher würde jedes Liniensegment der Primitiven 120 auf einer anderen Seite gespeichert werden und bis zu acht Seitenbrüche würden benötigt werden, um die Primitive 120 wiederzugeben (zu rendern).
  • Demgegenüber zeigt 1B eine Primitive 120, die in einem Kachel-Adressierungs-Schema dargestellt ist. Falls die gesamte Primitive in eine einzige Kachel 122 passt, werden keine Seitenbrüche benötigt, um die Primitive 120 wiederzugeben.
  • Selbst wenn die Primitive 120 eine Vielzahl von Kacheln überspannt, werden im Allgemeinen weniger Seitenbrüche benötigt als bei dem linearen Adressierungs-Schema von 1A.
  • Das oben beschriebene Kachel-Adressierungs-Schema kann auf die Bildspeicherung angewandt werden und kann ebenfalls auf Farbspeicher und/oder z-Speicher ausgeweitet werden.
  • Im Stand der Technik wurde ebenfalls der Versuch unternommen mit anderen Techniken Seitenbrüche zu minimieren, sowohl für lineare als auch für Kachel-Zugriff-Schemata. Ein Beispiel ist die Verwendung von spezialisierten Speichern anstelle von herkömmlichen Speicherkomponenten mit seitenweisem Betrieb. Siehe zum Beispiel H. Fuchs und J. Poulton, "Pixel-Planes: A VLSI-Oriented Design for a Raster Graphics Engine", in VLSI Design, Vol.2, Nr. 3, 1981; M. Deering et al., " FBRAM: A New Form of Memory Optimized for 3D Graphics," in Computer Graphics, Proceedings of SIGGRAPH, 1995; A. Schilling et al., "Texram: A Smart Memory for Texturing," in IEEE Computer Graphics and Applications, 1996. Solche Systeme verbessern im Allgemeinen die Speicherbrandbreite, zum Beispiel durch das direkte Zuordnen des Speichers zum Verarbeiten auf einem anwendungsspezifischen integrierten Schaltkreis (ASIC) oder durch das Zuordnen der Logik zum Speicher direkt auf einem DRAM-Chip. Siehe A. Schilling et al. Jedoch benötigen solche Techniken hochspezialisierte Komponenten, die im Allgemeinen teurer als herkömmliche DRAM mit seitenweisem Betrieb sind.
  • Ein anderer Versuch die Speicherbandbreite zu reduzieren ist in K. Akeley, "RealityEngine Graphics" in Computer Graphics, Proceedings of SIGGRAPH, 1993 beschrieben. Akeley beschreibt ein System mit extremer Speicherverschachtelung. Diese Technik benötigt bedeutend mehr Speicherchips als herkömmliche Speichersysteme und ist demzufolge teurer.
  • Ein Textur-Cachespeicher kann verwendet werden, um die Zugriffsbandbreite zur Texturabbildung zu verbessern. Jedoch ist die Textur-Cachespeicher-Trefferrate durch die Lokalität der Texelbezüge begrenzt. Eine schlechte Lokalität kann ein übermäßiges Austauschen von Texeln in und aus dem Textur-Cachespeicher ergeben. Herkömmliche Abtastlinien-orientierte Durchlauf-Algorithmen können eine schlechte Lokalität ergeben, insbesondere wenn die Texturprimitiven eigentümlich geformt sind. Wenn wie herkömmlich zum Beispiel Dreiecke als Texturprimitive verwendet werden, kann ein sehr langes und schmales Dreieck eine ausreichende Länge entlang einer x-oder einer y-Achse überspannen, so dass zu dem Zeitpunkt an dem das Ende eines Bereichs erreicht wird, der Anfang des Bereichs nicht länger im Textur-Cachespeicher zwischengespeichert ist. Wenn daher der Durchlauf des nächsten Bereichs beginnt, sind die benötigten Texels nicht länger zwischengespeichert und müssen vom Haupttexturspeicher abgefragt werden. Mit anderen Worten eine Textur-Cachespeicher Auslagerung, die auf der Lokalität basiert, kann eine schlechtere Trefferrate ergeben, wenn bestimmte Formen wiedergegeben werden (wie lange schmale Dreiecke).
  • Techniken zur Texel-Umordnung können verwendet werden, um die Lokalität zu verbessern. Jedoch ist die Effektivität dieses Ansatzes durch die Abmessung des Zugriffpuffers begrenzt und kann immer noch in einigen Situationen dabei scheitern, das Problem der Lokalität im Texturraum zu lösen, wenn die Grafikprimitiven eine unregelmäßige Form haben. Die Texel-Umordnung kann durch das Durchlaufen von zwei oder mehr Abtastlinien als eine Gruppe erhöht und die Lokalität verbessert werden. Dieser Ansatz ergibt eine zusätzliche Komplexität, da Fragen zur Rechenzeitvergabe entstehen bei der Bestimmung welche Abtastlinie als nächstes verarbeitet werden soll. Diese erhöhte Texel-Umordnung benötigt ebenfalls eine erhebliche Rückmeldung vom Sortier-Algorithmus und kann beträchtlliche Fragen zum Hardware-Design herbeiführen, die aus der Wartezeit und der Verifikation resultieren.
  • Obwohl die oben beschriebenen Techniken bei der Verbesserung der Wiedergabeeffizienz etwas effektiv sein können, tritt das unnötige Seitenschalten immer noch auf. Insbesondere ergibt sich aus dem Stoßbetrieb-Zugriff auf den Texturraum ein unnötiges thrashing der Seiten und eine begrenzte Wiederverwendung von zwischengespeicherten Flächen aufgrund der schlechten Lokalität der Texel-Bezüge.
  • Ein weiteres Problem ergibt sich, wenn der Stoßbetrieb-Zugriff verwendet wird, um auf einen Texturspeicher zuzugreifen. Der Stoßbetrieb frägt typischerweise ein Datensegment mit einer festen Länge ab, die der Breite des Speicherbuses (z.B. 64 Bit oder 128 Bit) entspricht. Daher ruft der Stoßbetrieb-Zugriff auf den Texturraum typischerweise mehr Daten ab, als sofort benötigt werden. Herkömmliche Texturspeichermechanismen speichern die nicht benötigten Daten zur späteren Wiederverwendung nicht angemessen zwischen. Daher können zusätzliche Zugriffe auf diese Daten erzeugt werden, wo eine verbesserte Lokalität ein effektiveres Zwischenspeichern und Wiederverwenden der zuvor abgerufenen Datensegmente ergeben hätte.
  • Im Artikel "Talisman: Commodity Realtime 3D Graphics for the PC", Computer Graphics Proceedings, Annual Conference Series, 1996, S. 353–363, schlagen Torborg et al. ein Verfahren zur Verarbeitung von 3D-Objekten als Primitive vor. Dabei werden Bildebenen in 32×32 Pixelgebiete aufgeteilt, welche dann einzeln verarbeitet werden, woraus sich eine verringerte Verarbeitungskapazität wie beim grafischen Speicher ergibt. Die grafische Verarbeitung beinhaltet Texturabbilden, Entfernen von versteckten Flächen, Anti-Aliasing und Schattieren. Anders als andere Techniken wird kein Bildpuffern zum Verarbeiten verwendet, sondern ein Speichern und Verarbeiten auf einer Vielzahl unabhängiger Bildebenen, welche dann in Videogeschwindigkeiten zusammengesetzt werden, um die Videosignale zu erzeugen.
  • Was benötigt wird, ist ein System und ein Verfahren, zum Verringern der Speicherbandbreite durch ein Minimieren des Seitenschaltens in herkömmlichen Speichern mit seitenweisem Betrieb, um so die Leistung von Grafik- Funktionsmaschinen für einen weiten Bereich von Client-Algorithmen zu verbessern, ohne dabei die Anzahl der Komponenten oder die Gesamt-Kosten wesentlich zu erhöhen. Was speziell benötigt wird, ist ein System und Verfahren, zum Verbessern der Lokalität von Texel-Bezügen gegenüber den bestehenden Kantendurchlauf- und Bereichsdurchlauftechniken, und ein verbessertes Stoßzugriff-Schema für den Texturraum, das eine verbesserte Wiederverwendung von abgefragten Daten ergibt.
  • Die Erfindung wird in Anspruch 1 bzw. 18 definiert.
  • Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche.
  • Zusammenfassung der Erfindung
  • Gemäß der vorliegenden Erfindung ist ein System und ein Verfahren zum block- und bandorientierten Durchlauf beim Wiedergeben (Rendern) von Dreiecks-Primitiven bei einem dreidimensionalen grafischen System vorgesehen, um das Seitenschalten zu minimieren und die Leistung der Grafik-Funktionsmaschine zu erhöhen.
  • Die vorliegende Erfindung verwendet einen Textur-Cachespeicher, um die Bandbreite des Zugriffs auf die Texturabbildung zu verbessern. Eine maximierte Bandbreite wird durch Verwenden eines Stoßbetrieb-Zugriffs auf Hochgeschwindigkeits-Cachespeicher mittels eines Schemas erreicht, das eine verbesserte Wiederverwendung von zuvor abgerufenen Daten vorsieht. Der Textur-Cachespeicher speichert Texel, die einer bestimmten Region zugeordnet sind, um den Zugriff zu verbessern. Eine Lokalität im Texturraum ist durch die Texturkoordinate eines jeden Pixels bestimmt. Der Textur-Cachespeicher hat eine endliche Abmessung; deshalb werden Teile des Cachespeichers ausgelagert, wenn es weniger wahrscheinlich wird, dass unmittelbar auf sie zugegriffen wird. Die Auslagerung wird entsprechend der Lokalität ausgeführt. Daher verbessert sich die Textur-Cachespeicher-Trefferrate, welche die Rate darstellt mit der auf Texel durch Bezugnahme auf den Textur-Cachespeicher zugegriffen wird, wenn die Lokalität des Durchlaufs verbessert wird. Die vorliegende Erfindung ist auf eine verbesserte Lokalität von Texel-Bezügen gerichtet, um so die Textur-Cachespeicher-Trefferrate zu verbessern, insbesondere in Verbindung mit dem Stoßbetrieb-Zugriff.
  • Die Dreieckswiedergabe wird durch die bekannten Techniken des Kantendurchlaufs und Bereichdurchlaufs ausgeführt. Jeder Bereich des Dreiecks wird bestimmt und dann durchlaufen.
  • Um sich auf die oben diskutierten Probleme zu beziehen, verwendet eine Ausgestaltung der folgenden Beschreibung das Bilden von Kacheln, ein verbessertes Textur-Speicher-Schema, und eine modifizierte Durchlauftechnik, um die Lokalität der Texel-Bezüge zu verbessern und dadurch die Trefferrate zu erhöhen.
  • Das Bilden von Kacheln verbessert die Lokalität der Bildraumabtastung, wie oben beschrieben. Typischerweise benötigt eine Wiedergabe von Primitiven im Bildraum weniger Seitenumbrüche, wenn ein Kachel-Adressierungs-Schema verwendet wird.
  • Bei einer Ausgestaltung verwendet die vorliegende Erfindung weiterhin ein verbessertes Textur-Speicher-Schema, wodurch der Texturraum in "Quadrate" (welche nicht tatsächlich quadratisch sein müssen, sondern rechteckig sind oder eine andere Form haben können) einer bestimmten Größe unterteilt wird, wie 4×4 Texel. Jedes Textur-Quadrat wird in einer zusammenhängenden Region des Speichers repräsentiert. Ein Stoßbetrieb-Zugriff gemäß einer festgelegten Bit-Ausrichtung und Breite des Speicherbuses ergibt ein Abrufen von mehr Daten, als zum Wiedergeben des bestimmten, in Verarbeitung stehenden Liniensegments benötigt wird. Das abgerufene Datensegment wird zur späteren Verwendung zwischengespeichert. Das verbesserte Textur-Speicher-Schema sieht eine verbesserte Trefferrate für das zwischengespeicherte Datensegment vor, indem die diagonale Ausrichtung von typischen Liniensegmenten im Texturraum ausgenützt wird. Speziell dienen Textur-Quadrate dazu, Seitenbrüche zu verringern, wenn der Textur-Cachespeicher durchlaufen wird.
  • Schließlich verwendet die vorliegende Erfindung ein Schema zum Durchlaufen des Bildraums, das eine verbesserte Lokalität von Textur-Zugriffen vorsieht. Das Verfahren der vorliegenden Erfindung unterteilt das Bild in eine Vielzahl von Blöcken oder Bändern im Bildraum. Jeder Block oder jedes Band hat eine feste Breite und Höhe, wie zum Beispiel 8×8 Pixel oder 16×16 Pixel. Eine Bildprimitive wie ein Dreieck kann jede Anzahl von Blöcken oder Bändern im Bildraum überspannen. Der Teil der Primitiven, der in irgendeinem bestimmten Block oder Band liegt, kann daher als eine Vielzahl von horizontalen Bereichen ausgedrückt werden, wobei jeder Bereich entsprechend der festen Breite der Blöcke oder Bänder eine maximale Breite hat. Bestimmte Durchlauf-Wege werden gemäß der geometrischen Merkmale der wiedergegeben Primitiven ausgewählt.
  • Ein MIP-Abbildungstextur-Abbildungs-Schema verwendet einen geeigneten Detailgrad (level of detail, LOD), der basierend auf dem vorhandenen Texturraum und der Größe der wiedergegebenen Primitiven festgelegt wird. Der LOD stellt daher einen Skalierungsfaktor dar, der durch Mitteln oder anderes Filtern von Pixelwerten für einen Satz von Pixeln im Bildraum implementiert wird, um einen Texelwert für ein einzelnes Texel im Texturraum abzuleiten. Die Rechengeschwindigkeit wird durch das Beschränken der LOD-Skalierungsfaktoren auf Zweierpotenzen verbessert, obwohl das keine Vorraussetzung der vorliegenden Erfindung ist.
  • Jeder Bereich im Bildraum entspricht einem Liniensegment im Texturraum. Bei einem gegebenen MIP-Abbildungstextur-Abbildungs-Schema ist die Länge des Liniensegments im Texturraum deterministisch begrenzt auf weniger oder gleich 1,41w, wobei w die feste Größe der Blöcke oder Bänder im Bildraum ist.
  • Für eine feste Größe von 8 Pixeln im Bildraum ist die maximale Länge eines Liniensegments im Texturraum 1,41 × 8 = 11,28, was sich zu 12 Texeln aufrundet. In einigen Fällen, in denen gebrochene Skalierungskomponenten eher durch Kürzen als durch Runden aufgelöst werden, wie später unten detaillierter erklärt wird, kann ein Maximum eines Liniensegments im Texturraum 16 Pixel erreichen. Ein Textur-Cachespeicher mit einer Größe von 12×12 (oder wenn Kürzen verwendet wird, 16×16) Texeln wird daher gewährt, damit es möglich ist, die volle Breite oder Höhe einer Block- oder Bandunterteilung jeglicher Primitiven zu speichern, so dass ein Durchlaufen der unterteilten Primitiven keine Auslagerung des Textur-Cachespeichers benötigt.
  • Bei einer vorgegebenen festen maximalen Größe irgendeines Segments im Texturraum (12 Texel oder 16 Texel im obigen Beispiel) muss eine vorgegebene Anzahl von Textur-Cachespeicher-Quadraten für einen zusammenhängenden Zugriff verfügbar sein, um die Lokalität des Speichers zu gewährleisten. Im idealen Fall, bei dem die Ausrichtung der Segmente im Texturraum entweder horizontal oder vertikal ist, ist die Anzahl der Textur-Cachespeicher-Quadrate durch das Teilen der maximalen Segmentlänge im Texturraum durch die Größe der Textur-Cachespeicher-Quadrate bestimmbar. Daher könnte beim obigen Beispiel die maximale Segmentlänge von 12 Texeln durch drei nebeneinander liegende 4×4 Texel-Quadrate dargestellt werden, wenn die Segmente vertikal oder horizontal ausgerichtet wären. Im ungünstigsten Fall, bei dem das Segment unter 45 Grad im Texturraum ausgerichtet ist, werden im ungünstigsten Fall eine Gesamtzahl von 13 Quadraten mit einer Größe von 4×4 benötigt. Wenn daher 13 Textur-Cachespeicher-Quadrate vorgesehen und für einen zusammenhängenden Zugriff verfügbar sind, ist die Lokalität für alle Liniensegmente gewährleistet für Quadrate und Bänder mit 8 Pixeln im Bildraum.
  • Ein weiterer Vorteil der vorliegenden Erfindung unter Verwendung eines Blocks oder Bands mit einer Breite von 8 Pixeln ist, dass solche Unterteilungen sich normalerweise zu Seitengrenzen ausrichten und dadurch eine gute Lokalität im z-Puffer ergeben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1. ist ein Diagramm, das Textur-Abbilden gemäß dem Stand der Technik zeigt.
  • 1A ist ein Diagramm, das ein lineares Adressierungs-Schema gemäß dem Stand der Technik zeigt.
  • 1B ist ein Diagramm, das ein Kachel-Adressierungs-Schema gemäß dem Stand der Technik zeigt.
  • 2A ist ein Diagramm, einer Dreiecks-Primitiven im Bildraum gemäß dem Stand der Technik.
  • 2B ist ein Diagramm eines Textur-Bildes im Texturraum gemäß dem Stand der Technik.
  • 2C ist ein Diagramm einer Textur-abgebildeten Dreiecks-Primitiven im Bildraum gemäß dem Stand der Technik.
  • 3 ist ein Ablaufdiagramm eines Verfahrens zum Kanten- und Bereichsdurchlauf gemäß dem Stand der Technik.
  • 4A ist ein Diagramm einer Dreiecks-Primitiven im Bildraum gemäß der vorliegenden Erfindung.
  • 4B ist ein Diagramm eines Blocks im Bildraum zum Durchlaufen gemäß der vorliegenden Erfindung.
  • 4C ist ein Diagramm eines Gebiets im Texturraum, der dem Block von 4B entspricht.
  • 4D ist ein Diagramm eines Bandes im Bildraum zum Durchlaufen gemäß der vorliegenden Erfindung.
  • 5 ist ein Diagramm eines Beispiels des MIP-Abbildungtextur-Abbildens gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • 6 ist ein Diagramm einer Implementierung der Texturabbildung mit Quadraten.
  • 7A und 7B sind Diagramme eines Liniensegments im Texturraum.
  • 8 ist ein Blockdiagramm eines Systems zum Anwenden der vorliegenden Erfindung.
  • 9A ist ein Diagramm einer Dreiecks-Primitiven im Bildraum mit einer Liniensegment-Komponente.
  • 9B ist ein Diagramm eines Liniensegments im Texturraum.
  • 9C ist ein Diagramm, das den Stoßbetrieb-Abruf eines Liniensegments im Texturraum unter Verwendung eines linearen Adressierungs-Schemas darstellt.
  • 9D ist ein Diagramm, das den Stoßbetrieb-Abruf eines Liniensegments im Texturraum darstellt, der in Quadrate unterteilt ist.
  • 10 ist ein detailliertes Diagramm, das ein Beispiel eines Liniensegments im Texturraum zeigt.
  • 11A bis 11D sind Diagramme von Durchlauf-Wegen im Bildraum.
  • 12 ist ein Ablaufdiagramm eines Verfahrens zur Auswahl eines Durchlauf-Wegs.
  • 13 ist ein Diagramm eines Durchlauf-Wegs im Bildraum, einschließlich der Reihenfolge des Pixel-Durchlaufs.
  • Detaillierte Beschreibung der Erfindung
  • Nun wird unter Bezug auf 8 ein System 800 zur Anwendung der vorliegenden Erfindung gezeigt. Ein Texturspeicher 801 enthält eine zweidimensionale Darstellung einer Textur, die auf Primitive abgebildet werden soll. Ein Cachespeicher 802 sieht ein temporäres Speichern von Teilen des Texturspeichers 801 vor, um die Zugriffgeschwindigkeit zu verbessern, wie unten detaillierter beschrieben wird.
  • Grafikprimitive sind in einem Primitiven-Speicherteil des Speichers (nicht gezeigt) gespeichert und legen die Abmessung und die Form der grafischen Elemente fest, wie anzuzeigende Dreiecke oder andere Polygone. Primitive werden durch ein Dreieck-Setup-Modul 810 verarbeitet und unter Verwendung eines Kantendurchlauf-Moduls 809 und eines Bereichdurchlauf-Moduls 808 durchlaufen, um die unten beschriebenen Abtast- und Durchlauftechniken zu implementieren. Eine Texturabbildungs-Funktionsmaschine(-Engine) 803 führt die Operation des Abbildens von Texturen, die im Texturspeicher 801 gespeichert sind, auf Primitiven aus. Ein Pixelverarbeitungs-Modul 807 führt dann das z-Puffern, Texturbeleuchten, Vernebeln, Alphavermischen und andere Pixeloperationen aus und schreibt das resultierende Wiedergabe-Bild in den Bildpufferspeicher 805 oder einen anderen Videospeicher. Das Bild im Bildpufferspeicher 805 wird an die Anzeige 806 übermittelt. Die vorliegende Erfindung bezieht sich auf die Operation der Texturabbildungs-Funktionsmaschine 803 und ihre Beziehungen zu den anderen Komponenten der 8.
  • Nimmt man nun Bezug auf 2A, so ist eine Dreiecks-Primitive 200 im Bildraum gezeigt, die durch das Zugreifen auf eine Texturabbildung 219 im Texturraum wiedergegeben wird. Die Primitive 200 stellt typischerweise ein Element eines Grafikbildes auf dem Anzeigenschirm 806 dar und die Texturabbildung 219 enthält ein Grafikmuster oder Bild 220, das auf die Primitive 200 abgebildet werden soll. Das Bild 220 in der Texturabbildung 219 kann verzerrt werden, wenn es auf die Primitive 200 abgebildet wird, um so den Eindruck zu erwecken, dass es unter einem Winkel im dreidimensionalen Raum betrachtet wird. Zum Beispiel kann in einem Videospiel die Primitive 200 einen Teil eines Raumschiffs, das durch den Raum fliegt, darstellen und die Texturabbildung 219 kann ein Grafikbild der Markierungen und anderer Oberflächenmerkmale des Raumschiffteils enthalten. Um den Eindruck einer dreidimensionalen Bewegung zu erwecken, kann der Teil des Raumschiffs, der durch die Primitive 200 dargestellt wird, gestreckt oder auf andere Weise verzerrt werden, so dass es erscheint als ob es unter einem Winkel im dreidimensionalen Raum betrachtet wird. Wenn das Texturbild 220 auf die Primitive 200 abgebildet ist, ist es ähnlich gestreckt und verzerrt, um die Wirkung zu erhalten und zu steigern.
  • Kanten- und Bereichsdurchlauf
  • Um das Texturbild 220 auf die Primitive 200 abzubilden wird typischerweise eine als Kanten- und Bereichdurchlauf bekannte Technik verwendet. Auch unter Bezugnahme auf 3 ist ein Ablaufdiagramm eines Kanten- und Bereichsdurchlauf-Prozesses gezeigt. Sobald die Primitive 200 im Bildraum festgelegt 301 wurde, werden Bereiche 202 von horizontalen Pixelreihen im Bildraum festgelegt. Jeder Bereich hat einen eindeutigen y-Wert, der die Pixelreihe oder den Abstand von der x-Achse darstellt. Jeder Bereich ist durch zwei Kanten der Primitiven 200 abgegrenzt, von denen jede durch eine lineare Gleichung definiert sein kann. Zum Beispiel ist in 2A der Bereich 203 durch seinen y-Wert 206 festgelegt, der die "Höhe" oder Reihennummer des Bereichs darstellt. Die Abgrenzungen des Bereichs sind durch die lineare Gleichungen definiert, die die Kanten 204 und 205 der Primitiven 200 beschreiben, die ihrerseits wieder von den drei Dreieckspunkten, die die Primitive 200 festlegen, abgeleitet sein können. Um daher die Bereiche 202 festzulegen, sind die Kanten auf Basis der Merkmale der Primitiven 200 festgelegt und die Bereiche 202 sind auf Basis der Kanten festgelegt 303. Jeder Bereich 202 enthält eine bestimmte Anzahl von Pixeln in Abhängigkeit des Unterschieds zwischen den Begrenzungskoordinaten der Kanten.
  • Die Primitive 200 wird Bereich-für-Bereich durchlaufen und für jeden Bereich werden die Pixel innerhalb des Bereichs in der Reihenfolge von links-nach-rechts verarbeitet. Ein erster Bereich 202 wird ausgewählt 304 und ein erstes Pixel 305 innerhalb des ausgewählten Bereichs 202 wird bestimmt. Typischerweise stellt das erste Pixel des ersten Bereichs das ganz linke Pixel des obersten Bereichs dar, obwohl andere Bereichsdurchlauf- und/oder Kantendurchlauf-Schemata verwendet werden können, wie unten in Verbindung mit 11A bis 11D detaillierter diskutiert wird.
  • Nimmt man nun auch auf 2B Bezug, so wird ein Texel der Texturabbildung 201 abgerufen 306, das dem ausgewähltem Pixel entspricht. Ein MIP-Abbildungstextur-Abbilden wird verwendet, wie in der Technik bekannt, so dass eine Vielzahl von Texeln der Texturabbildung 219 durch Mitteln oder eine andere Filtertechnik kombiniert werden können, um einen Wert für die ausgewählten Pixel zu erzeugen. Auf diese Weise werden unterschiedliche Detailgrade unterstützt, so dass für sehr kleine Primitive 200 ein unnötiges Abrufen von überflüssigen Texeldaten vermieden wird. Bei einigen Ausgestaltungen können mehrere Versionen des Texturabbildungsbildes 220 in unterschiedlichen Detailgraden gespeichert werden, so dass keine Laufzeitberechnung ausgeführt werden muss, um gefilterte Pixelwerte mit dem gewünschten Detailgrad zu erzeugen.
  • Zum Zweck der Erläuterung wird in der vorliegenden Diskussion des Kanten- und Bereichsdurchlaufs angenommen, dass kein Texelfiltern stattfindet. Daher wird ein einzelnes Texel abgerufen und seine Daten werden für das ausgewählte Pixel in der Primitiven 200 wiedergegeben. Zum Beispiel kann das Pixel 201 der Primitiven 200 dem Texel 221 des Texturbildes 220 entsprechen, so dass das Texel 221 abgerufen und beim Wiedergeben des Pixel 201 im Bildraum verwendet werden würde. Andere Pixel der Primitiven 200 werden ähnlich verarbeitet.
  • Eine Kontrolle wird ausgeführt 307, um zu bestimmen, ob das Ende des gegenwärtigen Bereichs erreicht wurde. Diese Kontrolle kann zum Beispiel durch ein Vergleichen der x-Koordinate des gegenwärtig ausgewählten Pixels mit der Begrenzungskante 205 der Primitiven 200 ausgeführt werden. Falls das Ende des Bereichs noch nicht erreicht wurde, wird das Bereichsdurchlaufen durch Auswählen 308 des nächsten Pixels im Bereich und Wiederholen des Texel-Abrufs 306 fortgesetzt. Bei einer Ausgestaltung wird die Leistung eher durch Abrufen und Verarbeiten jedes Bereichs mittels Stoßbetrieb-Zugriff verbessert, als auf einer Pixel-für-Pixel-Basis. Der Stoßbetrieb-Zugriff wird unten detaillierter diskutiert in Verbindung mit 9A bis 9D.
  • Ein Texel-Abruf 306 für fortlaufende Texel während des Bereichsdurchlaufs wird durch ein Bestimmen eines Texel-Durchlaufvektors im Texturraum ermöglicht, der einer Bewegung eines einzelnen Pixel im Bildraum entspricht. Der Texturdurchlaufvektor stellt eine Entfernung und eine Richtung des Durchlaufs im Texturraum dar, der einem Durchlauf eines einzelnen Pixels in der x-Richtung im Bildraum entspricht. Der Texel-Durchlaufvektor hängt daher von den relativen Größen und Ausrichtungen der Bildraums-Primitiven 200 und der Texturabbildung 220 ab. Im Allgemeinen ergibt eine relativ große Primitive 200, die wie in 2A gezeigte, einen relativ kleinen Texel-Durchlaufvektor, da der Durchlauf eines einzelnen Pixels im Bildraum weniger als einen Ein-Texel-Durchlauf im Texturraum darstellt; daher können zwei oder mehr aufeinanderfolgende Pixel auf das gleiche Texel im Texturbild 220 abgebildet werden. Umgekehrt ergibt eine relativ kleine Primitive 200 einen relativ großen Texel-Durchlaufvektor, da die Texturabbildung herunterskaliert ist und einzelne Texel ausgelassen werden können.
  • Sobald das Ende des Bereiches erreicht wurde, wird eine Kontrolle ausgeführt, um zu festzustellen 309, ob weitere Bereiche 202 vorhanden sind. Diese Kontrolle kann zum Beispiel durch ein Vergleichen des y-Wertes des gegenwärtigen Bereichs mit den y-Wert Eigenschaften der Primitiven 200 ausgeführt werden. Falls zusätzliche Bereiche bestehen, wird der nächste Bereich ausgewählt 310 und wie oben beschrieben durchlaufen. Falls keine weiteren Bereiche bestehen, wurde die Primitive voll wiedergegeben und ist bereit zur Anzeige.
  • Nimmt man nun auch auf 2C Bezug, so ist ein Beispiel einer wiedergegebenen Primitiven 240 mit der gleichen Form wie die der Primitiven 200 gezeigt, die aber jetzt ein Muster enthält, das durch ein Abbilden des Texturabbildungsbildes 220 auf die Primitive 200 erzeugt wurde.
  • Das oben beschriebene Verfahren zum Bereichsdurchlauf schließt allgemein ein sequentielles Verarbeiten der Pixel ein, da der horizontale Durchlauf der Reihe nach auf jedes Pixel zugreift. Das Speichern von Pixeldaten im Speicher erfolgt im Allgemeinen in einem von links-nach-rechts Muster, bei dem benachbarte Pixel in benachbarten Speicherstellen gespeichert werden. Daher wird der horizontale Durchlauf für den Bereichsdurchlauf typischerweise durch ein Zugreifen auf aufeinanderfolgende Speicherstellen im Bildspeicher 805 implementiert. Die Lokalität des Speichers während des Bereichsdurchlauf-Prozesses von einzelnen Bereichen wird erhalten und Seitenumbrüche werden im Allgemeinen vermieden, um so die Leistung zu erhöhen.
  • Wenn jedoch das Ende eines Bereichs erreicht ist und der nächste Bereich bearbeitet werden soll, kann eine Unstetigkeit beim Abrufen der Pixeldaten-Speicheradresse entstehen. Mit anderen Worten, die Speicherstelle für das letzte Pixel in einem gegebenen Bereich könnte nicht an die Speicherstelle für das erste Pixel im nächsten Bereich angrenzen. Wenn Bereiche ausreichend lang sind, kann der Sprung von einem Bereich zum nächsten einen Seitenbruch verursachen und dabei wie oben beschrieben die Leistung beeinträchtigen.
  • Block- und bandorientierter Durchlauf
  • Nimmt man nun auf 4A Bezug, so ist eine Primitive 200 im Bildraum mit einer ähnlichen Größe und Form wie zuvor in 2A dargestellt. Blöcke 401 mit festen x- und y-Größen werden verwendet, um den Bildraum und die Primitive 200 zu unterteilen. Bei einer Ausgestaltung sind die Größen der Blöcke 401 acht Pixel auf acht Pixel, obwohl jede passende Größe verwendet werden kann.
  • Das Bereichsdurchlaufen läuft unter Verwendung eines Block-für-Block Durchlauf-Schemas ab, um so die Lokalität des Speichers zu verbessern und die Seitenbrüche zu reduzieren. Nimmt man nun auch auf 4B Bezug, so ist eine Primitive 200 im Bildraum mit einem Block 402 gezeigt, der für einen Durchlauf gekennzeichnet ist. Zum Zweck der Erläuterung ist Block 402 mit einer Breite von acht Pixeln und einer Höhe von acht Pixeln gezeigt. Die Bereiche 403 sind wie oben beschrieben festgelegt, aber mit dem zusätzlichen Begrenzer der Blockgrenzen. Der Blockgrenzen-Begrenzer gewährleistet, dass alle Bereiche eine maximale Länge haben, die der horizontalen Größe des Blocks entspricht. Die Größe kann ausreichend klein gewählt werden, um Seitenbrüche zu vermeiden, wenn von einer Abtastlinie zur nächsten gesprungen wird.
  • Bei einer alternativen Ausgestaltung werden Bänder anstelle der Blöcke 401 verwendet, wobei die Bänder eine feste x-Größe oder feste y-Größe haben. Nimmt man nun auch auf 4D Bezug, so ist eine Primitive 200 im Bildraum gezeigt, die eine ähnliche Größe und Form wie zuvor in 2A gezeigt hat. Hier sind Bänder 405 anstelle der Blöcke 401 festgelegt. Bandgrenzen dienen als Begrenzer für den Bereichsdurchlauf und gewährleisten eine maximale Bereichslänge, die der Band-Größe entspricht. Wie bei Block-Größen können Band-Größen ausgewählt werden, um Seitenbrüche beim Springen von einer Abtastlinie zur nächsten zu vermeiden.
  • Wie für Fachkundige offensichtlich, können alternative Ausgestaltungen verwendet werden, die andere Formen der Unterteilung verwendet werden, wie horizontale Bänder oder Blöcke mit veränderlicher Form, ohne vom Wesen der vorliegenden Erfindung abzuweichen.
  • Bei der Ausführung eines Durchlaufs mittels Blöcken oder Bändern wählt die bevorzugte Ausgestaltung aus vier verschiedenen Durchlauf-Wegen aus. Nimmt man nun auf 11A bis 11D Bezug, so sind Durchlauf-Wege 1101 zum Durchlaufen der Kacheln 122 gezeigt. 11A zeigt einen links-nach-rechts, von oben-nach-unten Weg; 11B zeigt rechts-nach-links, von oben-nach-unten; 11C zeigt links-nach-rechts, von unten-nach-oben; und 11D zeigt rechts-nach-links, von unten-nach-oben.
  • Ähnliche Durchlauf-Wege können auch auf Unterteilungen in Kachelform angewendet werden. Durchlauf-Wege, die eher vertikale Abtastlinien als horizontale Abtastlinien einschließen, können auch implementiert werden.
  • Nimmt man nun auf 12 Bezug, so ist ein Verfahren zum Bestimmen gezeigt, welcher Durchlaufweg verwendet werden soll, gemäß einer Ausgestaltung der vorliegenden Erfindung. Eine Primitive wie ein Dreieck mit drei Eckpunkten wird angenommen, wobei jeder Eckpunkt eine x-Koordinate und eine y-Koordinate im Bildraum hat. Zum Zweck dieser Diskussion wird ein Ursprung (x,y = 0,0) an der oberen linke Ecke angenommen.
  • Die drei Eckpunkte sind nach ihrer y-Koordinate geordnet 1201 und mit 0, 1, 2 gekennzeichnet. Daher hat der Eckpunkt 1 eine y-Koordinate zwischen den y-Koordinaten der Eckpunkte 0 und 1. Falls der Eckpunkt 1 rechts vom Liniensegment, das die Eckpunkte 0 und 2 verbindet, liegt (Schritt 1202), wird ein links-nach-rechts Durchlauf ausgewählt 1203. Sobald diese Auswahl vorgenommen wurde, werden die x-Koordinaten der Eckpunkte 0 und 2 verglichen 1204. Falls die x-Koordinate des Eckpunkts 2 kleiner als die x-Koordinate des Eckpunkts 0 ist, wird ein von unten-nach-oben Durchlauf ausgewählt 1205. Dies ist der der in 11C gezeigte Durchlaufweg. Andernfalls wird ein von oben-nach-unten Durchlauf ausgewählt 1207, welcher der in 11A gezeigte Weg ist.
  • Falls bei 1202 der Eckpunkt 1 nicht rechts vom Liniensegment liegt, das die Eckpunkte 0 und 2 verbindet, wird ein rechts-nach-links Durchlauf ausgewählt 1208. Sobald diese Auswahl vorgenommen wurde, werden die x-Koordinaten der Eckpunkte 0 und 2 verglichen 1209. Falls die x-Koordinate des Eckpunkts 2 kleiner als die x-Koordinate des Eckpunkts 0 ist, wird ein von oben-nach-unten Durchlauf ausgewählt 1207. Dies ist der in 11B gezeigte Durchlaufweg. Andernfalls wird der von unten-nach-oben Durchlauf ausgewählt 1205, welcher der in 11D gezeigte Weg ist.
  • Die Durchlaufwege, die in 11A bis 11D gezeigt sind, beziehen sich auf Blöcke oder Bänder. Innerhalb der Blöcke oder Bänder werden einzelne Pixel durchlaufen. In einer Ausgestaltung wird der Durchlauf von individuellen Pixeln entsprechend einem Weg ausgeführt, der analog zum Block-Durchlaufweg ist, obwohl andere Wege verwendet werden können. Nun wird in Bezug auf 13 ein Beispiel für einen Einzel-Pixel-Durchlauf gezeigt, entsprechend einem von links-nach-rechts, von unten-nach-oben Durchlaufweg. Die Wiedergabe-Reihenfolge von einzelnen Pixeln wird durch Zahlen 1 bis 117 angezeigt.
  • Nimmt man wieder in Bezug auf 4B, so enthält Block 402 eine Anzahl von Abtastlinien 403, die durch die vertikale Größe des Blocks 402 begrenzt wird. Wie zuvor bemerkt, ist die Breite jeder Abtastlinie durch die horizontale Größe des Blocks 402 begrenzt. Beim gezeigten Beispiel ist jede dieser Größen acht Pixel. Auch in Bezug auf 4C wird eine Texturabbildung 219 gezeigt, die ein Texturbild 220 enthält, wie oben in Verbindung mit 2B beschrieben. Das Quadrat 420 des Texturraums stellt das Gebiet des Texturbildes 220 dar, das dem Block 402 von 4B entspricht. Daher wird auf die Texel, die im Quadrat 420 des Texturraums enthalten sind, beim Prozess des Durchlaufens des Blocks 402 sequentiell zugegriffen. Falls ein Textur-Cachespeicher 802 implementiert wird, resultiert aus der verbesserten Lokalität im Texturraum eine verbesserte Leistung beim Zugriff auf einzelne Texel. Es ist vorteilhaft, wenn die Speicherstellen, die Texel-Darstellungen für Texel im Quadrat 420 enthalten, in ausreichender unmittelbarer Nähe zueinander zu liegen, um so Seitenbrüche bei Speicherzugriffen im Texturraum zu vermeiden und die Verwendung des Textur-Cachespeichers 802 zu maximieren. Insbesondere wird der Stoßbetrieb-Zugriff auf den Textur-Cachespeicher 802 bei ausreichender Lokalität und Zusammenhang der Speicheradresse ermöglicht. Wie im Fachgebiet bekannt, liefert der Stoßbetrieb-Zugriff eine bedeutend gesteigerte Leistung bei Abrufoperationen.
  • Bei der bevorzugten Ausgestaltung werden die Größe des Quadrats 402 und die Abmessung des Textur-Cachespeichers unter Berücksichtigung der Lokalität des Texturraums ausgewählt, um so die oben beschriebenen Ziele zu erreichen. Zum Beispiel ist für ein Quadrat 402 mit einer Größe von acht Pixeln die maximale Bereichslänge im Bildraum acht Pixel. Da ein Skalieren beim Ausführen des Texturabbildens verwendet werden kann, kann ein acht-Pixel Bereich in Abhängigkeit vom Skalierungsfaktor einem Bereich von jeder Länge im Texturraum entsprechen. Um die Unsicherheit der maximalen Bereichslänge im Texturraum zu beseitigen und auch um die Effizienz bei der Skalierung der Texturabbildung zu verbessern, wird ein MIP-Abbildungstextur-Abbilden verwendet.
  • MIP-Abbildungstextur-Abbilden
  • Nimmt man nun auf 5 Bezug, so ist ein Beispiel einer MIP-Abbildungstextur-Abbildung gezeigt. Eine Texturabbildung 501 ist mit einer Größe von 512 Texeln auf 512 Texeln gezeigt. Ein Texturbild in voller Größe ist in der Texturabbildung 501 gespeichert. Zusätzliche Darstellungen 502, 503 des Texturbildes mit sukzessive niedrigeren Detailgraden sind auch gezeigt. Der Detailgrad, repräsentiert durch einen Wert d, stellt einen Skalierungsfaktor dar, der beim Texturabbilden verwendet wird. Wenn zum Beispiel das Texturbild auf einer relativ kleinen Primitiven wiedergegeben werden soll, wie auf einer, die eine größere wahrgenommene Entfernung hat, wird weniger Detail benötigt als wenn das Texturbild auf einer größeren Primitiven wiedergegeben werden soll. Kleinere Darstellungen 502, 503 werden erzeugt durch Mitteln oder anderes Filtern benachbarter Texel im Vollgrößen-Bild 501. Zum Beispiel wird eine Darstellung 502 eines 256-Texel Quadrates aus dem Vollgrößen-Bild 501 durch ein Filtern von Texelwerten für ein 2×2 Quadrat erzeugt, um einen Texelwert für ein einzelnes Texel in der kleineren Darstellung abzuleiten. Der Filterprozess wird für sukzessive größere Sets von Texeln ausgeführt, wenn der Detailgrad abnimmt (das 128-Texel Quadrat filtert 4×4 Quadrate etc.). Im Allgemeinen werden Texelwerte für N Texel in einem M×M Quadrat gefiltert (gemittelt), um ein Pixel in einer kleineren Darstellung zu erzeugen, wobei: M = (Breite des Vollgrößen-Bildes)/(Breite des kleineren Bildes) (Gl.1)und N = M2 (Gl.2)
  • Bei einer Ausgestaltung werden Texel "on-the-fly" gefiltert, während die Texel zur Wiedergabe abgerufen werden. Bei einer weiteren Ausgestaltung wird das Filtern der Texel im Voraus ausgeführt und mehrere Darstellungen in verschiedenen Abmessungen werden gespeichert. Mehrere Detailgrade sind daher in einem Berechnungs-Cache gespeichert, der das Texturbild in verschiedenen Auflösungen enthält. Obwohl diese Technik zu einer Verwendung von zusätzlichem Speicherraum für eine Vielzahl von Texel-Darstellungen führt, verbessert sie die Leistung, da die Zusatzberechnungen des Skalierens "on-the-fly" vermieden werden. Größen, die einer Zweierpotenz entsprechen, sind zur Erleichterung der Berechnungen bevorzugt, jedoch ist dies nicht erforderlich. Ein quadratisches Texturbild ist zum Zweck der Anschauung gezeigt, obwohl andere Formen wie Dreiecke und Rechtecke benutzt werden können. Insbesondere kann ein rechteckiges Texturbild verwendet werden, wobei die Skalierungsfaktoren entlang der u- und v-Achsen nicht gleich sind, so dass als Konsequenz eine höhere Kompressionsrate entlang der einen Achse als entlang der anderen Achse ausgeführt wird. Dies kann günstig sein, wenn zum Beispiel das bestimmte Bild eher eine zusätzliche Auflösung entlang einer horizontalen Achse benötigt als entlang einer vertikalen Achse. Jedoch werden in der folgenden Diskussion einheitliche Skalierungsfaktoren entlang beider Achsen angenommen.
  • Die oben beschriebene MIP-Abbildungs-Skalierungstechnik ergibt eine größere Vorhersagbarkeit der maximalen Bereichslänge im Texturraum. Im Allgemeinen entspricht ein Ein-Pixel-Durchgang im Bildraum einem L-Pixel-Durchgang im Texturraum, wobei L vom Detailgrad (d) der zu verwendenden Darstellung im Texturraum abhängig ist. Speziell sind L und d miteinander durch den Ausdruck verbunden: L = 2d (Gl.3)oder umgekehrt d = log2L (Gl.4)
  • Bei einer Ausgestaltung wird die Texturabbildungsdarstellung von der MIP-Abbildungs-Sammlung von Darstellungen auf Basis von d ausgewählt. Wieder in Bezug auf 5 ist die Vollgrößen-Darstellung 501 als 0 bezeichnet, die Darstellung 502 als 1 bezeichnet, die Darstellung 503 als 2 bezeichnet, und sukzessive kleinere Darstellungen sind mit sukzessive höheren Werten von d bezeichnet. Falls daher L eine Zweier-Potenz ist, ist d ein ganzzahliger Wert und eine angemessene Texturabbildungsdarstellung kann ausgewählt werden, mit einer Texel-Größe, die gleich der Pixel-Größe L im Bildraum ist.
  • Wenn zum Beispiel L=4 ist, dann entspricht ein acht-Pixel Bereich im Bildraum 32 Texeln einer Vollgrößen-Texturabbildungsdarstellung, da 4×8 = 32 ist. Jedoch wird gegenüber der Verwendung einer Vollgrößen-Texturabbildungsdarstellung eher eine skalierte Darstellung verwendet werden, die einem Wert von d = log24 = 2 entspricht.
  • Die Darstellung 2 hat eine lineare Größe, die einem Viertel der Abmessung der Darstellung in voller Größe entspricht. Daher entspricht der acht-Pixel Bildraumbereich einem Texturraumbereich von acht Pixeln. Mit MIP-Abbildungs-Skalieren und mit einem Wert von L, der eine Potenz von Zwei ist, ist im Allgemeinen die Pixel-Größe des Bildraumbereichs immer gleich der Texel-Größe des entsprechenden Texturraumbereichs.
  • Falls L nicht auf Werte der Potenz von Zwei beschränkt ist, kann d = log2L eine gebrochene Komponente haben. d kann dann dargestellt werden als d = id + fd (Gl.5)wobei id die ganzzahlige Komponente und fd die gebrochene Komponente ist.
  • Wie oben diskutiert haben Texelabbildungs-Darstellungen jeweils eine Bezeichnung, die dem Wert von d entspricht. Bei einer Ausgestaltung, falls d keine ganze Zahl ist, wird die Texelabbildungsdarstellung ausgewählt, deren Bezeichnung am dichtesten beim Wert d liegt. Falls daher fd kleiner als 0,5 ist, wird die Texelabbildungsdarstellung mit der Bezeichnung id verwendet, und, falls fd größer als oder gleich 0,5 ist, wird die Texelabbildungsdarstellung mit der Bezeichnung id + 1 verwendet. Die Texelabbildungsdarstellung, die sich dem gewünschten Detailgrad am dichtesten annähert, wird daher gewählt.
  • Falls fd kleiner als 0,5 ist und die Texelabbildungsdarstellung id verwendet wird, ist die maximale Größe eines Texturraumbereichs gegeben durch: (maximaler Bildraumbereich) × 2d/2id (Gl.6)was dargestellt werden kann als: (maximaler Bildraumbereich) × 2(id+fd)/2id (Gl.7)und was sich reduziert auf: (maximaler Bildraumbereich) × 2fd (Gl.8)2fd hat einen maximalen Wert von 20,5 = 1,41, so dass der maximale Texturraumbereich nie mehr als 1,41-mal dem maximalen Bildraumbereich ist.
  • Falls fd größer als oder gleich 0,5 ist und die Texelabbildungsdarstellung id+1 verwendet wird, ist die maximale Größe eines Texturraumbereichs gegeben durch: (maximaler Bildraumbereich) × 2d/2id +1 (Gl.9)was dargestellt werden kann als: (maximaler Bildraumbereich) × 2(id+fd)/2id+1 (Gl.10) und was sich reduziert zu: (maximaler Bildraumbereich) × 2fd-1 (Gl.11) 2fd-1 hat einen minimalen Wert von 2-0,5 = 0,71, so dass der maximale Texturraumbereich nie weniger als 0,71-mal dem maximalen Bildraumbereich ist.
  • Bei einem gegebenen MIP-Abbildungs-Schema ist daher gewährleistet, dass der Texturraumbereich zwischen 0,71 × (Bildraumbereich) und 1,41 × (Bildraumbereich) fällt. Bei einer festen Blockbreite von acht Pixeln und daher einem maximalen Bildraumbereich von acht Pixeln wird der Texturraumbereich nie 1,41 × 8 = 11,28 Texel überschreiten. Aufgerundet hat die Breite des Texturraumbereichs eine maximale Größe von 12 Texeln. Das Textur-Cachespeicher-Auslagern kann daher durch ein Vorsehen von 12-Texel Bereichsweiten vermieden werden. Im Allgemeinen gewährleistet das MIP-Abbildungs-Schema, dass keine Seitenbrüche oder Auslagerungen während des Durchlaufens jedes gegebenen Blocks auftreten, falls der Textur-Cachespeicher 802 Bereiche von 1,41-mal der Breite des Blocks im Bildraum erlaubt.
  • Bei einer alternativen Ausgestaltung werden gebrochene Komponenten eher gekürzt als gerundet, so dass 2fd einen maximalen Wert von 21,0 = 2,00 hat. In diesem Fall ist der maximale Texturraumbereich nie mehr als das 2-fache des Maximums des Bildraumbereichs. Daher ergibt eine maximale Länge von acht Pixeln im Bildraum eine maximale Texellänge von 16 Texeln.
  • Entweder bei dem gerundeten oder gekürzten Schema kann eine Unterbrechung wahrgenommen werden, wenn der Wert von d wechselt, so dass eine andere Darstellung verwendet werden kann. Bei einigen Anwendungen, wie bei Videospielen, bei denen eine gleichmäßige Bewegung gewünscht ist, kann die Wirkung der Unterbrechung irritierend sein. Entsprechend wird bei einer anderen Ausgestaltung ein tri-lineares Texturabbildungs-Schema angewendet, wobei die beiden zwei nächsten Darstellungen gemittelt (oder auf andere Weise gefiltert) werden, um eine neue Darstellung zu erzeugen, die sich dem d-Wert dichter annähert. Falls daher zum Beispiel d = 2,9 ist, werden die Darstellungen für 2,0 und 3,0 abgerufen und unter Verwendung einer Filtertechnik kombiniert.
  • Zum Beispiel werden von jeder Darstellung vier Texel gemittelt, um zwei Texelwerte t2,0 und t3,0 zu erzeugen. Ein neuer Wert wird dann aus t2,0 und t3,0 mittels gewichteter Mittelung erzeugt, so dass: t2,9 = 0,1(t2,0) + 0,9(t3,0)oder allgemeiner: td = (1-fd)(tid) + fd(tid+1)
  • Das tri-lineare Abbildungs-Schema sieht eine abgestuftere Verschiebung von einer MIP-Abbildungsdarstellung zur nächsten vor und vermeidet die oben beschriebenen wahrgenommenen Unterbrechungen.
  • Texturabbildungsquadrate; Stoßbetrieb-Zugriff
  • Bei einer Ausgestaltung ist die Texturabbildung 101 entsprechend einer Architektur implementiert, in der die Abbildung in "Quadrate" unterteilt ist, und der Textur-Cachespeicher 802 speichert Segmente der Texturabbildung 101 auf einer Quadrat-für-Quadrat Basis. Der Begriff "Quadrat" wird so verwendet, dass er sich auf Texturabbildungsunterteilungen bezieht, um solche Unterteilungen von den zuvor beschriebenen Kacheln oder Blöcken zu unterscheiden. Jedoch können "Quadrate" tatsächliche jede Form haben, insbesondere nicht-quadratische Rechtecke.
  • Nun wird in Bezug auf 6 eine Implementierung der Texturabbildung 101 mit Quadraten 601 gezeigt. Jedes Quadrat 601 enthält eine Anzahl von Texeln 602. Zur erläuternden Darstellung sind 16 Texel, so gezeigt, dass sie ein Quadrat 601 in einer 4×4-Anordnung bilden, obwohl jede Anzahl verwendet werden kann. Der Textur-Cachespeicher 802 speichert Teile der Texturabbildung 101 auf einer Quadrat-für-Quadrat Basis durch Vorsehen einer Vielzahl von Cachelinien 604, wobei jede geeignet ist Daten zu speichern, die ein Quadrat 601 beschreiben. Beim gezeigten Beispiel sind 16 Bits 603 in jeder Cachelinie 604 gezeigt, die den 16 Texeln 602 in einem Quadrat 601 entsprechen. Eine Auslagerung vom Textur-Cachespeicher 802 tritt auf einer Quadrat-für-Quadrat Basis auf, so dass eine komplette Cachelinie 604 durch neue Daten ersetzt wird, wenn eine Auslagerung auftritt.
  • Die Auswirkungen der Implementierung der unterteilten Texturabbildung 101 im Zusammenhang mit der vorliegenden Erfindung sind wie folgend. Nun wird in Bezug auf 9A bis 9D ein Beispiel für die Operation der unterteilten Texturabbildung 101 in Verbindung mit dem Stoßbetrieb-Zugriff gezeigt. 9A zeigt ein vereinfachtes Beispiel der Dreiecksprimitiven 120 im Bildraum 103. Ein einzelnes horizontales Liniensegment 910 ist gezeigt, so wie es im Bildraum im Verlauf des Zeichnens der Primitiven 120 wiedergegeben werden würde.
  • Nun ist in Bezug auf 9B ein Liniensegment 902 im Texturraum 101 gezeigt. Das Liniensegment 902 entspricht dem Liniensegment 901 gemäß herkömmlicher Texturabbildungs-Techniken, wie oben beschrieben. Wie es typisch ist für Texturabbildungs-Operationen, ist das Texturraum-Liniensegment 902 diagonal, obwohl das entsprechende Bildraum-Liniensegment 901 horizontal ist.
  • Nun wird in Bezug auf 9C ein Beispiel eines Stoßbetrieb-Zugriffs auf die Texturabbildung 101 im Verlauf des Ausführens von Texturabbildungs-Operationen gezeigt. Um auf jedes Texel im Liniensegment 902 zuzugreifen, muss eine Anzahl von sukzessiven Texturraum-Zugriffen ausgeführt werden. Mit einem Speicherbus mit festgelegter Breite (z.B. 64-bit Breite), und unter Verwendung des Stoßbetrieb-Zugriffs, ruft jeder dieser Texturraum-Zugriffe ein Texturraum-Liniensegment 903 entsprechend der festgelegten Breite ab. Daher stellt in dem gezeigten Beispiel jedes Liniensegment 903 einen Byte-ausgerichteten zusammenhängenden 64-bit Bereich eines Texturspeichers dar. Ein Stoßbetrieb-Zugriff erfordert typischerweise, dass alle Textur-Zugriffe auf diese Weise stattfinden, so dass jeder Zugriff einen Teil des wiederzugebenden Liniensegments 902, und eine Fläche des Texturraums 101, der keine unmittelbare Verwendung hat, einschließt. Der nicht genutzte Teil jedes abgerufenen Liniensegments 903 kann in einem Textur-Cachespeicher zur späteren Verwendung gespeichert werden. Jedoch ist die Zugriffsrate für den Textur-Cachespeicher relativ niedrig, da nachfolgende Textur-Zugriffe typischerweise eher angrenzende Reihen als andere Teile der gleichen Reihe einschließen. Daher ergibt das Reihen-basierte lineare Zugriff-Schema von 9C niedrige Zugriffsraten für Textur-Cachespeicher und die meisten der zwischengespeicherten Teile werden eher verworfen als wiederverwendet. Nachfolgende Zugriffe auf ein bestimmtes Liniensegment 903 finden oft weit später statt, nachdem der Textur-Cachespeicher entleert wurde und benötigen daher ein Wiederladen ohne den Vorteil des Cachespeichers.
  • Nun wird in Bezug auf 9B ein Beispiel eines Stoßbetrieb-Zugriffs auf die Texturabbildung 101 mit einer unterteilten Texturabbildung gezeigt. Hier basiert das Addressierungs-Schema für die Texturabbildung 101 eher auf "Quadraten" 904 als auf horizontalen Reihen von Texeln. Zum Beispiel kann ein 64-bit Stoß eher ein Quadrat von 4×4 Texeln vorsehen als ein 16 Pixel Liniensegment. Tatsächliche Größen der Quadrate in Bezug auf die Busbreite hängen von der Bit-Tiefe der Texel ab.
  • Jedes Quadrat 904 wird in einer Cachelinie des Textur-Cachespeichers 802 gespeichert und wird wie für Cachespeicherung bekannt abgerufen oder verworfen. Ein Stoßbetrieb-Zugriff auf einen bestimmten Teil der Texturabbildung 101 ruft eher ein Quadrat als ein horizontales Liniensegment ab. Wie beim Beispiel von 9D ersichtlich, werden ungenutzte Teile des abgerufenen Stoßes effizienter für nachfolgende Teile des Liniensegmentes 902 wiederverwendet. Da im Allgemeinen Liniensegmente im Texturraum 101 typischerweise diagonal ausgerichtet sind, gehören nachfolgende Teile der Liniensegmente oft in das gleiche Quadrat, sind zuvor zwischengespeicherte Teile, und ergeben daher eine bessere Lokalität und Trefferrate als das lineare Addressierungs-Schema das in 9C veranschaulicht ist.
  • Zusätzlich ermöglicht das unterteilte Texturraum-Schema die Verwendung von weniger Textur-Cachespeicher-Linien ohne die Zugriffsrate zu verlieren. Jede Textur-Cachespeicher-Linie kann größer sein, da die Quadrat-Unterteilungsanordnung verbesserte Zugriffsraten ergibt. Die Verwendung von weniger Cachelinien verbessert die Leistung durch ein Verringern der Anzahl von Vergleichen, die zum Aufrechterhalten des Cachespeichers benötigt werden.
  • Nun wird in Bezug auf 7A ein Beispiel einer Texturabbildung 101 mit Quadraten 601 gezeigt, von denen jedes 16 Texel in einer 4×4-Anordnung enthält. Wie oben diskutiert entspricht ein acht-Pixel Liniensegment im Bildraum einem maximalen 12 Texel-Texturraumsegment. Um daher zu gewährleisten, dass keine Textur-Cachespeicher-Auslagerung stattfindet, hat der Textur-Cachespeicher 802 bevorzugt eine ausreichende Größe, um ein 12-Texel Liniensegment zu speichern. 7A zeigt ein 12-Texel Liniensegment 701, das derart ausgerichtet und gelegen ist, dass das Liniensegment in drei Texel-Quadraten 601 enthalten ist. Daher werden bei einer solchen Situation drei Cachelinien 604 benötigt, um alle benötigten Texel zur Abbildung des 12-Texel Liniensegments zu speichern.
  • Bei anderen Situationen können jedoch drei Cachelinien 604 nicht ausreichend für ein 12-Texel Liniensegment sein. Zum Beispiel hat nun in Bezug auf 7B das Liniensegment 702 eine Länge von 12 Texeln, ist aber jetzt in einem 45 Grad Winkel ausgerichtet, so dass es 7 Texel-Quadrate 601 überspannt. Daher werden in einer solchen Situation 7 Cachelinien 604 benötigt, um alle zur Abbildung des 12-Texel Liniensegments benötigten Texel zu speichern.
  • Nun wird in Bezug auf 10 ein detailliertes Beispiel einer Texturabbildungssituation eines ungünstigsten Falls gezeigt, wobei ein acht-Pixel Durchgang im Bildraum auf den Texturraum abgebildet wird. Das gezeigte Liniensegment 1001 enthält acht Punkte 1021, 1022, ..., 1028, die einen acht-Pixel Bereich im Bildraum darstellen. Wie oben diskutiert ergibt ein MIP-Abbildungs-Schema, das gekürzte gebrochene Komponenten verwendet, einen maximalen Texturraum-Durchgang von zwei Texeln für jeden ein-Pixel-Durchgang im Bildraum. Daher gibt es einen zwei-Texel Abstand zwischen den Punkten 1021, 1022, ..., 1028 in 10. Die Linie 1001 ist mit einem 45-Grad Winkel ausgerichtet und hat einen Endpunkt an der Schnittstelle der vier Texel-Quadrate 1003, 1004, 1005, 1006, die den ungünstigsten Fall darstellen. Der Wert des Punktes 1021 wird durch das Filtern der vier angrenzenden Texel bestimmt, von denen sich jedes in einem anderen Texel-Quadrat befindet. Ähnlich werden Werte für jeden Punkt 1022, 1023, ..., 1028 bestimmt durch Filtern der vier an den entsprechenden Punkt angrenzenden Texel. Es folgt daher, dass die Texel-Quadrate 1003, 1004, 1005, ..., 1015 benötigt werden, um Werte für alle acht Punkte im Liniensegment 1001 zu bestimmen. Dies stellt eine Gesamtzahl von 13 Texel-Quadraten für diesen ungünstigsten Fall dar.
  • Zum Zwecke der Erläuterung ist ein zweites Liniensegment 1002 gezeigt, das eine benachbarte Abtastlinie darstellt. Es kann anhand dieses Beispiels gesehen werden, dass das Liniensegment 1002 sieben Texel-Quadrate 1005, 1006, 1008, 1009, 1011, 1012 und 1014 wiederverwendet und einen Zugriff auf fünf neue Texel-Quadrate erfordert. Das Wiederverwenden ist daher gegenüber herkömmlichen linienbasierten Textur-Cachespeicher-Schemata deutlich verbessert.
  • Falls bei einem ungünstigsten Fall, das Kürzen anstelle von Runden verwendet wird, ist im Allgemeinen die maximale Anzahl von Texel-Quadraten 13. Bei einer Ausgestaltung der vorliegenden Erfindung sind wenigstens 13 Cachelinien 604 für einen Block mit einer Abmessung von acht Pixeln im Bildraum vorgesehen, um sicherzustellen, dass eine Textur-Auslagerung nicht stattfindet. Oft werden 16 Cachelinien vorgesehen, um die Adressierung zu erleichtern.
  • Die obigen Beispiele sind nur Veranschaulichungen von beispielhaften Ausgestaltungen. Andere Bild-Blockabmessungen, Texel-Quadratabmessungen und Cachelinien-Längen könnten verwendet werden, ohne sich von den grundlegenden Merkmalen der vorliegenden Erfindung zu entfernen. Zusätzlich wird bei einer alternativen Ausgestaltung eine nicht-gekachelte Texturabbildung verwendet, so dass der Textur-Cachespeicher 802 eher auf einer Texel-für-Texel-Basis als auf einer Quadrat-für-Quadrat Basis arbeitet, und die oben angegebenen Details zur Implementierung könnten nicht anwendbar sein.
  • Punkte betreffend die Wartezeit in Verbindung mit der Implementierung der vorliegenden Erfindung werden auf herkömmliche Weise unter Verwendung einer FIFO-Warteschlange behandelt, wie in der zugehörigen US-A-5,852,45 1 (Anmelde-Serienr. 08/780,787) beschrieben. Bei einer Ausgestaltung hat der Textur-Cachespeicher 802 eine ausreichende FIFO-Tiefe, um eine erwartete Operationswartezeit zu bewältigen.
  • Um zusammenzufassen, ergibt dann das unterteilte Texturraum-Schema der vorliegenden Erfindung für jeden Stoß-Zugriff eher ein quadratisches (oder anderes rechteckiges) Region als ein eindimensionales Liniensegment und ergibt daher eine verbesserte Textur-Trefferrate und Wiederverwendung, sowie es die Verwendung von weniger Cachelinien ermöglicht.
  • Wie zuvor beschrieben, verwendet eine Ausgestaltung der vorliegenden Erfindung ein MIP-Abbildungs-Texturabbildungs-Schema, welches die Länge eines Texturraum-Liniensegments auf ein Maximum von 1,41w begrenzt, wobei w die maximale Länge des Liniensegments im Bildraum ist. Diese Begrenzung, wenn sie mit der hier beschriebenen unterteilten Texturraumarchitektur kombiniert wird, sieht eine Gewährleistung der Lokalität vor, falls ein Textur-Cachespeicher mit ausreichender Abmessung verfügbar ist. Insbesondere gewährleistet die MIP-Abbildungs-Texturabbildung, dass nicht mehr als vier benachbarte Texel (in einem 2×2 Gitter) benötigt werden, um einen gefilterten Pixelwert für den Bildraum zu erzeugen. Mit dem zuvor beschriebenen verbesserten Durchlauf-Schema kann die absolute Länge eines Liniensegments im Texturraum begrenzt werden, um so die Trefferrate und Leistung des Textur-Cachespeichers in einem gegebenen Grad zu gewährleisten.
  • Zusätzliche Vorteile
  • Wie von den Fachleuten in diesem Gebiet erkannt wird, bieten Pixelblöcke mit fester Größe, wie in der vorliegenden Erfindung verwendet, zusätzliche Vorteile bei bestimmten grafischen Wiedergabe-Schemata. Speziell bei einigen grafischen Systemen wird ein z-Puffer verwendet, um wie im Fachgebiet bekannt einen sichtbare-Flächen-Algorithmus für eine Wiedergabe von mehreren überlappenden Objekten im dreidimensionalen Raum zu implementieren. Siehe zum Beispiel J. Foley et al., auf 668-72. Ein Z-Puffer-Zugriff erfolgt bevorzugt in einem Stoßbetrieb für eine verbesserte Leistung, wobei jede Cachelinie 604 in einem einzelnen Stoß abgerufen wird, so wie es in einer ViRGE-2 Grafik-Funktionsmaschine mit vier Viererwörtern (Quadwords) pro Cachelinie 604 implementiert sein kann. Wie zuvor diskutiert sieht das Texel-Quadrat-Schema der vorliegenden Erfindung eine verbesserte Leistung bei Zugriff-Schemata im Stoßbetrieb vor. Da die meisten Speicherarchitekturen einen Stoßbetrieb verwenden, wobei Übertragungen und Abrufe entlang natürlicher Speichergrenzen auftreten, die an einer Potenz von Zwei ausgerichtet sind, sieht die hier als Beispiel beschriebene Acht-Pixel-Block-Größe den zusätzlichen Vorteil des Ermöglichen von z-Pufferspeicher-Anfragen mit Hochgeschwindigkeit vor. Z-Puffer-Anfragen im Stoßbetrieb können in Form von Viererwörtern beschrieben werden (64-bit Einheiten entsprechen 8×8 Pixelblöcken). Ähnliche Vorteile können unter Verwendung jeder anderen Potenz von Zwei in Verbindung mit ähnlich ausgerichteten Speichersegmenten und dem Stoßbetrieb-Zugriff realisiert werden.
  • Bei einer Ausgestaltung, die in Verbindung mit einem gekachelten z-Puffer und einem gekachelten Ziel verwendet wird, wird die Größe des Blocks so ausgewählt, dass die Größe des z-Puffers und der Ziel-Kachel ein gerades Vielfaches der Block-Größe ist, sowohl horizontal als auch vertikal. Dies minimiert Seitenbrüche, wenn für jeden Block auf den z-Puffer und das Ziel zugegriffen wird, mit einem Maximum von einem Seitenbruch pro Block.
  • Ein weiterer Vorteil der vorliegenden Erfindung ist, dass die Pixel-Reihenfolge aus dem Texturabbilden sehr gut zu dem Ziel ausgerichtet ist. Bei ViRGE-2 ist die Blockgrenze an Viererwörtergrenzen ausgerichtet. Dies macht die Viererwörter-Organisation in einen Ziel-FIFO einfach und unkompliziert.
  • Aus der obigen Beschreibung ist ersichtlich, dass die hierin offenbarte Erfindung ein neuartiges und vorteilhaftes System und Verfahren zum Block- und Bandorientierten Durchlaufen bei grafischen Systemen vorsieht, um die Bandbreite und Leistung zu verbessern. Die vorangegangene Diskussion offenbart und beschreibt nur beispielhafte Verfahren und Ausgestaltungen der vorliegenden Erfindung. Wie von denjenigen verstanden wird, die mit dem Fachgebiet vertraut sind, kann die Erfindung in anderen spezifischen Formen verkörpert werden, ohne sich dabei vom Geist oder von grundlegenden charakteristischen Merkmalen hiervon zu entfernen. Insbesondere können andere Größen und Architekturen für die Bild- und die Textur-Unterteilungen verwendet werden, andere Arten von Primitiven und andere Ursprungs-Positionen und Ausrichtungen können verwendet werden. Entsprechend sind die die Offenbarung der vorliegenden Erfindung und den Beispiel-Figuren zur Erläutern vorgesehen und nicht zur Begrenzung des Umfangs der Erfindung, welcher in den folgenden Ansprüchen definiert ist.

Claims (18)

  1. Computer-implementiertes Verfahren zum Durchlaufen und zur Wiedergabe einer im Bildraum dargestellten Grafikprimitiven (200), das die Schritte aufweist: a) Bestimmen einer Blockgröße für den Bildraum; b) Unterteilen des Bildraums (102) gemäß der Blockgröße, um eine Vielzahl von Blöcken (401) festzulegen; c) für jeden Block (401), der wenigstens einen Teil der Grafikprimitiven (200) enthält: c.1) Festlegen einer Vielzahl von Bereichen innerhalb des Blocks, wobei die Bereiche (202) insgesamt eine Darstellung für den Teil der dem Block (401) entsprechenden Grafikprimitiven vorsehen; und c.2) Ausführen einer Texturabbildungsoperation in jedem festgelegten Bereich, dadurch gekennzeichnet, dass die Texturabbildungsoperation für jeden festgelegten Bereich (202) aufweist: Bestimmen eines entsprechenden Texturraum-Liniensegments (403) in einer Texturabbildung (219), wobei die Texturabbildungsdaten in einem Textur-Seitenspeicher (801) gespeichert sind; Abrufen von Teildaten der Texturabbildung (219), die das Texturraum-Liniensegment (403) darstellen, durch eine Übertragung der Teildaten aus dem Textur-Seitenspeicher (801) in einen Textur-Cachespeicher (802), wobei der Textur-Cachespeicher ausreichend groß ist, um ein Texturraum-Liniensegment mit einer maximalen Länge zu speichern, die auf der Basis der Blockgröße festgelegt ist; und selektives Abrufen von Daten aus dem Textur-Cachespeicher (802).
  2. Verfahren nach Anspruch 1, wobei c.1) ausgeführt wird unter Verwendung von Kantendurchlauf-Verfahren und Bereichsdurchlauf-Verfahren.
  3. Verfahren nach Anspruch 1, wobei die Übertragung der Teildaten aus dem Textur-Seitenspeicher (801) in den Textur-Cachespeicher (802) das Abrufen von Daten von der Texturabbildung unter Stoßbetrieb-Zugriff aufweist.
  4. Verfahren nach Anspruch 3, wobei der Textur-Seitenspeicher (801) in eine Vielzahl von Texturseiten unterteilt ist und wobei der Stoßbetrieb-Zugriff Teildaten entsprechend einer ausgewählten Texturseite abruft.
  5. Verfahren nach Anspruch 4, wobei jede Texturseite ein Rechteck darstellt.
  6. Verfahren nach Anspruch 4, wobei jede Texturseite ein Quadrat darstellt.
  7. Verfahren nach Anspruch 1, wobei c.2) eine multum-in-parvo-Abbildungstextur-Abbildungsoperation ausführt.
  8. Verfahren nach Anspruch 7, wobei c.2) aufweist: c.2.1) Bestimmen eines angemessenen Skalierungsfaktors in Reaktion auf wenigstens einen verfügbaren Texturraum und eine Grösse des festgelegten Bereichs; c.2.2) Auswählen einer Texturabbildungsdarstellung aus einer Vielzahl von Texturabbildungsdarstellungen in Reaktion auf den bestimmten Skalierungsfaktor; und c.2.3) Abrufen von Daten aus der ausgewählten Texturabbildungsdarstellung.
  9. Verfahren nach Anspruch 8, wobei c.2.2) aufweist: c.2.2.1) Bestimmen des Logarithmus des Skalierungsfaktors; c.2.2.2) In Reaktion auf den Wert des Logarithmus, der eine gebrochene Komponente enthält, Runden des Werts des Logarithmus zum nächsten ganzzahligen Wert; und c.2.2.3) Auswählen einer Texturabbildungsdarstellung entsprechend dem Wert des Logarithmus.
  10. Verfahren nach Anspruch 8, wobei c.2.2) aufweist: c.2.2.1) Bestimmen des Logarithmus des Skalierungsfaktors; c.2.2.2) In Reaktion auf den Wert des Logarithmus, der eine gebrochene Komponente enthält, Kürzen des Werts des Logarithmus zum nächsten niedrigeren ganzzahligen Wert; und c.2.2.3) Auswählen einer Texturabbildungsdarstellung entsprechend dem Wert des Logarithmus.
  11. Verfahren nach Anspruch 8, wobei c.2.2) aufweist: c.2.2.1) Bestimmen des Logarithmus des Skalierungsfaktors; c.2.2.2) In Reaktion auf den Wert des Logarithmus, der eine gebrochene Komponente enthält, ein Ausführen der Schritte: c.2.2.2.1) Abrufen von zwei Texturabbildungsdarstellungen mit ganzzahligen Werten, die dem Wert des Logarithmus angenähert sind; c.2.2.2.2) Erhalten einer gefilterten Texturabbildungsdarstellung durch das Ausführen eines gewichteten Filterns der zwei abgerufenen Texturabbildungsdarstellungen; und c.2.2.2.3) Auswählen der gefilterten Texturabbildungsdarstellung; und c.2.2.3) In Reaktion auf den Wert des Logarithmus, der keine gebrochene Komponente enthält, Auswählen einer Texturabbildungsdarstellung entsprechend dem Wert des Logarithmus.
  12. Verfahren nach Anspruch 1, das weiter aufweist b.1) Festlegen eines Durchlaufweges, um c) für jeden Block auszuführen, der wenigstens einen Teil der Grafikprimitiven enthält.
  13. Verfahren nach Anspruch 12, wobei b.1) das Auswählen einer horizontalen Durchlauf-Reihenfolge oder einer vertikalen Durchlauf-Reihenfolge aufweist.
  14. Verfahren nach Anspruch 1, wobei c.2) weiter für jeden festgelegten Bereich, ein Bestimmen eines entsprechenden Texturraum-Liniensegments in einer Texturabbildung aufweist, wobei die Texturabbildung in eine Vielzahl von Texturabbildungsaufteilungen unterteilt wird.
  15. Verfahren nach Anspruch 14, wobei c.2) weiter ein Abrufen von Daten aus der Texturabbildung, die das Texturraum-Liniensegment darstellen, und ein Speichern der abgerufenen Daten in einem Textur-Cachespeicher aufweist.
  16. System (800) zum Durchlaufen und zur Wiedergabe einer im Bildraum dargestellten Grafikprimitiven, das aufweist: ein Modul (810) zum Festlegen der Primitiven, das angepasst ist zum Festlegen und Speichern von Darstellungen der Grafikprimitiven; ein Kantendurchlauf-Modul (809), das an das Modul (810) zum Festlegen der Primitiven gekoppelt ist und angepasst ist, Kantendurchläufe in einer im Modul zum Festlegen der Primitiven gespeicherten Grafikprimitiven auszuführen, um eine Vielzahl von Bereichen (202) festzulegen; ein Bereichsdurchlauf-Modul (808), das an das Kantendurchlauf-Modul (809) gekoppelt ist und angepasst ist, einen Bereichsdurchlauf in einem durch das Kantendurchlauf-Modul festgelegten Bereich (202) auszuführen; einen Textur-Seitenspeicher (801), der angepasst ist, eine Texturabbildung (219) zu speichern; einen Textur-Cachespeicher (802), der an den Textur-Seitenspeicher (801) gekoppelt ist und angepasst ist, ausgewählte Unteraufteilungen des Textur-Seitenspeichers zu speichern; eine Texturabbildungs-Funktionsmaschine (803), die an das Bereichsdurchlauf-Modul (808) und an den Textur-Cachespeicher (802) gekoppelt ist und die angepasst ist, eine Texturabbildung unter Verwendung eines Stoßbetrieb-Zugriffs auf den Textur-Cachespeicher auszuführen; und einen Bildpufferspeicher (805), der an die Texturabbildungs-Funktionsmaschine (803) gekoppelt ist und angepasst ist, um texturabgebildete Daten zu empfangen; wobei die Texturabbildungs-Funktionsmaschine (803) angepasst ist, für jeden festgelegten Bereich (202) ein entsprechendes Texturraum-Liniensegment (403) in der im Textur-Seitenspeicher (801) gespeicherten Texturabbildung (219) zu bestimmen, und angepasst ist, mittels einer Übertragung der Teildaten vom Textur-Seitenspeicher (801) in den Textur-Cachespeicher (802) Teildaten von der Texturabbildung (219), die das Texturraum-Liniensegment (403) darstellen, abzurufen.
  17. System (800) nach Anspruch 16, das weiter eine an den Bildpufferspeicher (805) gekoppelte Anzeige (806) aufweist und angepasst ist, die texturabgebildeten Daten anzuzeigen.
  18. System (800) nach Anspruch 16, das weiter ein Pixelverarbeitungs-Modul (807) aufweist, das an die Texturabbildungs-Funktionsmaschine (803) und an den Bildpufferspeicher (805) gekoppelt ist und das angepasst ist, texturabgebildete Pixeldaten zu verarbeiten und verarbeitete Daten in den Bildpufferspeicher zu schreiben.
DE69836924T 1997-06-26 1998-06-18 Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe Expired - Lifetime DE69836924T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/883,536 US5945997A (en) 1997-06-26 1997-06-26 Block- and band-oriented traversal in three-dimensional triangle rendering
US883536 1997-06-26
PCT/US1998/013029 WO1999000768A1 (en) 1997-06-26 1998-06-18 Block- and band-oriented traversal in three-dimensional triangle rendering

Publications (2)

Publication Number Publication Date
DE69836924D1 DE69836924D1 (de) 2007-03-08
DE69836924T2 true DE69836924T2 (de) 2007-11-08

Family

ID=25382775

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69836924T Expired - Lifetime DE69836924T2 (de) 1997-06-26 1998-06-18 Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe

Country Status (7)

Country Link
US (1) US5945997A (de)
EP (1) EP1066600B1 (de)
JP (1) JP4203128B2 (de)
AU (1) AU8161898A (de)
CA (1) CA2294323C (de)
DE (1) DE69836924T2 (de)
WO (1) WO1999000768A1 (de)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7859551B2 (en) 1993-10-15 2010-12-28 Bulman Richard L Object customization and presentation system
US6304268B1 (en) * 1997-06-26 2001-10-16 S3 Graphics Co., Ltd. Trilinear texture filtering of two levels of detail based on a single level of detail
US6232981B1 (en) * 1998-03-26 2001-05-15 Silicon Graphics, Inc. Method for improving texture locality for pixel quads by diagonal level-of-detail calculation
US6091428A (en) * 1998-04-01 2000-07-18 Real 3D, Inc. Frame buffer memory system for reducing page misses when rendering with color and Z buffers
US7136068B1 (en) * 1998-04-07 2006-11-14 Nvidia Corporation Texture cache for a computer graphics accelerator
US6144392A (en) * 1998-04-30 2000-11-07 Ati Technologies, Inc. Method and apparatus for formatting a texture in a frame buffer
US6078335A (en) * 1998-06-01 2000-06-20 Ati Technologies, Inc. Method and apparatus for determining level of detail for texture filtering
FR2779848B1 (fr) * 1998-06-15 2001-09-14 Commissariat Energie Atomique Procede invariant d'indexation d'une image utilisant des caracterisations fractales et par moments
US6233647B1 (en) * 1998-07-07 2001-05-15 Silicon Graphics, Inc. Hashed direct-mapped texture cache
GB2343599B (en) * 1998-11-06 2003-05-14 Videologic Ltd Texturing systems for use in three dimensional imaging systems
US6738059B1 (en) * 1998-12-18 2004-05-18 Kabushiki Kaisha Sega Enterprises Apparatus and methods for image processing using mixed display objects
US6405267B1 (en) 1999-01-22 2002-06-11 S3 Graphics Co., Ltd. Command reordering for out of order bus transfer
US6342884B1 (en) * 1999-02-03 2002-01-29 Isurftv Method and apparatus for using a general three-dimensional (3D) graphics pipeline for cost effective digital image and video editing, transformation, and representation
US6353438B1 (en) * 1999-02-03 2002-03-05 Artx Cache organization—direct mapped cache
US6919895B1 (en) * 1999-03-22 2005-07-19 Nvidia Corporation Texture caching arrangement for a computer graphics accelerator
US8595764B2 (en) 1999-06-25 2013-11-26 Jlb Ventures, Llc Image-oriented electronic programming guide
US6825848B1 (en) * 1999-09-17 2004-11-30 S3 Graphics Co., Ltd. Synchronized two-level graphics processing cache
US6750872B1 (en) 1999-09-17 2004-06-15 S3 Graphics, Co., Ltd. Dynamic allocation of texture cache memory
US6756986B1 (en) * 1999-10-18 2004-06-29 S3 Graphics Co., Ltd. Non-flushing atomic operation in a burst mode transfer data storage access environment
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6433789B1 (en) * 2000-02-18 2002-08-13 Neomagic Corp. Steaming prefetching texture cache for level of detail maps in a 3D-graphics engine
US6819321B1 (en) * 2000-03-31 2004-11-16 Intel Corporation Method and apparatus for processing 2D operations in a tiled graphics architecture
US7126600B1 (en) * 2000-08-01 2006-10-24 Ati International Srl Method and apparatus for high speed block mode triangle rendering
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6784894B2 (en) * 2000-08-24 2004-08-31 Sun Microsystems, Inc. Mapping time-sorted to direction-sorted triangle vertices
FR2819082A1 (fr) * 2000-12-28 2002-07-05 Koninkl Philips Electronics Nv Composition d'une image
US6670959B2 (en) 2001-05-18 2003-12-30 Sun Microsystems, Inc. Method and apparatus for reducing inefficiencies in shared memory devices
US6864900B2 (en) * 2001-05-18 2005-03-08 Sun Microsystems, Inc. Panning while displaying a portion of the frame buffer image
US6803916B2 (en) * 2001-05-18 2004-10-12 Sun Microsystems, Inc. Rasterization using two-dimensional tiles and alternating bins for improved rendering utilization
US6833834B2 (en) 2001-12-12 2004-12-21 Sun Microsystems, Inc. Frame buffer organization and reordering
US6812929B2 (en) 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
US6836272B2 (en) 2002-03-12 2004-12-28 Sun Microsystems, Inc. Frame buffer addressing scheme
US7336268B1 (en) * 2002-10-30 2008-02-26 National Semiconductor Corporation Point-to-point display system having configurable connections
US6989837B2 (en) * 2002-12-16 2006-01-24 S3 Graphics Co., Ltd. System and method for processing memory with YCbCr 4:2:0 planar video data format
US7023444B2 (en) * 2003-03-20 2006-04-04 Sun Microsystems, Inc. Multi-texturing by walking an appropriately-sized supertile over a primitive
WO2004097737A1 (en) * 2003-04-29 2004-11-11 Koninklijke Philips Electronics N.V. Segmentation refinement
US7528840B1 (en) * 2003-10-01 2009-05-05 Apple Inc. Optimizing the execution of media processing routines using a list of routine identifiers
US7324117B1 (en) * 2004-03-29 2008-01-29 Nvidia Corporation Method and apparatus for using non-power of two dimension texture maps
US6940514B1 (en) * 2004-04-26 2005-09-06 Sun Microsystems, Inc. Parallel initialization path for rasterization engine
US7737971B2 (en) * 2004-07-01 2010-06-15 Panasonic Corporation Image drawing device, vertex selecting method, vertex selecting program, and integrated circuit
US8223845B1 (en) 2005-03-16 2012-07-17 Apple Inc. Multithread processing of video frames
US7542043B1 (en) * 2005-05-23 2009-06-02 Nvidia Corporation Subdividing a shader program
TWI273510B (en) * 2005-09-05 2007-02-11 Via Tech Inc 3D graphics processing method and device
EP1960968A4 (de) 2005-12-01 2016-06-29 Intel Corp Computergrafik-prozessor und verfahren zum wiedergeben eines dreidimensionalen bildes auf einem anzeigeschirm
JP5079341B2 (ja) * 2006-06-01 2012-11-21 株式会社リコー 印刷データ処理装置
RU2498220C2 (ru) * 2007-10-26 2013-11-10 Томтом Интернэшнл Б.В. Способ создания картографических данных
US8509569B2 (en) * 2008-02-11 2013-08-13 Apple Inc. Optimization of image processing using multiple processing units
ITMI20080999A1 (it) * 2008-05-29 2009-11-30 St Microelectronics Srl Modulo di renderizzazione per grafica a due dimensioni
JP5310079B2 (ja) * 2009-02-24 2013-10-09 富士通セミコンダクター株式会社 画像描画装置
US8681169B2 (en) * 2009-12-31 2014-03-25 Nvidia Corporation Sparse texture systems and methods
US8860743B2 (en) * 2009-12-31 2014-10-14 Nvidia Corporation Sparse texture systems and methods
US8823724B2 (en) * 2009-12-31 2014-09-02 Nvidia Corporation Sparse texture systems and methods
CN104346770A (zh) * 2013-07-24 2015-02-11 联咏科技股份有限公司 数据插补方法及数据插补系统
KR102477265B1 (ko) * 2015-09-24 2022-12-13 삼성전자주식회사 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
CN109191557B (zh) * 2018-09-11 2023-05-02 中国科学院国家天文台 立体地形图的影像纹理映射方法及装置
US10657699B1 (en) * 2018-12-08 2020-05-19 Arm Limited Performing texturing operations for sets of plural execution threads in graphics processing systems

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5377320A (en) * 1992-09-30 1994-12-27 Sun Microsystems, Inc. Method and apparatus for the rendering of trimmed nurb surfaces
US5801714A (en) * 1995-05-01 1998-09-01 Intergraph Corporation Vertex list management system
US5574836A (en) * 1996-01-22 1996-11-12 Broemmelsiek; Raymond M. Interactive display apparatus and method with viewer position compensation

Also Published As

Publication number Publication date
JP2002506547A (ja) 2002-02-26
US5945997A (en) 1999-08-31
EP1066600A4 (de) 2004-03-24
JP4203128B2 (ja) 2008-12-24
DE69836924D1 (de) 2007-03-08
CA2294323C (en) 2006-05-30
AU8161898A (en) 1999-01-19
CA2294323A1 (en) 1999-01-07
EP1066600A1 (de) 2001-01-10
EP1066600B1 (de) 2007-01-17
WO1999000768A1 (en) 1999-01-07

Similar Documents

Publication Publication Date Title
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
EP1175663B1 (de) Verfahren zur rasterisierung eines graphikgrundelements
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE69932059T2 (de) Trilineare texturfilterung mit optimiertem speicherzugriff
DE69736611T2 (de) Reorganisation von Speicherreferenzen für Pixel in einer seitenorientierten Speicherarchitektur
DE69333508T2 (de) Vorrichtung und Verfahren zur Verarbeitung von Videosignalen
DE69724512T2 (de) Texturabbildungssystem -medium und -verfahren
DE60310720T2 (de) Verfahren und vorrichtung zur kodierung von texturinformation
DE60133166T2 (de) Verfahren und Vorrichtung zur Volumendarstellung
DE69535231T2 (de) VERFAHREN ZUR INTEGRATION EINES Bildtextursignalspeicher UND INTERPOLATIONSLOGIK
DE60306813T2 (de) Grafikverarbeitugsvorrichtung, verfahren und computerprogrammprodukte mit minimaltiefenokklusions-culling und zickzack-durchquerung
DE69917799T2 (de) Texturierungssysteme zur verwendung in drei-dimensionalen abbildungssystemen
DE69918022T2 (de) Keine blockierung erforderndes textur-cache-system
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
DE69122557T2 (de) Bilderzeugung
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE69909437T2 (de) Graphisches system mit superabtasten mit veränderlicher auflösung
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE69908966T2 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE69127516T2 (de) Verfahren und Gerät zur Bilderzeugung
DE69029987T2 (de) Verfahren und Gerät zur parallelen Wiedergabe von Polygonen und Pixeln
DE19806985B4 (de) Organisationsverfahren für volumetrische Daten, das effiziente Cache-Aufbereitungsbeschleunigungen und einen effizienten Graphik-Hardwareentwurf ermöglicht
DE60122333T2 (de) Verfahren und System zur kachelweisen Bildwiedergabe
DE102018125472A1 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1066600

Country of ref document: EP

Representative=s name: HOESSLE PATENTANWAELTE PARTNERSCHAFT, DE