DE69905483T2 - Schattierung und texturierung von 3-dimensionalen rechner-erzeugten bildern - Google Patents
Schattierung und texturierung von 3-dimensionalen rechner-erzeugten bildernInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 22
- 239000000872 buffer Substances 0.000 description 25
- 230000015654 memory Effects 0.000 description 21
- 238000012360 testing method Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 238000002156 mixing Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 7
- 239000007853 buffer solution Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 239000000203 mixture Substances 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012952 Resampling Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden 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.
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)
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)
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 |
-
1998
- 1998-11-06 GB GB9824411A patent/GB2343601B/en not_active Expired - Lifetime
-
1999
- 1999-11-08 AT AT99954170T patent/ATE233005T1/de not_active IP Right Cessation
- 1999-11-08 WO PCT/GB1999/003706 patent/WO2000028482A1/en active IP Right Grant
- 1999-11-08 US US09/831,240 patent/US6906715B1/en not_active Expired - Lifetime
- 1999-11-08 EP EP99954170A patent/EP1125252B1/de not_active Expired - Lifetime
- 1999-11-08 JP JP2000581597A patent/JP4499291B2/ja not_active Expired - Lifetime
- 1999-11-08 DE DE69905483T patent/DE69905483T2/de not_active Expired - Lifetime
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 |