DE69905483T2 - Schattierung und texturierung von 3-dimensionalen rechner-erzeugten bildern - Google Patents

Schattierung und texturierung von 3-dimensionalen rechner-erzeugten bildern

Info

Publication number
DE69905483T2
DE69905483T2 DE69905483T DE69905483T DE69905483T2 DE 69905483 T2 DE69905483 T2 DE 69905483T2 DE 69905483 T DE69905483 T DE 69905483T DE 69905483 T DE69905483 T DE 69905483T DE 69905483 T2 DE69905483 T2 DE 69905483T2
Authority
DE
Germany
Prior art keywords
objects
opaque
depth
texturing
image
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
DE69905483T
Other languages
English (en)
Other versions
DE69905483D1 (de
Inventor
Mark Dunn
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 DE69905483D1 publication Critical patent/DE69905483D1/de
Application granted granted Critical
Publication of DE69905483T2 publication Critical patent/DE69905483T2/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/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Document Processing Apparatus (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zum Schattieren und Texturieren 3- dimensionaler computergenerierter Bilder.
  • Das beim Generieren 3-dimensionaler Bilder zum Schattieren und Texturieren angewendete Standardverfahren ist das z- oder Tiefenpuffersystem. Es ist seit vielen Jahren in Gebrauch und ist heute ein Industriestandard.
  • In unserem britischen Patent Nr. 2281682 schlugen wir ein alternatives Verfahren mit vielen Vorteilen gegenüber dem z-Puffersystem vor. Dabei handelt es sich um eine Strahlverfolgungstechnik, in der jedes Objekt (Polygon) in einem Bild durch einen Satz infiniter Flächen definiert wird, die als nach vorne oder nach hinten weisend markiert sind. Ein Strahl wird von einem Blickpunkt auf die Szene geworfen, und Schnittpunkte mit den Oberflächen werden zusammen mit dem Abstand der Schnittpunkte von einer Bildebene bestimmt. Durch Analysieren dieser Daten kann ermittelt werden, welche Oberfläche jedes Polygons für jedes Pixel sichtbar ist, und somit kann das Pixel schattiert und texturiert werden. Die Technik kann mittels einer Pipeline von Verarbeitungselementen implementiert werden, von denen jedes eine Strahl/Fläche-Abschnittsberechnung durchführen kann, um den Tiefenwert für diese Oberfläche nacheinander für jedes Pixel zu ermitteln. Nach dem Ermitteln des Tiefenwertes für eine Oberfläche an einem Pixel mittels dieser Verarbeitungselemente wird dieser mit die Oberfläche identifizierenden Daten in einem Tiefen- oder z-Puffer gespeichert. Die z-Pufferinformationen können dann gelesen und von einer Texturiervorrichtung verwendet werden, um Texturdaten für die Anzeige über einen Bildspeicher anzuwenden.
  • Oberflächen in dem System können opak oder transluzent sein. Mit den Oberflächen können Mischwerte assoziiert werden, so dass Transluzenzeffekte angezeigt werden können. So könnte beispielsweise eine Wolke als transluzente Fläche modelliert werden, indem die RGB-Werte zum Definieren ihrer Farbe und ein Alpha-Mischwert zum Definieren ihrer Transluzenz zugewiesen wird. Der Transluzenzgrad wird durch Modulieren des Alpha-Wertes der Texturabbildung über die Oberfläche geregelt. Ein üblicherweise angewendeter Mischmodus ist als Alpha-Blending bekannt, wobei aufeinander folgende Polygone zu dem Bildpuffer gemischt und in die folgende Gleichung eingesetzt werden:
  • RGB(neu) = alpha·RGB(Bildpuffer) + (1 - alpha)·RGB (Textur)
  • Diese Technik ist gut bekannt. Eine Einschränkung der Anwendung des Alpha-Blending besteht darin, dass zum Herstellen eines richtig gemischten Bildes die Pixel, die die Polygone anzeigen, der Mischeinheit in Tiefenreihenfolge von hinten nach vorne präsentiert werden müssen, so dass jedes den richtigen Beitrag zum endgültigen Bild leistet. Für ein z-Puffersystem erfolgt dieses Ordnen gewöhnlich durch die Applikationssoftware, die den z-Puffer speist. Dies wird als Vorsortiermodus bezeichnet. Die Strahlverfolgungstechnik kann entweder mit dem Vorsortiermodus oder mit einem automatischen, pixelgenauen Sortiertyp arbeiten.
  • Es gibt einen Sonderfall für transluzente Textur, die als "Punch-Through" bezeichnet wird. Dies wird als eine transluzente Textur definiert, bei der die Alpha-Komponente auf entweder "ein", d. h. völlig transparent, oder "aus" beschränkt ist, d. h. völlig opak. Dieser Texturtyp ist in 3- D-Spieleanwendungen aus zwei Gründen sehr üblich: zunächst können komplexe Szenen wie Wälder mit relativ wenigen Polygonen modelliert werden, und zweitens kann ein traditioneller z-Puffer Punch-Through-Transluzenz unabhängig von der Reihenfolge erzeugen, in der dem System Polygone präsentiert werden.
  • Eine traditionelle z-Puffer-Pipeline mit Alpha-Prüfung auf Transluzenz ist in Fig. 1 dargestellt. Darin werden zu rendernde Polygone zunächst im Polygon-Scan-Konverter 2 abtastlinien-konvertiert, und die resultierenden x-, y-, z-, u-, v-, w-Werte werden dann in die Texturiereinheit und in die Tiefenprüfeinheit (den z-Puffer) gespeist. Texturadressen werden zum Texturspeicher gesendet. Aus dem Texturspeicher abgerufene Texturwerte gehen zu einem Texturfilter 4, der durch den Textur-Neuabtastprozess erzeugte Rückfaltungsartefakte reduziert. Die gefilterten Werte werden zu einer Texturmischeinheit 6 geleitet, die die Texturwerte mit der Grundfarbe und Hervorhebungen des Polygons mischt. Als Nächstes erfolgt eine Alpha-Prüfung an der Alpha- Komponente des resultierenden Pixels in einer Alpha- Prüfeinheit 8. Es wird anhand eines Referenz-Alpha-Wertes geprüft.
  • Die Alpha-Prüfeinheit führt einen Größenvergleich mit einem Alpha-Referenzwert durch. Der Benutzer liefert den Alpha-Referenzwert und einen Vergleichsmodus, der aus "niemals", "weniger", "gleich", "weniger oder gleich", "größer", "nicht gleich", "größer oder gleich" und "immer" ausgewählt wird. Die gewählte Prüfung ist vom Typ des Bildes abhängig, das der Benutzer erzeugt. Die Alpha-Prüfeinheit gibt mit dem Eingabe-Alphawert an, ob der Vergleichsmodus gut oder schlecht war.
  • Wenn das Ergebnis des Alpha-Tests gut war, wird der Tiefentest am z-Wert und an RGB-Werten in dem aktualisierten z-Puffer durchgeführt. War der Test schlecht, dann findet keine weitere Pixelverarbeitung statt. Also werden in dem typischen Fall, bei dem der Referenz-Alpha-Wert eins und der Prüfmodus größer als oder gleich ist, nur opake Pixel in den Bildpuffer geschrieben, und an diesen Pixeln werden Tiefenprüfungen im Vergleich zu allen anderen Polygonen in der Szene durchgeführt, unabhängig von der Reihenfolge, in der Polygone verarbeitet werden. Die Tiefenprüfung erfolgt durch eine Tiefenprüfeinheit 10, die z-Werte aus dem z-Puffer 12 über eine Schabloneneinheit 14 liest und die z-Werte direkt in den z-Pufferspeicher schreiben kann. Die Tiefenprüfbedingungen sind in Fig. 1 neben der Tiefenprüfeinheit dargestellt.
  • Fig. 2 zeigt die Strahlverfolgungseinheit unseres britischen Patentes Nr. 2281682 mit verzögerter Texturierung, d. h., Texturierdaten werden am Ende des Strahl/Fläche- Schnittpunktprüfprozesses angewendet. Die Vorrichtung umfasst eine Polygon-Einrichteinheit, die Daten bereitstellt, die die Ebenengleichungen der Polygone definieren. Diese Daten werden dann in eine Array von Verarbeitungselementen 22 gespeist, die jeweils eine Strahl/Fläche-Schnittpunktprüfung durchführen und einen Tiefenwert für diesen Strahl/Fläche- Schnittpunkt erzeugen können. Die Verarbeitungsarray wirkt typischerweise auf eine Teilmenge des gesamten Bildes, "Fliese" genannt, z. B. 32 · 32 Pixel, und wirkt jeweils auf einem Polygon. Die berechneten Tiefenwerte werden in einem Fliesentiefenspeicher 24 gespeichert.
  • Tiefen- und Oberflächenwerte vom Fliesentiefenspeicher werden auf einen parallelen Lauflängencodierer 26 angewendet. Dieser erzeugt dann einen Ausgang zur Texturiereinheit über eine XY-Adresse für ein Pixel, das in eine Polygon-Scan- Konvertiereinheit 28 gespeist wird, und einen Tag, der zur Polygon-Einrichtungseinheit 30 übertragen wird. Diese berechnet die Ebenengleichungen für die Texturierung und Schattierung und berechnet die Ebenengleichungen der Polygone neu.
  • Diese Einrichteinheit erhält die Polygontexturdaten und sendet dann Daten zur Polygon-Scan-Konvertiereinheit 28. Die RGB-Werte und Alpha-Werte sowie Hervorhebungen, die auf eine Oberfläche angewendet werden, werden dann zu einer Texturmischeinheit 32 gesendet, wo sie mit RGB- und Alpha- Werten vom Texturspeicher über einen Filter 34 kombiniert und dann zum Fliesenakkumulationspuffer geleitet werden, von wo sie zum Hauptbildspeicher für das Bild gesendet werden.
  • Der Vorteil der Verzögerung der Texturierung, bis alle Strahl/Flächen-Schnittpunktprüfungen durchgeführt sind, besteht darin, dass Textur- und Schattiervorgänge dann nur an sichtbaren Pixeln erfolgen. Somit wird eine wirksame Füllrate durch das Verhältnis von unsichtbaren zu sichtbaren Pixeln in der Szene erhöht. Gemäß Definition erfolgt die Tiefenprüfung in einer verzögerten Textur-Pipeline vor der Texturierung und somit auch vor der Alpha-Prüfung. Infolge dessen ist es nicht möglich, die Punch-Through-texturierten Polygone zu rendern, es sei denn, dass sie in der Reihenfolge von hinten nach vorne präsentiert werden und nicht überlappen oder dass sie an einer früheren Stelle in der Pipeline einem pixelgenauen Vorsortiervorgang unterzogen werden. Die erste dieser Anordnungen beschränkt den Software-Treiber unnötigerweise. Die zweite erfordert einen unnötigen Verarbeitungs-Overhead.
  • Wir haben erkannt, dass dieses Problem durch Einbeziehen einer Feedback-Schleife in den Tiefenspeicher von den Ergebnissen der Alpha-Prüfung für jedes Pixel und Verzögern des Aktualisierens des Tiefenspeichers, bis die Ergebnisse des Alpha-Tests für jedes Pixel bekannt sind, abgestellt werden kann. Dies erfordert sowohl Zurückleiten von der Alpha- zur Tiefenprüfung als auch ein Vorausleiten von der Tiefenprüfeinheit zur Alpha-Mischeinheit.
  • Auf der Basis dieser Idee können vier standardmäßige Betriebsarten wie folgt angewendet werden:
  • 1. ein standardmäßiger z-Puffer-Punch-Through- Kompatibilitätsmodus ohne Sortierung;
  • 2. ein erweiterter Punch-Through-Modus mit verzögertem Betrieb ohne Sortierung;
  • 3. ein erweiterter Punch-Through-Modus mit automatischer Sortierung von Oberflächen und verzögertem Betrieb;
  • 4. verallgemeinerter Alpha-Mischmodus mit automatischer Sortierung.
  • Diese Betriebsarten und bevorzugten Ausgestaltungen der Erfindung werden nachfolgend beispielhaft unter Bezugnahme auf die Begleitzeichnungen ausführlich beschrieben. Dabei zeigt:
  • Fig. 1 das oben beschriebene z-Puffersystem des Standes der Technik;
  • Fig. 2 das Strahlverfolgungssystem des Standes der Technik mit verzögerter Texturierung;
  • Fig. 3 eine Ausgestaltung der vorliegenden Erfindung;
  • Fig. 4 eine weitere bevorzugte Ausgestaltung der Erfindung mit automatischer Sortiereinheit;
  • Fig. 5 eine schematische Darstellung des automatischen Sortierschemas für Polygone; und
  • Fig. 6 eine schematische Darstellung eines weiteren automatischen Sortierschemas für Polygone.
  • Das Blockdiagramm von Fig. 3 ist eine Modifikation des Diagramms von Fig. 2 gemäß einer Ausgestaltung der Erfindung. Gemäß Fig. 2 empfängt ein Polygoneinrichtblock 20 Polygon-Scheitelpunktdaten und sendet dann Polygon- Flächendaten zur Prozessorelement-Array 22, die die Tiefen jeder Oberfläche an jedem Pixel berechnet und sie speichert. Dazu gehört auch ein Tiefenprüfer zum Ermitteln der der Bildebene am nächsten liegenden Oberfläche für jedes Pixel. Dieser kann die standardmäßigen ABC- und Tag-Parameter zum Definieren der einzelnen Flächen zu einem Bypass-FIFO- Speicher 40 senden. Dieser sendet diese Parameter wiederum auf einen entsprechenden Steuerbefehl hin zurück zur Prozessorelement-Array 22.
  • XY-Adressdaten und Tag-Daten werden vom parallelen Lauflängencodierer 26 zur Polygoneinrichteinheit 30 und zum Polygon-Scan-Konverter 28 auf ähnliche Weise wie in Fig. 2 gesendet. Die Polygoneinrichteinheit empfängt Polygon- Texturdaten vom Texturspeicher. Die Mischeinheit 32 und der Filter 34 arbeiten auf ähnliche Weise wie in Fig. 2. Der Texturmischeinheit ist jedoch eine Alpha-Prüfeinheit 42 nachgeschaltet. Diese hat einen Gut/Schlecht-Ausgang, der als Kontrolle zu einem Punch-Through-Steuerblock 44 gesendet wird, der auch einen Alpha-Wert und Positionsdaten von der Alpha-Prüfeinheit erhält. Die Alpha-Prüfeinheit hat einen Ausgang zu einer konditionalen Mischeinheit 46, die die texturierten Daten direkt mit Daten aus dem Fliesentiefenspeicher 24 mischen kann, bevor die Daten zum Fliesenakkumulationspuffer 36 gesendet werden.
  • Es ist auch eine automatische Sortiereinheit für Oberflächendaten vorhanden, die mit dem Fliesentiefenspeicher verbunden ist. Sie sendet Daten zu einem Scheitelpunkt- Requester 50, der dann gewährleistet, dass Polygon- Scheitelpunktdaten in einer geeigneten Reihenfolge zur Polygoneinrichteinheit 20 gesendet werden.
  • Es ist eine Sortierrichtungssteuerung vorhanden, so dass Oberflächen von vorne nach hinten und von hinten nach vorne sortiert werden können, sowie eine Bypass-Steuerung, um deren Verwendung zu umgehen. Der Gebrauch dieses Schaltkomplexes wird in vier verschiedenen Betriebsarten beschrieben.
  • Der z-Puffer ist ein so weit verbreiteter Renderalgorithmus, dass es nützlich ist, eine Betriebsart zu haben, die diesen emuliert, da dies im Wesentlichen das ist, womit viele Programmierer vertraut sind. So erhält man die Vorteile des Strahlverfolgungs-Renderalgorithmus, während anscheinend in einem z-Puffermodus gearbeitet wird.
  • In diesem Modus umgehen Polygone die Auto-Sortierlogik 48 infolge eines Steuersignals, das zu ihrem Bypass-Eingang gesendet wird. Stattdessen gehen sie unsortiert zu der mit dem Fliesentiefenspeicher 24 assoziierten Tiefenprüfeinheit. Anstatt an dieser Stelle die Tiefenberechnung durchzuführen, werden die standardmäßigen ABC- und Tag-Parameter, die die Basis der Strahlverfolgungstechnik bilden, im Bypass-FIFO 40 gespeichert, und die Bildschirm-XY-Orte und Tag-Werte werden für jede Fläche nacheinander zur verzögerten Texturiereinheit weitergeleitet.
  • In dieser Betriebsart wird die Texturierung nicht verzögert, da alle Pixel der Textureinheit unabhängig davon präsentiert werden, ob sie durch ein zuvor gerendertes opakes Pixel verborgen wurden, das sich näher am Augenpunkt in dem aktuellen Pixel befindet. Die Textureinheit verarbeitet "Texel" (Texturelemente) in der Reihenfolge, in der sie präsentiert werden. Texel werden gefiltert, mit der Polygon- Grundfarbe und eventuellen Hervorhebungen gemischt und auf dieselbe Weise einer Alpha-Prüfung unterzogen wie für einen traditionellen z-Puffer (siehe Fig. 1). Für jedes Pixel wird, wenn die Alpha-Prüfung gut ausgeht, die entsprechende Tiefe anhand der gespeicherten ABC- und Tag-Parameter im FIFO 40 berechnet, die zurück zur Prozessorelement-Array 22 und dann in den Fliesentiefenspeicher 24 gespeist werden. Die entsprechende Tiefe wird dann mit der assoziierten Tiefenprüfeinheit berechnet und der Fliesentiefenspeicher wird aktualisiert. Der Pixel-RGB-Wert wird dann im Fliesenakkumulationspuffer von der konditionellen Alpha- Mischeinheit 46 gemischt. Dieser Prozess wird so lange fortgesetzt, bis alle Polygone in der Szene verarbeitet sind. Die Arbeitsgeschwindigkeit ist hier mit einem standardmäßigen z-Puffer äquivalent, da alle Polygone texturiert und schattiert werden müssen. Durch Texturieren und Schattieren nur der sichtbaren Polygone kann nichts eingespart werden.
  • In der zweiten Betriebsart wird die Punch-Through- Regelung zum Beschleunigen der Verarbeitung verwendet, aber es erfolgt vor dem Schattieren und Texturieren keine Sortierung von Polygonen und Flächendaten. Der Modus ist derselbe wie der, der für den z-Puffer-Betrieb beschrieben wurde, mit der Ausnahme, dass die Polygone anhand des aktuellen Inhalts des Fliesentiefenspeichers einer Tiefenprüfung unterzogen werden, bevor sie zur Texturiereinheit geleitet werden. Punch-Through-Texturen werden von der Alpha-Prüfeinheit 42 erfasst, die Signale zur Punch-Through-Steuereinheit 44 sendet, um die Punch-Through- Flächen zurück zur Prozessorelement-Array 22 zu senden. Sie werden dann zum Fliesentiefenspeicher und zur Tiefenprüfeinheit 26 gesendet, die sie anhand des aktuellen Inhalts des Speichers prüft. Wenn sie sich näher an der Bildebene befinden, dann ersetzen sie den aktuellen Inhalt. Wenn ein nachfolgendes Polygon oder ein Teil eines Polygons an einem bestimmten Pixel durch ein zuvor gerendertes opakes Pixel verdeckt wird, dann wird es nicht zur Texturiereinheit gesendet. Somit ist das Ausmaß der Füllratenverbesserung gegenüber dem z-Puffersystem von zwei Faktoren abhängig: erstens der Reihenfolge, in der die Polygone präsentiert werden, und zweitens der Latenz zwischen Tiefenprüfung und Alpha-Prüfung. Wenn beispielsweise Polygone zufällig in der Reihenfolge von hinten nach vorne präsentiert werden und die Polygone einander nicht überlappen, dann ist die Füllrate mit dem z-Puffersystem identisch. Wenn die Polygone andererseits zufällig in der Reihenfolge von vorne nach hinten präsentiert werden, in einem 0-Latenz-System, dann wird die Füllratenanforderung durch das Verhältnis von idealen verborgenen Pixeln in der Szene zu sichtbaren Pixeln in der Szene reduziert (d. h. der Tiefenkomplexität). Der Effekt von Latenz in dem System ist eine Reduzierung der Effizienz dieses Prozesses, da für ein finites Zeitfenster (Ausmaß an Latenz in dem System) ein Anteil von Pixeln, die man in einem 0-Latenz-System als verborgen hätte identifizieren können, zur Texturiereinheit geleitet wurden und die Texturierbandbreite aufbrauchen. Diese Latenz ist inhärent [sic], weil es eine Zeit dauert, um das erste Polygon zu texturieren, um es durch die Textureinheit zu leiten und es einer Alpha- und Tiefenprüfung zu unterziehen. Nach der Überwindung dieser Anfangslatenz erhalten die Prozessorelementanordnung sowie die Fliesentiefenspeicher- und Tiefenprüfeinheit 24 Tiefen für neue Polygone und zur Durchführung von Tiefenprüfungen an zuvor gerenderten Polygonen, wenn das Ergebnis der Alpha-Prüfungen ist, dass das fragliche Pixel ein Punch-Through-Pixel ist, das andere Pixel in der Szene verbirgt.
  • Eine dritte Betriebsart ist ein verzögerter Texturier- Pipeline-Prozess, der einen Transluzenz-Sortieralgorithmus verwendet.
  • Wie oben beschrieben, ist das von der Erfindung erbrachte Maß an Füllratenverbesserung von der Reihenfolge abhängig, in der die Polygone präsentiert werden. Der Vorteil der Verwendung von Punch-Through-Regelung in Kombination mit pixelgenauer Auto-Sortierung besteht darin, dass ein System sicherstellen kann, dass Polygone und Teile von Polygonen immer in optimaler Reihenfolge verarbeitet werden. Der Auto- Sortieralgorithmus für Punch-Through-Verarbeitung unterscheidet sich von dem Algorithmus für Alpha- Mischverarbeitung in zwei wesentlichen Aspekten. Zunächst werden die Punch-Through-Pixel von vorne nach hinten anstatt von hinten nach vorne sortiert. Der Grund hierfür ist, dass, wenn ein Punch-Through-Pixel vorhanden ist, es einen Alpha- Wert von 1 hat und keine Oberflächen dahinter zu der auf dieses Pixel angewendeten Schattierung und Textur beitragen. Zweitens kann das Sortier-Overhead durch Unterteilen der Sortierliste in kleinere Portionen reduziert werden. Wir bezeichnen dies als "Chunking" (Portionierung).
  • Nachfolgend wird der Ablauf von Punch-Through-Auto- Sortieralgorithmen mit Bezug auf Fig. 4 beschrieben. Sie zeigt den den Strahlverfolgungsalgorithmus durchführenden Teil der Fig. 2 und 3, aber nicht die Texturierhardware.
  • Es ist ersichtlich, dass ein Cache-Speicher 52 zwischen der Polygoneinrichteinheit 20 und der Verarbeitungselement- Array 22 vorgesehen ist. Die Fliesentiefenspeicher- und Tiefenprüfeinheit 24 hat einen Ausgang zur Auto-Sortierlogik 54, die mit automatischer Verwerflogik 58 und Portionierlogik 54 gekoppelt ist. Die Portionierlogik hat einen Ausgang zurück zum Cache-Speicher 52 und auch zum Scheitelpunkt- Requester 50. Die Auto-Sortierlogik 56 umfasst wenigstens einen zusätzlichen Fliesentiefenspeicher für die vorübergehende Speicherung von Daten. Diese werden bei der Suche nach opaken Oberflächen nicht benötigt, da bei einem Vergleich mit der gerade gespeicherten Tiefe ermittelt wird, ob ein opakes Pixel näher an der aktuellen Tiefe liegt oder nicht. Sie werden beim Sortieren transluzenter Objekte verwendet. Diese zusätzlichen Tiefenspeicher könnten in der Fliesentiefenspeicher- und Tiefenprüfeinheit 24 vorgesehen werden.
  • Da Punch-Through-Texturen typischerweise zum Modellieren komplexer Strukturen wie Wälder und Wolkenszenen verwendet werden, ist die Zahl der für Punch-Through verwendeten Polygone im Allgemeinen weitaus größer als für alpha- gemischte Transluzenz. Demzufolge muss der Verarbeitungs- Overhead zum Sortieren minimal gehalten werden, um das System effizient zu machen. Ein einfacher Algorithmus zum Sortieren von n Objekten in auf- oder absteigender Reihenfolge würde n² Vorgänge erfordern. Dies ist in Fig. 5 illustriert, in der eine Baum-Punch-Through-Textur auf der Frontfläche zu sehen ist, die opake Texel im Bereich des Baums und transparente um diesen herum hat. Eine automatische Sortierung erfolgt durch Rendern aller transluzenten Polygone in Folge, um die unterste Schicht zu erkennen. Daher ist die Zahl der pro Fliese verarbeiteten Polygone die Anzahl der Polygone multipliziert mit der Anzahl der Schichten, nämlich 2n².
  • Wenn jedes Objekt vom Sortiervorgang verworfen wird, lautet die Anzahl der Vorgänge wie folgt:
  • n + n - 1 + n - 2 + ... + 1
  • d. h. etwa gleich n²/2. Die Charakteristik der Punch-Through- Sortierung besteht darin, dass die Sortierung portioniert werden kann, ohne dass sichtbare Fehler entstehen. Zum Portionieren beträgt die Anzahl der Vorgänge MOD (n/m)·m² + REM (n/m)², wobei n die Portionsgröße ist. Eine Reduzierung der Portionsgröße reduziert sowohl das Sortier- Overhead als auch die Effizienz der Sortierung. Eine reale Implementation dieses Algorithmus wird ein Kompromiss zwischen den für den Sortieralgorithmus verfügbaren Rechenressourcen und der Effizienz des Punch-Through-Vorgangs sein. Der Nutzen der Portionierung besteht darin, dass sie den Freiheitsgrad erhöht, mit dem dieser Kompromiss gefunden werden kann. Der Sortieralgorithmus kann weiter optimiert werden, es sei denn, er wird frühzeitig abgebrochen, an der Stelle, an der alle Pixel in einer Fliese validiert sind (d. h. sie wurden einer gültigen opaken Tiefe zugewiesen). Dies ist in Fig. 6 illustriert. In Fliese (a) verbirgt das nächstliegende Polygon alle Polygone dahinter. Daher ist die Zahl der verarbeiteten Polygone n.
  • Mit einem einzigen Durchgang durch den Punch-Through- Sortieralgorithmus wird das nächste Polygon zur Bildebene für jedes Pixel gefunden. Dann ermittelt im Fall von Fliese (a) der erste Durchgang, dass ein nächstes opakes Polygon für jedes Pixel in der Fliese gefunden wurde, und daher sind keine weiteren Durchgänge notwendig.
  • Portionen von Polygondaten werden von der Portionierlogik 54 zu Fliesentiefenspeicher, Tiefenprüflogik und Auto-Sortierlogik gesendet. Sie senden dann Polygone, die nicht mehr benötigt werden, zur Verwerflogik.
  • Die Auto-Sortierlogik sortiert dann die zu rendernden Polygone in einer Richtung, die von einem Sortierrichtungseingang gesteuert wird, und sendet sie zum Cache-Speicher 52, von wo sie dann wieder zur Prozessorelement-Array 22 und schließlich weiter zur Texturiereinheit gesendet werden. Somit sortiert die Auto- Sortierlogik die Polygone in der Reihenfolge von vorne nach hinten und kann, wenn sie in der Vorrichtung von Fig. 3 eingesetzt wird, das Verarbeitungs-Overhead in komplexen Szenen erheblich reduzieren, da die nächstliegenden völlig opaken Pixel zuerst verarbeitet werden und Polygone dahinter nicht texturiert zu werden brauchen.
  • Die vierte Betriebsart der Schaltung von Fig. 3 ist ein verallgemeinerter Auto-Sortier-Alpha-Mischmodus.
  • Mit modernsten Graphikcontrollern zur Durchführung von bilinearer und trilinearer Texturierung als Standardvorgänge wird die blockartige sichtbare Natur von Punch-Through- Texturen weniger akzeptabel. Eine typische Reprovorlage z. B. für eine Baumstruktur wäre ein Punch-Through (d. h. völlig opak) im Körper des Baums und alpha-gemischt (d. h. teilweise transluzent) an den Blattenden. Mit der Schaltung von Fig. 3 kann diese Art von Alpha-Mischtextur korrekt gerendert werden, während der Vorteil einer verzögerten Texturierung erhalten bleibt.
  • Dazu würden zwei Durchgänge durch die Baumoberflächendaten erfolgen. Im ersten Durchgang wird der Punch-Through-Teil jedes Polygons in einer Fliese wie im obigen Auto-Sortiermodus beschrieben verarbeitet. Die Alpha- Prüfeinheit 42 wird so eingestellt, dass sie nur völlig opake Texel weiterleitet, so dass der Fliesentiefenpuffer am Ende des Durchgangs die Tiefe des dem Auge am nächsten liegenden völlig opaken Texels für jede Pixelposition in der Fliese enthält. Im zweiten Durchgang sortiert der Auto- Sortieralgorithmus die Pixel von hinten nach vorne, und die Tiefenprüfung wird auf "größer als" eingestellt, so dass für jede sichtbare Polygonfraktion nur das Nichtopake (d. h. der alpha-gemischte Rand der Blätter in dem Baumbeispiel) zur Textureinheit gesendet wird. Da der zweite Durchgang von hinten nach vorne sortiert, werden überlappende teilweise transluzente Texturen korrekt gemischt. Der zweite Durchgang sollte sehr effizient sein, da in einer typischen Szene (d. h. einem Punch-Through-Wald) nur ein geringer Prozentanteil aller Pixel in der Polygonliste die Tiefenprüfung besteht. Die Eignung dieser Technik für allgemeine alpha-gemischte Texturen ist vom Verhältnis zwischen opaken Texeln und transluzenten Texeln in den Textur-Maps abhängig. In dem Baumbeispiel wäre der Algorithmus am besten geeignet. Wenn jedoch alle Texturen Wolken wären und keine opaken Pixel enthielten, dann wäre die standardmäßige automatische Sortierung die bevorzugte Methode.
  • Aus dem oben Gesagten geht somit hervor, dass Verfahren und Vorrichtungen, die 3-dimensionale Bilder mit der Strahlverfolgungstechnik rendern, so modifiziert werden, dass der Nutzen von reduzierten Verarbeitungs-Overheads von Punch- Through-Texturen erhalten wird, so dass der Betrieb des Systems beschleunigt wird. Die Verwendung von Punch-Through- Texturen ist insbesondere in Szenen nützlich, in denen eine große Zahl überlappender Punch-Through-Texturen wie z. B. Wolkenszenen oder Wälder vorhanden ist. Die Anwendung der Punch-Through-Verarbeitung bedeutet, dass nur auf das Polygon, das sich dem Blickpunkt am nächsten befindet, für jedes Pixel ein Texturwert angewendet werden muss. Ohne diesen Vorgang wäre es notwendig, Texturen auf alle Polygone anzuwenden, die den Strahl schneiden, der durch dieses Pixel geht. In einer Szene wie z. B. einem Wald könnte dies leicht zur Folge haben, dass mehrere tausend Texturiervorgänge anstatt einem für jedes Pixel notwendig wären. Somit können sehr komplexe Szenen mit weitaus höheren Geschwindigkeiten texturiert werden, als dies sonst möglich wäre.

Claims (8)

1. Verfahren zum Schattieren und Texturieren dreidimensionaler computergenerierter Bilder, umfassend die folgenden Schritte:
Bereitstellen von Daten, die eine Gruppe von Oberflächen definieren, die jedes Objekt in dem Bild nacheinander darstellen;
für jeden Elementarbereich des Displays Erzeugen eines Tiefenwertes für jede Oberfläche jedes Objekts in Abhängigkeit vom Abstand dieser Oberfläche von einer Bildebene;
gekennzeichnet durch:
Anwenden von Schattierungs- und Texturdaten auf die Oberflächen;
Ermitteln, ob auf eine Oberfläche angewendete Texturdaten vollständig opak sind;
Speichern der Tiefenwerte für opake Texturen von Objekten an Elementarbereichen in einem Tiefenprüfmittel;
Vergleichen der Tiefe von Oberflächen von nachfolgenden Objekten mit den Tiefenwerten für die opaken Objekte an Elementarbereichen; und
Verwerfen der Oberflächen der nachfolgenden Objekte für Elementarbereiche, die bereits eine völlig opake Oberfläche haben, die näher an der Bildebene liegt.
2. Verfahren nach Anspruch 1, bei dem die Objekte in einem Bild zunächst von vorne nach hinten sortiert werden, so dass völlig opake Objekte eine Texturierung von Objekten dahinter verhindern.
3. Verfahren nach Anspruch 1, bei dem wenigstens eine Textur völlig opake Abschnitte und transluzente Abschnitte beinhaltet und wobei die Objekte in dem Bild zunächst von vorne nach hinten sortiert werden und die völlig opaken Elemente verwendet werden, um die Texturierung von Objekten dahinter zu verhindern, und die Objekte dann von hinten nach vorne sortiert werden und auf alle nicht opaken Elementarbereiche eine Texturierung angewendet wird.
4. Verfahren nach einem der vorherigen Ansprüche, das den Schrittesatz beinhaltet, bei dem das Bild zunächst mit einer Mehrzahl von rechteckigen Bereichen unterteilt wird und die einzelnen rechteckigen Bereiche dann nacheinander schattiert und texturiert werden.
5. Vorrichtung zum Schattieren und Texturieren eines dreidimensionalen computergenerierten Bildes, die Folgendes umfasst:
Mittel zum Bereitstellen von Daten, die eine Gruppe von Oberflächen definieren, die jedes Objekt in dem Bild nacheinander repräsentieren;
Mittel (22) zum Erzeugen eines Tiefenwertes für jede Oberfläche jedes Objekts an jedem Elementarbereich des Displays in Abhängigkeit vom Abstand dieser Oberfläche von einer Bildebene;
gekennzeichnet durch:
Mittel (32) zum Anwenden von Schattierungs- und Texturdaten auf die Oberflächen;
Mittel (42) zum Ermitteln, ob auf eine Oberfläche angewendete Texturdaten völlig opak sind;
Mittel (24) zum Speichern der Tiefenwerte für opake Texturen von Objekten an Elementarbereichen in einem Tiefenprüfmittel;
Mittel (28) zum Vergleichen der Tiefe von Oberflächen von nachfolgenden Objekten mit den Tiefenwerten für die opaken Objekte an jedem Elementarbereich; und
Mittel (40) zum Verwerfen der Oberflächen der nachfolgenden Objekte für Elementarbereiche, die bereits eine völlig Opake Fläche haben, die näher an der Bildebene liegt.
6. Vorrichtung nach Anspruch 5 mit einem Mittel (56) zum Sortieren der Objekte in dem Bild von vorne nach hinten, so dass völlig opake Objekte eine Texturierung von Objekten dahinter verhindern.
7. Vorrichtung nach Anspruch 5, bei der wenigstens eine Textur völlig opake Abschnitte und transluzente Abschnitte beinhaltet, und die ein Mittel beinhaltet, um die Objekte in dem Bild zunächst von vorne nach hinten zu sortieren, so dass die völlig opaken Elemente verwendet werden, um die Texturierung von Objekten dahinter zu verhindern, und um die Objekte anschließend von hinten nach vorne zu sortieren, so dass auf alle nicht opaken Elementarbereiche eine Texturierung angewendet wird.
8. Vorrichtung nach einem der Ansprüche 5, 6 und 7 mit einem Mittel, um das Bild zunächst in eine Mehrzahl von rechteckigen Fliesen zu unterteilen.
DE69905483T 1998-11-06 1999-11-08 Schattierung und texturierung von 3-dimensionalen rechner-erzeugten bildern Expired - Lifetime DE69905483T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9824411A GB2343601B (en) 1998-11-06 1998-11-06 Shading and texturing 3-dimensional computer generated images
PCT/GB1999/003706 WO2000028482A1 (en) 1998-11-06 1999-11-08 Shading and texturing 3-dimensional computer generated images

Publications (2)

Publication Number Publication Date
DE69905483D1 DE69905483D1 (de) 2003-03-27
DE69905483T2 true DE69905483T2 (de) 2003-10-30

Family

ID=10842015

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69905483T Expired - Lifetime DE69905483T2 (de) 1998-11-06 1999-11-08 Schattierung und texturierung von 3-dimensionalen rechner-erzeugten bildern

Country Status (7)

Country Link
US (1) US6906715B1 (de)
EP (1) EP1125252B1 (de)
JP (1) JP4499291B2 (de)
AT (1) ATE233005T1 (de)
DE (1) DE69905483T2 (de)
GB (1) GB2343601B (de)
WO (1) WO2000028482A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2355633A (en) * 1999-06-28 2001-04-25 Pixelfusion Ltd Processing graphical data
US7095409B2 (en) * 2003-04-30 2006-08-22 Pixar Shot shading method and apparatus
GB2404316B (en) * 2003-07-25 2005-11-30 Imagination Tech Ltd Three-Dimensional computer graphics system
US8081182B2 (en) 2004-03-03 2011-12-20 Qualcomm Incorporated Depth buffer for rasterization pipeline
US20050195198A1 (en) * 2004-03-03 2005-09-08 Anderson Michael H. Graphics pipeline and method having early depth detection
US7567248B1 (en) * 2004-04-28 2009-07-28 Mark William R System and method for computing intersections between rays and surfaces
US7656412B2 (en) * 2005-12-21 2010-02-02 Microsoft Corporation Texture resampling with a processor
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
JP4964688B2 (ja) * 2007-06-22 2012-07-04 任天堂株式会社 画像処理プログラムおよび画像処理装置
US20090080803A1 (en) * 2007-09-20 2009-03-26 Mitsugu Hara Image processing program, computer-readable recording medium recording the program, image processing apparatus and image processing method
KR102066659B1 (ko) 2013-08-13 2020-01-15 삼성전자 주식회사 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법
KR102651126B1 (ko) * 2016-11-28 2024-03-26 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4825391A (en) * 1987-07-20 1989-04-25 General Electric Company Depth buffer priority processing for real time computer image generating systems
JPH04220782A (ja) * 1990-12-20 1992-08-11 Fujitsu Ltd 三次元画像表示処理方法
US5428724A (en) * 1992-04-29 1995-06-27 Canon Information Systems Method and apparatus for providing transparency in an object based rasterized image
JP3557208B2 (ja) * 1993-05-10 2004-08-25 アプル・コンピュータ・インコーポレーテッド 高性能複数層zバッファを有するコンピュータ・グラフィックス・システム
US5729672A (en) * 1993-07-30 1998-03-17 Videologic Limited Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
US5854631A (en) * 1995-11-22 1998-12-29 Silicon Graphics, Inc. System and method for merging pixel fragments based on depth range values
JP3495189B2 (ja) * 1996-06-19 2004-02-09 株式会社ソニー・コンピュータエンタテインメント 描画装置および描画方法
US6229553B1 (en) * 1998-08-20 2001-05-08 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor

Also Published As

Publication number Publication date
ATE233005T1 (de) 2003-03-15
DE69905483D1 (de) 2003-03-27
EP1125252A1 (de) 2001-08-22
GB9824411D0 (en) 1998-12-30
GB2343601A (en) 2000-05-10
EP1125252B1 (de) 2003-02-19
GB2343601B (en) 2002-11-27
WO2000028482A1 (en) 2000-05-18
JP2002529870A (ja) 2002-09-10
US6906715B1 (en) 2005-06-14
JP4499291B2 (ja) 2010-07-07

Similar Documents

Publication Publication Date Title
DE69919497T2 (de) Verfahren und Gerät zur Volumendarstellung mit mehreren Tiefenpuffern
DE69905483T2 (de) Schattierung und texturierung von 3-dimensionalen rechner-erzeugten bildern
DE69602728T2 (de) Vorrichtung zur bildmanipulation und -generation
DE19709220B4 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
DE69624868T2 (de) Computergraphiksystem mit leistungsfähiger Vorverarbeitung des Clippings von Primitiven
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE69811849T2 (de) Verfahren und gerät zur interpolation von attributen bei 3d-grafiken
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE69127915T2 (de) System und Verfahren von Prioritätsfarbabbildung
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE69122557T2 (de) Bilderzeugung
DE60217122T2 (de) Drei-dimensionales graphisches system
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE3853393T2 (de) Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung.
DE69132041T2 (de) Dreieckinterpolator
DE69424716T2 (de) Verfahren und Vorrichtung zur adaptiven Steuerung der Texturabbildung
DE3855231T2 (de) Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing
DE3688565T2 (de) Verfahren und System zur Bildveränderung.
DE69914355T2 (de) Bildverarbeitungsgerät
DE69029987T2 (de) Verfahren und Gerät zur parallelen Wiedergabe von Polygonen und Pixeln
DE69609534T2 (de) Rechnerbasierte 3D-Darstellungsverfahren und -System
DE69917799T2 (de) Texturierungssysteme zur verwendung in drei-dimensionalen abbildungssystemen
DE602004003111T2 (de) Tiefen-basiertes Antialiasing
DE69901572T2 (de) Verfahren zur volumetrischen bilddatenverarbeitung eines durch texturabbildung visualisierten objektes
DE69130127T2 (de) System und Verfahren zur Farbbilderanzeige

Legal Events

Date Code Title Description
8364 No opposition during term of opposition