DE3853336T2 - Rechnergraphikgerät zur Verarbeitung von Beleuchtungsmodellinformation. - Google Patents

Rechnergraphikgerät zur Verarbeitung von Beleuchtungsmodellinformation.

Info

Publication number
DE3853336T2
DE3853336T2 DE3853336T DE3853336T DE3853336T2 DE 3853336 T2 DE3853336 T2 DE 3853336T2 DE 3853336 T DE3853336 T DE 3853336T DE 3853336 T DE3853336 T DE 3853336T DE 3853336 T2 DE3853336 T2 DE 3853336T2
Authority
DE
Germany
Prior art keywords
intensity
vertex
floating point
light source
processing
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 - Fee Related
Application number
DE3853336T
Other languages
English (en)
Other versions
DE3853336D1 (de
Inventor
Jorge Gonzalez-Lopez
Bruce Carlton Hempel
Bob Chao-Chu Liang
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE3853336D1 publication Critical patent/DE3853336D1/de
Publication of DE3853336T2 publication Critical patent/DE3853336T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/50Lighting effects
    • G06T15/506Illumination models

Landscapes

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

Description

  • Die vorliegende Erfindung bezieht sich im allgemeinen auf das Gebiet der Computergraphik. Computergraphik-Anzeigesysteme, beispielsweise CAD/CAM-Graphik-Workstations, finden verbreitet Anwendung bei der Generierung und Anzeige von Gegenstandsabbildungen in wissenschaftlichen, technischen, produktionsbezogenen und anderen Anwendungen.
  • In diesen Computergraphiksystemen werden die Flächen eines Gegenstandes normalerweise durch ein Polygonmaschennetz dargestellt. Ein Polygonmaschennetz ist eine Sammlung aus Scheitelpunkten, Rändern und Polygonen. Die Scheitelpunkte sind durch Ränder verbunden, während man sich Polygone als Sequenzen von Rändern oder Scheitelpunkten vorstellen kann. Um eine visuelle Darstellung eines Gegenstands auf dem Anzeigebildschirm zu erhalten, die realistischer ist als das dazugehörige Polygonmaschennetz, wurden Verfahren entwickelt, um verborgene Flächen und Schattierungen zu entfernen und sichtbare Flächen mit einer Struktur zu versehen.
  • Die vorliegende Erfindung bezieht sich auf die Implementierung einer Schattierungsfunktion in einer Graphik-Workstation und insbesondere auf die Computerverarbeitung und -anzeige schattierter Bilder, in der ein Beleuchtungsmodell verwendet wird. Effekte, die in einem solchen Beleuchtungsmodell möglich sind, wären beispielsweise eine Umgebungsbeleuchtung, diffuse Effekte und Spiegelreflektionseffekte, Anzahl, Position und Intensität und Farbton der Lichtquellen, parallele Projektionen, Perspektivprojektionen und die Dämpfung des Lichts aufgrund des Abstands verschiedener Teile eines modellierten Gegenstands vom Betrachter (Tiefendarstellung).
  • EP-A-0 193 151 zeigt die Darstellung einer Fläche bezüglich der Scheitelpunkte von Dreiecken und definiert die auszuführende Operationssequenz 1) zur Definition der Lichtstärke an jedem Gipfelpunkt, 2) zur Durchführung einer Perspektivumwandlungsverarbeitung der Gipfelpunkte und 3) zur Durchführung der Verarbeitung schattierter und verborgener Flächen für den gesamten Anzeigebereich.
  • Die allgemeine Systemarchitektur einer Schattierungshardware für eine bekannte Graphik-Workstation wird in Form eines Blockdiagramms in Figur 1 abgebildet. Das gesamte Schattierungsfunktionssystem 10 enthält ein Beleuchtungsmodell-Verarbeitungssystem 12 und ein Schattierungsverarbeitungssystem 14, einen Videopixelspeicher 16 und einen Anzeigebildschirm 18.
  • Das Beleuchtungsmodell-Verarbeitungssystem 12 berechnet die Farbintensitäten (das heißt, die Komponenten rot, grün und blau) an den Scheitelpunkten jedes Polygons für ein bestimmtes Beleuchtungsmodell. Das Schattierungsverarbeitungssystem 14 verwendet die Informationen des Beleuchtungsmodell-Verarbeitungssystems zur Berechnung der Farbintensitäten von Pixeln im Innern von sichtbaren Polygonen und sendet diese Informationen zum Videopixelspeicher 16. Der Anzeigebildschirm 18 zeigt das schattierte Bild an, das im Videopixelspeicher gespeichert ist.
  • In bisherigen Graphik-Workstations erfolgte die Berechnung der Effekte durch Beleuchtung mit Hilfe eines Allzweckprozessors. Diese Vorgehensweise hat zwar den Vorteil, daß gewöhnliche, stets verfügbare Komponenten verwendet werden, weist jedoch den Nachteil einer geringen Geschwindigkeit auf, da der gesamte Prozeß durch ein einziges Allzweck-Verarbeitungselement ausgeführt wird.
  • Es ist außerdem aus dem Patent US-A-4 343 037 bekannt, daß schnellere Pipeline-Prozessoren für die computergenerierte Bilderzeugung, insbesondere die Flächenabtastung, verwendet werden können. Die Verwendung unterschiedlicher Pipeline- Prozessoren wird jedoch nicht dargestellt; auch wird die Verwendung eines Pipeline-Prozessors nicht optimiert.
  • Gemäß der vorliegenden Erfindung erfolgt die Berechnung der Effekte aufgrund von Beleuchtung durch mehrere identische Gleitkomma-Verarbeitungselemente, die in der Art einer Pipeline verbunden sind und betrieben werden. Die verwendete Pipeline-Konfiguration kann rein seriell sein, oder sie kann in der Pipeline seriell mit einigen parallelen Ausrichtungen desselben Identischen Verarbeitungselements ausgelegt sein. Insbesondere stellt die vorliegende Erfindung ein Gerät zur Verarbeitung von Beleuchtungsmodellinformationen bereit, um ein schattiertes Bild eines Gegenstands auf einem Anzeigebildschirm eines Computergraphik-Anzeigesystems anzuzeigen, auf dem ein Gegenstand im Sichtbereich durch ein Maschennetz aus Polygonen dargestellt ist, wobei jedes Polygon durch mehrere Scheitelpunkte definiert ist und die Position jedes der genannten Scheitelpunkte im Sichtbereich bekannt ist, und wobei das Gerät folgendes umfaßt: eine Pipeline-Anordnung mehrerer Verarbeitungsphasen, wobei jede Phase aus einem oder mehreren Identischen Gleitkommaprozessoren besteht; diese Verarbeitungsphasen sind so angeordnet, daß sie Daten empfangen, die die Koordinaten x, y und z im Sichtbereich der Scheitelpunkte eines Polygons und die Komponenten x, y und z einer Normalen an jedem der Scheitelpunkte des Polygons darstellen, und daß sie daraus die Koordinaten x und y auf dem Anzeigebildschirm der Scheitelpunkte und Bildschirmfarbintensitätswerte, die zu jedem der genannten Scheitelpunkte basierend auf einem speziellen Beleuchtungsmodell gehören, wobei diese Pipeline-Anordnung aus mehreren Verarbeitungsphasen folgendes umfaßt: eine erste und zweite Verarbeitungsphase zur gemeinsamen Berechnung von Scheitelpunktintensitätswerten gemäß einem Lichtquellenmodell, das als ein einzelnes oder ein mehrfaches Lichtquellenmodell identifiziert ist; eine dritte Verarbeitungsphase zur Abbildung von Scheitelpunkten auf einen Anzeigebildschirm, und eine vierte Verarbeitungsphase für den Empfang der Intensitätswerte, die gemeinsam von der ersten und von der zweiten Verarbeitungsphase berechnet wurden und zur weiteren Verarbeitung der genannten Intensitätswerte zur Bereitstellung einer Tiefendarstellung, einer Farbabbildung und einer Farbtrimmung; wobei das Gerät weiterhin ein Mittel zur dynamischen Zuteilung von Intensitätswertberechnungen zwischen der genannten ersten und zweiten Verarbeitungsphase abhängig davon, ob ein einzelnes oder mehrfaches Beleuchtungsquellenmodell verwendet wird, umfaßt, um zwischen der ersten und zweiten Verarbeitungsphase eine ausgeglichene Rechenbelastung aufrechtzuerhalten.
  • Durch die Verwendung einer Pipeline-Anordnung aus mehrfachen identischen Verarbeitungselementen zur Durchführung der rechnerintensiven Beleuchtungsmodellberechnungen wird eine Leistungserhöhung um ein Vielfaches erzielt. Durch eine starke Erhöhung der Anzahl an Polygonen, die das System pro Sekunde verarbeiten kann, ist die Verwendung eines wesentlich feineren Polygonmaschennetzes zur Darstellung eines gegebenen Gegenstands möglich; die Verwendung eines feineren Maschennetzes ergibt wiederum schattierte Bilder einer wesentlich höheren Qualität. Daher zeigt sich die durch die Verwendung der vorliegenden Erfindung erzielte Leistungserhöhung dem Benutzer der Workstation in Form einer verbesserten Interaktivität und einer höheren Bildqualität.
  • Im Sinne einer ausführlicheren Beschreibung der vorliegenden Erfindung folgt nun eine Veranschaulichung anhand eines Beispiels, wobei auf die folgenden Begleitzeichnungen Bezug genommen wird:
  • Figur 1 ist ein Blockdiagramm, in dem eine Hardware-Implementierung einer Schattierungsfunktion in einer Computergraphik- Workstation abgebildet ist;
  • Figur 2 ist ein Blockdiagramm einer allgemeinen Ausführung des Beleuchtungsmodell-Verarbeitungssystems der vorliegenden Erfindung;
  • Figur 3 ist eine Abbildung eines bevorzugten Ausführungsbeispiels des Prozessors der vorliegenden Erfindung;
  • Figur 4 ist ein Blockdiagramm, in dem eine Einzellichtquellenkonfiguration eines Beleuchtungsmodell-Verarbeitungssystems der vorliegenden Erfindung abgebildet ist;
  • Figur 5 ist eine Abbildung einer anderen Einzellichtquellenkonfiguration des Beleuchtungsmodell-Verarbeitungssystems von Figur 4; und
  • Figur 6 ist eine Abbildung einer Mehrfachlichtquellenkonfiguration eines Beleuchtungsmodell-Verarbeitungssystems der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • Das Beleuchtungsmodell-Verarbeitungssystem der vorliegenden Erfindung besteht aus mehreren Gleitkomma-Verarbeitungsphasen, die seriell miteinander verknüpft sind und in einer Pipeline- Anordnung ablaufen. Jede Phase umfaßt vorzugsweise einen oder mehrere identische Gleitkomma-Prozessoren (ebenfalls als Verarbeitungselemente bezeichnet). Jede Phase wird als separate Verarbeitungseinheit betrachtet, die ihre jeweilige(n) Funktion(en) gleichzeitig mit den anderen Phasen ausführt und dabei eine spürbare Leistungserhöhung erreicht.
  • Figur 2 zeigt ein erstes Ausführungsbeispiel des Beleuchtungsmodell-Berechnungssystems 12, das aus den vier Gleitkomma- Verarbeitungsphasen 20, 22, 24 und 26 besteht, die in Pipeline angeordnet sind. Die erste Phase 20 und die zweite Phase 22 werden zu Beleuchtungsmodellberechnungen verwendet. Die dritte Phase 24 wird für eine Projektionsumwandlung und zur Abbildung von einem Betrachtungsbereich zu einem Bildschirmbereich verwendet; die vierte Phase 26 wird für Tiefen-Cueing, Farbabbildungen und Farb-Clipping verwendet. Die Funktionen dieser unterschiedlichen Phasen werden an späterer Stelle in diesem Dokument beschrieben. Anzahl und Reihenfolge der Phasen sowie die Aufteilung der Funktionen zwischen diesen Phasen können von den in Figur 2 dargestellten abweichen.
  • Gemäß Darstellung in Figur 2 besteht die Eingabe an das Beleuchtungsmodell-Verarbeitungssystem 12 aus:
  • x, y, z, die die Koordinaten im Betrachtungsbereich der Scheitelpunkte eines Polygons darstellen; und
  • a, b, c, die die Komponenten X, Y und Z der Normalen an jedem der Scheitelpunkte des Polygons darstellen.
  • Diese Eingaben befinden sich im Gleitkommaformat und werden zu einem früheren Zeitpunkt im Graphikanzeigesystem von einem Geometrieprozessor (nicht dargestellt) erzeugt. Die Ausgabe des Beleuchtungsmodell-Verarbeitungssystems 12 besteht aus:
  • Xs, Ys, Zs, die die Bildschirmkoordinaten der Scheitelpunkte des Polygons darstellen; und
  • C"R, C"G, C"B, die die Farbintensitätswerte darstellen (wobei R die Rotkomponente, G die Grünkomponente und B die Blaukomponente bezeichnet), die an jedem Vertex des Polygons angezeigt werden sollen.
  • Die Ausgabebildschirm-Vertexkoordinaten und die RGB-Intensitätswerte sind ganze Zahlen, wobei die Intensitätswerte im Bereich der Fähigkeiten des Anzeigesystems liegen. Die Ausgabe des Beleuchtungsmodell-Verarbeitungssystems 12 wird an ein Schattierungsverarbeitungssystem 14, wie es in Figur 1 dargestellt ist, gesendet, in dem die Intensitätswerte an den Scheitelpunkten auf der sichtbaren Fläche des Polygons interpoliert werden, so daß ein wirklichkeitsgetreu schattiertes Bild des Gegenstands abgebildet werden kann.
  • EINGABEVORVERARBEITUNG
  • Computergraphik-Anzeigesysteme müssen je nach Art des modellierten Gegenstandes einseitige und zweiseitige Flächen bearbeiten können. Um den Arbeitsablauf des Beleuchtungsmodell- Verarbeitungssystems der vorliegenden Erfindung zu vereinfachen, wird im vorherigen Geometrieprozessor ein Vorverarbeitungsschritt implementiert, um zu gewährleisten, daß alle in das Beleuchtungsmodell-Verarbeitungssystem eingegebenen Polygone einseitige Polygone sind, deren Normale zum Betrachter zeigen. Der Vorverarbeitungsschritt, der in der Software oder in der Hardware oder in einer Kombination daraus implementiert werden kann, verarbeitet eingehende Polygone auf der Grundlage ihrer Oberflächennormalen wie folgt:
  • 1. Einseitige Fläche --
  • a. Ist das Punktprodukt der Polygon-Normalen und der Vektor vom Gegenstand zum Betrachtungspunkt positiv, dann zeigt das Polygon nach vorn; die Polygondaten werden als Eingabe an das Beleuchtungsmodell- Verarbeitungssystem gesendet,
  • b. Ist das Punktprodukt der Polygon-Normalen und der Vektor vom Gegenstand zum Betrachtungspunkt negativ, dann zeigt das Polygon nach hinten; das Polygon wird gelöscht, bevor es das Beleuchtungsmodell-Verarbeitungssystem erreicht.
  • 2. Zweiseitige Fläche --
  • a. Ist das Punktprodukt der Polygon-Normalen und der Vektor vom Gegenstand zum Betrachtungspunkt positiv, dann zeigt das Polygon nach vorn; die Polygondaten werden als Eingabe an das Beleuchtungsmodell- Verarbeitungssystem gesendet,
  • b. Ist das Punktprodukt der Polygon-Normalen und der Vektor vom Gegenstand zum Betrachtungspunkt negativ, dann zeigt das Polygon nach hinten; aus diesem Grund werden die Vertex-Normalen umgekehrt und die restlichen Polygon-Daten werden als Eingabe an das Beleuchtungsmodell-Verarbeitungssystem gesendet.
  • Entsprechend besitzt die Eingabe an das Beleuchtungsmodell- Verarbeitungssystem folgendes Format:
  • x1, y1, z1 (Vertex 1 Koordinaten)
  • a1, b1, c1 (Vertex 1 Normale)
  • x2, y2, z2 (Vertex 2 Koordinaten)
  • a2, b2, c2 (Vertex 2 Normale)
  • usw.
  • GLEITKOMMAPROZESSOR
  • Jede Phase des Beleuchtungsmodell-Verarbeitungssystems in Pipeline der vorliegenden Erfindung besteht aus einem oder mehreren identischen Gleitkommaprozessoren. Die gemeinsame Verwendung desselben Prozessors führt zu einer Leistungssteigerung bei der Herstellung, Montage, Operation, Programmierung und Wartung des Beleuchtungsmodell-Verarbeitungssystems.
  • Ein geeigneter Prozessor 30 zur Implementierung des Beleuchtungsmodell-Verarbeitungssystems der vorliegenden Erfindung ist in Figur 3 abgebildet. Prozessor 30 ist ein Graphik-Gleitkomma-Verarbeitungselement, das in seiner gegenwärtig bevorzugten Form einen VSLI-Chip mit 32-Bit-Gleitkomma-Fähigkeit umfaßt. Der Prozessor 30 umfaßt weiterhin: einen Gleitkomma- Multiplikator 32 (vorzugsweise mit interner Zweiphasen-Pipeline und speziellen Hardware-Unterstützungen zur Berechnung von Umkehrungen und Quadratwurzeln); einen Gleitkommaaddierer 34, der auch als Akkumulator für den Multiplikator 32 dient; einen Sequencer 36; einen Speicher 38, beispielsweise einen RAM, für Steuerprogramme, beispielsweise Mikrocode, und eine Steuerlogik 40; ein Eingabe-FIFO 42 und ein Ausgabe-FIFO 44 für Schnittstellenzwecke; eine Registerbank 46 zur Speicherung von Daten (beispielsweise vierundsechzig 32-Bit-Register); ein Befehlsregister 48; und eine Mehrzahl an Multiplexern 50, 52, 54, 56 und 58. Diese Komponenten des Prozessors 30 sind gemäß der Darstellung in Figur 3 angeschlossen. Der Sequencer 36 steuert die Operation der anderen Komponenten und befindet sich selbst unter der Mikrocodesteuerung für den Programmfluß, das heißt, Verzweigung, Subroutinenaufruf usw.
  • Der Eingabe-/Ausgabe-Datenpfad ist 33 Bits breit und besteht aus einem 32-Bit-Datenfeld und einem 1-Bit-Flag, der anzeigt, ob das Datenfeld ein Befehl oder eine Gleitkommazahl ist. Ein Befehl im Datenstrom befiehlt dem Graphik-Gleitkomma-Prozessor, wie er die Gleitkommadaten, die in ihn fließen, verwenden soll; beispielsweise bestünde der Datenstrom, der bewirkt, daß ein Polygon schattiert wird, aus einem Befehl 'schattiertes Polygon', gefolgt von den Gleitkommadaten (Scheitelpunkte und Normale an den Scheitelpunkte), die das zu schattierende Polygon definieren.
  • Die Daten, die in das Eingabe-FIFO eines Gleitkommaprozessors eingegeben werden, werden von einem Front-End-Prozessor eines bestimmten Typs oder von einem anderen Gleitkommaprozessor erzeugt. Im letzteren Fall wird das Ausgangs-FIFO des anderen Gleitkommaprozessors direkt mit dem Eingabe-FIFO verbunden. Ein besonders vorteilhaftes Verfahren zur Verbindung solcher identischer Gleitkommaprozessoren in Pipeline- und/oder Parallelanordnung wird in der derzeit vorliegenden, gemeinsam erteilten Anmeldung EP-A2-0314342 beschrieben.
  • Der Mikrocode liest die Daten aus dem Eingabe-FIFO 42 und führt die folgenden Funktionen aus:
  • 1. wenn es sich um einen Befehl handelt, wird dieser zu einem dekodierenden RAM geleitet, um zur korrekten Mikrocode- Subroutine zu verzweigen; in diesem Fall wird er ebenfalls im Befehlsregister 48 gespeichert, und wenn der Mikrocode so programmiert ist, kann dieser an das Ausgabe-FIFO 44 geleitet werden;
  • 2. wenn es sich um Gleitkommadaten handelt, kann er
  • a. in der Registerbank 46 gespeichert werden; oder
  • b. als einer der Eingaben an den Multiplikator an den Multiplikator 32 geleitet werden; oder
  • c. als einer der Eingaben an den Addierer an den Addierer (Akkumulator) 34 geleitet werden; oder
  • d. direkt zum Ausgabe-FIFO 44 geleitet werden; oder
  • e. ignoriert (nicht verwendet) werden.
  • PROZESSORDATENFLUSS
  • Das folgende Beispiel einer Vektormultiplikation ist für das Verständnis des Datenflusses innerhalb des Prozessors 30 hilfreich.
  • Beispiel: m1*x + m2*y + m3*z berechnen,
  • wobei m1, m2, m3 sich in den internen Registern befinden ein Stern "*" bezeichnet eine Multiplikationsoperation; die eingegebenen Daten sind
  • Vektormultiplikation (Befehl)
  • x (Daten)
  • y (Daten)
  • z (Daten)
  • 1. Die 32-Bit-Wörter aus dem Eingabe-FIFO 42 auslesen.
  • 2. Wird der Befehl 'Vektormultiplikation' angetroffen (der der Hardware vom eingeschalteten Befehlsbit und durch den bestimmten Wert des 32-Bit-Datenfelds signalisiert wird), zweigt der Mikrocode ab zu einer Subroutine im Mikrocodespeicher, die die Vektormultiplikation ausführt, wobei die Adresse der Subroutine von der Hardware über eine Verzweigungstabelle erhalten wird;
  • 3. Die Lesedaten der Subroutine im nächsten Wort, in diesem Fall die Daten x; die Daten x werden an den Multiplikatoreingang geleitet, und ml wird an den anderen Eingang des Multiplikators 32 zur Multiplikationsoperation geleitet.
  • 4. Die Lesedaten der Subroutine im nächsten Wort, in diesem Fall die Daten y; die Daten y werden an den Multiplikatoreingang geleitet, und m2 wird an den anderen Eingang des Multiplikators zur Multiplikationsoperation geleitet; gleichzeitig wird das Produkt m1*x zur zweiten internen Phase des Multiplikators geleitet.
  • 5. Die Lesedaten der Subroutine im nächsten Wort, in diesem Fall die Daten z; die Daten z werden an den Multiplikatoreingang geleitet, und m3 wird an den anderen Eingang des Multiplikators zur Multiplikationsoperation geleitet. Gleichzeitig wird das Produkt m1*x im Addierer mit dem Wert Null akkumuliert.
  • 6. Das Produkt m2*y wird an den Addierer 34 geleitet und zu m1*x hinzuaddiert.
  • 7. Das Produkt m3*z wird an den Addierer geleitet und zu m1*x + m2*y hinzuaddiert und das Ergebnis in den Ausgabe-FIFO 44 geschrieben.
  • Im Beleuchtungsmodell-Verarbeitungssystem der vorliegenden Erfindung sieht ein typischer Datenstrom folgendermaßen aus:
  • Beginn des schattierten Polygons (Befehl)
  • x1 (Scheitelpunkte Daten)
  • y1 (Scheitelpunkte Daten)
  • z1 (Scheitelpunkte Daten)
  • a1 (Scheitelpunkte Normaldaten)
  • b1 (Scheitelpunkte Normaldaten)
  • c1 (Scheitelpunkte Normaldaten)
  • x2 (Scheitelpunkte Daten)
  • y2 (Scheitelpunkte Daten)
  • z2 (Scheitelpunkte Daten)
  • a2 (Scheitelpunkte Normaldaten)
  • b2 (Scheitelpunkte Normaldaten)
  • c2 (Scheitelpunkte Normaldaten)
  • xn (Scheitelpunkte Daten)
  • yn (Scheitelpunkte Daten)
  • zn (Scheitelpunkte Daten)
  • an (Scheitelpunkte Normaldaten)
  • bn (Scheitelpunkte Normaldaten)
  • cn (Scheitelpunkte Normaldaten)
  • Ende des schattierten Polygons (Befehl)
  • Die Verarbeitung des obigen Datenstroms geschieht folgendermaßen:
  • 1. Der Mikrocode liest aus dem Eingabe-FIFO die 32-Bit-Worter des Datenstroms nach Bedarf aus.
  • 2. Wird der Befehl 'Beginn des schattierten Polygons' angetroffen (der der Hardware vom eingeschalteten Befehlsbit und durch den bestimmten Wert des 32-Bit-Datenfelds signalisiert wird), zweigt der Mikrocode ab zu einer Subroutine im Mikrocodespeicher, die die Daten des schattierten Polygons verarbeitet, wobei die Adresse der Subroutine von der Hardware über eine Verzweigungstabelle erhalten wird.
  • 3. Die Mikrocode-Subroutine liest nach Bedarf Daten vom Eingabe-FIFO ein und verarbeitet sie gemäß dem Aufbau der Subroutine; wenn eine Ausgabe erzeugt wird, wird sie an den Ausgabe-FIFO geleitet.
  • 4. Wenn der Befehl "schattiertes Polygon beenden" verarbeitet wird, springt der Gleitkommaprozessor zu einer anderen Mikrocode-Routine, die die für schattiertes Polygon erforderliche Verarbeitung vervollständigt.
  • BEVORZUGTES AUSFÜHRUNGSBEISPIEL / DYNAMISCHE PARTITIONIERUNG
  • Im derzeit bevorzugten Ausführungsbeispiel wird ein einziger Prozessor verwendet, um jede Phase der Mehrphasen-Pipeline- Anordnung zu implementieren. Dieses bevorzugte Ausführungsbeispiel wird nachfolgend beschrieben.
  • Wie aus der Darstellung in Figur 4 hervorgeht, besteht das Beleuchtungsmodell-Verarbeitungssystem 60 aus den vier separaten identischen Gleitkommaprozessoren 62, 64, 66 und 68, die in Pipeline-Anordnung angeordnet und betrieben werden. Der erste und der zweite Prozessor 62 und 64 führen Beleuchtungsmodellberechnungen aus; der dritte Prozessor 66 führt eine Projektionsumwandlung aus und bildet vom Betrachtungsbereich auf den Bildschirmbereich ab; der vierte Prozessor 68 führt Tiefen-Cueing, Farbabbildung und Farb-Clipping aus.
  • Um die Leistung zu optimieren, wird, vorzugsweise über einen eigenen Datenstrombefehl, der durch den Mikrocode innerhalb jedes relevanten Gleitkommaprozessors gelesen wird, eine dynamische Partitionierung der Beleuchtungsmodellberechnungen vom ersten und zweiten Prozessor bereitgestellt, um ein Gleichgewicht der Rechenbelastung zwischen den beiden genannten Prozessoren aufrechtzuerhalten. Die Partitionierung der Beleuchtungsmodellberechnungen zwischen dem ersten und zweiten Gleitkommaprozessor variiert je nach Anzahl der Lichtquellen im Modell. Wenn, wie angegeben, eine einzige Lichtquelle vorhanden ist, z.B. durch einen Datenstrombefehl "schattiertes Polygon beginnen (einzelne Lichtquelle)", bestimmt der erste Gleitkommaprozessor 62 die Lichtintensität aufgrund der diffusen Lichteinwirkungen und der Umgebungslichteffekte, und der zweite Gleitkommaprozessor 64 bestimmt die Lichtintensität aufgrund der Einwirkung von Spiegellichteffekten. Andererseits bestimmt im Fall mehrerer Lichtquellen (siehe Figur 6), wie beispielsweise durch einen Datenstrombefehl "schattiertes Polygon beginnen (mehrere Lichtquellen)" angezeigt werden kann, der erste Gleitkommaprozessor 62' die Lichtintensität (Umgebungslicht, diffuses Licht und Spiegellicht) aufgrund der ungeraden Anzahl an Lichtquellen, während der zweite Gleitkommaprozessor 64' die Lichtintensität (Umgebungslicht, diffuses Licht und Spiegellicht) aufgrund der geraden Anzahl an Lichtquellen bestimmt. Dies erfolgt, um die auszuführende Arbeit auf beide Gleitkoinmaprozessoren gleichmäßig zu verteilen und so einen "Flaschenhals" in der Pipeline zu vermeiden.
  • Wenn nur eine Lichtquelle im Beleuchtungsmodell (siehe Figur 4) vorhanden ist,
  • a. berechnet der erste Gleitkommaprozessor 62 für jeden Scheitelpunkt die Intensität aufgrund des Umgebungslichts und der diffusen Reflektion und leitet diesen Wert dann zum zweiten Gleitkommaprozessor;
  • b. berechnet der zweite Gleitkommaprozessor 64 für jeden Scheitelpunkt die Intensität aufgrund der Spiegelreflektion und fügt dieses Ergebnis zum Wert, den dieser Gleitkommaprozessor vom ersten Gleitkommaprozessor erhalten hat, hinzu; der zweite Gleitkommaprozessor sendet die Daten dann an den nächsten Gleitkommaprozessor;
  • c. führt der dritte Prozessor 66 eine Projektionsumwandlung aus und bildet die Koordinatendaten vom Betrachtungs bereich auf den Bildschirmbereich des Anzeigesystems ab; dabei werden diese Daten zum nächsten Gleitkommaprozessor geleitet; und
  • d. führt der vierte Gleitkommaprozessor 68 die Berechnungen auf Tiefen-Cueing, Farbabbildung und Farb-Clipping aus.
  • Wenn mehrere Lichtquellen im Beleuchtungsmodell (siehe Figur 6) vorhanden sind,
  • a. berechnet der erste Gleitkommaprozessor 62' für jeden Scheitelpunkt die Intensität aufgrund des Umgebungslichts und der diffusen sowie der Spiegelreflektion der ungeraden Lichtquellen (#1, #3, #5, #7 usw.) und leitet diesen Wert dann zum zweiten Gleitkommaprozessor;
  • b. berechnet der zweite Gleitkommaprozessor 64' für jeden Scheitelpunkt die Intensität aufgrund des Umgebungslichts, des diffusen Lichts und der Spiegelreflektion der geraden Lichtquellen (#2, #4, #6, #8 usw.) und fügt dieses Ergebnis zum Wert, den dieser Gleitkommaprozessor vom ersten Gleitkommaprozessor erhalten hat, hinzu; der zweite Gleitkommaprozessor sendet die Daten dann an den dritten Gleitkommaprozessor;
  • c. führt der dritte Gleitkommaprozessor 66 eine Projektionsumwandlung aus und bildet die Koordinatendaten vom Betrachtungsbereich auf den Bildschirmbereich des Anzeigesystems ab; dabei werden diese Daten zum nächsten Gleitkommaprozessor geleitet; und
  • d. führt der vierte Gleitkommaprozessor 68 die Berechnungen auf Tiefen-Cueing, Farbabbildung und Farb-Clipping aus.
  • ALTERNATIVAUSFÜHRUNG
  • Figur 5 bildet eine alternative Hardeware-Ausführung 61 des Beleuchtungsmodell-Verarbeitungssystems der vorliegenden Erfindung ab. In dieser alternativen Ausführung bestehen die erste und die zweite Phase des Systems aus je drei identischen Prozessoren, die parallel angeordnet sind. Jeder dieser Prozessoren kann für eine andere Farbkomponente verwendet werden. In Figur 5 wird beispielhaft ein Modellierungssystem einer einzelnen Lichtquelle gezeigt, in dem ein erster Gleitkommaprozessor 62R die Umgebungslichteffekte und die diffusen Lichteffekte mit Bezug auf eine Rotlichtkomponente berechnet und den resultierenden Intensitätswert der Rotlichtkomponente an einen zweiten Gleitkommaprozessor 64R leitet, der den Spiegelreflektionseffekt auf die Rotkomponente berechnet und diesen zu dem Wert hinzuaddiert, den er vom Gleitkommaprozessor 62R empfangen hat. In ähnlicher Weise führen der erste Gleitkommaprozessor 62G und der zweite Gleitkommaprozessor 64G Beleuchtungsmodellberechnungen auf einer grünen Komponente aus, während der erste Gleitkommaprozessor 62B und der zweite Gleitkommaprozessor 64B die Beleuchtungsmodellberechnungen auf einer blauen Komponente ausführen. Das restliche System (d.h. die dritte und die vierte Phase) bleibt unverändert.
  • ALLGEMEINES BELEUCHTUNGSMODELL
  • Zum Zwecke der Darstellung wird in dieser Beschreibung ein RGB-Farbmodell (Rot-Grün-Blau) verwendet. Jedoch lassen sich die Prinzipien der vorliegenden Erfindung auch auf andere Farbmodelle anwenden, beispielsweise CMY (Cyan-Magenta-Gelb), YIQ, HSV (Hue, Sättigung, Wert), HLS (Hue, Licht, Sättigung) usw. Diese Erfindung ist daher nicht nur auf Lichtquellen anwendbar, die als unendlich angenommen werden, sondern auch auf solche einer endlichen Distanz, sowie auf Lichtstrahl und andere Beleuchtungseffekte.
  • Nachfolgend werden spezifische Implementierungen des Beleuchtungsmodell-Verarbeitungssystems der vorliegenden Erfindung beschrieben, wobei der Pseudocode angegeben wird, der zur Programmierung der einzelnen Prozessoren dient. Der Fall der Perspektivprojektion (Betrachtungspunkt in einer endlichen Distanz) wird ausführlich behandelt. Der einfachere Fall einer Parallelprojektion (Betrachtungspunkt unendlich) wird kurz behandelt, indem die Unterschiede aufgeführt werden, die auftreten, wenn der Betrachtungspunkt unendlich ist. Zunächst wird jedoch ein allgemeines Beleuchtungsmodell entwickelt, das die Anzahl der Lichtquellen, die Oberflächeneigenschaften und die Positionen und Ausrichtungen der Oberflächen und Quellen berücksichtigt.
  • Das an dieser Stelle verwendete Betrachtungskoordinatensystem ist das rechte System. Wenn wir auf einen Betrachtungsbildschirm blicken würden, dann würde die x-Achse nach rechts, die y-Achse nach oben und die z-Achse zu uns zeigen.
  • Daher gilt:
  • z-Datenkoordinate z-Betrachtungspunktkoordinate.
  • Folgende sind die Parameter des Beleuchtungsmodells mit 1 Lichtquelle:
  • IaR /* rote Intensität des Umgebungslichts */
  • IaG /* grüne Intensität des Umgebungslichts */
  • IaB /* blaue Intensität des Umgebungslichts */
  • Isou1R /* rote Intensität der Lichtquelle */
  • Isou1G /* grüne Intensität der Lichtquelle */
  • Isou1B /* blaue Intensität der Lichtquelle */
  • kaR /* Schattierungsmaterial der roten Umgebungskonstanten */
  • kaG /* Schattierungsmaterial der grünen Umgebungskonstanten */
  • kaB /* Schattierungsmaterial der blauen Umgebungskonstanten *
  • kdR /* Schattierungsmaterial der diffusen Rotkonstanten */
  • kdG /* Schattierungsmaterial der diffusen Grünkonstanten */
  • kdB /* Schattierungsmaterial der diffusen Blaukonstanten */
  • ks /* Schattierungskonstante für Spiegelreflektion */
  • kn /* Schattierungskonstantenexponent für cos */
  • Bei einem gegebenen Scheitelpunkt x, y, z und bei einer Normalen N = (a, b, c) auf die Fläche an diesem Scheitelpunkt sei L der Einheitsvektor vom Scheitelpunkt zur Lichtquelle, d.h. die Richtung zur Punktlichtquelle;
  • R sei die Reflektionsrichtung; und
  • V sei die Richtung des Betrachtungspunkts.
  • Die Schattierungsfarbe/Intensität am Scheitelpunkt ist demnach durch die Summe der folgenden drei Terme gegeben: (wir betrachten lediglich die R-Komponente, da sich die anderen beiden Komponenten G und B in ähnlicher Weise ausdrücken lassen):
  • 1. Umgebungslicht
  • IaR * kaR
  • 2. diffuse Reflektion
  • Isou1R * kdR * (L.N)
  • /* L.N bezeichnet das innere Produkt */
  • 3. Spiegelreflektion
  • Isou1R * ks * ((R.V) ** kn)
  • Die Lichtquellen des hier betrachteten Beleuchtungsmodells werden als unendlich angenommen. Ihre Positionen sind durch Richtungsvektoren von Einheitslänge spezifiziert; der Betrachtungspunkt ist unendlich.
  • Bei mehreren Lichtquellen haben wir mehrere Terme für die zweite und die dritte Lichtquelle.
  • Angenommen, es gibt j Lichtquellen (1 j =M), wobei M die maximale Anzahl an Lichtquellen ist, die in einer bestimmten Implementierung möglich ist.
  • Die Schattierungsfarbe/Intensität am Scheitelpunkt ist durch die Summe der folgenden drei Terme gegeben (wir betrachten lediglich die R-Komponente, da sich die anderen beiden Komponenten G und B in ähnlicher Weise ausdrücken lassen):
  • 1. Umgebungslicht
  • IaR * kaR
  • 2. diffuse Reflektion
  • Isou1R * kdR * (L.N) + ... + IsoujR * kdR (Lj.N)
  • /* L.N bezeichnet das innere Produkt */
  • 3. Spiegelreflektion
  • Isou1R * ks * ((R1.V) ** kn) + ...
  • + IsoujR * ks * (Rj.V) ** kn)
  • Eine ausführlichere Beschreibung der Ableitung des allgemeinen Beleuchtungsmodells findet sich beispielsweise in Foley & Van Dam, "Fundamentals of Interactive Computer Graphics", Addison- Wesley 1984, Seiten 575-578.
  • Anschließend werden spezifische beispielhafte Implementierungen des Beleuchtungsmodell-Verarbeitungssystems der vorliegenden Erfindung vorgestellt. Zunächst werden die Beleuchtungsmodellberechnungen, die am ersten und zweiten Prozessor ausgeführt werden, für die folgenden Fälle beschrieben: einzelne Lichtquelle -- Betrachtungspunkt in einer endlichen Entfernung, mehrere Lichtquellen -- Betrachtungspunkt in einer endlichen Entfernung, und mehrere Lichtquellen -- Betrachtungspunkt in einer unendlichen Entfernung. Danach wird die Abbildungsfunktion, die vom dritten Prozessor ausgeführt wird, und das Tiefen-Cueing, die Farbabbildung und die Farb- Clipping-Funktionen, die vom vierten Prozessor ausgeführt werden (diese Funktionen sind allen oben aufgeführten Fällen gemeinsam), vorgestellt.
  • In den folgenden Beispielen wird die Software in Pseudocode, einer üblichen Notationsweise, dargestellt; dabei zeigt ein einzelner Stern (*) eine Multiplikationsoperation und ein Doppelstern (**) einen Hochzahlterm an, das Symbol (< ) bezeichnet "holt den Wert von" und ein Kommentar steht in den Klammern /* und */.
  • EINZELNE LICHTQUELLE -- BETRACHTUNGSPUNKT IN EINER ENDLICHEN ENTFERNUNG
  • Dies ist der Fall einer einzelnen Lichtquelle in einer endlichen Entfernung vom Gegenstand mit Perspektivprojektion (d.h. der Betrachtungspunkt befindet sich in einer endlichen Entfernung vom Gegenstand). Die Funktion der Intensitätsberechnung des Scheitelpunktes wird auf zwei Gleitkommaprozessoren verteilt. Der erste Gleitkommaprozessor berechnet die Intensität des Umgebungslichts und den diffusen Term; der zweite Gleitkommaprozessor berechnet die Intensität des Spiegelterms.
  • Die Eingabe an den ersten Gleitkommaprozessor besteht aus sechs Datenteilen:
  • x-, y-, z-Koordinaten des Scheitelpunktes; und
  • die Koordinaten der Normalen auf die Oberfläche am Scheitelpunkt, d.h. a, b und c.
  • Die Ausgabe des ersten Gleitkommaprozessors an den zweiten Gleitkommaprozessor besteht für jeden Scheitelpunkt aus neun Wörtern:
  • Koordinaten x, y und z des Scheitelpunktes;
  • Die Komponenten der Reflektionsrichtung rx, ry und rz; und
  • die partiellen Intensitätswerte (Effekt Umgebungslicht plus diffuses Licht) für R, G und B.
  • Der Pseudocode für den ersten und den zweiten Gleitkommaprozessor in diesem Fall ist:
  • Procedure Intensity_Single 12 (Betrachtungspunkt in einer endlichen Entfernung)
  • /* erster Gleitkommaprozessor */
  • Eingabe:
  • x, y, z /* Koordinaten des Scheitelpunktes */
  • a, b, c /* Komponenten der Einheitsnormalen */
  • Ausgabe:
  • x, y, z /* Koordinaten des Scheitelpunktes */
  • rx, ry, rz/* Komponenten der Reflektionsrichtung */
  • IntensR /* r-Komponente der Intensität */
  • IntensG /* g-Komponente der Intensität */
  • IntensB /* b-Komponente der Intensität */
  • Konstanten:
  • IaR /* rote Intensität des Umgebungslichts */
  • IaG /* grüne Intensität des Umgebungslichts */
  • IaB /* blaue Intensität des Umgebungslichts */
  • Isou1R /* rote Intensität der Lichtquelle */
  • Isou1G /* grüne Intensität der Lichtquelle */
  • Isou1B /* blaue Intensität der Lichtquelle */
  • kdR /* Schattierungsmaterial der diffusen Rotkonstanten */
  • kdG /* Schattierungsmaterial der diffusen Grünkonstanten */
  • kdB /* Schattierungsmaterial der diffusen Blaukonstanten */
  • kaR /* Schattierungsmaterial der rotenn Umgebungskonstanten */
  • kaG /* Schattierungsmaterial der grünen Umgebungskonstanten */
  • kaB /* Schattierungsmaterial der blauen Umgebungskonstanten */
  • ks /* Schattierungskonstante für Spiegelreflektion */
  • kn /* Schattierungskonstantenexponent für cos */
  • ux1, uy1, uz1 /* Lichtquelle 1 */
  • vx, vy, vz /* Betrachtungspunkt */
  • Variabeln:
  • x, y, z /* Koordinate des Scheitelpunktes */
  • a, b, c /* Komponenten der Einheitsnormalen */
  • wx,wy,wz /* Vektor vom Scheitelpunkt zur Lichtquelle */
  • normw /* Länge von (wx,wy,wz) */
  • rx,ry,rz /* Reflektionsrichtung */
  • normr /* Länge von (rx,ry,rz) */
  • tx,ty,tz /* Vektor vom Scheitelpunkt zum Betrachtungspunkt */
  • IntensR /* R-Komponente der Intensität */
  • IntensG /* G-Komponente der Intensität */
  • IntensB /* B-Komponente der Intensität */
  • normt /* Länge von (tx, ty, tz) */
  • innproc /* inneres Produkt des Vektors von der Lichtquelle zum Scheitelpunkt und zur Einheitsnormalen */
  • shadcos /* cos-Term für Spiegelreflektion */
  • light /* Temporärwert */
  • temp /* Temporärwert */
  • 1finite1: /* Eingegebener Code bei Befehl "schattiertes */
  • /* Polygon beginnen (einzelne Lichtquelle)" */
  • 1. Daten einlesen
  • 2. wenn es sich um einen GESP-Befehl (Befehl schattiertes Polygon beenden) handelt, Befehl ausgeben und verlassen;
  • /* Koordinaten x,y,z des Scheitelpunktes einlesen und */
  • /* Vektor vom Scheitelpunkt zur Lichtquelle berechnen */
  • 3. x einlesen; und
  • wx < - ux1 - z,
  • 4. x an zweiten Gleitkommaprozessor ausgeben
  • 5. y einlesen; und
  • wy < - uy1 - y,
  • 6. y an zweiten Gleitkommaprozessor ausgeben
  • 7. z einlesen; und
  • wz < - uz1 - z,
  • 8. z an zweiten Gleitkommaprozessor ausgeben
  • 9. a einlesen; /* Normale an Scheitelpunkt */
  • 10. b einlesen;
  • 11. c einlesen;
  • 12. Das innere Produkt des Vektors vom Scheitelpunkt zur Lichtquelle und zur Einheitsnormalen
  • innproc < - wx*a + wy*b + wz*c
  • /* Reflektionsrichtung für Spiegelreflektion */
  • 13. temp < - 2*innproc
  • 14. rx < -temp*a - wx
  • 15. rx an zweiten Gleitkommaprozessor ausgeben
  • 16. ry < -temp*b - wy
  • 17. ry an zweiten Gleitkommaprozessor ausgeben
  • 18. rz < -temp*c - wz
  • 19. rz an zweiten Gleitkommaprozessor ausgeben
  • 20. Abstand zwischen Lichtquelle und Scheitelpunkt
  • a. normw < - wx*wx + wy*wy + wz*wz
  • b. normw < - sqrt (normw)
  • 21. RGB-Komponenten des Umgebungslichts
  • a. IntensR < - kaR*IaR
  • b. IntensG < - kaG*IaG
  • c. IntensB < - kaB*IaB
  • 22. Konstante in der Berechnung der Intensität
  • a. if innproc < - 0 then light < - 0;
  • b. else light < - innproc/normw
  • 23. Intensität berechnen (diffuse Reflektion)
  • IntensR - IntensR + Isou1R*kdR*light
  • 24. IntensR an zweiten Gleitkommaprozessor ausgeben
  • 25. Intensität berechnen (diffuse Reflektion)
  • IntensG < - IntensG + Isou1G*kdG*light
  • 26. IntensG an zweiten Gleitkommaprozessor ausgeben
  • 27. Intensität berechnen (diffuse Reflektion)
  • IntensB < - IntensB + Isou1B*kdB*light
  • 28. IntensB an zweiten Gleitkommaprozessor ausgeben
  • 29. gehe zu 1finitel
  • Procedure Intensity_Single 22 (Betrachtungspunkt in einer endlichen Entfernung)
  • /* zweiter Gleitkommaprozessor */
  • Eingabe:
  • x, y, z /* Koordinaten des Scheitelpunktes */
  • IntensR /* r-Komponente der Intensität aufgrund */
  • /* des Umgebungslichts, des diffusen Lichts */
  • IntensG /* g-Komponente der Intensität aufgrund */
  • /* des Umgebungslichts, des diffusen Lichts */
  • IntensB /* b-Komponente der Intensität aufgrund */
  • /* des Umgebungslichts, des diffusen Lichts */
  • rx,ry,rz /* Reflektionsrichtung */
  • Ausgabe:
  • x, y, z /* Koordinaten des Scheitelpunktes */
  • IntensR /* r-Komponente der Intensität aufgrund */
  • /* des Umgebungslichts, des diffusen Lichts */
  • /* und des Spiegellichts */
  • IntensG /* g-Komponente der Intensität aufgrund */
  • /* des Umgebungslichts, des diffusen Lichts */
  • /* und des Spiegellichts */
  • IntensB /* b-Komponente der Intensität aufgrund */
  • /* des Umgebungslichts, des diffusen Lichts */
  • /* und des Spiegellichts */
  • Konstanten:
  • Isou1R /* rote Intensität der Lichtquelle */
  • Isou1G /* grüne Intensität der Lichtquelle */
  • Isou1B /* blaue Intensität der Lichtquelle */
  • kdR /* Schattierungsmaterial der diffusen Rotkonstanten */
  • kdG /* Schattierungsmaterial der diffusen Grünkonstanten */
  • kdB /* Schattierungsmaterial der diffusen Blaukonstanten */
  • ks /* Schattierungskonstante für Spiegelreflektion */
  • kn /* Schattierungskonstantenexponent für cos */
  • ux1, uy1, uz1 /* Lichtquelle 1 */
  • vx, vy, vz /* Betrachtungspunkt */
  • Variabeln:
  • x, y, z /* Koordinaten des Scheitelpunktes */
  • a, b, c /* Komponenten der Einheitsnormalen */
  • wx,wy,wz /* Vektor vom Scheitelpunkt zur Lichtquelle */
  • normw /* Länge von (wx,wy,wz) */
  • rx,ry,rz /* Vektor vom Scheitelpunkt zur Lichtquelle */
  • normr /* Länge von (rx,ry,rz) */
  • tx,ty,tz /* Vektor vom Scheitelpunkt zum Betrachtungspunkt */
  • IntensR /* R-Komponente der Intensität */
  • IntensG /* G-Komponente der Intensität */
  • IntensB /* B-Komponente der Intensität */
  • normt /* Länge von (tx,ty,tz) */
  • innproc /* inneres Produkt des Vektors von der Lichtquelle zum Scheitelpunkt und zur Einheitsnormalen */
  • shadcos /* cos-Term für Spiegelreflektion */
  • light /* Temporärwert */
  • temp /* Temporärwert */
  • 1finite2: /* Eingegebener Code bei Befehl "schattiertes */
  • /* Polygon beginnen (einzelne Lichtquelle)" */
  • 1. Daten einlesen
  • 2. wenn es sich um einen GESP-Befehl (Befehl schattiertes Polygon beenden) handelt, Befehl ausgeben und verlassen;
  • 3. x einlesen; /* Scheitelpunktkoordinaten */
  • 4. x ausgeben;
  • 5. y einlesen;
  • 6. y ausgeben;
  • 7. z einlesen;
  • 8. z ausgeben;
  • /* Die folgenden beiden Schritte werden */
  • /* in der Berechnung der Spiegelreflektion */
  • /* mit Betrachtungspunkt in einem */
  • /* endlichen Abstand verwendet */
  • 9. Vektor vom Scheitelpunkt zum Betrachtungspunkt
  • a. tx < - vx - x,
  • b. ty < - vy - y,
  • c. tz < - vz - z;
  • 10. Abstand zwischen Betrachtungspunkt und Scheitelpunkt
  • a. normt < - tx*tx + ty*ty + tz*tz
  • b. normt < - sqrt (normt)
  • /* Komponente der Reflektionsrichtung einlesen */
  • 11. rx einlesen
  • 12. ry einlesen
  • 13. rz einlesen
  • 14. Norm der Reflektionsrichtung
  • normr < - rx*rx + ry*ry + rz*rz
  • normr < - sqrt (normr)
  • 15. Cosinus des Reflektionswinkels berechnen
  • temp < - tx*rx + ty*ry + tz*rz
  • a. if temp < 0, then shadcos < - 0
  • b. else
  • 1) temp < - temp/(normr*normt)
  • 2) shadcos < - temp**kn
  • 3) shadcos < - ks*shadcos
  • 16. IntensR einlesen
  • 17. Spiegelreflektion berechnen
  • IntensR < - IntensR + Isou1R*shadcos
  • 18. IntensR ausgeben
  • 19. IntensG einlesen
  • 20. Spiegelreflektion berechnen
  • IntensG < - IntensG + Isou1G*shadcos
  • 21. IntensG ausgeben
  • 22. IntensB einlesen
  • 23. Spiegelreflektion berechnen
  • IntensB < - IntensB + Isou1B*shadcos
  • 24. IntensB ausgeben
  • 25. gehe zu 1finite2
  • EINZELNE LICHTQUELLE -- BETRACHTUNGSPUNKT IN EINER UNENDLICHEN ENTFERNUNG
  • Der einfachere Fall, in dem der Betrachtungspunkt in einer unendlichen Entfernung ist (Parallelprojektion), unterscheidet sich vom obigen Fall, in dem der Betrachtungspunkt in einer endlichen Entfernung ist, lediglich in der Behandlung des Reflektionsvektors während der Berechnung des Lichts der Spiegelreflektion. Im Fall, in dem der Betrachtungspunkt in einer unendlichen Entfernung ist, wird nur die z-Komponente verwendet, da die Richtung des Betrachtungspunktes bei einer parallelen Projektion durch (0,0,1) gegeben ist.
  • MEHRERE LICHTQUELLEN -- BETRACHTUNGSPUNKT IN EINER ENDLICHEN ENTFERNUNG
  • In diesem Beispiel wird von einer maximalen Anzahl an Lichtquellen von 10 ausgegangen. Die Funktion der Intensitätsberechnung für jeden Scheitelpunkt wird auf zwei Gleitkommaprozessoren verteilt. Der erste Gleitkommaprozessor verarbeitet die Farbintensität der Lichtquelle #1, #3, #5 usw., und der zweite Gleitkommaprozessor verarbeitet die Farbintensität der Lichtquelle #2, #4, #6 usw.
  • Der Pseudocode für den ersten Gleitkommaprozessor sieht in diesem Fall wie folgt aus:
  • Procedure Intensity_Multiple 12 (Betrachtungspunkt in einer endlichen Entfernung)
  • /* erster Gleitkommaprozessor */
  • Eingabe:
  • x, y, z /* Koordinaten des Scheitelpunktes */
  • a, b, c /* Komponenten der Einheitsnormalen */
  • Ausgabe:
  • x, y, z /* Koordinaten des Scheitelpunktes */
  • a, b, c /* Komponenten der Einheitsnormalen */
  • IntensR /* r-Komponente der Intensität */
  • IntensG /* g-Komponente der Intensität */
  • IntensB /* b-Komponente der Intensität */
  • Konstanten:
  • IaR /* rote Intensität des Umgebungslichts */
  • IaG /* grüne Intensität des Umgebungslichts */
  • IaB /* blaue Intensität des Umgebungslichts */
  • Isou1R /* rote Intensität der Lichtquelle #1 */
  • Isou3R /* rote Intensität der Lichtquelle #3 */
  • Isou5R /* rote Intensität der Lichtquelle #5 */
  • Isou7R /* rote Intensität der Lichtquelle #7 */
  • Isou9R /* rote Intensität der Lichtquelle #9 */
  • Isou1G /* grüne Intensität der Lichtquelle #1 */
  • Isou3G /* grüne Intensität der Lichtquelle #3 */
  • Isou5G /* grüne Intensität der Lichtquelle #5 */
  • Isou7G /* grüne Intensität der Lichtquelle #7 */
  • Isou9G /* grüne Intensität der Lichtquelle #9 */
  • Isou1B /* blaue Intensität der Lichtquelle #1 */
  • Isou3B /* blaue Intensität der Lichtquelle #3 */
  • Isou5B /* blaue Intensität der Lichtquelle #5 */
  • Isou7B /* blaue Intensität der Lichtquelle #7 */
  • Isou9B /* blaue Intensität der Lichtquelle #9 */
  • kdR /* Schattierungsmaterial der diffusen Rotkonstanten */
  • kdG /* Schattierungsmaterial der diffusen Grünkonstanten */
  • kdB /* Schattierungsmaterial der diffusen Blaukonstanten */
  • kaR /* Schattierungsmaterial der rotenn Umgebungskonstanten */
  • kaG /* Schattierungsmaterial der grünen Umgebungskonstanten */
  • kaB /* Schattierungsmaterial der blauen Umgebungskonstanten */
  • ks /* Schattierungskonstante für Spiegelreflektion */
  • kn /* Schattierungskonstantenexponent für cos */
  • ux1, uy1, uz1 /* Lichtquelle 1 */
  • ux3, uy3, uz3 /* Lichtquelle 3 */
  • ux5, uy5, uz5 /* Lichtquelle 5 */
  • ux7, uy7, uz7 /* Lichtquelle 7 */
  • ux9, uy9, uz9 /* Lichtquelle 9 */
  • vx, vy, vz /* Betrachtungspunkt */
  • Variabeln:
  • wx,wy,wz /* Vektor vom Scheitelpunkt zur Lichtquelle */
  • normw /* Länge von (wx,wy,wz) */
  • rx,ry,rz /* Reflektionsrichtung */
  • normr /* Länge von (rx,ry,rz) */
  • tx,ty,tz /* Vektor vom Scheitelpunkt zum Betrachtungspunkt */
  • IntensR /* R-Komponente der Intensität */
  • IntensG /* G-Komponente der Intensität */
  • IntensB /* B-Komponente der Intensität */
  • normt /* Länge von (tx, ty, tz) */
  • innproc /* inneres Produkt des Vektors von der Lichtquelle zum Scheitelpunkt und zur Einheitsnormalen */
  • shadcos /* cos-Term für Spiegelreflektion */
  • Lnum /* Anzahl der Lichtquellen */
  • light /* Temporärwert */
  • temp /* Temporärwert */
  • mfinite1: /* Eingegebener Code bei Befehl "schattiertes */
  • /* Polygon beginnen (mehrere Lichtquellen)" */
  • a. Daten einlesen
  • b. wenn es sich um einen GESP-Befehl (Befehl schattiertes Polygon beenden) handelt, Befehl ausgeben und verlassen;
  • /* Koordinaten x,y,z des Scheitelpunktes einlesen und */
  • /* Vektor vom Scheitelpunkt zum Betrachtungspunkt, */
  • /* der bei der Berechnung der Spiegelreflektion bei */
  • /* einem Betrachtungspunkt in einer endlichen */
  • /* Entfernung verwendet wird, berechnen */
  • c. x einlesen; und
  • tx < - vx1 - x,
  • d. x an zweiten Gleitkommaprozessor ausgeben
  • e. y einlesen; und
  • ty < - vy1 - z,
  • f. y an zweiten Gleitkommaprozessor ausgeben
  • g. z einlesen; und
  • tz < - tz1 - y,
  • h. z an zweiten Gleitkommaprozessor ausgeben
  • i. a einlesen; /* Normale an Scheitelpunkt */
  • j. a an zweiten Gleitkommaprozessor ausgeben
  • k. b einlesen;
  • l. b an zweiten Gleitkommaprozessor ausgeben
  • m. c einlesen;
  • n. c an zweiten Gleitkommaprozessor ausgeben
  • /* Die folgenden Schritte werden bei der */
  • /* Berechnung der Spiegelreflektion bei */
  • /* einem Betrachtungspunkt in einer */
  • /* endlichen Entfernung verwendet */
  • 1. Abstand zwischen Betrachtungspunkt und Scheitelpunkt
  • a. normt < - tx*tx + ty*ty + tz*tz
  • b. normt < - sqrt (normt)
  • 2. RGB-Komponenten des Umgebungslichts
  • a. IntensR < - kaR*IaR
  • b. IntensG < - kaG*IaG
  • c. IntensB < - kaB*IaB
  • 3. For j = 1 to Lnum
  • a. diffuser Term
  • 1) Vektor vom Scheitelpunkt zur Lichtquelle:
  • wx < - uxj - x,
  • wy < - uyj - y,
  • wz < - uzj - z,
  • 2) Das innere Produkt des Vektors vom Scheitelpunkt zur Lichtquelle und zur Einheitsnormalen
  • innproc < - wx*a +wy*b + wz*c
  • 3) Abstand zwischen der Lichtquelle und dem Scheitelpunkt
  • a) normw < - wx*wx + wy*wy + wz*wz
  • b) normw < - sqrt (normw)
  • 4) In der Intensitätsberechnung verwendete Konstante
  • a) if innproc < - 0 then light < - 0;
  • b) else light < - innproc/normw
  • 5) Intensität berechnen (diffuse Reflektion)
  • IntensR < - IntensR + IsoujR*kdR*light
  • 6) Intensität berechnen (diffuse Reflektion)
  • IntensG < - IntensG + IsoujG*kdG*light
  • 7) Intensität berechnen (diffuse Reflektion)
  • IntensB < - IntensB + IsoujB*kdB*light
  • b. Intensität berechnen (Spiegelreflektion)
  • 1. Reflektionsrichtung
  • temp < - 2*innproc
  • rx < - temp*a - wx
  • ry < - temp*b - wy
  • rz < - temp*c - wz
  • 2. Norm der Reflektionsrichtung
  • normr < - rx*rx + ry*ry + rz*rz
  • normr < - sqrt (normr)
  • 3. Cosinus des Reflektionswinkels berechnen
  • temp < - tx*rx + ty*ry + tz*rz
  • a. if temp < 0, then shadcos < - 0
  • b. else
  • i) temp < - temp/(normr*normt)
  • ii) shadcos < - temp**kn
  • iii) shadcos < - ks*shadcos
  • 4. Spiegelreflektion berechnen
  • IntensR < - IntensR + IsoujR*shadcos
  • 5. Spiegelreflektion berechnen
  • IntensG < - IntensG + IsoujG*shadcos
  • 6. Spiegelreflektion berechnen
  • IntensB < - IntensB + IsoujB*shadcos
  • 4. IntensR an zweiten Gleitkommaprozessor ausgeben
  • 5. IntensG an zweiten Gleitkommaprozessor ausgeben
  • 6. IntensB an zweiten Gleitkommaprozessor ausgeben
  • 7. goto mfinite1
  • Der Pseudocode für den zweiten Gleitkommaprozessor (in diesem Fall mehrere Lichtquellen -- Betrachtungspunkt in einer endlichen Entfernung) ist mit dem oben für den ersten Gleitkommaprozessor aufgelisteten Pseudocode identisch, abgesehen von den folgenden Unterschieden:
  • 1. Die Reflektionsrichtung (Richtung zum Betrachtungspunkt), die vom ersten Gleitkommaprozessor berechnet wurde, wird als Eingabe an den zweiten Gleitkommaprozessor geleitet, so daß der zweite Gleitkommaprozessor diese nicht berechnen muß.
  • 2. Es werden die Lichtanteile der mit geraden Nummern versehenen Lichtquellen (#2, #4, #6 usw.) und nicht der mit ungeraden Nummern versehenen Lichtquellen berechnet; und
  • 3. Die Lichtanteile der mit geraden Nummern versehenen Lichtquellen werden zu den Lichtanteilen der mit ungeraden Nummern versehenen Lichtquellen (die vom ersten Gleitkommaprozessor zum zweiten als Eingaben weitergeleitet wurden) hinzuaddiert, um die gesamte Lichtintensität an jedem Scheitelpunkt zu erhalten.
  • MEHRERE LICHTQUELLEN -- BETRACHTUNGSPUNKT IN EINER UNENDLICHEN ENTFERNUNG
  • Auch hier unterscheidet sich der Fall, in dem der Betrachtungspunkt in einer unendlichen Entfernung ist (Parallelprojektion), vom obigen Fall, in dem der Betrachtungspunkt in einer endlichen Entfernung ist, lediglich in der Behandlung des Reflektionsvektors während der Berechnung des Lichts der Spiegelreflektion. Im Falll in dem der Betrachtungspunkt in einer unendlichen Entfernung ist, wird nur die z-Komponente verwendet, da die Richtung des Betrachtungspunktes bei einer parallelen Projektion durch (0,0,1) gegeben ist.
  • VERFAHREN ZUR AUSFÜHRUNG VON PROJEKTIONS- UND ABBILDUNGSUMWANDLUNGEN -- DER DRITTE PROZESSOR
  • Diese Phase der Pipeline führt die folgenden beiden Schritte an jedem Polygonscheitelpunkt in der aufgeführten Reihenfolge aus:
  • 1. Ein eingegebener Scheitelpunkt wird vom 3D-Betrachtungsraum in einen anderen 3D-Raum umgewandelt. Dies geschieht in Übereinstimmung mit einer "Projektions"-Umwandlung, die die folgenden Eigenschaften aufweist:
  • a. Die in der Umwandlung erzeugten Koordinaten x und y sind die Projektion des Scheitelpunktes auf die Ebene des Betrachtungspunktes;
  • b. Durch die Umwandlung wird die Planarität aufrechterhalten, das heißt, die Anwendung der Umwandlung auf Scheitelpunkte, die im 3D-Betrachtungsraum koplanar sind, ergibt Scheitelpunkte, die im ausgegebenen 3D-Raum koplanar sind.
  • 2. Der umgewandelte Scheitelpunkt wird anschließend in einer "Abbildungsumwandlung" auf den Viewport abgebildet.
  • Im Fall einer Perspektivprojektion (Betrachtungspunkt in einer endlichen Entfernung vom Gegenstand) wird die Projektionsumwandlung mit Hilfe der folgenden Formel erzielt:
  • wobei (Xproj, Yproj) die Projektion von (x,y,z) vom 3D- Betrachtungsraum auf die Betrachtungsebene, und d die Entfernung vom Betrachtungspunkt auf die Betrachtungsebene ist. Die Projektionsfunktion für z wird so gewählt, daß gewährleistet ist, daß die Projektion einer Ebene im 3D-Betrachtungsraum nach wie vor eine Ebene ist, und daß Zproj ansteigt, solange z ebenfalls ansteigt. Die Referenzebenen z = Pf und z = Pb des Tiefen-Cueing, die im nächsten Abschnitt beschrieben werden, sind im Ausgabebereich der Projektionsumwandlung definiert.
  • Im Fall einer Parallelprojektion (Betrachtungspunkt in unendlicher Entfernung) werden die Koordinatenwerte des Betrachtungsraums selbst als Projektionswerte verwendet:
  • Xproj = x
  • Yproj = y
  • Zproj = z.
  • Unabhängig davon, ob es sich um eine parallele Projektion oder eine Perspektivprojektion handelt, wird die Projektionsumwandlung von der Abbildungsumwandlung gefolgt, die auf der folgenden Formel beruht:
  • Xscreen < - XVmin + Rx*(X - XCmin)
  • Yscreen < - YVmin + Ry*(Y - YCmin)
  • wobei XVmin die linke Begrenzung des Viewport (der zur Bildanzeige verwendete Bildschirmbereich), XCmin die linke Begrenzung des Clipping Volume (der Bereich des Betrachtungsraums, der auf den Viewport abgebildet wird), YVmin die untere Begrenzung des Viewport, YCmin die untere Begrenzung des Clipping Volume ist und Rx und Ry die Viewport-Größenverhältnisse X und Y zur Größe des Clipping Volume sind.
  • Es folgt der Pseudocode für die Projektion und die Abbildung:
  • Prozedur Projektion und Abbildung Eingabe:
  • x /* Scheitelpunkt zur Koordinate x */
  • y /* Scheitelpunkt zur Koordinate y */
  • z /* Scheitelpunkt zur Koordinate z */
  • IntensR /* Scheitelpunktfarbe (rot) */
  • IntensG /* Scheitelpunktfarbe (grün) */
  • IntensB /* Scheitelpunktfarbe (blau) */
  • Ausgabe:
  • Xs 1* Scheitelpunkt Bildschirm Koordinate x */
  • Ys 1* Scheitelpunkt Bildschirm Koordinate y */
  • Zproj /* Scheitelpunkt projizierte Koordinate z */
  • IntensR /* Scheitelpunktfarbe (rot), unverändert */
  • IntensG /* Scheitelpunktfarbe (grün), unverändert */
  • IntensB /* Scheitelpunktfarbe (blau), unverändert */
  • Konstanten:
  • Rx /* Verhältnis der Größe x des Viewport zu */
  • /* Clipping-Fenster */
  • Ry /* Verhältnis der Größe y des Viewport zu */
  • /* Clipping-Fenster */
  • XVmin /* linker Rand des Viewport */
  • XCmin /* linker Rand des Clipping-Fensters */
  • YVmin /* unterer Rand des Viewport */
  • YCmin /* unterer Rand des Clipping-Fensters */
  • Variabeln:
  • Aux /* Temporärwert */
  • proj_and_map:
  • 1. nächsten Datenteil einlesen;
  • 2. wenn es sich um einen GESP-Befehl (Befehl schattiertes Polygon beenden) handelt, Befehl ausgeben und verlassen;
  • 3. x einlesen und in Xproj speichern;
  • /* Xproj für Parallelfall berechnen */
  • 4. y einlesen und in Yproj speichern;
  • /* Yproj für Parallelfall berechnen */
  • 5. z einlesen und in Zproj speichern;
  • /* Zproj für Parallelfall berechnen */
  • 6. wenn Betrachtungspunkt in einer unendlichen Entfernung (Parallelprojektion) zur Abbildung ist;
  • 7. Aux < - Zproj/d
  • /* Zproj für Perspektivfall berechnen */
  • 8. Aux < - Aux + 1
  • 9. Zproj < - (-1)/Aux
  • 10. Xproj < - x*Zproj
  • /* Xproj für Perspektivfall berechnen */
  • 11. Yproj < - y+Zproj
  • /* Yproj für Perspektivfall berechnen */
  • Abbildung:
  • 12. Aux < - Xproj - XCmin
  • /* Berechnung von Xs, der X-Wert auf dem */
  • /* Bildschirm */
  • 13. Aux < - Aux * Rx
  • 14. Xs < - Aux + XVmin
  • 15. Ausgabe Xs.
  • 16. Aux < - Yproj - YCmin
  • /* Berechnung von Ys, Dem Y-Wert auf dem */
  • /* Bildschirm */
  • 17. Aux < - Aux * Ry
  • 18. Yx < - Aux + YVmin
  • 19. Ausgabe Ys.
  • 20. Ausgabe Zproj.
  • 21. IntensR einlesen.
  • 22. IntensR ausgeben.
  • 23. IntensG einlesen.
  • 24. IntensG ausgeben.
  • 25. IntensB einlesen.
  • 26. IntensB ausgeben.
  • 27. goto proj_and_map
  • PROZEDUR ZUR AUSFÜHRUNG VON TIEFEN-CUEING, FARBABBILDUNG UND FARB-CLIPPING -- DER VIERTE PROZESSOR
  • In diesem Prozessor sind die folgenden Schritte implementiert:
  • - Tiefen-Cueing (die Änderung der Lichtintensität an einem Punkt als Funktion des Punktabstands vom Betrachter);
  • - Farbabbildung (das Verfahren, durch welches die Lichtintensitäten, die als Resultat des Beleuchtungsverfahrens und des Tiefen-Cueing berechnet werden, auf die dynamischen Farbfähigkeiten des nachfolgenden Anzeigesystems abgebildet werden; und
  • - Farb-Clipping (das Verfahren, durch welches die Intensitäten, die die maximal von den dynamischen Farbfähigkeiten des Anzeigesystems unterstützte Intensität überschreiten, durch den maximalen Intensitätswert ersetzt werden).
  • TIEFEN-CUEING
  • In diesem Verfahren werden die RGB-Intensitäten, die durch das Beleuchtungsmodell an einem Scheitelpunkt berechnet werden, mit einem angegebenen Farbwert als sichtbares Cue vermischt, das dem Benutzer der Workstation anzeigt, welche Bildteile auf dem Bildschirm sich am weitesten vom Betrachtungspunkt entfernt befinden. Dies erfolgt durch eine Mischfunktion, die die ausgegebene Farbintensität als Funktion der Koordinate z des Scheitelpunktes variiert:
  • Ci = w*Intensi + (1-w)*Cdi
  • wobei folgendes gilt:
  • - Intensi ist die Komponente der eingegebenen Farbe am Scheitelpunkt;
  • - Cdi ist die Komponente der Farbintensität, mit der die Vermischung erfolgt; und
  • - Ci ist die Komponente der ausgegebenen Farbintensität am Scheitelpunkt;
  • für i = R, G un B, und
  • - Pf ist der Wert z der vorderen Referenzebene;
  • - Pb ist der Wert z der hinteren Referenzebene;
  • - Sf ist der vordere Skalierungsfaktor;
  • - Sb ist der hintere Skalierungsfaktor; und
  • - w, die Mischfunktionsvariable, ist definiert als eine Funktion von Zproj, der Wert z wird während der Projektion und während der Abbildung erzeugt. Dabei wird die folgende Formel angewandt:
  • FARBABBILDUNG
  • Die im Beleuchtungsprozeß und im Tiefen-Cueing berechneten Farbintensitäten sind unabhängig vom dynamischen Bereich der Farbintensitäten, die später im System durch die Anzeigehardware angezeigt werden können. Um die Phasen der Beleuchtungsmodellberechnung an die Anzeigehardware, die in der Grafik- Workstation folgt, zu koppeln, wird in diesem Schritt eine lineare Umwandlung jeder einzelnen Farbkomponente durchgeführt, um den in der Anzeigehardware verfügbaren dynamischen Farbbereich nicht zu überschreiten. Die neuen Farbwerte C'i (i = R, G und B) werden durch folgende Formel erzielt:
  • C'i = ai Ci + bi (i = R, G, B)
  • wobei es sich bei den ai's und bi's um Farbabbildungsparameter handelt, die für die Anzeigehardware geeignet sind.
  • FARB-CLIPPING
  • Auch nach dem Schritt der Abbildung können die in der Beleuchtungsphase errechneten Intensitäten höher liegen als die von der Anzeigehardware maximal unterstützte Intensität. Der Zweck des Farb-Clipping besteht darin, sicherzustellen, daß die an die Anzeigehardware geleiteten Farbintensitäten nicht den maximal zulässigen Wert überschreiten. Dadurch werden Sättigungsprobleme beseitigt, die durch große Farbwerte, die während der Beleuchtungsberechnungsphasen erzeugt werden, auftreten. Die neuen Farbwerte C"i (i + R, G und B) lassen sich durch folgende Formel wiedergeben:
  • C"i = MIN (Bhi, C'i) (i = R, G, B)
  • wobei Bhi der maximal zulässige Wert für die Farbkomponente i und C'i die ausgegebene Farbkomponente aus dem Schritt der Farbabbildung ist. Zusätzlich wandelt dieser Schritt die Gleitkommadarstellung der ausgegebenen Farbintensität in die für die Anzeigehardware erforderliche ganzzahlige Darstellung um.
  • IMPLEMENTIERUNG
  • Da es sich bei den in den Schritten des Tiefen-Cueing und der Farbabbildung verwendeten Formeln um lineare Gleichungen handelt, können diese in einer Gleichung kombiniert werden, um die Anzahl der Berechnungen zu reduzieren, die in dieser Phase der Pipeline ausgeführt werden müsen. Bis zu diesem Punkt werden die folgenden Parameter der kombinierten Gleichung im voraus berechnet, das heißt, zu dem Zeitpunkt, wie die Steuerparameter für diese Schritte spezifiziert werden:
  • Qfi = ai*Sf
  • Qbi = ai*Sb
  • Ai = ai*F
  • Bi = ai(Sb - F*Pb)
  • hi = ai*Cdi + bi
  • für i = R, G und B, wobei
  • Da die vorherigen Parameter im voraus berechnet wurden, wird die folgende Operationssequenz ausgeführt:
  • 1. qi als lineare Funktion von x, die Tiefen-Cueing-Parameter und die Anzeigehardwareparameter berechnen:
  • qi = Ai*Zproj + Bi; Pf = Zproj > = Pb (i + R, G, B)
  • qi = Qfi; Zproj > = Pf
  • qi = Qbi; Zproj < = Pb
  • Ai, Bi, Qfi und Qbi sind Konstanten, die wie oben angeführt berechnet werden.
  • 2. Abgebildete Farbintensität C'i, die dem Farb-Cueing unterzogen wurde, als Funktion der eingegebenen Farbe Ci und der zuvor berechneten Parameter qi und hi berechnen:
  • C'i = qi (Ci - Cdi) + hi (i = R, G, B)
  • 3. Abgebildete Farbintensität C'i, die dem Farb-Cueing unterzogen wurde, clippen und zur nachfolgenden Verwendung in der Anzeigehardware in ganzzahlige Darstellung umwandeln:
  • C"i = TRUNC(MIN(Bhi, C'i)) (i = R, G, B)
  • wobei die Funktion TRUNC (truncation) den Gleitkommawert in eine ganzzahlige Darstellung umwandelt.
  • Der Pseudocode, der für die Implementierung des Tiefen-Cueing, der Farbabbildung und des Farb-Clipping geeignet ist, ist folgender:
  • Prozedur Depth_Colour Eingabe:
  • Xs /* Scheitelpunkt Bildschirm Koordinate */
  • Ys /* Scheitelpunkt Bildschirm Koordinate */
  • Zproj /* Scheitelpunkt projizierte Koordinate z */
  • IntensR /* Scheitelpunkt Farbe (rot) */
  • IntensG /* Scheitelpunkt Farbe (grün) */
  • IntensB /* Scheitelpunkt Farbe (blau) */
  • Ausgabe:
  • Xs /* Scheitelpunkt Bildschirm Koordinate */
  • ys /* Scheitelpunkt Bildschirm Koordinate */
  • Zproj /* Scheitelpunkt projizierte Koordinate z */
  • C"R /* Scheitelpunkt Farbe (rot) */
  • C"G /* Scheitelpunkt Farbe (grün) */
  • C"B /* Scheitelpunkt Farbe (blau) */
  • Konstanten:
  • QfR /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • QfG /* Konstante wird berechnet, wenn
  • /* Steuerparameter geladen sind */
  • QfB /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • QbR /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • QbG /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • QbB /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • AR /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • AG /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • AB /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • BR /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • BG /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • BB /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • hR /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • hG /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • hB /* Konstante wird berechnet, wenn */
  • /* Steuerparameter geladen sind */
  • BhR /* maximal zulässige Rotintensität */
  • BhG /* maximal zulässige Grünintensität */
  • BhB /* maximal zulässige Blauintensität */
  • Pf /* Z-Wert der vorderen Referenzebene */
  • Pb /* Z-Wert der hinteren Referenzebene */
  • Variabeln:
  • Aux /* Temporärwert */
  • Programmfluß:
  • 1. Für jeden Scheitelpunkt DO
  • 2. Xs einlesen.
  • 3. Xs ausgeben.
  • 4. Ys einlesen.
  • 5. Ys ausgeben.
  • 6. Zproj einlesen.
  • 7. Zproj ausgeben.
  • For i = R, G, B DO
  • 8. Ci einlesen.
  • 9. Aux = qi /* Berechnung von qi als eine Funktion */
  • /* von Zproj */
  • 10. Aux = Aux + Ci-Cdi) + hi /* Berechnung von
  • /* C'i */
  • 11. Aux = MIN (Bhi, Aux)
  • 12. Aux = Truncate Aux
  • 13. Aux ausgeben.
  • 14. Enddo
  • 15. Enddo
  • Aus der obigen ausführlichen Beschreibung geht hervor, daß ein neues Beleuchtungsmodell-Verarbeitungssystem entwickelt wurde, das eine hohe Durchgabe, eine verbesserte Interaktivität und eine höhere Bildqualität gewährleistet und gleichzeitig alle anderen in diesem Dokument aufgeführten Ziele erfüllt. Zwar wurden an dieser Stelle spezifische Ausführungsbeispiele abgebildet und beschrieben, doch weiß der Fachmann auf diesem Gebiet, daß zahlreiche Änderungen, Ersetzungen, Zusätze und andere Abweichungen ebenso möglich sind.

Claims (5)

1. Eine Einrichtung zur Verarbeitung von Beleuchtungsmodellinformationen, um ein schattiertes Bild eines Gegenstands auf einem Anzeigebildschirm eines Computergraphik- Anzeigesystems anzuzeigen, auf dem ein Gegenstand im Sichtbereich durch ein Maschennetz aus Polygonen dargestellt ist, wobei jedes Polygon durch mehrere Scheitelpunkte definiert ist und die Position jedes der genannten Scheitelpunkte im Sichtbereich bekannt ist, und wobei die Einrichtung folgendermaßen charakterisiert ist:
eine Pipeline-Anordnung mehrerer Verarbeitungsphasen, wobei jede Phase aus einem oder mehreren identischen Gleitkommaprozessoren besteht; diese Verarbeitungsphasen sind so angeordnet, daß sie Daten empfangen, die die Koordinaten x, y und z im Sichtbereich der Scheitelpunkte eines Polygons und die Komponenten x, y und z einer Normalen an jedem der Scheitelpunkte des Polygons darstellen, und daß sie daraus die Koordinaten x und y auf dem Anzeigebildschirm der Scheitelpunkte und Bildschirmfarbintensitätswerte, die zu jedem der genannten Scheitelpunkte, basierend auf einem speziellen Beleuchtungsmodell, gehören,
wobei diese Pipeline-Anordnung (30, 60) aus mehreren Verarbeitungsphasen folgendes umfaßt:
eine erste und zweite Verarbeitungsphase (62, 64) zur gemeinsamen Berechnung von Scheitelpunktintensitätswerten gemäß einem Lichtquellenmodell, das als ein einzelnes oder ein mehrfaches Lichtquellenmodell identifiziert ist;
eine dritte Verarbeitungsphase (66) zur Abbildung von Scheitelpunkten auf einen Anzeigebildschirm; und
eine vierte Verarbeitungsphase für den Empfang der Intensitätswerte, die gemeinsam von der ersten und von der zweiten Verarbeitungsphase berechnet wurden, und zur weiteren Verarbeitung der genannten Intensitätswerte zur Bereitstellung eines Tiefen-Cueing, einer Farbabbildung und einer Farbtrimmung;
wobei die Einrichtung weiterhin ein Mittel zur dynamischen Zuteilung von Intensitätswertberechnungen zwischen der genannten ersten und zweiten Verarbeitungsphase, abhängig davon, ob ein einzelnes oder mehrfaches Beleuchtungsquellenmodell verwendet wird, umfaßt, um zwischen der ersten und zweiten Verarbeitungsphase eine ausgeglichene Rechenbelastung aufrechtzuerhalten.
2. Eine Einrichtung gemäß Anspruch 1, in der bei Verwendung eines einzelnen Lichtquellenmodells die erste Verarbeitungsphase Umgebungsbeleuchtungseffekte und diffuse Reflektionseffekte und die zweite Verarbeitungsphase Spiegelreflektionseffekte berechnet, und bei Verwendung eines Mehrfachlichtquellenmodells die genannte erste Verarbeitungsphase die Umgebungsbeleuchtung und die diffusen Reflektionseffekte sowie die Spiegelreflektionseffekte für eine Gruppe von Lichtquellen und die zweite Verarbeitungsphase die Uittgebungsbeleuchtung sowie die diffusen Reflektionseffekte und die Spiegelreflektionseffekte für die restliche Gruppe von Lichtquellen berechnet.
3. Eine Einrichtung gemäß Anspruch 1 oder 2, in der jede Prozessorphase folgendes umfaßt:
ein Eingabe-FIFO, ein Ausgabe-FIFO, ein arithmetisches Gleitkommaprozessormittel, das zwischen dem genannten Eingabe-FIFO und dem genannten Ausgabe-FIFO angeschlossen ist, ein Datenspeichermittel für die gegenseitige Verbindung mit dem genannten arithmetischen Prozessormittel, eine Steuerlogik und ein Steuerprogramm-Speichermittel, einen Sequencer zur Steuerung der Operation des genannten arithmetischen Prozessormittels und ein Datenspeichermittel in Übereinstimmung mit der genannten Steuerlogik und dem Steuerprogramm.
4. Eine Einrichtung gemäß Anspruch 3, bei der:
das genannte Datenspeichermittel eine Registerbank zur Speicherung von Daten umfaßt; und
das genannte arithmetische Prozessormittel einen Gleitkommamultiplikator, ein Mittel zur Berechnung von Umkehrwerten und Quadratwurzeln und einen Gleitkommaaddierer umfaßt, wobei der Addierer an den genannten Multiplikator so angeschlossen ist, daß er dem Multiplikator als Akkumulator dient.
5. Eine Einrichtung gemäß jedem der vorherigen Ansprüche, in der die genannten Bildschirmintensitätswerte für jeden der genannten Scheitelpunkte einen Intensitätswert für die Rotkomponente, einen Intensitätswert für die Grünkomponente und einen Intensitätswert für die Blaukomponente umfassen.
DE3853336T 1987-10-30 1988-10-13 Rechnergraphikgerät zur Verarbeitung von Beleuchtungsmodellinformation. Expired - Fee Related DE3853336T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/115,467 US4866637A (en) 1987-10-30 1987-10-30 Pipelined lighting model processing system for a graphics workstation's shading function

Publications (2)

Publication Number Publication Date
DE3853336D1 DE3853336D1 (de) 1995-04-20
DE3853336T2 true DE3853336T2 (de) 1995-09-28

Family

ID=22361599

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3853336T Expired - Fee Related DE3853336T2 (de) 1987-10-30 1988-10-13 Rechnergraphikgerät zur Verarbeitung von Beleuchtungsmodellinformation.

Country Status (5)

Country Link
US (1) US4866637A (de)
EP (1) EP0314341B1 (de)
JP (1) JPH0731741B2 (de)
CA (1) CA1304824C (de)
DE (1) DE3853336T2 (de)

Families Citing this family (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0576749B1 (de) * 1992-06-30 1999-06-02 Discovision Associates Datenpipelinesystem
GB9405914D0 (en) * 1994-03-24 1994-05-11 Discovision Ass Video decompression
US5222203A (en) * 1989-01-20 1993-06-22 Daikin Industries, Ltd. Method and apparatus for displaying translucent surface
JP2774627B2 (ja) * 1989-12-28 1998-07-09 株式会社日立製作所 画像表示方法及びその装置
SE464265B (sv) * 1990-01-10 1991-03-25 Stefan Blixt Grafikprocessor
DE69129995T2 (de) * 1990-01-23 1998-12-24 Hewlett Packard Co Dezentrales Verarbeitungsgerät und Verfahren zur Anwendung in globaler Wiedergabe
JPH0476680A (ja) * 1990-05-14 1992-03-11 Mitsubishi Electric Corp 回転体のグラフィック表示方法
JPH04122544A (ja) * 1990-05-14 1992-04-23 Mitsubishi Electric Corp 施盤の切削シミュレーション方法
EP0459761A3 (en) * 1990-05-31 1993-07-14 Hewlett-Packard Company Three dimensional computer graphics employing ray tracking to compute form factors in radiosity
US5253339A (en) * 1990-07-26 1993-10-12 Sun Microsystems, Inc. Method and apparatus for adaptive Phong shading
GB9026232D0 (en) * 1990-12-03 1991-01-16 Ige Medical Systems Image processing system
US5268996A (en) * 1990-12-20 1993-12-07 General Electric Company Computer image generation method for determination of total pixel illumination due to plural light sources
TW225595B (de) * 1991-09-03 1994-06-21 Gen Electric
US5706415A (en) * 1991-12-20 1998-01-06 Apple Computer, Inc. Method and apparatus for distributed interpolation of pixel shading parameter values
US5388841A (en) 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
JP3102031B2 (ja) * 1992-03-31 2000-10-23 セイコーエプソン株式会社 模擬光源による3dカラー画像生成システムおよび方法
US6034674A (en) * 1992-06-30 2000-03-07 Discovision Associates Buffer manager
US6079009A (en) * 1992-06-30 2000-06-20 Discovision Associates Coding standard token in a system compromising a plurality of pipeline stages
US7095783B1 (en) 1992-06-30 2006-08-22 Discovision Associates Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto
US6330665B1 (en) 1992-06-30 2001-12-11 Discovision Associates Video parser
US5809270A (en) * 1992-06-30 1998-09-15 Discovision Associates Inverse quantizer
US6047112A (en) * 1992-06-30 2000-04-04 Discovision Associates Technique for initiating processing of a data stream of encoded video information
US6067417A (en) * 1992-06-30 2000-05-23 Discovision Associates Picture start token
US5768561A (en) * 1992-06-30 1998-06-16 Discovision Associates Tokens-based adaptive video processing arrangement
US5835740A (en) * 1992-06-30 1998-11-10 Discovision Associates Data pipeline system and data encoding method
US6112017A (en) * 1992-06-30 2000-08-29 Discovision Associates Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus
US5603012A (en) 1992-06-30 1997-02-11 Discovision Associates Start code detector
US6417859B1 (en) 1992-06-30 2002-07-09 Discovision Associates Method and apparatus for displaying video data
EP0578950A3 (en) * 1992-07-15 1995-11-22 Ibm Method and apparatus for converting floating-point pixel values to byte pixel values by table lookup
US5357599A (en) * 1992-07-30 1994-10-18 International Business Machines Corporation Method and apparatus for rendering polygons
US5821940A (en) * 1992-08-03 1998-10-13 Ball Corporation Computer graphics vertex index cache system for polygons
US5315701A (en) * 1992-08-07 1994-05-24 International Business Machines Corporation Method and system for processing graphics data streams utilizing scalable processing nodes
GB2271257A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
TW241196B (de) * 1993-01-15 1995-02-21 Du Pont
US5402533A (en) * 1993-04-22 1995-03-28 Apple Computer, Inc. Method and apparatus for approximating a signed value between two endpoint values in a three-dimensional image rendering device
US5606650A (en) * 1993-04-22 1997-02-25 Apple Computer, Inc. Method and apparatus for storage and retrieval of a texture map in a graphics display system
IL109462A0 (en) * 1993-04-30 1994-07-31 Scitex Corp Ltd Method for generating artificial shadow
US5583974A (en) * 1993-05-10 1996-12-10 Apple Computer, Inc. Computer graphics system having high performance multiple layer Z-buffer
JP3557208B2 (ja) * 1993-05-10 2004-08-25 アプル・コンピュータ・インコーポレーテッド 高性能複数層zバッファを有するコンピュータ・グラフィックス・システム
US5974189A (en) * 1993-05-24 1999-10-26 Eastman Kodak Company Method and apparatus for modifying electronic image data
EP0627682B1 (de) * 1993-06-04 1999-05-26 Sun Microsystems, Inc. Gleitkommaprozessor für einen hochleistungsfähigen dreidimensionalen Graphikbeschleuniger
US5878273A (en) * 1993-06-24 1999-03-02 Discovision Associates System for microprogrammable state machine in video parser disabling portion of processing stages responsive to sequence-- end token generating by token generator responsive to received data
US5805914A (en) * 1993-06-24 1998-09-08 Discovision Associates Data pipeline system and data encoding method
EP0698259B1 (de) * 1993-08-24 1996-11-06 Taligent, Inc. Objektorientierte schraffierung
US5613052A (en) * 1993-09-02 1997-03-18 International Business Machines Corporation Method and apparatus for clipping and determining color factors for polygons
US5742292A (en) * 1993-10-29 1998-04-21 Kabushiki Kaisha Toshiba System and method for realistically displaying images indicating the effects of lighting on an object in three dimensional space
CA2145379C (en) * 1994-03-24 1999-06-08 William P. Robbins Method and apparatus for addressing memory
CA2145363C (en) * 1994-03-24 1999-07-13 Anthony Mark Jones Ram interface
CA2145365C (en) * 1994-03-24 1999-04-27 Anthony M. Jones Method for accessing banks of dram
US5808627A (en) * 1994-04-22 1998-09-15 Apple Computer, Inc. Method and apparatus for increasing the speed of rendering of objects in a display system
GB9417138D0 (en) 1994-08-23 1994-10-12 Discovision Ass Data rate conversion
US5764243A (en) * 1995-03-24 1998-06-09 3Dlabs Inc. Ltd. Rendering architecture with selectable processing of multi-pixel spans
US6025853A (en) * 1995-03-24 2000-02-15 3Dlabs Inc. Ltd. Integrated graphics subsystem with message-passing architecture
US5764228A (en) * 1995-03-24 1998-06-09 3Dlabs Inc., Ltd. Graphics pre-processing and rendering system
US5798770A (en) * 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
US5835096A (en) * 1995-03-24 1998-11-10 3D Labs Rendering system using 3D texture-processing hardware for accelerated 2D rendering
US5717715A (en) * 1995-06-07 1998-02-10 Discovision Associates Signal processing apparatus and method
JPH096424A (ja) * 1995-06-19 1997-01-10 Mitsubishi Electric Corp Cad/cam装置及び加工シミュレーション方法
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6111584A (en) * 1995-12-18 2000-08-29 3Dlabs Inc. Ltd. Rendering system with mini-patch retrieval from local texture storage
US5739819A (en) * 1996-02-05 1998-04-14 Scitex Corporation Ltd. Method and apparatus for generating an artificial shadow in a two dimensional color image
DE19606357A1 (de) * 1996-02-12 1997-08-14 Gmd Gmbh Bildverarbeitungsverfahren zur Darstellung von spiegelnden Objekten und zugehörige Vorrichtung
JP3226153B2 (ja) * 1996-03-18 2001-11-05 シャープ株式会社 マルチメディアデータ表示装置
US5745125A (en) * 1996-07-02 1998-04-28 Sun Microsystems, Inc. Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance
JP3387750B2 (ja) * 1996-09-02 2003-03-17 株式会社リコー シェーディング処理装置
US5854632A (en) * 1996-10-15 1998-12-29 Real 3D Apparatus and method for simulating specular reflection in a computer graphics/imaging system
US6016149A (en) * 1997-06-30 2000-01-18 Sun Microsystems, Inc. Lighting unit for a three-dimensional graphics accelerator with improved processing of multiple light sources
US6014144A (en) * 1998-02-03 2000-01-11 Sun Microsystems, Inc. Rapid computation of local eye vectors in a fixed point lighting unit
US6650327B1 (en) 1998-06-16 2003-11-18 Silicon Graphics, Inc. Display system having floating point rasterization and floating point framebuffering
US6977649B1 (en) 1998-11-23 2005-12-20 3Dlabs, Inc. Ltd 3D graphics rendering with selective read suspend
US6417858B1 (en) * 1998-12-23 2002-07-09 Microsoft Corporation Processor for geometry transformations and lighting calculations
US6181352B1 (en) 1999-03-22 2001-01-30 Nvidia Corporation Graphics pipeline selectively providing multiple pixels or multiple textures
US6333744B1 (en) * 1999-03-22 2001-12-25 Nvidia Corporation Graphics pipeline including combiner stages
US6611265B1 (en) 1999-10-18 2003-08-26 S3 Graphics Co., Ltd. Multi-stage fixed cycle pipe-lined lighting equation evaluator
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6411301B1 (en) 1999-10-28 2002-06-25 Nintendo Co., Ltd. Graphics system interface
US6452600B1 (en) 1999-10-28 2002-09-17 Nintendo Co., Ltd. Graphics system interface
US6597357B1 (en) * 1999-12-20 2003-07-22 Microsoft Corporation Method and system for efficiently implementing two sided vertex lighting in hardware
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6664963B1 (en) * 2000-05-31 2003-12-16 Nvidia Corporation System, method and computer program product for programmable shading using pixel shaders
US6724394B1 (en) 2000-05-31 2004-04-20 Nvidia Corporation Programmable pixel shading architecture
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US6788302B1 (en) 2000-08-03 2004-09-07 International Business Machines Corporation Partitioning and load balancing graphical shape data for parallel applications
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6664962B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Shadow mapping in a low cost graphics system
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US7134960B1 (en) 2000-08-23 2006-11-14 Nintendo Co., Ltd. External interfaces for a 3D graphics system
US6606689B1 (en) 2000-08-23 2003-08-12 Nintendo Co., Ltd. Method and apparatus for pre-caching data in audio memory
US6664958B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Z-texturing
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6580430B1 (en) 2000-08-23 2003-06-17 Nintendo Co., Ltd. Method and apparatus for providing improved fog effects in a graphics system
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US6609977B1 (en) 2000-08-23 2003-08-26 Nintendo Co., Ltd. External interfaces for a 3D graphics system
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6639595B1 (en) 2000-08-23 2003-10-28 Nintendo Co., Ltd. Achromatic lighting in a graphics system and method
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6980218B1 (en) 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6697074B2 (en) 2000-11-28 2004-02-24 Nintendo Co., Ltd. Graphics system interface
FR2826769B1 (fr) * 2001-06-29 2003-09-05 Thales Sa Procede d'affichage d'informations cartographiques sur ecran d'aeronef
US6781594B2 (en) * 2001-08-21 2004-08-24 Sony Computer Entertainment America Inc. Method for computing the intensity of specularly reflected light
US7003588B1 (en) 2001-08-22 2006-02-21 Nintendo Co., Ltd. Peripheral devices for a video game system
US7046245B2 (en) * 2001-10-10 2006-05-16 Sony Computer Entertainment America Inc. System and method for environment mapping
US7451457B2 (en) 2002-04-15 2008-11-11 Microsoft Corporation Facilitating interaction between video renderers and graphics device drivers
US7219352B2 (en) 2002-04-15 2007-05-15 Microsoft Corporation Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays
US7308139B2 (en) * 2002-07-12 2007-12-11 Chroma Energy, Inc. Method, system, and apparatus for color representation of seismic data and associated measurements
US7006090B2 (en) * 2003-02-07 2006-02-28 Crytek Gmbh Method and computer program product for lighting a computer graphics image and a computer
US7106326B2 (en) * 2003-03-03 2006-09-12 Sun Microsystems, Inc. System and method for computing filtered shadow estimates using reduced bandwidth
JP2005057738A (ja) * 2003-07-18 2005-03-03 Canon Inc 信号処理装置、信号処理方法及びプログラム
US7139002B2 (en) * 2003-08-01 2006-11-21 Microsoft Corporation Bandwidth-efficient processing of video images
US7643675B2 (en) * 2003-08-01 2010-01-05 Microsoft Corporation Strategies for processing image information using a color information data structure
US7158668B2 (en) 2003-08-01 2007-01-02 Microsoft Corporation Image processing using linear light values and other image processing improvements
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
US20060071933A1 (en) 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US7636126B2 (en) 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
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
US7940266B2 (en) * 2006-10-13 2011-05-10 International Business Machines Corporation Dynamic reallocation of processing cores for balanced ray tracing graphics workload
US9110726B2 (en) * 2006-11-10 2015-08-18 Qualcomm Incorporated Method and system for parallelization of pipelined computations
US8922565B2 (en) * 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
US8081019B2 (en) * 2008-11-21 2011-12-20 Flextronics Ap, Llc Variable PFC and grid-tied bus voltage control
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
CN105023249B (zh) * 2015-06-26 2017-11-17 清华大学深圳研究生院 基于光场的高光图像修复方法及装置
US11756254B2 (en) * 2020-12-08 2023-09-12 Nvidia Corporation Light importance caching using spatial hashing in real-time ray tracing applications

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5513582A (en) * 1978-07-13 1980-01-30 Sanyo Electric Co Ltd Color television receiver
US4241341A (en) * 1979-03-05 1980-12-23 Thorson Mark R Apparatus for scan conversion
CA1141468A (en) * 1979-06-15 1983-02-15 Martin J.P. Bolton Visual display apparatus
US4646075A (en) * 1983-11-03 1987-02-24 Robert Bosch Corporation System and method for a data processing pipeline
US4658247A (en) * 1984-07-30 1987-04-14 Cornell Research Foundation, Inc. Pipelined, line buffered real-time color graphics display system
JPH0746391B2 (ja) * 1984-09-14 1995-05-17 株式会社日立製作所 図形シエ−デイング装置
DE3689271T2 (de) * 1985-02-26 1994-02-24 Sony Corp Verfahren zur Bildanzeige.
US4737921A (en) * 1985-06-03 1988-04-12 Dynamic Digital Displays, Inc. Three dimensional medical image display system

Also Published As

Publication number Publication date
EP0314341B1 (de) 1995-03-15
US4866637A (en) 1989-09-12
CA1304824C (en) 1992-07-07
JPH01163884A (ja) 1989-06-28
EP0314341A2 (de) 1989-05-03
JPH0731741B2 (ja) 1995-04-10
EP0314341A3 (de) 1991-07-24
DE3853336D1 (de) 1995-04-20

Similar Documents

Publication Publication Date Title
DE3853336T2 (de) Rechnergraphikgerät zur Verarbeitung von Beleuchtungsmodellinformation.
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE68927471T2 (de) Verfahren zur Schattierung eines graphischen Bildes
DE69122557T2 (de) Bilderzeugung
DE19646194B4 (de) Echtzeit-Wiedergabeverfahren zum wahlweisen Ausführen von Bump-Mapping- und Phong-Schattierungs-Prozessen und zugehörige Vorrichtung
DE10223751B4 (de) System und Verfahren zum Kombinieren von Graphikformaten in einer digitalen Videopipeline
EP1175663B1 (de) Verfahren zur rasterisierung eines graphikgrundelements
DE3689271T2 (de) Verfahren zur Bildanzeige.
DE3750803T2 (de) Schattierungsschaltung zur Schattierung mehrerer Polygone, die ein Festkörpermodel einsetzen, und Schattierungsverfahren dafür.
DE69127915T2 (de) System und Verfahren von Prioritätsfarbabbildung
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE69908966T2 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE3750629T2 (de) Bildorientierung und -animation unter Verwendung von Quaternionen.
DE19782086B4 (de) Multiplizierer zur Durchführung von 3D-Graphik-Interpolationen
DE3650129T2 (de) Verfahren zur Kantenglättung für Rechnerbilderzeugungssystem.
DE68919024T2 (de) Verfahren und Prozessor zur Abtastumsetzung.
DE3853393T2 (de) Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung.
DE69914355T2 (de) Bildverarbeitungsgerät
DE19807013B4 (de) Volumetrisches Vorabschneidungsverfahren, das eine minimale Anzahl von Abtastpunkten durch ein Volumen gewährleistet
DE3706509A1 (de) Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem
DE19619288A1 (de) System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern
DE69631718T2 (de) Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen
DE68923191T2 (de) Dreidimensionales graphisches Verarbeitungsgerät.
DE19620263B4 (de) Datensynchronisation zwischen einer Mehrzahl von asynchronen Datenaufbereitungen
DE3750862T2 (de) Verarbeitung von Videobildsignalen.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee