DE69610341T2 - 3-D-Bildertexturierung und -schattierung - Google Patents

3-D-Bildertexturierung und -schattierung

Info

Publication number
DE69610341T2
DE69610341T2 DE69610341T DE69610341T DE69610341T2 DE 69610341 T2 DE69610341 T2 DE 69610341T2 DE 69610341 T DE69610341 T DE 69610341T DE 69610341 T DE69610341 T DE 69610341T DE 69610341 T2 DE69610341 T2 DE 69610341T2
Authority
DE
Germany
Prior art keywords
texture
pixel
mip
data
image data
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
DE69610341T
Other languages
English (en)
Other versions
DE69610341D1 (de
Inventor
Mark E. Dunn
Simon J. Fenney
Peter D. Leaback
Ian J. Overliese
Hossein Yassaie
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE69610341D1 publication Critical patent/DE69610341D1/de
Application granted granted Critical
Publication of DE69610341T2 publication Critical patent/DE69610341T2/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)

Description

  • Die vorliegende Erfindung betrifft das Texturieren und Schattieren von dreidimensionalen Bildern zur Anzeige auf einem Bildschirm.
  • Hintergrund der Erfindung
  • Das am häufigsten von kommerziellen Systemen angewendete Verfahren zur Erzeugung texturierter und schattierter dreidimensionaler Echtzeitbilder arbeitet mit einem Z-Puffer-System. Dies ist einer der einfachsten, in Software oder Hardware zu implementierender Sichtflächen- Algorithmen, der von Unternehmen wie Silicon Graphics, Evens & Sutherland und Hewlett Packard eingesetzt wird.
  • Er setzt nicht nur einen Rahmenpuffer voraus, in dem Farbwerte gespeichert werden, sondern auch einen Z-Puffer mit der gleichen Anzahl von Einträgen, in dem ein z-Wert zu jedem Bildpunkt gespeichert wird. Polygone, normalerweise Dreiecke, werden in willkürlicher Reihenfolge in den Rahmenpuffer übertragen. Ist der Polygonpunkt während der Scan-Konversion nicht weiter vom Betrachter entfernt als der bereits im Puffer befindliche, dann wird die texturierte und schattierte Farbe des neuen Punktes ausgewertet und der z-Wert ersetzt den alten Wert. Es ist keine Vorsortierung notwendig und es sind keine Objekt- Objekt-Vergleiche erforderlich.
  • Der Begriff "Texturabbildung" bezieht sich auf den Prozess der Umwandlung einer zweidimensionalen Bildpunktanordnung in eine andere zweidimensionale Bildpunktanordnung. Die Umwandlung kann in jeder beliebigen Art und Weise erfolgen, in diesem Dokument wird jedoch die perspektivische Abbildung betrachtet. Bei der 3 perspektivischen Abbildung wird effektiv eine zweidimensionale Anordnung von Bildpunkten genommen, rotiert und in 3D umgesetzt und anschließend zur Anzeige auf eine z = n Ebene projiziert.
  • Die Texturabbildung kommt in Computergraphiken in dem Versuch zum Einsatz, das Oberflächendetail wirklicher Objekte zu simulieren. Mit der perspektivischen Abbildung kann ein Bild (z. B. die Oberfläche von Holz) auf ein dreidimensionales Objekt (z. B. einen Tisch) gelegt werden, so dass der Tisch wie Holzoptik aussieht.
  • Die Gleichung zur perspektivischen Abbildung lautet wie folgt:
  • 'u' und 'v' sind die 2D-Koordinaten im Texturraum.
  • 'x' und 'y' sind die 2D-Koordinaten im Bildschirmraum.
  • a', 'b', 'c', 'd', 'e' und 'f' sind die im
  • Abbildungsprozess verwendeten Koeffizienten.
  • Das Abtasten eines Signals mit Frequenzen über der Hälfte der Abtastrate führt zum Alias-Effekt. Die Texturabbildung ist ein Wiederabtastprozess, der leicht zum Alias-Effekt führen kann. Zur Erzeugung eines texturabgebildeten Bildes, das nicht zurückfaltet, müssen bei dem Bild im Texturraum die niedrigen Frequenzanteile auf die Hälfte der Abtastrate der Abbildung herausgefiltert werden. Kompliziert wird die Situation dadurch, dass die Abtastrate je nach Position im Bildschirmraum variieren kann.
  • Zur korrekten Filterung des Bildes ist ein großer Verarbeitungsaufwand erforderlich. Es gibt viele Möglichkeiten einer Annäherung an die korrekte Filterung mit mathematisch einfacheren Operationen. Das einfachste Verfahren ist die MIP-Abbildung, wobei MIP für MULTUM IN PARVO steht.
  • Die MIP-Abbildung setzt eine Vorverarbeitungsphase voraus, bei der eine im Speicher gespeicherte Texturabbildung gefiltert und auf die Hälfte der Auflösung dezimiert wird. Dieser Vorgang wird so lange wiederholt, bis das resultierende Bild eine Größe von 1 Bildpunkt hat (dies setzt eine quadratische Textur und eine Zweierpotenz voraus). Fig. 1 zeigt ein Beispiel einer Backsteintextur mit einer Auflösung von 128 · 128 und die zugehörigen niedrigeren MIP-Map-Ebenen.
  • Eine MIP-Map kann man sich als eine Pyramide von Bildern vorstellen. Auf die MiP-Map wird über die 3 Variablen 'u', 'v' und 'D' zugegriffen. Die Variablen 'u' und 'v' sind die Koordinaten des Bildpunktes im Texturraum, der einem Antialiasing (Bildglättung) unterzogen werden muss. Die Variable 'D' ist ein Maß für den Filterungsbedarf des Bildpunktes, d. h. in welcher Höhe der Pyramide er sich befinden muss. Der Wert D = 1 bedeutet, dass das Vollauflösungsbild verwendet wird. Der Wert D = 2 bedeutet, dass das Halbauflösungsbild verwendet wird, usw. Sind 'D'- Werte keine Zweierpotenzen, dann wird eine Mischung der beiden nächsten Mip-Map-Ebenen unter Verwendung von linearer Interpolation auf gut bekannte Weise berechnet.
  • Im Idealfall ist 'D' die Quadratwurzel des Bereichs, den der Bildschirmbildpunkt abdeckt, wenn er in Texturraum umgewandelt wird. Leider ist eine Berechnung auf Pixel-für- Pixel-Basis äußerst kostspielig.
  • Ein Ansatz auf der Basis einer solchen Bildpyramide wird z. B. in der EP-A-0 438 194 und der EP-A-0 438 195 gezeigt, wonach Texturinformationen in einer Pyramidenstruktur gespeichert werden, die die gleichen Muster auf verschiedenen Auflösungsebenen repräsentiert.
  • Die EP-A-0 438 194 beschreibt insbesondere einen Textur-Adresskonverter zur Kombination einer Grundadresse und einer linearen Versatzadresse, wobei letztere von der Breite (in U-Richtung) und der Pyramidenebene der gespeicherten Texel-Abbildung abhängig ist. Der Textur- Adresskonverter ermöglicht daher einen simultanen Zugriff auf Texel-Werte für benachbarte Ebenen der pyramidenförmigen Texturinformationen. Ferner ist eine Mehrzahl von (n+1) parallel adressierten Speichern vorgesehen, so dass, wenn eine Interpolation einer Mehrzahl von Texel-Werten auf der gleichen Pyramidenebene für Antialiasing-Zwecke erforderlich ist, auf die genannte Mehrzahl von Texel-Werten simultan zugegriffen werden kann. Die EP-A-0 438 195 befasst sich vor allem mit der Art und Weise, in der Texturdaten von zwei verschiedenen Ebenen der Pyramide linear interpoliert werden sollen.
  • Die EP-A-0 447 227 beschreibt ein Verfahren und eine Vorrichtung zum Downsampling von Originaltexturabbildungen, die in einem Rahmenpuffer gespeichert sind, mit Hilfe eines asymmetrischen Filters, wodurch Alias-Effekt und Unschärfe der Textur optimiert werden.
  • P. S. Heckbert (Comm ACM 18(6) Juni 1975) schlug die Verwendung der folgenden Näherungsgleichung für 'D' vor:
  • D² = MAX = du²/dx + dv²/dy , du²/dy + dv²/dy
  • Obschon dieses Verfahren weitaus einfacher als das Idealverfahren ist, setzt es noch immer eine Quadratwurzel und zwei zusätzliche Abbildungen pro Bildpunkt voraus.
  • Schattierung ist ein Begriff, der in der Computergraphik Anwendung findet und sich auf einen Teil des Prozesses zur Auswertung der Farbe einer Oberfläche in einer speziellen Bildschirmposition bezieht. Wenn eine Oberfläche schattiert ist, dann werden die Position, Orientierung und Charakteristiken der Oberfläche in der Modellierung verwendet, wie eine Lichtquelle mit dieser Oberfläche zusammenwirkt.
  • Der Realismus von computergenerierten Bildern ist erheblich von der Qualität dieses Beleuchtungsmodells abhängig. Leider ist ein genaues Beleuchtungsmodell für den Gebrauch in einem Echtzeit-Bildaufbereitungssystem zu kostspielig. Es ist daher notwendig, einen Kompromiss zu schließen und Annäherungen in den Beleuchtungskalkulationen zu verwenden.
  • Die geläufigste Form der Annäherung ist die diffuse Schattierung bzw. Lambert-Schattierung, die das von matten Materialkomponenten reflektierte Licht simuliert. Dies wird in Fig. 2 und anhand der folgenden Gleichung illustriert:
  • LS(cosθ) wenn (cosθ)≤ 0
  • I(L, S, &theta;) = 0 wenn (cos&theta;)< 0
  • Fig. 2 zeigt einen vom Auge oder der Kamera ausgehenden Lichtstrahl (der einen speziellen Bildschirm- Bildpunkt passiert), der an einem bestimmten Punkt P auf eine Fläche trifft. Sie zeigt außerdem den Vektor (die Normale), der lotrecht zur Fläche (bei P) ist, sowie einen Strahl von einer Lichtquelle zu P.
  • Die Gleichung gibt an, dass die Intensität (oder Farbe) I der diffusen Beleuchtung bei P das Produkt der Lichtintensität L, des diffusen Reflexionsvermögens der Fläche S und des Kosinus des Winkels &theta; zwischen dem Lichtstrahl und der Normalen ist.
  • Es kann davon ausgegangen werden, dass diese Berechnung entweder für die gesamte Fläche konstant ist, bekannt als Flachschattierung, oder auf unterschiedliche Art und Weise über polygonale Facetten interpoliert werden kann, um gekrümmte Flächen zu simulieren. Gouraud- Schattierung (Comm ACM 18(60) S. 311-17, 1971) ist zum Beispiel die lineare Interpolation der diffusen Farben über die polygonalen Facetten.
  • Ein alternatives Interpolationsverfahren umfasst das lineare Interpolieren der Flächennormalen in der obigen Gleichung. Dieses Verfahren wurde von Bui Thuong Phong (Comm ACM 18(6) Juni 1975) vorgeschlagen. Leider ist dieses Rechenverfahren relativ kostspielig. Eine effektive Annäherung wurde von Bishop und Weimer (Computer Graphics 20(4) S. 103-6, 1975) vorgeschlagen, die zweidimensionale Taylorsche Reihenannäherungen verwendet. Diese Annäherungen können mit Differenzgleichungen effizient ausgewertet werden. Abgesehen von einem geringen Vorkalkulations- Overhead kann der cos &theta; zum Preis von nur 2 Additionen pro Bildpunkt genähert werden.
  • Das am nächstweitesten verbreitete Lichtmerkmal sind Glanz- oder Spiegellichter. Hierbei handelt es sich um die Reflexionen der Lichter in einer Szene. Spiegellichter verleihen Oberflächen eine Spiegeloptik und werten den Realismus von Bildern bedeutend auf. Sie werden zumeist durch ein Verfahren genähert, dass ebenfalls von Bui Tuong Phong beschrieben wurde und in Fig. 3 und anhand der folgenden Gleichung illustriert wird.
  • LS(cos&theta;)n wenn (cos&theta;)&ge; 0
  • I (L, S, &theta;, n) = 0 wenn (cos&theta;)< 0
  • Fig. 3 stellt einen vom Auge oder der Kamera ausgehenden 'Lichtstrahl' dar, der einen bestimmten Bildpunkt passiert und an einem bestimmten Punkt P auf eine Fläche trifft. Anschließend wird er mit den üblichen Spiegelwinkeln in die gezeigte Richtung reflektiert. Da Flächen nicht vollkommen glatt sind, ist zu beachten, dass davon ausgegangen wird, dass sich der reflektierte Lichtstrahl etwas ausbreitet, was durch die Rauhigkeit der Oberfläche bestimmt wird. Schließlich zeigt Fig. 3 auch einen von einer Lichtquelle kommenden Strahl, der als Spitzlicht erscheint. Je näher die Reflexionsrichtung zur Lichtquelle liegt, desto heller erscheint das Spitzlicht.
  • Die Gleichung beschreibt die Intensität des Spitzlichtes I in Abhängigkeit von der Intensität des Lichtes L, dem Reflexionsvermögen der Fläche S, dem Winkel &theta; zwischen der Reflexionsrichtung und dem Licht und der Glätte n der Fläche. Diese Funktion bedeutet, dass mit dem Annähern der Reflexionsrichtung an die Lichtrichtung (d. h. &theta; wird klein) die Intensität des Spitzlichtes einen Höchstwert erreicht und in anderen Bereichen zurückgeht. Je größer der Wert n ist, desto schneller ist der Rückgang, desto kleiner ist das Spitzlicht und desto glatter erscheint somit die Fläche. Damit diese Berechnung am effektivsten ist, sollte sie als Gütefunktion verwendet werden. Typische Werte für n liegen zwischen 1 und 1000.
  • Bishop und Weimer schlagen wieder die Berechnung eines Teils der obigen Gleichung mit zweidimensionalen Taylorschen Reihenannäherungen (siehe diffuse Schattierung) und dann die Verwendung einer Nachschlagtabelle zur Berechnung der Gütefunktion vor.
  • DRAM ist ein Akronym für Dynamic Random Access Memory (dynamischer Direktzugriffsspeicher). Die Struktur des 'seitenstrukturierten' DRAM kann in Bänke, Seiten und Orte unterteilt werden. Ein Ort ist das elementare Element des adressierbaren Speichers. Eine Reihe aneinandergrenzender Orte bildet eine Seite, und eine Reihe von Seiten bildet eine Bank.
  • Fordert ein Gerät den Inhalt eines Ortes an, dann wird die Seite geöffnet, die diesen Ort enthält, und die Daten werden abgerufen. Wenn der nächste angeforderte Ort auf der gleichen Seite liegt, dann braucht die Seite vor dem Abruf der Daten nicht neu geöffnet zu werden. Da der Zeitaufwand zum Öffnen einer Seite erheblich ist, geht die Anforderung von Zufallsorten innerhalb einer Seite weit schneller vonstatten, als die Anforderung von Zufallsorten außerhalb einer Seite. Der Begriff 'Seitenwechsel' bezieht sich auf das Abrufen des Inhalts eines Ortes aus einer Seite, die nicht offen ist.
  • In einer Speicherkonfiguration mit mehreren Bänken ist es möglich, gleichzeitig mehrere Seiten geöffnet zu halten. Die Beschränkung besteht darin, dass sich die offenen Seiten in unterschiedlichen Bänken befinden müssen.
  • SRAM ist ein Akronym für Static Random Access Memory (statischer Direktzugriffsspeicher). Die Struktur des SRAM ist einfacher als die des DRAM. Jeder Ort innerhalb des Geräts kann innerhalb eines einzigen Taktzyklus abgerufen werden. Der Nachteil dieser Einfachheit besteht darin, dass die Dichte der Speicherelemente auf dem Silizium weit geringer ist als die des DRAM. Folglich ist der SRAM wesentlich teurer als der DRAM.
  • Der atmosphärische Effekt von Schleierbildung verleiht einer generierten 3D-Szene eine Dimension von Realismus. Sie ist nicht nur für neblig aussehende Szenen von Nutzen; alle Szenen im Freien erfordern einen Schleier. Bei einer Außenszene haben Objekte in der Ferne weniger vibrierende Farben. Dieser Effekt entspricht der Schleierbildung; die Objekte "grauen" mit der Entfernung "aus".
  • Wenn man davon ausgeht, dass die Dichte des Schleiers nicht variiert, dann wird Licht pro Meter prozentual gedämpft. Wird das Licht zum Beispiel um 1% pro Meter gedämpft, dann liegt das Licht nach einem Meter bei 0,99 vom Ausgangswert. Nach zwei Metern beträgt das Licht 0,99 · 0,99 = 0,99² = 0,98 des Ausgangswertes. Nach 'n' Metern liegt das Licht bei 0,99n des Ausgangswertes.
  • Ein Problem der Texturierung und Schattierung in Verbindung mit einem Z-Pufferungssystem besteht darin, dass die Farbe jedes Bildschirmbildpunktes möglicherweise viele Male ausgewertet wird. Das liegt daran, dass die Oberflächen willkürlich verarbeitet werden und sich die dem Auge am nächsten liegende Oberfläche während der Szenenverarbeitung möglicherweise häufig ändert.
  • Eine verschobene Texturierungs- und Schattierungsarchitektur gemäß einem Aspekt der vorliegenden Erfindung schließt die überflüssige Kalkulation aus, indem nur eine einzige Farbe für jeden Bildschirmbildpunkt ausgewertet wird. Jede Oberfläche innerhalb einer Szene weist ein damit verbundenes einmaliges 'Tag' auf. Zur Verarbeitung eines Bildpunktes wird die verdeckte Fläche entfernt, so dass das Tag der am nächsten zu diesem Bildpunkt gelegenen Fläche berechnet wird. Dieser Tag-Wert wird dazu verwendet, die Befehle für eine korrekte Texturierung und Schattierung dieses Bildpunktes abzurufen.
  • Die im vorliegenden Dokument beschriebene und in den beiliegenden Ansprüchen dargelegte Ausgestaltung stellt eine äußerst effiziente und optimierte Architektur bereit, die sich vor allem für Systeme eignet, die eine verschobene Texturierung und Schattierung erfordern. Für ein komplexes System wie das hierin beschriebene ist es sehr wichtig sicherzustellen, dass behutsam der bestmögliche Ausgleich zwischen Komplexität (Hardwaregröße/Siliziumfläche) und Funktionalität erreicht wird. Das bedeutet, dass die Systemarchitektur insgesamt, einschließlich Interaktionen zwischen Hauptblöcken, sowie Einzelheiten der in jedem Block angewendeten detaillierten Methoden, sorgfältig konzeptgemäß entworfen werden muss. Besonders wichtig sind:
  • 1. Datenorganisations- und Speicherarchitekturen, die eine Minimierung von Engpässen gewährleisten;
  • 2. Aufteilung von Ressourcen hinsichtlich verschiedener Funktionsblöcke, Cache-Speicher-Erfordernisse und deren Interaktion;
  • 3. Komplexitätsniveaus im Sinne nummerischer Präzision und des in dem Verfahren zur Implementierung der in jedem Block benötigten Funktionen verwendeten Annäherungsgrades;
  • 4. Unterstützung von angemessenen Flexibilitätsniveaus innerhalb des Hardware-/Silizium-Budgets.
  • Die hierin beschriebene Ausgestaltung setzt sorgfältige Algorithmus- und Simulationsanalysen ein, um den richtigen Ausgleich zwischen den obigen Punkten zu finden.
  • Einer der geschwindigkeitsbestimmenden Schritte eines Systems zur MIP-Abbildung ist das Abrufen der Texturbildpunkte aus dem Speicher. Um die Bandbreite hoch zu halten, setzen einige Ausführungen einen Schnell-SRAM ein. Eine solche Lösung kann zwar die erforderliche Leistung erbringen, doch sind ihre Kosten dafür zu hoch.
  • Die gemäß einer bevorzugten Ausgestaltung der Erfindung vorgeschlagene Architektur speichert die MIP-MAP- Daten in einem seitenstrukturierten DRAM. Für den höchsten Datendurchsatz [*1] muss die Anzahl von Seitenwechsel auf ein Minimum reduziert werden. Die einfachste Methode zur Speicherung einer MIP-Map wäre es, die D-Ebenen aneinandergrenzend anzuordnen und die Bildpunkte innerhalb der Abbildungen in Scanfolge zu speichern. Aufgrund der Zugriffsart auf die MIP-Maps würde diese Speichermethode einen Seitenwechsel bei fast jedem Zugriff verursachen. Eine angemessene Speicherstruktur optimiert die Anzahl von Seitenwechseln.
  • Die Koeffizienten der oben beschriebenen Texturierungsgleichung sind potentiell unbeschränkt. Selbst wenn sinnvolle Beschränkungen auferlegt sind, ist ein großer Wertebereich erforderlich. Eine Implementierung der Gleichung mit reiner Festpunktarithmetik würde Präzisionsmultiplikatoren und -divisoren erfordern. Eine solche Hardware wäre zu umfangreich und langsam, was sich auf den Preis und die Leistung des Systems auswirken würde. Gemäß einem anderen Aspekt der Erfindung wird eine Mischung aus Gleitpunkt- und Festpunktverfahren beschrieben, die zwei Vorzüge hat. Zum einen kann die Größe der Multiplikatoren und Divisoren verringert werden, und zum zweiten wird die Komplexität der Implementierung einer völligen Gleitpunktarithmetik vermieden.
  • Die Texturabbildungsgleichung setzt eine Division pro Bildpunkt voraus. Die meisten Hardware- Divisionsarchitekturen wenden ein schrittweises Annäherungsverfahren an, das Iterationen bis zur benötigten Genauigkeit erfordert. Diese Iteration muss zeitlich (mehrere Taktzyklen) oder räumlich (Siliziumfläche) erfolgen. Gemäß einem weiteren Aspekt der Erfindung werden ein neues Verfahren und eine neue Architektur zur Berechnung eines Kehrwertes auf die erforderliche Genauigkeit ohne eine schrittweise Annäherung beschrieben.
  • Die Variable 'D' ist ein Maß für den Filterungsbedarf eines Texturbildpunktes. Heckberts Annäherung an 'D' ist rechnerisch recht aufwendig und erfordert eine Quadratwurzel sowie zwei zusätzliche Abbildungen pro Bildpunkt. Es wird ein neues, einfacheres Verfahren zur Berechnung von 'D' beschrieben.
  • Das Abrufen von Parametern für den Texturierungs- und Schattierungsprozess wirkt sich auf die Geschwindigkeit aus, mit der die Bildpunkte verarbeitet werden können. Die Reihenfolge, in der die Parameter benötigt werden, ist nicht völlig willkürlich, und es kann ein Referenzort genutzt werden. Die beschriebene Architektur beinhaltet einen Parameter-Cachespeicher, der die Leistung der Gesamtkonstruktion wesentlich erhöht.
  • Zur Steuerung der Größenintensität eines Spiegellichtes wird im allgemeinen eine Gütefunktion verwendet. Deren Implementation kann kostspielig sein - zwei Möglichkeiten sind eine Annäherung durch eine große ROM-Nachschlagtabelle oder eine explizite Implementierung einer genauen Gütefunktion. Da die Spitzlichtgleichung nur eine Näherungsgleichung ist, muss die Funktion keine vollkommen akkurate Gütefunktion sein.
  • Wenn man davon ausgeht, dass ein Verfahren zum Berechnen von oder Annähern an cos &theta; existiert, dann besteht die Gütefunktion lediglich in der folgenden Berechnung:
  • xn wobei 0 &le; · &le; 1
  • Es ist außerdem nicht notwendig, eine Feinkontrolle über die Granularität von n zu haben, ein paar ganzzahlige Werte reichen aus.
  • Unter der Voraussetzung, dass
  • (1-y)2n = (1-2y)2n-1
  • und y ist klein, wird die folgende Näherungsgleichung zum Anheben von x auf eine Potenz n verwendet, wenn x innerhalb des obigen Bereichs liegt.
  • xn = (1-max(1, (1-x) · 2k))²
  • wobei k der ganzzahlige Teil von (log&sub2;n)-1 ist. Der Wert k ersetzt effektiv den Wert n als ein Teil der Oberflächeneigenschaften.
  • Die Durchführung von zwei Substraktionen ist relativ unaufwendig. Das Multiplizieren eines Wertes mit 2k in Binärdarstellung ist lediglich eine Linksverschiebung um k Stellen, und die Max.-Berechnung ist ebenfalls eine belanglose Operation. Die Quadratoperation ist dann eine Multiplikation eines Wertes mit sich selbst.
  • Das Verfahren ist für Hardware- und Firmware- Implementierungen anwendbar.
  • Zum Kalkulieren des Dämpfungsfaktors beim Verschleiern einer Szene muss die Dichte des Schleiers auf die Potenz der Entfernung zwischen dem Objekt und dem Betrachter erhöht werden. Es wird ein effizientes Verfahren zum Nähern dieser Funktion beschrieben.
  • Die verschiedenen Aspekte der Erfindung werden in den beiliegenden Ansprüchen definiert, auf die nachfolgend Bezug genommen werden sollte.
  • Bevorzugte Ausgestaltungen der Erfindung werden nachfolgend ausführlich beispielhaft unter Bezugnahme auf die Begleitzeichnungen beschrieben. Dabei zeigt:
  • Fig. 1 verschiedene Auflösungen von Mip-Map-Daten;
  • Fig. 2 ein Diagramm einer diffusen Schattierung;
  • Fig. 3 ein Spiegellichterdiagramm;
  • Fig. 4 ein Blockdiagramm der zum Schattieren eingesetzten Systemarchitektur;
  • Fig. 5a) und b) einen Vergleich zwischen dem konventionellen Scannen von Speicheradressen und dem Scannen mit verschachtelten Adressenbits;
  • Fig. 6 die Art und Weise, in der die Bits tatsächlich verschachtelt sind;
  • Fig. 7 ausführlicher die Reihenfolge, in der physikalische Speicherorte von den verschachtelten Adressenbits adressiert werden;
  • Fig. 8 das Speichern von einem Satz Mip-Map-Daten in zwei Speicherbänken;
  • Fig. 9 die Speicherung von zwei Sätzen von Mip-Map- Daten in zwei Speicherbänken;
  • Fig. 10 ein Blockdiagramm zur Implementierung der Verschleierungsgütefunktion;
  • Fig. 11 eine ausführliche Implementierung von Fig. 4;
  • und
  • Fig. 12 ein Blockdiagramm einer verbesserten Schaltung zur Durchführung einer arithmetischen Division.
  • Fig. 4 zeigt eine schematische Darstellung des Hauptdatenstroms durch das System.
  • Der Eingang in das System umfasst eine 'x, y'- Koordinate, einen Tag und optionale 'bildpunktspezifische Daten' des Typs, der mit dem in unserer britischen Patentanmeldung Nr. 9414834.3 beschriebenen System generiert werden kann. Die eingehenden Bildpunktdaten werden in 'Scanfolge' oder 'Fliesenfolge' empfangen. Scan- und Fliesenfolge sind in Fig. 5 dargestellt.
  • Ein Vorteil des Empfangs der Daten in 'Fliesenfolge' besteht darin, dass lokale Bildpunkte in dem Bild enger zusammen übertragen werden als bei der 'Scanfolget'. Der Referenzort verbessert die Leistung des Parameter-Cache- Speichers.
  • Das Tag ist, wie oben erläutert, ein eindeutiger Kenner, der mit jeder potentiell sichtbaren Oberfläche in der Szene verbunden ist.
  • Die 'bildpunktspezifischen Daten' sind Attribute des Bildpunktes, die außerhalb des Systems ausgewertet wurden. Diese Attribute werden in der Auswertung der Bildpunktfarbe verwendet. In dem in der Patentanmeldung "Shading Three- Dimensional Images" (Schattieren von dreidimensionalen Bildern - Anmeldung Nr. 9414834.3) beschriebenen System sind zum Beispiel jedem Bildpunkt Daten zugeordnet, die beschreiben, ob ein Schatten auf ihn geworfen wird. Diese Informationen können bei der Auswertung der Bildpunktfarbe berücksichtigt werden.
  • Das Bildpunkt-Tag wird als Index für einen Parameterspeicher 2 verwendet. Hier werden die Parameter gespeichert, die die bei jedem Bildpunkt sichtbare Fläche definieren. Die bei der indexierten Position gespeicherten Daten werden in der Auswertung der Pixelfarbe verwendet (z. B. die Koeffizienten der Texturabbildungsgleichung).
  • Tritt ein Tag an mehr als einer Bildpunktposition auf, dann werden die mit diesem Tag verbundenen Daten möglicherweise öfter benötigt, da mehrere Bildpunkte zur Anzeige der gleichen sichtbaren Fläche verwendet werden. Es ist daher möglich, die Parameterabrufleistung zu erhöhen, indem ein Parameter-Cache-Speicher 4 in den Datenpfad eingefügt wird. In Simulationen erbrachte ein wechselseitiger satzadressierter Cache-Speicher das beste Verhältnis zwischen Komplexität und Leistung.
  • Der Texturspeicher 6 besteht aus einer Reihe von DRAM- Bänken, die Mip-Map-Daten enthalten. Wenn die 'u, v'- Koordinate des Eingabebildpunkts ausgewertet ist, werden die zugehörigen Texel (elementare Bereiche im Texturspeicher) vom Texturspeicher abgerufen.
  • Die Texturabbildungsgleichung ist in zwei Stufen unterteilt, eine Vorkalkulations- und eine Iterationsstufe [*2]. In der Vorkalkulationseinheit 8 werden die Parameter abgerufen; anschließend werden 'ax + by + c' 'dx + ey + f' und 'px + qy + r' ausgewertet. Außerdem zählt die Einheit, wie viele aneinandergrenzende Bildpunkte denselben Tag-Wert gemeinsam benutzen. Diese Zahl wird zusammen mit den obigen Werten zur Texturiterationseinheit 10 übertragen.
  • Die Texturiterationseinheit 10 nimmt die Werte von der Vorkalkulationseinheit 8 und führt die beiden Divisionen durch, womit die 'u, v'-Auswertung abgeschlossen wird. Ist der Zahlenwert aus der Vorkalkulation größer als 0, dann werden die Differenzen zwischen dem aktuellen und dem nächsten Bildpunkt (d. h. 'a', 'd' und 'p') zu den vorkalkulierten Werten ('ax + by + c', 'dx + ey + f' und 'px + qy + r') addiert und die beiden Divisionen werden wiederholt. Der Schritt wird so oft wiederholt, wie es von dem 'Zahlenwert' vorgegeben wird.
  • Wenn die Farbe von der Texturiterationseinheit berechnet ist, wird sie zur Schattierungseinheit 12 geleitet. Die Parameter, auf die der Bildpunkt-Tag zeigt, sind nicht nur Texturierungskoeffizienten, sie enthalten auch Informationen zur Verwendung durch die Schattierungseinheit in der Auswertung der endgültigen Bildpunktfarbe.
  • Die einfachste Form von Schattierungskalkulationen ist von der 'x, y'-Bildschirmposition abhängig, wie zum Beispiel die lineare und quadratische Schattierung.
  • Die lineare Schattierungsberechnung umfasst die folgende Gleichung:
  • I (x, y) - T&sub2;x + T&sub1;y + T&sub0;
  • wobei I die Intensität (oder Farbe) ist, x und y die Bildschirmbildpunktkoordinaten und T&sub2;, T&sub1;, T&sub0; Konstanten sind. Sie kann wie die Texturierung in Vorkalkulations- und Iterationsteile unterteilt werden.
  • Die Ausgabe wird auf den Bereich zwischen 0 und 1 beschränkt.
  • Die quadratische Schattierung erbringt eine bessere Annäherung von Funktionen, jedoch mit einem größeren Implementationskostenaufwand. Sie wird durch die folgende Funktion implementiert:
  • I (x, y) = T&sub5;x² + T&sub4;xy + T&sub3;y² + T&sub2;x + T&sub1;y + T&sub0;
  • wobei I die Intensität (oder Farbe) ist, x und y die Bildschirmbildpunktkoordinaten und T&sub5;, T&sub4;, T&sub3;, T&sub2;, T&sub1;, T&sub0; Konstanten sind. Sie kann wie die Texturierung in Vorkalkulations- und Iterationsteile unterteilt werden.
  • Die Ausgabe wird auf den Bereich zwischen 0 und 1 beschränkt.
  • Die quadratische Funktion kann mit der zuvor erörterten Gütefunktion zu einer Potenz erhoben werden.
  • Wenn ein Bildpunkt texturiert und schattiert ist, wird er in einen Rahmenspeicher ausgegeben. Der Bildpunkt wird wiederum von dem Rahmenspeicher abgerufen und zu einem Sichtgerät geschickt.
  • Fig. 11 zeigt eine stark optimierte Architektur, die eine bevorzugte Ausgestaltung der Erfindung ist.
  • In das System eingegebene Daten 20 können von einer beliebigen Vorrichtung zur Entfernung verdeckter Flächen und Tiefensortierung stammen, die eher Tags als Bildpunktdaten als Ausgang speichert. Ein solches System ist in der britischen Patentanmeldung 9414834.3 beschrieben. Eingangsdaten umfassen ein für jede Oberfläche in einer Szene eindeutiges Oberflächen-Tag, eine Block-X, Y- Adresse, die die Startadresse des aktuellen Blocks von Bildpunkten ist, die in das System eingegeben werden, einen Tiefen-(Z)-Wert, der die Tiefe des gerade eingegebenen Bildpunktes angibt, und schließlich die Schatten-Flags, die angeben, ob sich der aktuelle Bildpunkt im Schatten von einem oder mehreren Schattenlichtern befindet.
  • Die Oberflächen-Tags für einen bestimmten Block werden lauflängencodiert als < Oberflächen-Tag: Spannweite (Anzahl von Bildpunkten, für die die Parameter gleich bleiben)> und in einem Tag-Puffer 22 gespeichert. Die anderen Eingangsparameter werden in einem Eingabeblockpuffer 24 auf Bildpunktbasis gespeichert.
  • Spannweiten werden mit einem Parameter-Cache-Speicher 26 verglichen. Es ist wünschenswert, die Blöcke in einem Fliesenformat einzugeben, so dass der Cache-Speicher sowohl vertikale als auch horizontale Kohärenz einer bestimmten Szene nutzen kann. Der Assoziativitätsgrad des Cache- Speichers wird individuellen Systemkosten/Leistung- Abwägungen überlassen. Bei einem Cache-Treffer wird die entsprechende Oberflächenparameterliste direkt zur Vorkalkulationseinheit 8 geleitet. Im Falle eines Cache- Fehltreffers wird die Parameterliste vom Systemspeicher abgerufen, gespeichert und zur Vorkalkulationseinheit gesendet.
  • Da der Cache-Speicher auf eine hohe Trefferquote ausgelegt ist, fallen nachfolgende Fehltreffereinbußen für die Systemspeicherbusbandbreite gering aus, wodurch kein Bedarf für einen separaten Parameterspeicher besteht.
  • Die Vorkalkulationseinheit nimmt die Blockstartadresse (von der die Spannweiten-Startadresse stammt) sowie die aktuelle Parameterliste und berechnet die Ausgangswerte für beliebige oder alle Textur-/Schattierungsiteratoren 28, 30, die in der Parameterliste angegeben sind. Dabei implementiert sie die oben beschriebenen Algorithmen für Scanzeilentexturadresse und Schattierungsintensität. Sie würde typischerweise aus einer Anordnung von Multiplikationsakkumulatoren bestehen, die von einem Mikrosequenzer gesteuert werden.
  • Der Vorkalkulationspuffer 32 lässt es zu, dass Cache- Fehltreffereinbußen und Vorkalkulations-Overheads den Textur- und Schattierungsiterationsprozess überlappen, wodurch der Systemdurchsatz erhöht wird.
  • Der Texturiterator führt die hyperbolische Interpolation in u, v und die MIP-Map-'D'-Kalkulation wie unten beschrieben durch. Die Ausgänge des Texturiterators umfassen Paare von Texturspeicher-6-Adressen, so dass Texturwerte von den beiden entsprechenden MIP-Maps abgerufen und zur Bildpunktverarbeitungseinheit 34 geschickt werden.
  • Die Anzahl von Schattierungsiteratoren 28, 30 ist von dem für die Schattierungsfunktionen erforderlichen Parallelitätsgrad abhängig. Zwei Einheiten würden zum Beispiel eine simultane Auswertung einer globalen Beleuchtungsintensität und einer Schattenlichtintensität für sanft schattierte Oberflächen ermöglichen. Alternativ könnten die Einheiten dazu verwendet werden, parallel die diffusen und spiegelnden Komponenten einer schattierten Phong-Oberfläche zu berechnen. Die Iteratoren implementieren den nachstehend beschriebenen Algorithmus. Die Ausgänge der Schattierungspipelines umfassen einen Satz Intensitätswerte, die zur Bildpunktverarbeitungseinheit weitergeleitet werden.
  • Die Verschleierungseinheit 36 nimmt die gespeicherten Tiefenwerte vom Eingabeblockpuffer und implementiert eine pseudo-exponentielle Verschleierungsfunktion, wie unten beschrieben. Diese Werte werden zur Bildpunktverarbeitungseinheit weitergeleitet, wo sie zum Interpolieren zwischen einer kalkulierten Bildpunktfarbe und einer Schleierfarbe verwendet werden.
  • Die Bildpunktverarbeitungseinheit 32 führt die endgültige RGB-Farbauswertung jedes Bildschirmbildpunktes aus. Eine Grundfarbe oder Texturfarbe wird eingegeben und mit der bedingten Summe aller relevanten Lichtquellenintensitätswerte von den Schattierungsiteratoren multipliziert, die von den Schatten-Bits vorgegeben werden. Spitzlichtversätze werden ebenfalls addiert. Die Bildpunkte werden dann verschleiert und zu einem Blockakkumulationspuffer 38 übertragen.
  • Die hierin beschriebene Architektur lässt die Unterstützung einer Reihe fortschrittlicher Leistungsmerkmale zu. Es ist zu beachten, dass hierzu ein kompatibles System zur Entfernung verdeckter Flächen und Tiefensortierung vorausgesetzt wird, wie das in der britischen Patentanmeldung 9414843.3 beschriebene. 1) Lichtdurchlässige Flächen: Lichtdurchlässige Objekte können mit einer Mehrdurchgangstechnik wiedergegeben werden. Zunächst werden die lichtundurchlässigen Flächen in einem Block verarbeitet und in den Akkumulationspuffer wie oben beschrieben übertragen. Die lichtdurchlässigen Flächen werden dann auf ähnliche Weise verarbeitet, mit der Ausnahme, dass alle lichtdurchlässigen Flächen eine 'Alpha'-Komponente in ihrer Parameterliste oder ihren Texturdaten enthalten, die dazu verwendet wird, eine Mischung zwischen dem aktuellen Bildpunkt und dem entsprechenden Hintergrundbildpunkt, der im Akkumulationspuffer gespeichert ist, herzustellen. Wenn alle lichtdurchlässigen Bildpunkte verarbeitet sind, wird der Inhalt des Akkumulationspuffers aus einem Rahmenpuffer hinausgeführt.
  • 2) Antialiasing: Dies kann mit einer Mehrdurchgangstechnik erreicht werden. Bei diesem Verfahren wird jeder Block mehrere Male in Subbildpunktinkrementen in X und Y verarbeitet. Die resultierenden Bildpunktfarben werden im Blockakkumulationspuffer akkumuliert. Nach Abschluss der Durchgänge werden die Bildpunkte durch die Anzahl der Durchgänge dividiert und zu einem Rahmenpuffer geleitet.
  • 3) Bewegungsunschärfe: Diese wird durch rechtzeitiges Supersampling des zu verwaschenden Objekts und anschließendes Mitteln der Proben mit dem zuvor beschriebenen Blockakkumulationspuffer erreicht.
  • 4) Weiche Schatten: Dieser Effekt kann mit einer Mehrdurchgangstechnik simuliert werden, wobei die Schattenlichtquellen zwischen den Durchgängen zum Flackern gebracht und die Proben anschließend mit dem Blockakkumulationspuffer wie in 2) beschrieben gemittelt werden.
  • 5) Scheinwerfereffekte: Dies ist der Effekt eines Taschenlampenstrahls oder eines Scheinwerfers, der einen Lichtpool auf einen Szenenbereich projiziert. Dies kann durch eine geeignete Einstellung der Schatten-Bits implementiert werden, so dass sowohl Schattenvolumen als auch Lichtvolumen dargestellt werden können. Weiche Kanten können wie oben beschrieben simuliert werden.
  • Das Problem in Verbindung mit einer Speicherung von Texturabbildungen in Scanfolge und die resultierenden Seitenwechselprobleme wurde bereits zuvor erwähnt. Nachfolgend wird eine ausführlichere Erläuterung gegeben.
  • Beim Texturieren eines bestimmten Bildschirmbildpunktes muss auf eine Texturabbildung zugegriffen werden, um den benötigten Texturbildpunkt oder Texel oder, im Falle einer MIP-Abbildung, eine Reihe von Texel zu erhalten, der/die auf dem Bildschirmbildpunkt dargestellt wird/werden.
  • Für den Zugriff auf den korrekten Texel im Speicher muss die folgende Funktion
  • Texel address=Texture base address+Offset Fung(u. v)
  • berechnet werden, um den Ort des Texels zu finden.
  • Texture base address ist der Ausgangsort der bestimmten Textur der MIP Map-Ebene im Texturspeicher, und u, v sind die berechneten ganzzahligen Texturkoordinaten. Offset func bildet die u, v-Koordinaten auf einem Versatz in der Texturabbildung ab.
  • Werden Texturen in Scanzeilenfolge gespeichert, dann lautet die Versatzfunktion:
  • offset fuc (u. v) = u + size · v
  • wobei "size" das u-Maß der Texturabbildung ist. Da die Abmessungen von Texturabbildungen Zweierpotenzen sind, ist die obige Multiplikation lediglich eine Linksverschiebungsoperation in binärer Darstellung, und die Addition ist einfach eine Verkettung von Bits. Die für eine 128 · 128 Texturabbildung resultierende Funktion ist in Fig. 6 in Scanfolge dargestellt. (Hinweis: vx bezieht sich auf das x. Bit von v, wobei das niedrigstwertige Bit mit 0 nummeriert ist).
  • Die Problematik besteht hier darin, dass sich, sobald sich der v-Index um irgendeinen Betrag ändert, der resultierende Versatz drastisch ändert. Diese drastischen Änderungen führen zu einer hohen Zahl von Seitenwechseln, was sich nachteilig auf die Texturierungsleistung auswirkt. Im allgemeinen ändern sich Texturkoordinaten allmählich, JEDOCH können sie mit gleicher Wahrscheinlichkeit in u- und/oder v-Richtung variieren.
  • Ein effizienteres Verfahren zur Anordnung der Texturabbildung besteht darin, die u- und v-Indexbits zu verschachteln. Ein solches Verfahren mit v&sub6; im niedrigstwertigen Bit wird in Fig. 6. unter der optimierten Funktion gezeigt. (Es ist auch möglich, mit dem U zu beginnen).
  • Bei dieser Anordnung werden viele nebeneinanderliegende Bildpunkte (in u- und in v-Richtung nebeneinanderliegend) im Texturspeicher relativ eng beieinander gehalten, so dass Seitenwechsel reduziert werden. Fig. 7 zeigt die obere linke Ecke einer Texturabbildung. Die Zahlen in jedem Bildpunkt stellen den Versatz dar, bei dem die Bildpunkte gespeichert sind.
  • Diese Struktur wird am besten als Fraktal beschrieben. Das Muster ist ein selbstähnliches rotiertes 'Z', d. h. eine Zickzacklinie beginnt auf Bildpunktebene und setzt sich mit zunehmend größeren Gruppen von Bildpunkten fort.
  • Ein weiteres Problem tritt mit den Mip- Abbildungsanforderungen auf. Der Mip-Map-Prozess setzt für jede Bildschirmbildpunktkalkulation gewöhnlich einen Zugriff auf zwei benachbarte Ebenen der Mip-Map voraus. Werden die Mip-Map-Ebenen aneinandergrenzend gespeichert, dann liegt ein Bildpunktabruf von zwei Ebenen zu weit auseinander, um innerhalb einer DRAM-Seite zu bleiben, so dass bei jedem Bildpunktzugriff ein Seitenwechsel auftreten würde.
  • Um diesen Overhead zu vermeiden, müssen DRAM-Bänke verwendet werden. In einer Speicherkonfiguration mit mehreren Bänken ist es möglich, stets mehrere Seiten geöffnet zu halten. Die Einschränkung besteht darin, dass sich die offenen Seiten in verschiedenen Bänken befinden müssen. Werden aufeinanderfolgende Mip-Map-Ebenen in separaten Bänken gespeichert, dann kommt es nicht bei jedem Bildpunktabruf zu einem Seitenwechsel.
  • Zur weiteren Erläuterung wird die folgende Bezeichnungskonvention verwendet. Die Mip-Map-Ebenen- Nummerierung von '0' bis 0 bezieht [*2] sich auf die 1 · 1 Auflösungsabbildung, 1 bezieht sich auf eine 2 · 2 Abbildung usw. Fig. 8 zeigt alle ungeradzahligen Mip-Map-Ebenen als zusammenhängenden Block in einer Bank und alle geradzahligen in einer anderen.
  • Die Anordnung stellt ein Problem dar, wenn weitere Mip-Abbildungstexturen in den Speicher gegeben werden. Der Speicherplatzbedarf in Bank Y beträgt ungefähr das 4fache von dem der Bank X. Da die Bänke die gleiche Größe haben, wird Bank Y lange vor Bank X voll sein. Dieses Problem kann dadurch umgangen werden, dass die Speicherung der ungeradzahligen Mip-Map-Ebenen zwischen den Bänken hin- und hergeschaltet wird. Leider würden diese Anordnungen separate Grundadressen für die ungeradzahligen und geradzahligen Datenblöcke erfordern.
  • Eine bessere Lösung ist es, Mip-Map-Paare wie in Fig. 9 dargestellt zu verschachteln. Textur A hat ihre Abbildung mit geringster Auflösung (1 · 1) an der Grundadresse in Bank X. Die nächste Abbildung (2 · 2) befindet sich an der darauf folgenden Adresse in Bank Y. Die 1 · 1-Abbildung von Textur B befindet sich an der Grundadresse in Bank Y und ihre 2 · 2- Abbildung an der darauf folgenden Adresse in Bank X.
  • Die oben beschriebene Texturabbildungsgleichung erfordert 6 Multiplikationen, 6 Additionen und 2 Divisionen für jeden texturierten Bildschirmbildpunkt. Zur Reduzierung des Rechenaufwands wird eine Differenzgleichung verwendet.
  • Da der Bildpunkteingangsstrom in Scanfolge gesendet wird, sind horizontale Bildpunktspannweiten vorhanden, die gemeinsam dieselbe Texturierungsfunktion benutzen. Eine Differenzgleichung in der X-Dimension würde den Rechenaufwand innerhalb der Spannweite reduzieren.
  • Der Spannweitenanfang setzt die komplette Berechnung voraus, nachfolgende Bildpunkte erfordern jedoch nur 3 Additionen und 2 Divisionen.
  • Die Architektur der Texturabbildungsberechnung ist in zwei Einheiten unterteilt, eine Vorkalkulationseinheit und eine Iterationseinheit. Die Vorkalkulationseinheit wertet ax + by + c, dx + ey + f und px + qy + r aus. Die Iterationseinheit führt die Division und die Addition von 'a', 'd' und 'p' durch.
  • Nach einer ausführlichen Untersuchung der sichtbaren Effekte arithmetischer Präzision in verschiedenen Bereichen der Texturierung wurde eine Mischung aus Gleitpunkt- und Festpunktvetfahren am geeignetesten befunden.
  • Die Koeffizienten 'p', 'q' und 'r' sind ganze Zahlen;
  • bei der Auswertung von 'px + qy + r' ist daher nur eine Multiplikation und Addition von ganzen Zahlen notwendig.
  • Die Koeffizienten 'a', 'b', 'c', 'd', e' und 'f' benutzen gemeinsam einen einzelnen Zweierpotenzexponenten, der zusammen mit dem Rest der Texturierungskoeffizienten gespeichert wird. Die Auswertung von 'ax + by + c' und 'dx + ey + f' ist mit der von 'px + qy + r' identisch, mit der Ausnahme, dass der Exponentenkoeffizient auch zur Divisionseinheit übertragen wird.
  • Die Division findet anhand des Gleitpunktverfahrens statt. Die ausgewerteten Terme 'ax + by + c', 'dx + ey + f' und 'px + qy + r' werden in Gleitpunktzahlen mit einer Mantisse und einem Zweierpotenzexponenten umgewandelt. Das Ergebniss der Division wird dann zur Verwendung in der Adressengeneration in eine ganze Zahl umgewandelt.
  • Die aktuelle Ausführung verwendet 16-Bit-Koeffizienten und eine 14-Bit-Kehrwertmantisse.
  • Die beiden Divisionen umfassen einen einzelnen Kehrwert und zwei Multiplikationen. In die Kehrwerteinheit wird eine Festpunktzahl in der Größenordnung von 0,5 bis 0,9999 eingegeben, der Ausgang liegt zwischen 2 und 1.
  • Das geeigneteste Verfahren zur Durchführung dieser Funktion schließt eine komprimierte Nachschlagtabelle ein. Die Funktion muss auf 14 Bits genau sein. Das heißt, dass 0,5 als 0 · 2000 (hex) und 0,9999 als 0 · 3fff dargestellt wird. Für die Speicherung von völlig unkomprimierten Daten würden 8192 Orte von jeweils 14 Bits (14KB) benötigt. Das oberste Bit des Kehrwertes kann entfernt werden, weil es stets 1 ist. Dadurch wird die Speicherung auf 8192 Orte von jeweils 13 Bits (13 KB) reduziert.
  • Beim Datenkomprimierungsverfahren wird das Differential des Kehrwertes gespeichert. Ist der Operand größer als 0,707, dann weicht der Kehrwert um 1 oder 0 ab. Diese Differenzen benötigen daher nur 1 Speicherbit. Unter 0,707 weicht der Kehrwert um 2 oder 1 ab, so dass ebenfalls eine 1-Bit-Speicherung erfolgen kann. Dieses Komprimierungsverfahren würde den Speicherbedarf auf 1.375 KB reduzieren. In der folgenden Tabelle sind einige Kehrwerte sowie die Differenzen dazwischen aufgeführt. Ogerand Kehrwert Differenz
  • Zum Entkomprimieren der Daten werden die Differenzen addiert. Zum Berechnen des Kehrwertes von 0 · 3FFB werden zum Beispiel die Differenzbits für 0 · 3FFF bis 0 · 3FFB summiert und dann mit 0 · 2000 addiert (1 + 0 + 1 + 0 + 0 · 2000 = 0 · 2002). Fällt der Operand unter 0,707, dann kann die Differenz 2 oder 1 betragen. Diese Differenzen werden als einzelnes Bit gespeichert, be der Summierung der Differenzen jedoch als 2 und 1 interpretiert.
  • Dieses Komprimierungs-/Entkomprimierungsverfahren ist zur Implementierung in einer geringen Anzahl von Taktzyklen unpraktisch, da eine große Anzahl von Summierungen benötigt wird. Ein etwas weniger effizientes Komprimierungsverfahren kann die Anzahl von Summierungen wesentlich reduzieren. Jeder 32. Kehrwert wird zusammen mit den Differenzen der dazwischenliegenden 31 Zahlen vollständig gespeichert. In der folgenden Tabelle sind die ersten Einträge dieser Daten aufgeführt.
  • Zur Ermittlung des Kehrwertes von 0 · 3FDA wird der Operand beispielsweise zuerst auf die nächste Zahl aufgerundet, der ein ganzer Kehrwert zugeordnet ist (0 · 3FDF). Die Differenz zwischen diesen Werten ist die Anzahl von zu addierenden Differenzen (0 · 2010 + 1 + 0 + 1 + 0 + 1 = 0 · 2013).
  • Im Rahmen des vorgeschlagenen Verfahrens wird eine Reihe von Grundwerten und Versätzen gespeichert. Der eingehende Operand von 'n' Bits wird in zwei Teilen betrachtet, als zwei separate Nummern:
  • 'a' höchstwertige Bits (als Nummer K bezeichnet)
  • 'b' niedrigstwertige Bits (als Nummer L bezeichnet)
  • Die Grundwerte werden von einem Festwertspeicher gelesen, wobei K als die Adresse des ROM verwendet wird, und die Versätze werden von einem anderen ROM (mit der Bezeichnung "Delta ROM") an der gleichen Adresse gelesen.
  • Anschließend wird die Anzahl der 1er gezählt, die in den ersten L Bits der Daten vom Delta ROM auftreten, so dass der Versatz von diesem Grundwert erhalten wird, der zum Grundwert addiert werden muss, um den Kehrwert zu erhalten. Entspricht der Versatzwert dem obigen ersten Fall, dann gilt folgendes:
  • (i) Versatz = (Summe der Anzahl von 1ern in den ersten L Bits des Delta ROM)
  • Entspricht er dem obigen zweiten Fall, dann gilt folgendes:
  • (ii) Versatz = (Summe der Anzahl von lern in den ersten L Bits des Delta ROM + L; dieser zweite Fall berichtigt effektiv den Wert vom Delta Rom, der 1 oder 2 darstellt, wohingegen sie in binärer Darstellung als '0' oder '1' dargestellt werden.)
  • Die Hardware-Implementierung ist in Fig. 12 dargestellt.
  • Der Wert px + qy + r (als "pqr-Produkt" dargestellt) wird auf einen Wert zwischen 1,0 und 2,0 normalisiert (40). Die Mantisse wird wie oben beschrieben in zwei Teilen betrachtet, einem höchstwertigen und einem niedrigstwertigen Teil. Der höchstwertige Teil wird als eine Adresse für den Zugriff auf die ROMs 42, 44 verwendet.
  • Der niedrigstwertige Teil wird zum Generieren einer Maske 46 verwendet, die mit dem Wert vom Delta ROM 44 logisch UND-verknüpft (48) wird. Dadurch werden die ersten L Bits vom Delta ROM isoliert, damit sie gezählt (50) werden können. Die Anzahl der gezählten 1er (aus der Einheit kommend, errechnet durch Hinzuaddieren von 52 L [*3]. Der korrekte Versatz wird dann von einem Vergleicher gewählt, um die Ausgangszahl mit 2 zu vergleichen und das entsprechende Ergebnis von Gleichung (i) oder (ii) zu wählen.
  • Dieser Versatzwert wird dann zum Grundwert vom "Haupt- ROM" addiert (56), um den Kehrwert des "pqr-Produktes" zu erhalten.
  • Das Diagramm zeigt dann, wie die Gleichung:
  • vervollständigt wird, indem der Kehrwert von ax + by + c ("abc-Produkt") multipliziert (58) und dann entnormiert (60) wird.
  • V wird auf ähnliche Weise mit dx + ey + f ("def-Produkt") berechnet.
  • Um den Rechenaufwand zur Berechnung von 'D' zu umgehen, kann das folgende, weniger präzise, aber effizientere Verfahren angewendet werden:
  • 'pz + qy + r' ist die untere Hälfte der Texturabbildungsgleichung.
  • 'n' ist eine Konstante, die vor der Wiedergabe ausgewertet und mit den anderen Texturierungsparametern gespeichert wird. Es gibt eine Reihe von Möglichkeiten zur Berechnung von 'n', z. B.:
  • 'a', 'b', 'c', 'd', 'e', 'f', 'p', 'q und 'r' sind Texturabbildungskoeffizienten.
  • Gleichung 2 wertet 'D' unter Verwendung von Heckberts Annäherung an die Bildpunktkoordinate (0.0) aus und gleicht dann die Gleichung 1 an diesen Wert an. Dies ist keine ideale Lösung, da die beste Annäherung von 'D' dort sein sollte, wo die texturierte Oberfläche sichtbar ist. Ein besseres Verfahren wäre es daher, Gleichung 1 der Heckbert- Annäherung bei einer Bildpunktkoordinate der sichtbaren Fläche anzugleichen.
  • In diesem Abschnitt wird eine Hardware-Implementation der Gütefunktionsannäherung beschrieben, die in Fig. 10 dargestellt ist. Als Eingang wird ein Wert X, der im Bereich 0 &le; · &le;2 liegt, ausgedrückt in einer Festpunktdarstellung, und eine kleine positive ganze Zahl k genommen; der Ausgang ist ein Festpunktergebnis, ebenfalls im Bereich 0 &le; · &le; 2.
  • Die Anzahl von Bits X (d. h. beim Eingang zur Funktion bei Punkt A in dem Diagramm) würde von der benötigten Konzentration von Spitzlichtern abhängig sein, würde jedoch typischerweise etwa 16 Bits betragen. In dieser Erörterung ist dies m.
  • Die Anzahl von k-Bits liegt typischerweise bei 3 oder 4 und ist ebenfalls abhängig von der Konzentration der benötigten Spitzlichter. Dies wird als n bezeichnet.
  • Die Anzahl von Ergebnis-Bits würde von der benötigten Genauigkeit abhängig sein. Es wird davon ausgegangen, dass genau p Ausgangsebits benötigt werden.
  • Schritte
  • 1. Der Festpunkt X wird zunächst von einem konstanten Festpunktwert 1 subtrahiert. Die Anzahl von Ausgangsbits bleibt die gleiche wie der Eingang, d. h. m Bits.
  • 2. Der Wert wird dann um k Positionen nach links verschoben. Die Breite an Punkt B würde m + (2&pi; - 1) Bits betragen und Festpunktzahlen im Bereich zwischen 0 und 2n darstellen.
  • 3. Der Wert wird dann mit der MAX.-Funktion auf 1 begrenzt. Dies ist mit einer Untersuchung der oberen 2&pi; Bits, sofern eingestellt, verbunden; anschließend muss der Wert größer als oder gleich eins sein. In diesem Fall kann die Ausgabe auf einen Festpunkt 1,0 eingestellt werden. Ist keines der oberen 2&pi; Bits eingestellt, dann entspricht der Ausgangswert dem Eingang. Je nach der Qualität des benötigten Ergebnisses ist die Anzahl der von der MAX.- Funktion ausgegebenen Bits, d. h. bei Punkt C, auf p oder p + 1 Bits begrenzt. Die gewählten Bits sind die oberen p oder p + 1 Bits des unteren m. Das heißt, der Wertausgang ist immer noch eine Festpunktzahl im Bereich 0 &le; · &le; 1, aber nur mit einer Präzision von p oder p + 1.
  • 4. Je nach der Qualität des benötigten Ergebnisses ist die Anzahl der von der MAX.-Funktion ausgegebenen Bits, d. h. bei Punkt C, auf p oder p + 1 Bits begrenzt. Die gewählten Bits sind die oberen p oder p + 1 Bits des unteren m. Das heißt, der Wertausgang ist noch immer eine Festpunktzahl im Bereich 0 &le; · &le; 1, allerdings nur mit einer Präzision von p oder p + 1.
  • 5. Der Wert wird dann von 1 im Festpunkformat subtrahiert. Die Anzahl der Präzisionsbits ist noch immer p oder p + 1.
  • 6. Der Wert wird dann quadriert, indem er mit sich selbst multipliziert wird. Je nach der Größe des Operanden, d. h. p oder p + 1 Bits, wird dadurch ein Wert von p² oder (p + 1)² Bits erhalten. In jedem Fall werden die oberen p Bits genommen und als Ergebnis ausgegeben, wodurch ein Festpunktwert im Bereich 0 &le; Ergebnis &le; 1 erhalten wird.
  • Die Schattierungshardware-Einheit ist der Texturierungseinheit hinsichtlich Vorkalkulations- und Iterationseinheiten nicht unähnlich, die standardmäßige Vorwärtsdifferenzbildungstechniken sind. Nachfolgend werden die drei Schattierungsweisen, flach, linear und quadratisch, erörtert.
  • Im Rahmen der folgenden Erörterung werden die Schattierungsfunktionen hinsichtlich x- und y- Bildpunktpositionen beschrieben. Zwar können diese absolute Bildschirmbildpunktpositionen sein, doch ist es weitaus effektiver, sie in Bezug zum Zentrum der schattierten Fläche zu setzen. Dabei wird die Präzision, die zur Darstellung der verschiedenen, nachfolgend erörterten Tn- Parameter benötigt wird, stark verringert.
  • Bei der Flachschattierung muss keine Vorkalkulation oder Iteration durchgeführt werden, wobei der konstante Wert entweder direkt verwendet oder mit den Ergebnissen der Texturierungspipeline multipliziert wird.
  • Die lineare Schattierung setzt die folgende Vorkalkulation voraus:
  • I (x, y) = T&sub2;x + T&sub1;y + T&sub0;
  • Beim Iterationsteil braucht dann nur wiederholt T&sub2; addiert zu werden, da:
  • I (x+1, y) = T&sub2; (x+1) + T&sub1;y + T&sub0;
  • = I (x, y) + T&sub2;
  • Die quadratische Schattierung wird ebenfalls unter Verwendung von Differenzgleichungen durchgeführt. Lautet die quadratische Schattierungsgleichung wie folgt:
  • I (x, y) = T&sub5;X² + T&sub4;xy + T&sub3;y² + T&sub2;x + T&sub1;y + T&sub0;
  • dann wird die Differenz zwischen I zwischen Bildpunkt (x, y) und Bildpunkt (x+1, y) erhalten durch:
  • &Delta;I (x, y) = I (x+1, y) - (x, y)
  • = T&sub2; (x+1)² - T&sub5;x² + T&sub4;(x+1)y - T&sub4;xy + T&sub2; (x+1) - T&sub2;x
  • = T&sub2;(2x+I) +T&sub4;y + T&sub2;
  • und die Differenz zwischen Differenzen bei Bildpunkt xy ist folglich:
  • &Delta;&Delta; (x, y) = &Delta;I (x+1, y) - &Delta;I(x, y)
  • = T&sub5; (2(x+1) + 1I) + T&sub4;y + T&sub2; - T&sub5; (2x+1) -T&sub4;y - T&sub2;
  • = T&sub5;(2x+3) - T&sub5;(2x+1)
  • = 2T&sub5;
  • Die Vorkalkulationseinheit muss daher die erste Ausgangs-I und den ersten Delta-Wert berechnen, d. h.:
  • I (x, y) = T&sub5;x² + T&sub4;xy + T&sub3;yy + T&sub2;x + T&sub1;y + T&sub0;
  • &Delta;I (X, Y) = T&sub5;(2x+1) + T&sub4;y + T&sub2;
  • Zur Durchführung der Iterationen wird der nächste I- Wert erhalten, indem der Delta-Wert addiert wird, und ein neuer Delta-Wert wird durch Addieren der Delta-Differenzen generiert, d. h.:
  • I (x+1, y) = I (x, y) + &Delta;I (x, y)
  • und
  • &Delta;I(x+1, y) = &Delta;I(x, y) + &Delta;&Delta;I(x, y)
  • = &Delta;I(x, y) + 2T&sub5;
  • Pro Bildpunkt brauchen nur 2 Additionen durchgeführt zu werden. Es wird davon ausgegangen, dass die Ausgangswerte Festpunktwerte sind, die auf den Bereich 0 bis 1 begrenzt sind. Bei der Berechnung von Spitzlichtern kann dieser Wert wie oben beschrieben in die Gütefunktion eingefügt werden.
  • Wie zuvor erwähnt wurde, wird der Verschleierungsdämpfungsfaktor mit der folgenden Gleichung berechnet.
  • A = dn
  • Wobei 'A' der Dämpfungsfaktor, 'd' die Verschleierungsdichte und 'n' die Entfernung zwischen dem wiedergegebenen Objekt und dem Betrachter ist. Diese Gleichung kann wie folgt umgeschrieben werden:
  • A = 2n · log&sub2;(d)
  • Dadurch werden die Operationen zu einer Multiplikations- und einer 2-x Funktion vereinfacht. Eine Implementierung dieser Funktion als Nachschlagtabelle wäre für die benötigte Genauigkeit viel zu umfangreich, so dass ein Verfahren zur Komprimierung der Informationen vorgeschlagen wird.
  • Die Funktion 2-x ist günstigerweise jede Zweierpotenz 'selbstähnlich'. 2-x zwischen 0 und 1 entspricht 2-x · 2 zwischen 1 und 2 und 2-x · 4 zwischen 2 und 3. Die Funktion kann folglich mit einer Nachschlagtabelle mit der Bruchzweierpotenz und einem arithmetischen Verschieber am Ausgang implementiert werden. Nachfolgend wird ein Eingangsbeispiel für die vorgeschlagene Funktion gegeben.
  • Bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25........
  • Bits 0 bis 6 sind der Index der Potenztabelle.
  • Bits 7 bis 9 werden zum Abwärtsschieben der Antwort des Suchlaufs verwendet.
  • Ist irgendeines der Bits über Bit 10 eingestellt, dann lautet das Ergebnis 0.
  • Die in der Patentanmeldung "Schattieren von dreidimensionalen Bildern" (Anmeldung Nr. 9414834.3) beschriebene Architektur kann eine Zahl liefern, die proportional zum Kehrwert der Entfernung zwischen dem wiedergegebenen Objekt und dem Betrachter ist. Die Verschleierungsfunktion müsste auf 2log&sub2;(d)/n abgeändert werden. Leider gibt es keine einfache Möglichkeit zur Auswertung dieser Funktion. Eine akzeptable Annäherung an diese Funktion ist A = 1 - 2n · log&sub2;(d).

Claims (4)

1. Verfahren zum Texturieren eines dreidimensionalen Bildes zur Anzeige auf einem Bildschirm, umfassend die folgenden Schritte:
Empfangen von Daten, die den Bildschirmort (x, y) jedes Bildpunktes und zugehörige Bilddaten (20, 22, 24) für einen Bildpunkt umfassen, Einlesen von Texturbilddaten aus einem Speicher (6) in Abhängigkeit von den genannten Bilddaten,
wobei das genannte Verfahren durch die folgenden weiteren Schritte gekennzeichnet ist: Abbilden (u(x, y), v(x, y)) eines entsprechenden Abschnittes der genannten Texturbilddaten auf den genannten Bildpunkt in Abhängigkeit von den genannten zugehörigen Bilddaten, Ermitteln der Anzahl von Bildpunkten (< Oberflächen-Tag : Spannweite> ), die dieselben zugehörigen Bilddaten gemeinsam benutzen,
Ermitteln einer inkrementalen Änderung (&Delta;l(x, y), &Delta;&Delta;(x, y)) bei der Abbildung der genannten Texturdaten auf Bildpunkte, die einem Inkrement von einem Bildpunkt entsprechen, und für jeden Bildpunkt gemeinsame Nutzung derselben Bilddaten als benachbarten Bildpunkt, unter Kombination zuvor abgeleiteter Texturbilddaten (l(x, y)) für diesen benachbarten Bildpunkt mit der genannten inkrementalen Änderung der Texturbilddaten, um Texturbildaten für diesen Bildpunkt abzuleiten.
2. Verfahren zum Texturieren eines dreidimensionalen Bildes nach Anspruch 1, bei dem Mip-Map-Daten für die Verwendung bei der Texturierung des Bildes in einem dynamischen Direktzugriffsspeicher (DRAM) gespeichert und u und v Adressbits von Textur-Mip-Maps verschachtelt werden, so dass physikalisch benachbarte Mip-Map-Bildpunkte mit maximaler Wahrscheinlichkeit in dieselbe DRAM-Seite fallen.
3. Verfahren nach Anspruch 2, bei dem aufeinanderfolgende Ebenen der Auflösung von Mip-Map-Daten abwechselnd in zwei DRAM-Banken gespeichert werden, sodass eine Speicherseite in einer ersten DRAM-Bank alle geradzahligen Ebenen der Auflösung von Mip-Map-Daten für eine bestimmte Textur enthält und eine Speicherseite in einer zweiten DRAM-Bank alle ungeradzahligen Ebenen der Auflösung von Mip-Map-Daten für diese Textur enthält.
4. Verfahren nach Anspruch 3, bei der die geradzahligen Ebenen der Auflösung von Mip-Map-Daten in der Speicherseite der ersten DRAM-Bank mit ungeradzahligen Ebenen der Auflösung von Mip-Map-Daten für eine zweite Textur verschachtelt sind, und die ungeradzahligen Ebenen von Mip- Map-Daten in der zweiten DRAM-Bank mit geradzahligen Ebenen der Mip-Map-Daten für die zweite Struktur verschachtelt sind.
DE69610341T 1995-01-31 1996-01-30 3-D-Bildertexturierung und -schattierung Expired - Lifetime DE69610341T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GBGB9501832.1A GB9501832D0 (en) 1995-01-31 1995-01-31 Texturing and shading of 3-d images

Publications (2)

Publication Number Publication Date
DE69610341D1 DE69610341D1 (de) 2000-10-26
DE69610341T2 true DE69610341T2 (de) 2001-04-05

Family

ID=10768838

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69610341T Expired - Lifetime DE69610341T2 (de) 1995-01-31 1996-01-30 3-D-Bildertexturierung und -schattierung

Country Status (6)

Country Link
US (2) US6330000B1 (de)
EP (1) EP0725366B1 (de)
JP (4) JP3510950B2 (de)
DE (1) DE69610341T2 (de)
ES (1) ES2153077T3 (de)
GB (2) GB9501832D0 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2120184A1 (de) 2008-05-13 2009-11-18 Rheinmetall Waffe Munition GmbH Optisches System bzw. Verfahren zur verbesserten Zielerkennung

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724561A (en) * 1995-11-03 1998-03-03 3Dfx Interactive, Incorporated System and method for efficiently determining a fog blend value in processing graphical images
US6650327B1 (en) 1998-06-16 2003-11-18 Silicon Graphics, Inc. Display system having floating point rasterization and floating point framebuffering
JP2000115558A (ja) * 1998-10-08 2000-04-21 Mitsubishi Electric Corp 色特性記述装置および色管理装置および画像変換装置ならびに色補正方法
GB2343600B (en) * 1998-11-06 2003-03-12 Videologic Ltd Depth sorting for use in 3-dimensional computer shading and texturing systems
JP3687945B2 (ja) * 1998-12-11 2005-08-24 ソニー株式会社 画像処理装置およびその方法
US6417861B1 (en) * 1999-02-17 2002-07-09 Sun Microsystems, Inc. Graphics system with programmable sample positions
US6674922B1 (en) * 1999-03-26 2004-01-06 Canon Kabushiki Kaisha Image processing method, image processing apparatus, and storage medium
US7098925B1 (en) * 2000-03-10 2006-08-29 Intel Corporation Shading of images using texture
US20020012472A1 (en) * 2000-03-31 2002-01-31 Waterfall Andrew E. Method for visualization of time sequences of 3D optical fluorescence microscopy images
US6766281B1 (en) * 2000-05-12 2004-07-20 S3 Graphics Co., Ltd. Matched texture filter design for rendering multi-rate data samples
IL136430A0 (en) * 2000-05-29 2001-06-14 Zviaguina Natalia Ray tracing method and system for determining visible parts of surfaces of three-dimensional objects and their parameters of shading accounting for light and shadow volumes
JP3527196B2 (ja) * 2000-11-16 2004-05-17 株式会社ソニー・コンピュータエンタテインメント テクスチャ描画方法、エンタテインメント装置および記録媒体
US6940504B1 (en) 2000-11-21 2005-09-06 Microsoft Corporation Rendering volumetric fog and other gaseous phenomena using an alpha channel
US7046243B1 (en) 2000-11-21 2006-05-16 Microsoft Corporation Rendering volumetric fog and other gaseous phenomena
CA2329104C (en) * 2000-12-20 2005-05-24 Sicon Video Corporation Method and apparatus for calculating a reciprocal
GB2372188B (en) 2001-02-08 2005-07-13 Imagination Tech Ltd Volume clipping in computer 3-D Graphics
US20030107572A1 (en) * 2001-07-02 2003-06-12 Smith Joshua Edward Method and apparatus for reducing the polygon count of a textured, three dimensional model of an object
US7007058B1 (en) * 2001-07-06 2006-02-28 Mercury Computer Systems, Inc. Methods and apparatus for binary division using look-up table
US20030081849A1 (en) * 2001-07-16 2003-05-01 Smith Joshua Edward Method and system for creating seamless textured three dimensional models of objects
US6753875B2 (en) * 2001-08-03 2004-06-22 Hewlett-Packard Development Company, L.P. System and method for rendering a texture map utilizing an illumination modulation value
US6781594B2 (en) * 2001-08-21 2004-08-24 Sony Computer Entertainment America Inc. Method for computing the intensity of specularly reflected light
EP1442390B1 (de) * 2001-10-10 2017-09-13 Sony Computer Entertainment America LLC System und verfahren zur umgebungsabbildung
GB0128888D0 (en) 2001-12-03 2002-01-23 Imagination Tech Ltd Method and apparatus for compressing data and decompressing compressed data
GB2383248B (en) * 2001-12-14 2005-12-07 Imagination Tech Ltd 3-dimensional computer graphics system
US6847372B2 (en) * 2002-03-11 2005-01-25 Sun Microsystems, Inc. Magnified texture-mapped pixel performance in a single-pixel pipeline
DE10246122B4 (de) * 2002-10-01 2006-04-20 Audi Ag Verfahren und Vorrichtung zur Darstellung eines computermodellierten Gegenstands
WO2004047426A2 (en) 2002-11-15 2004-06-03 Esc Entertainment, A California Corporation Reality-based light environment for digital imaging in motion pictures
US7019744B2 (en) * 2003-04-30 2006-03-28 Pixar Method and apparatus for rendering of translucent objects using volumetric grids
US7443394B2 (en) * 2003-04-30 2008-10-28 Pixar Method and apparatus for rendering of complex translucent objects using multiple volumetric grids
US7864176B2 (en) * 2003-04-30 2011-01-04 Pixar Translucent object rendering methods and apparatus
US7859530B2 (en) * 2003-04-30 2010-12-28 Pixar Subsurface rendering methods and apparatus
US8133115B2 (en) 2003-10-22 2012-03-13 Sony Computer Entertainment America Llc System and method for recording and displaying a graphical path in a video game
JP4547906B2 (ja) * 2003-12-19 2010-09-22 ソニー株式会社 描画装置および描画方法、プログラム、並びに記録媒体
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US8416242B1 (en) 2004-05-14 2013-04-09 Nvidia Corporation Method and system for interpolating level-of-detail in graphics processors
US8432394B1 (en) 2004-05-14 2013-04-30 Nvidia Corporation Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8411105B1 (en) 2004-05-14 2013-04-02 Nvidia Corporation Method and system for computing pixel parameters
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8687010B1 (en) * 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US7079156B1 (en) * 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
US20060007234A1 (en) * 2004-05-14 2006-01-12 Hutchins Edward A Coincident graphics pixel scoreboard tracking system and method
GB0411880D0 (en) * 2004-05-27 2004-06-30 Imagination Tech Ltd Method and apparatus for efficient evaluation of "table-based" mathematical functions
US20060071933A1 (en) 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
KR20060116916A (ko) * 2005-05-11 2006-11-16 삼성전자주식회사 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법
US7636126B2 (en) 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
KR100648293B1 (ko) * 2005-08-09 2006-11-23 삼성전자주식회사 그래픽 시스템 및 그것의 그래픽 처리 방법
US7965859B2 (en) 2006-05-04 2011-06-21 Sony Computer Entertainment Inc. Lighting control of a user environment via a display device
US7880746B2 (en) 2006-05-04 2011-02-01 Sony Computer Entertainment Inc. Bandwidth management through lighting control of a user environment via a display device
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8207980B2 (en) * 2007-05-01 2012-06-26 Vivante Corporation Coordinate computations for non-power of 2 texture maps
US8441497B1 (en) 2007-08-07 2013-05-14 Nvidia Corporation Interpolation of vertex attributes in a graphics processor
GB2470611B (en) * 2009-06-25 2011-06-29 Tv One Ltd Apparatus and method for processing data
US10786736B2 (en) 2010-05-11 2020-09-29 Sony Interactive Entertainment LLC Placement of user information in a game space
US9342817B2 (en) 2011-07-07 2016-05-17 Sony Interactive Entertainment LLC Auto-creating groups for sharing photos
US9213639B2 (en) * 2012-09-25 2015-12-15 Teradata Us, Inc. Division of numerical values based on summations and memory mapping in computing systems
KR102066659B1 (ko) 2013-08-13 2020-01-15 삼성전자 주식회사 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
KR102651126B1 (ko) * 2016-11-28 2024-03-26 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
JP2018114328A (ja) * 2018-03-30 2018-07-26 株式会社ユニバーサルエンターテインメント 遊技機
US10503473B1 (en) * 2018-05-30 2019-12-10 Apple Inc. Floating-point division alternative techniques
WO2020115520A1 (en) * 2018-12-02 2020-06-11 Playsight Interactive Ltd. Ball tracking in sport events
US11823318B2 (en) * 2021-06-04 2023-11-21 Nvidia Corporation Techniques for interleaving textures

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4615013A (en) * 1983-08-02 1986-09-30 The Singer Company Method and apparatus for texture generation
EP0256455B1 (de) 1986-08-11 1991-05-02 Siemens Aktiengesellschaft Verfahren zur schnellen Division langer Operanden in Datenverarbeitungsanlagen und Schaltungsanordnung zur Durchführung des Verfahrens
US4823301A (en) * 1987-10-22 1989-04-18 Tektronix, Inc. Method and circuit for computing reciprocals
GB2240015A (en) 1990-01-15 1991-07-17 Philips Electronic Associated Texture memory addressing
GB2240017A (en) 1990-01-15 1991-07-17 Philips Electronic Associated New, interpolated texture values are fed back to texture memories
GB2240016A (en) 1990-01-15 1991-07-17 Philips Electronic Associated Texture memories store data at alternating levels of resolution
US5222205A (en) * 1990-03-16 1993-06-22 Hewlett-Packard Company Method for generating addresses to textured graphics primitives stored in rip maps
GB2245460B (en) * 1990-06-18 1994-04-06 Link Miles Ltd Apparatus for generating a visual display
GB2270243B (en) * 1992-08-26 1996-02-28 Namco Ltd Image synthesizing system
US5341321A (en) * 1993-05-05 1994-08-23 Hewlett-Packard Company Floating point arithmetic unit using modified Newton-Raphson technique for division and square root
US5490240A (en) 1993-07-09 1996-02-06 Silicon Graphics, Inc. System and method of generating interactive computer graphic images incorporating three dimensional textures
US5550960A (en) 1993-08-02 1996-08-27 Sun Microsystems, Inc. Method and apparatus for performing dynamic texture mapping for complex surfaces
CA2144914A1 (en) 1994-04-01 1995-10-02 Raymond L. Fitzgerald Computer graphics texture paging system with fragmentary mip map selection
US5745118A (en) 1995-06-06 1998-04-28 Hewlett-Packard Company 3D bypass for download of textures
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2120184A1 (de) 2008-05-13 2009-11-18 Rheinmetall Waffe Munition GmbH Optisches System bzw. Verfahren zur verbesserten Zielerkennung
DE102008023269A1 (de) 2008-05-13 2009-11-19 Rheinmetall Waffe Munition Gmbh Optisches System bzw. Verfahren zur verbesserten Zielerkennung

Also Published As

Publication number Publication date
GB9501832D0 (en) 1995-03-22
JP2007213621A (ja) 2007-08-23
EP0725366A3 (de) 1996-11-06
ES2153077T3 (es) 2001-02-16
JPH08255264A (ja) 1996-10-01
JP2004103039A (ja) 2004-04-02
DE69610341D1 (de) 2000-10-26
GB9601965D0 (en) 1996-04-03
US6330000B1 (en) 2001-12-11
EP0725366A2 (de) 1996-08-07
EP0725366B1 (de) 2000-09-20
GB2297886B (en) 2000-02-02
JP4249796B2 (ja) 2009-04-08
GB2297886A (en) 1996-08-14
JP2008112468A (ja) 2008-05-15
JP3510950B2 (ja) 2004-03-29
US6313846B1 (en) 2001-11-06

Similar Documents

Publication Publication Date Title
DE69610341T2 (de) 3-D-Bildertexturierung und -schattierung
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
DE69811849T2 (de) Verfahren und gerät zur interpolation von attributen bei 3d-grafiken
DE60100452T2 (de) Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang
DE69917799T2 (de) Texturierungssysteme zur verwendung in drei-dimensionalen abbildungssystemen
DE60103535T2 (de) Graphisches system
DE69909437T2 (de) Graphisches system mit superabtasten mit veränderlicher auflösung
DE60000335T2 (de) Graphishes system, ausgestaltet zur pixel berechnung mit parallelmustern
DE69914355T2 (de) Bildverarbeitungsgerät
DE60000447T2 (de) Graphisches system das muster in einem musterpuffer darstellt und in anhängigkeit von gespeicherten mustern pixel erzeugt
DE69908966T2 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
EP1227444B1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE69430647T2 (de) Bilddarstellung
DE69602728T2 (de) Vorrichtung zur bildmanipulation und -generation
DE69916646T3 (de) Schattierung von 3-dimensionalen rechnererzeugten Bildern
DE60026197T2 (de) Detailgerichtete hierarchische Distanzfelder in der Objektmodellierung
DE69130123T2 (de) Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts
US6674430B1 (en) Apparatus and method for real-time volume processing and universal 3D rendering
DE69816824T2 (de) Texturabbildung in 3-d-rechnergraphik
DE69716877T2 (de) System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE68927471T2 (de) Verfahren zur Schattierung eines graphischen Bildes
DE69127516T2 (de) Verfahren und Gerät zur Bilderzeugung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition