DE19940468A1 - Verfahren und Hardware für Bump- und Reflection-Shading - Google Patents
Verfahren und Hardware für Bump- und Reflection-ShadingInfo
- Publication number
- DE19940468A1 DE19940468A1 DE1999140468 DE19940468A DE19940468A1 DE 19940468 A1 DE19940468 A1 DE 19940468A1 DE 1999140468 DE1999140468 DE 1999140468 DE 19940468 A DE19940468 A DE 19940468A DE 19940468 A1 DE19940468 A1 DE 19940468A1
- Authority
- DE
- Germany
- Prior art keywords
- bump
- reflection
- shading
- mapping
- vector
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
Ein neues Verfahren zum Rendern von rauhen oder reflektierenden Oberflächen ermöglicht realistische Darstellungen von computergenerierten Bildern derartiger Oberflächen. Dieses Verfahren kann in einfacher Weise als Hardware realisiert werden und ermöglicht die schnelle Berechnung dieser Bilder. DOLLAR A Die Winkel-Kodierung wird zum Normalvektor hinzugefügt und führt so zu geringeren Datenmengen. Dadurch wird die auch Hardware-Integration von Look-up-Tabellen handhabbare Größe ermöglicht. DOLLAR A Eine spezielle Speicher-Architektur wurde entwickelt, die verschiedene Strukturen und Schraffuren über eine sogenannte Raster-Pipeline den Pixeln hinzufügt. Die neue Speicherarchitektur bietet eine kostengünstige Lösung für Bump- und Reflection-Mapping von strukturierten Oberflächen.
Description
Ein neues Verfahren ermöglicht Oberflächenshadingverfahren für Bump- und
Reflection-Shading bei dreidimensionalen computergenerierten Bildern mit einer
einfachen, effizienten Hardware durchzuführen und zu beschleunigen. Damit sind
realistische Darstellungen von rauhen oder reflektierenden Oberflächen möglich.
Bisher eingesetzte Hardware-Architekturen besitzen komplizierte Designs, da eine
Vielzahl von Berechnungen wie z. B. Vektornormierungen, Kreuzprodukten und
Divisionen mit großen Datenmengen durchzuführen sind.
Das neue Verfahren ermöglicht einfache Hardware-Lösungen durch Berechnung in
Kugelkoordinaten, ein neues Vektorrotationsverfahren und die Nutzung vorausbe
rechneter Tabellen. In Kugelkoordinaten lassen sich Bump- und Reflection-Mapping
sehr einfach durch Tabellen berechnen und in Hardware implementieren, wodurch
zusätzlich die lokale Oberflächenbeleuchtung schnell berechnet werden kann.
Texture-Mapping [10] bezeichnet das Zusammenfügen von Oberflächendetails durch
Projizieren einer digitalisierten Struktur auf eine Oberfläche. Reflection-Mapping
wurde von Blinn und Newell [4] eingeführt, um Reflexion auf spiegelnden Oberflä
chen zu simulieren. Bump-Mapping [3] wird benutzt, um die Rauheit einer rauhen
oder faltigen Oberfläche darzustellen, ohne daß dazu Daten über das geometrische
Oberflächenprofil vorliegen müssen. Zusätzliche Oberflächendetails können addiert
werden, in dem zur Oberfläche Mikro-Strukturen oder rauhe Muster hinzugefügt
werden. Zusätzliche Effekte wie z. B. eingravierter Text in einer marmorierten Ober
fläche, Mörtel zwischen Ziegeln oder Wassertropfen auf einer reflektierenden
Oberfläche können so realistischer dargestellt werden.
Einer der Faktoren, der die Geschwindigkeit einer Texturdarstellung durch Hardware
bestimmt, ist die benötigte Bandweite zwischen Raster-Pipeline und externem
Speicher [15, 22]. Texture-Mapping [10], Environment-Mapping [7] und realistisch
wirkende Schraffuren benötigen Basisdaten, die pixelweise aus einem externen
Speicher bezogen werden. Diese Basisdaten beinhalten Strukturen oder vorausbe
rechnete Darstellungen von Schraffuren. Zusätzlich stellen bekannte Algorithmen zur
Darstellung von Schattierungen auf Oberflächen hohe Anforderungen an die Hard
ware [1].
Die Rauigkeiten und Strukturen einer Oberfläche bezeichnet man als Bumps. Bump-
Mapping ermöglicht die Darstellung von Rauheiten oder Falten auf einer glatten
Oberfläche. Bump-Mapping verändert nicht die zugrundeliegende Oberfläche, addiert
aber Strukturen und Schraffuren, um so eine realistischere Oberfläche zu erhalten.
Der Normal-Vektor N wird an einem bestimmten Punkt der Oberfläche P durch einen
Stör-Vektor B beeinflußt, der von einer Störungs-Funktion F(u,v) der Oberflächenpa
rameter abhängt. Die Störungs-Funktion F(u,v) wird als zweidimensionale Tabelle
abgelegt. Schraffuren des Normal-Vektors [2] können zu abweichenden Normalen
hinzugefügt werden. Diese kleinen Abweichungen der Oberflächen-Normalen geben
den Eindruck von Helligkeitsunterschieden auf einer glatten Oberfläche, so dass die
Oberfläche strukturiert erscheint. Die neue abweichende Oberfläche wird gebildet, in
dem ein Punkt P der parametrisierten Oberfläche S(u,v) durch die Funktion F(u,v) in
Richtung der Oberflächen-Normalen N bewegt wird. An einem bestimmten Punkt P
auf der Oberfläche S(u,v) kann der Normal-Vektor N wie folgt dargestellt werden:
Wobei Su und Sv die partiellen Ableitungen der Parameter in den Richtungen u und v
sind. Ein neuer abweichender Punkt wird erhalten, indem ein Offset zur der Norma
len an diesen Punkt addiert wird:
wobei F(u,v) die Störungsfunktion darstellt. Die neuen Normale auf die gestörte
Oberfläche, wird, wenn die Größe der Störung F(u,v) klein ist, gegeben durch:
B ist die Störung der Normalen durch Bumps. N × Su und N × Sv sind zwei Vektoren
in der tangentialen Ebene zur Oberfläche S. Damit kann B im lokalen Koordinaten
system wie folgt dargestellt werden:
Die leichten Abweichungen der Normale einer glatten Oberfläche verursacht Hellig
keitsvariationen, die den Eindruck einer strukturierten oder gefalteten Oberfläche
geben, sofern die Muster einzeln moduliert wurden. Prinzip des Bump-Mapping siehe
Fig. 1.
Reflection-Mapping wurde von Blinn [3] und Newell [4] eingeführt, um Reflexionen
auf beliebigen reflektierenden Oberflächen zu simulieren. Durch Reflection-Mapping
kann die Reflexionsrichtung R eines Strahles vom Betrachter zum aktuell struktu
rierten Punkt berechnet werden:
R = 2(N.E).N-E (6)
wobei N die nicht-normalisierte Oberflächen-Normale ist und E in Richtung des
Betrachters zeigt. Wenn die Reflexions-Textur eine Fotografie der Umgebung, die
genau aus dem Objektzentrum aufgenommen wurde, darstellt, scheint die Oberflä
che mit Texture-Mapping ein Bild ihrer Umgebung unendlich weit weg vom Objekt
zentrum darzustellen. R wird dazu benutzt, eine Textur in einer sphärischen oder
kubischen Umgebungs-Abbildung (Erivironment-Map) zu indizieren [7, 24].
Haeberli und Segal [8] beschreiben ein weiteres Verfahren, um eine Umgebungs-
Abbildung eines strukturierten Bildes auf einer perfekt reflektierenden gekrümmten
Oberfläche in orthographischer Projektion zu generieren [Fig. 2]. Für jeden beliebi
gen Vektor R, der von der Objektoberfläche ausgeht, kann die zugehörige Normale
nsphere der reflektierenden gekrümmten Fläche, genau an der Stelle, wo R auf die
Umgebungs-Abbildung trifft, berechnet werden.
Wenn die Blickrichtung konstant ist, d. h. wir nutzen beispielsweise eine orthographi
sche Projektion und die Strahlen, die vom Auge zur Objektoberfläche gehen parallel
sind, kann eine gekrümmte Umgebungs-Abbildung vorausberechnet und durch eine
interpolierte Objekt-Oberflächen-Normalen nobj indiziert werden. Das strukturierte Bild
der reflektierenden gekrümmten Oberfläche, kann vorausberechnet werden, indem R
für alle Objekt-Normalen vorab berechnet wird, die Normale nsphere, an der Stelle an
der R die reflektierende, gekrümmte Fläche nsphere trifft, abgeschätzt und das Bild mit
der aktuellen Objekt-Oberflächen-Normalen nobj indiziert wird:
R = 2(nobj.E).nobj-E = 2(nobj.vdir).nobj-vdir (7)
uN = nobj.vside vN = nobj.vup (8)
Um neue Koordinaten (uR, vR) in die Umgebungs-Abbildung einzufügen, werden für
die Vektoren der gegenwärtigen Blickrichtung die Vektoren vdir view-up vup und view
side vside eingeführt.
Die Umgebungs-Abbildung wird mit einer (u,v)-Textur-Koordinate adressiert, die auf
die gleiche Art wie die Oberflächentextur indiziert wird.
uR = R.vside = 2(nobj.vdir).(nobj.vside) = 2(nobj.vdir).uN (10)
vR = R.vup = 2(nobj.vdir).(nobj.vup) = 2(nobj.vdir).vN (11)
Diese Methode hat jedoch den Nachteil, daß neue Texturbilder immer dann neu
berechnet werden müssen, wenn sich die Blickrichtung ändert. Aber Sie benötigt nur
ein einzelnes Texturbild. Diese Methode kann sehr gut dazu verwendet werden, um
reflektierende Oberflächen in Verbindung mit Bump-Mapping zu rendern, ohne daß
der reflektierte Strahlenvektor R für jedes Pixel berechnet werden muß.
Bekannte Grafik-Hardware-Beschleuniger benutzen zur Abschätzung u. a. das
Phong-Beleuchtungsmodel an den Polygon-Eckpunkten, bevor Helligkeitswerte über
das gesamte Polygon interpoliert werden. Um jedoch eine strukturierteOberfläche
korrekt zu beleuchten, muß die Berechnung für jedes interne Polygon-Pixel neu
durchgeführt werden, da sich die Oberflächen-Normalen zwischen den Polygon-Eck
punkten ändern.
Im Phong-Beleuchungs-Modell wird die Reflektivität in diffuse und spekulare Reflexi
on aufgespaltet: Für weit entfernte Lichtquellen ist der Lichtvektor L unabhängig vom
Platz auf der Oberfläche und die Shading-Gleichung wird zu einer Funktion der
Oberflächennormale N und des reflektierten Strahlvektors R (12, 13):
I(P) = Ambient + Diff(N) + Spec(R) (12)
I(P) = kamb.Iamb + kdiff.(L.N) + kspec.(R.E)ns (13)
Dabei ist kamb der Reflexionskoeffizient des Umgebungslichtes, kdiff die reflektierte
Energie des Anteils an diffusem Licht, kspec die reflektierte Energie des Anteils an
spekularem (glänzendem) Licht und ns ist der spekulare Reflexionsexponent des
Oberflächenmatärials.
Der diffuse Anteil Diff(N) und der glänzende Anteil Spec(R) des Strahlvektors R
können als zwei getrennte Umgebungs-Abbildungen angesehen werden, die diffuse
und glänzende Lichtquellen für diese Oberfläche enthalten und die durch die Ober
flächen-Normale N und dem Reflexions-Vektor R indiziert werden. Die Beleuchtungs-
Berechnungen können vorausberechnet werden, um Glanzpunkte in vorberechnete
Umgebungs-Abbildungen zu integrieren [1, 12, 24]. Die vorausberechnete Abbildung
Spec(R) kann über die Oberflächen-Normale N auf gleiche Art wie die sphärische
Umgebungs-Abbildung angesprochen werden.
Alle bisher dargestellten Architekturen haben gemeinsam, daß zugrundelegende
Schaltkreise für Bump- und Reflection-Mapping einer vorwärts Implementation
bekannter Algorithmen folgen. Dadurch wird das Design der Schaltkreise aufwendig
und die notwendige Computerarithmetik teuer. Fig. 3 zeigt beispielsweise zwei
mögliche Implementationen für eine Bump-Mapping Hardware.
Umgebungs-Abbildungen (Environment-Maps) wurden eingeführt, um Oberflächen
beleuchtung von reflektierenden Strahlen zu berechnen [4, 7]. Eine neue Architektur
[24] indiziert einen nicht-normalisierten Reflexions-Vektor für die Umgebungs-
Abbildung in einem Würfel. Dieses ist eine vorwärts Implementation von Gleichung
für die Berechnung reflektierter Strahlen (6). Die Hardwareimplementation kann aus
Addieren und Multiplizieren, die über eine zehn-stufige Pipeline geführt werden,
zusammengebaut werden, sofern eine komplette Addition einer Pipeline-Stufe
ausgeführt wird.
Schaltkreise für Bump-Mapping, der für jedes Pixel eine komplette Matrix-
Multiplikation durchführen kann, sind bekannt [1, 6, 12]. Diese Aruhitekturen benöti
gen zusätzliche Implementationen zum Wurzelziehen und Dividieren, um die interpo
lierte Oberflächen-Normale zu normalisieren.
Im sphärischen Textur-Koordinatensystem kann ein orthonormales Koordinatensy
stem aus dem interpolierten Oberflächen-Normal-Vektor N und einer konstanten
Hauptrichtung m, wie z. B. die Polarachse, aufgebaut werden [23].
Diese Operation wird für jedes Pixel durchgeführt und setzt mindestens folgende
Operationen voraus: 2 Vektor-Normalisierungen, 2 Kreuzprodukte, 9 Gleitkomma-
Multiplikationen, 6 Additionen. Wenn die Interpolation im Objektraum durchgeführt
wird, muß die abgelenkte Normale vor Shading und Reflection-Mapping zurück in
Weltkoordinaten transformiert werden, was eine weitere Matrixmultiplikation nötigt
macht.
Wenn die Matrix A auf dreiecksbasis generiert wird [6] und ihre Komponenten über
das aktuelle Dreieck interpoliert werden, verringert sich zwar der Aufwand für die
Berechnungen, dafür wird Bump-Mapping vor allem bei starken Krümmungen
zwischen benachbarten Dreiecken ungenau.
OpenGL benutzt Textur-Abbildungen, um Bump-Mapping zu generieren [16]. Licht
berechnungen werden für Polygon-Vertrices in den Tangenten-Raum transformiert
und nutzen Phong-Shading. Im Tangenten-Raum wird Shading aus dem Bump-
Deflection-Vektor und den transformierten Shading-Vektoren berechnet. Im Environ
ment-Mapping-Modus [18] nutzt OpenGL eine Methode ähnlich der von Haeberli und
Segal [8]: Bei jedem Polygon-Vertex wird zunächst der reflektierte Stahlen-Vektor
nach (6) berechnet, dann die (u,v)-Koordinate berechnet und anschließend über das
Polygon interpoliert.
Peercy et al. [19] beschreiben eine Hardwareunterstützung für Bump-Mapping, bei
der die gestörten Normalen für eine tangentiale Ebene an die Oberfläche vorausbe
rechnet werden. Shading- und gestörte Normal-Vektoren müssen dazu durch
spezielle Pipelines für die Normalisierung gehen. Diese Architektur ermöglicht
einfaches Umschalten zwischen Bump-Mapping und Standard-Shading-Methoden.
Die Ablenkung des Normal-Vektors wird an den Polygon-Eckpunkten durchgeführt
Hier wird die Beleuchtung direkt berechnet. Der gestörte Normal-Vektor läßt sich
jedoch für weitere Anwendungen, wie z. B. Reflection-Mapping, nicht auf einfachen
Weg wieder zurückwandeln.
Ikedo und Ma [12] präsentieren einen Grafik-Chip mit Bump-Mapping und Unterstüt
zung für Phong-Shading. Der Algorithmus folgt einer straightforward Implementie
rung mit einer Reihe vom Matrix-Multiplikationen. Dieses Verfahren interpoliert die
Winkel zwischen Licht- und Normal-Vektor und funktioniert nur für sehr kleine
Polygone zufriedenstellend.
Im folgenden wird unser neues Verfahren beschrieben, das gegenüber den be
schriebenen Verfahren einfache Hardware-Lösungen und hohe Rechengeschwindig
keiten ermöglicht. Zusätzlich werden rauhe oder reflektierende Oberflächen realisti
scher dargestellt.
Der Oberflächen-Normal-Vektor N wird in kartesischen Objektkoordinaten interpoliert.
Für Bump-Mapping wird N erst nach der Interpolation in sphärische Koordinaten (ϕN,
θN) transformiert. Jeder Normal-Vektor N = (Nx, Ny, Nz)T wird in sphärischen Koordi
naten durch den horizontalen Winkel ϕN und einen vertikalen Winkel θN beschrieben.
Wenn die gekrümmte Fläche in 512 × 256 Punkte unterteilt wird, ergibt sich eine
Auflösung von 0,7° zwischen zwei Vektoren. Alle Punkte auf der Kugel werden durch
die zwei Winkel ϕ und θ gekennzeichnet. Rechtwinklige Koordinaten werden ins
sphärische Koordinaten durch die folgenden Relationen übergeführt:
Die Normalen werden wie folgt berechnet.
Der nicht-normalisierte Oberflächen-Normal-Vektor N = (Nx, Ny, Nz)T kann verwendet
werden, um Indizes durch Zugriff auf eine kubische Umgebungs-Abbildung zu
berechnen und die dazugehörigen sphärischen Koordinaten (ϕN, θN) zu erhalten. Um
alle Oberflächen-Normalen abzudecken, muß über die gesamte Kugel diskretisiert
und alle Werte berechnet werden. Dazu werden 512 × 265 × 17 Bit benötigt. Dieses
ist für eine einfache Look-up-Tabelle viel zu groß. Der Normalvektor kann kompri
miert werden, indem geometrische Symmetrien ausgenutzt werden [5]. Da die Kugel
in 8 Oktanten symmetrisch ist, kann der Look-up-Tabelle auf 16.384 × 14 Bit redu
ziert werden, was immer noch sehr groß ist.
Jeder Normalvektor N = (Nx, Ny, Nz)T wird einem Oktanten zugeordnet, indem die
Vorzeichen der einzelnen Komponenten entsprechend angepaßt werden. Die Indizes
in der Look-up-Tabelle für (ϕOCT, θOCT) werden wie folgt berechnet:
Bevor die zwei Divisionen (18) und (19) durchgeführt werden, werden die Vektor-
Komponenten Nx, Ny und Nz sortiert, um durch den größten Wert zu teilen und so die
Ergebnisse tu und tv auf den Bereich 0 . . . 1 zu normieren. Die Look-up-Tabelle LUTθ(t)
hat jetzt eine handhabbare Größe von 128 × 7 Bit.
Um Verzögerungen durch zwei aufeinander folgende Zugriffe auf die gleiche Look
up-Tabelle zu vermeiden, kann diese dupliziert werden und ein zusätzlicher Teiler
implementiert werden. Dadurch wird die Rechengeschwindigkeit erhöht.
Der Normalvektor wird durch das Tupel (OCT, ϕOCT, θOCT) bestimmt. Dieses Tupel
wird durch die Hardware sowohl abgebildet als auch zu einem späteren Zeitpunkt
nach (ϕN, θN) vergrößert. (ϕN, θN) ist eine sphärische Koordinate mit einer vertikalen
Polarachse. Danach können Bump-Mapping und Shading durchgeführt werden.
Bump-Maps können durch Offset-Vektoren B dargestellt werden. Diese werden zum
Oberflächen-Normal-Vektor hinzuaddiert, um diesen etwas abweichen zu lassen.
Alternativ können Bump-Maps durch einen sogenannten Displaced-Normal-Vektor D
dargestellt werden, der den ursprünglichen Oberflächen-Normal-Vektor ersetzt. Bei
der ersten Lösung werden nur zwei Komponenten der kartesischen Koordinaten für
den Bump-Vektor B gebraucht. Bei der zweiten Darstellung werden drei Koordinaten
des kartesischen Koordinatensystems benötigt bzw. zwei Winkel in einem sphäri
schen Koordinatensystem.
Da das neue Verfahren zum Bump-Mapping auf einer Winkelabweichung beruht,
benutzen wir die zweite Darstellung.
Die Bump-Abbildung wird mit (u,v)-Koordinaten indiziert; genauso wie die Textur-
Abbildung. Jeder Eintrag der Bump-Abbildung enthält ein Tupel (ϕD, θD) mit einem
horizontalen und vertikalen Winkel relativ zur horizontalen Polarachse u für den
Ablenk-Vektor D. Sie werden im (u,v,w)-Koordinatenraum aufgespannt.
In Objektkoordinaten bleiben die ursprüngliche und die Koordinatenachse fix im
Verhältnis zu einem beliebigen Objekt; unabhängig von der Position des Objektes
oder von Orientierungsänderungen im Raum. Die Oberflächen-Normalen werden in
ihrem lokalen Objektkoordinatensystem definiert, in dem auch die Objekt-Vertices
definiert sind, bevor das Objekt durch Rotation oder Translation in den World-Space
transformiert wird. Alle Berechnungen, die von Bump- oder Umgebungs-Abbildung
abhängig sind, werden im Objektkoordinatensystem durchgeführt.
Bei Blinn's Methode [3] muß der Offset-Vektor B wie der Oberflächen-Normal-Vektor
N skaliert werden. Bei unserem neuen Verfahren wird die Oberfläche durch Rotation
von N um einen Wert, der durch zwei Winkel beschrieben wird, variiert. Da Winkel
unabhängig von der Objektskalierung sind, bleibt die Ansicht einer Oberfläche mit
Bump-Abbildungen bei verschiedenen Objektgrößen erhalten. Aus diesem Grund ist
eine Skalierung des Displaced-Normal-Vektors D nicht notwendig.
Der Displaced-Normal-Vektor D kann als eine Rotation der u- und v-Koordinaten-
Achsen um den Oberflächen-Normal-Vektor N angesehen werden; siehe Fig. 4. N
wird durch einen horizontalen Winkel ϕN und einen vertikalen Winkel θN gekenn
zeichnet. Dadurch kann jeder beliebige Deflektions-Vektor D vom Bump-Abbildungs-
Raum in den Objektraum gedreht werden. Die mitrotierenden Bump-Abbildungs-
Koordinaten-Achsen w' und v' liegen so in der Ebene, die Oberflächen-Normal und
y-Achse des Objektkoordinatensystems aufspannt. u' steht senkrecht zu N, w' und y.
Anstelle der Addition des Störungs-Vektors B zu N kann auch der Normalenvektor N
auch durch den gedrehten Deflektions-Vektor Drot ersetzt werden.
Jede beliebige Rotation kann in eine Serie von drei hintereinander geschaltete
Rotation zerlegt werden, die um die Hauptachsen des Objektkoordinatensystems
erfolgen. Wenn z. B. ein Offset -θN zum Horizontalwinkel ϕD addiert wird, ist das
äquivalent zum Drehen der Bump-Abbildung um die Objekt x-Achse; Fig. 5.
Der erste Schritt beim Reflection-Mapping berechnet eine Umgebungs-Abbildung
voraus, die direkt mit der im Objektraum interpolierten Oberflächen-Normalen
indiziert werden kann.
Die sphärischen Umgebungs- oder Shading-Abbildungen werden mit den Textur-
Koordinaten (uR, vR) adressiert. Um Textur-Adressen zu generieren, indizieren wir
zuerst mit (ϕN, θN) in sieben eindimensionalen Tabellen, die die vorberechneten
Werte F1, F2, F3, G2, G3, H2 und H3 enthalten. Jede Tabelle überstreicht den Bereich
von 0 bis π/2 und benötigt deshalb 128 Einträge. Werte außerhalb dieses Bereiches
werden durch trigonometrische Symmetrie erhalten. Die daraus entstehende
(u,v)-Koordinate kann in einen Address-Generator übertragen werden. Darin wird sie wie
jede andere Standard-Textur-Koordinate behandelt, um die projizierten Pixel aus der
Shading- oder Umgebungs-Abbildung auszulesen und zu interpolieren.
Die neu entwickelte Bump- und Reflection-Mapping-Pipeline erhält eine
(u, v, w)-Textur-Koordinate, einen Normal-Vektor N interpoliert in kartesischen Objekt-
Koordinaten und einen RGB-Farbwert für das aktuelle Pixel, das durch den Rasterizer generiert wird. Eine interne Textur-Mapping-Pipeline berechnet eine physikali
sche Speicheradresse aus den Textur-Koordinaten. Diese Adresse wird dazu
benötigt, um Texturdaten oder einen Bump-Mapping-Deflection-Vektor D = (ϕD, θD)
aus dem Textur-Speicher zu erhalten.
Fig. 6 zeigt den Aufbau der neu entwickelten Bump- und Reflection-Shading-
Pipeline. Diese wird nachfolgend beschrieben.
Bevor die aktuelle Oberflächen-Normale N abgelenkt wird, werden deren Kompo
nenten (Nx, Ny, Nz) dem jeweiligen Oktanten zugeordnet und in Winkelkoordinaten
überführt. N = (ϕOct, θOct) werden zusammen mit der Oktanten-Information im Cache-
RAM abgelegt, wo N zu (ϕN, θN) expandiert und abgelenkt wird.
Für Reflection-Mapping und Surface-Shading werden aus sieben 128 × 10-Bit
Tabellen Werte zur Berechnung einer Speicheradresse gelesen. Die sphärische
Koordinate (ϕN, θN) des Normalvektors dient zur Indizierung dieser Tabellen. Diese
Adresse wird gebraucht, um das Texel der Umgebungs-Abbildung, oder spekulare-
und diffuse Shading-Koeffizienten aus dem Speicher zu lesen. Die Störung von N
durch den Deflektionsvektor D findet im Cache-RAM statt. Schließlich werden alle
Pixel, die mit Textur- und Umgebungs-Abbildungen versehen wurden, interpoliert und
mit den Shading-Koeffizienten multipliziert. Die Bump- und Reflection-Mapping
Pipeline wird in Fig. 6 dargestellt.
Das Cache RAM ist in Fig. 7 dargestellt. Es enthält die Spherical-to-spherical-Map,
die in 4 × 4 Blöcken organisiert ist. Jeder der 4 × 4 Blöcke enthält 16 Einträge der
Spherical-to-spherical-Look-Up-Tabelle. Jeder Vektor v(ϕ, θ) im ersten Oktanten
(x,y,z ≧ 0) der Sphäre wird nur einmal durch eine sphärische Koordinate im Cache-
RAM abgelegt. Die Daten aus der Spherical-to-spherical-Abbildung werden ins
Memory-Buffer-Register (MBR) übertragen. Der Zugriff auf das Cache-RAM läuft wie
folgt ab:
- 1. Um D zu rotieren, wird der Winkel Offset -θN zu ϕD addiert. Daraus erhält man (ϕ'D, θ'D): = (ϕD-θN θD) das in einen Look-Up-Tabllne-Index übergeführt wird. Adressen höherer Ordnung werden mit den Adressen der Daten Memory-Buffer- Register verglichen, um abzuschätzen, ob neue Daten übertragen werden müs sen.
- 2. Eine Look-Up to spherical-to-spherical map erzeugt (ϕ"D, θ"D). Der zweite Offset ϕN wird ϕ"D addiert: (ϕ"D+ ϕN, θ"D).
- 3. Das Cache RAM gibt den rotierten Normalvektor N' = (ϕN, θN): = (ϕ"D+ ϕN, θ"D) in den Generator für Umgebungs-Abbildungen für Shading und Reflection-Mapping zurück.
Die Bump- und Reflection-Mapping-Pipeline wurde implementiert und simuliert. Alle
Algorithmen sind so implementiert, daß möglichst wenig komplexe arithmetische
Logik benötigt wird.
Dadurch, daß Shading und Reflection-Mapping im Objektraum durchgeführt werden,
in dem die abgelenkten Oberflächen-Normalen direkt genutzt werden, ist eine
Rücktransformation in Weltkoordinaten nicht erforderlich. Zusätzlich sind die Berech
nungen im Objektraum invariant gegenüber der Objektrotation und der Position des
Objekts im Raum. Der Bedarf an neuer bzw. zusätzlicher Arithmetik ist für das neue
Verfahren sehr gering. Um die Koordinaten für Environment- und Shading-Map zu
berechnen, werden einige wenige zusätzliche Addierer und Multiplizierer gebraucht,
der Dividierer für die Transformation des Normalvektors in Polarkoordinaten kann
gemeinsam mit dem vorhandenen Dividierer zur perspektivischen Korrektur genutzt
werden. Reflection- und Shading-Maps können für eine gegebene Umgebung
vorausberechnet werden.
[1] K. Bennebroek, I. Ernst, H. Rüsseler, O. Willig, "Design Principles of Hardware
based Phong Shading and Bump Mapping", Proceedings of the 11th Eurograph
ics Workshop on Graphics Hardware, Seite 3-9, 1996.
[2] G. Bishop, D. M. Weimar, "Fast Phong Shading", Computer Graphics 20(4), Seite 103-106, 1986.
[3] J. F. Blinn, "Simulation of wrinkled surfaces", Computer Graphics 12(3), Seite 286-292, 1978.
[4] J. F. Blinn, M. E. Newell, "Texture and Reflection in Computer Generated Im ages", Computer Graphics 10 (3), 1976.
[5] M. Deering, "Geometry Compression", Computer Graphics 29(4), Seite 13-20, 1995.
[6] I. Ernst, D. Jackèl, H. Rüsseler, O. Wittig, "Hardware Supported Bump Mapping: A Step towards Higher Quality Real-Time Rendering", Proceedings of the 10th Eurographics Workshop on Graphics Hardware, Seite 63-70, 1995.
[7] N. Greene, "Environment Mapping and Other Applications of World Projections", IEEE Computer Graphics and Applications 6 (11), Seite 21-29, 1986.
[8] P. Haeberli, M. Segal, "Texture Mapping as a Fundamental Drawing Primitive", Proceedings of the 4th Eurographics Workshop on Rendering, 1993.
[9] D. Hearn, M. P. Baker, "Computer Graphics", Seite 409-420, Prentice-Hall, 1994.
[10] P. S. Heckbert, "Survey of Texture Mapping", IEEE Computer Graphics and Applications 6 (11), Seite 56-67, 1986.
[11] J. Hirche, "Texture- und Environment-Mapping Hardware", WSI/GRIS lau fende Studienarbeit, 1998.
[12] T. Ikedo, J. Ma, "An Advanced Graphics Chip with Bump-mapped Phong Shading", Proceedings of the IEEE Computer Graphics International Conference, Seite 156-165, 1997.
[13] D. Jackèl, H. Rüsseler, "A Real-Time Rendering System with Normal Vector Shading", Proceedings of the 9th Eurographics Workshop on Graphics Hardware, Seite 48-57, 1994.
[14] A. Kugler, "The Setup for Triangle Rasterization", Proceedings of the 11th Eurographics Workshop on Graphics Hardware, Seite 49-58, 1996.
[15] G. Knittel, A. Schilling, W. Straßer, "GRAMMY: High Performance Graphics Using Graphics Memories", High Performance Computing for Computer Graphics and Visualization, Springer, Berlin, 1995.
[16] T. McReynolds, "Programming with OpenGL: Advanced Rendering", SIGGRAPH '97 Course, section 8.3, 1997.
[17] S. Oberman, M. J. Flynn, "Design Issues in Floating-Point Division", Stanford Technical Report, CSL-TR-94-647, 1994.
[18] OpenGL Architecture Review Board, "OpenGL Reference Manual", Addison- Wesley, 1992.
[19] M. Peercy, J. Airey, B. Cabral, "Efficient Bump Mapping Hardware", Computer Graphics 31 (4), Seite 303-306, 1997.
[20] B. T. Phong, "Illumination for computer generated images", Communications of the ACM 18(6), Seite 311-317, 1975.
[21] C. Scherjon, "Design and Implementation of a Triangle Rendering Engine", WSI/GRIS Diploma Thesis, April 1997.
[22] A. Schilling, G. Knittel, W. Straßer, "TEXRAM - A Smart Memory for Textur ing", IEEE Computer Graphics and Applications 16(3), Seite 32-41, 1996.
[23] A. Schilling, Towards Real-Time Photorealistic Rendering: Challenges and Solutions, Proceedings of the 1997 SIGGRAPH/Eurographics Workshop on Graphics Hardware, Seite 7-15, 1997.
[24] D. Voorhies, J. Foran, "Reflection Vector Shading Hardware", Computer Graphics 28(4), Seite 163-166, 1994.
[25] D. Wong, M. J. Flynn, "Fast Division Using Accurate Quotient Approximations to Reduce the Number of Iterations", IEEE Transactions on Computers, 41 (8), Seite 981-995, 1992.
[2] G. Bishop, D. M. Weimar, "Fast Phong Shading", Computer Graphics 20(4), Seite 103-106, 1986.
[3] J. F. Blinn, "Simulation of wrinkled surfaces", Computer Graphics 12(3), Seite 286-292, 1978.
[4] J. F. Blinn, M. E. Newell, "Texture and Reflection in Computer Generated Im ages", Computer Graphics 10 (3), 1976.
[5] M. Deering, "Geometry Compression", Computer Graphics 29(4), Seite 13-20, 1995.
[6] I. Ernst, D. Jackèl, H. Rüsseler, O. Wittig, "Hardware Supported Bump Mapping: A Step towards Higher Quality Real-Time Rendering", Proceedings of the 10th Eurographics Workshop on Graphics Hardware, Seite 63-70, 1995.
[7] N. Greene, "Environment Mapping and Other Applications of World Projections", IEEE Computer Graphics and Applications 6 (11), Seite 21-29, 1986.
[8] P. Haeberli, M. Segal, "Texture Mapping as a Fundamental Drawing Primitive", Proceedings of the 4th Eurographics Workshop on Rendering, 1993.
[9] D. Hearn, M. P. Baker, "Computer Graphics", Seite 409-420, Prentice-Hall, 1994.
[10] P. S. Heckbert, "Survey of Texture Mapping", IEEE Computer Graphics and Applications 6 (11), Seite 56-67, 1986.
[11] J. Hirche, "Texture- und Environment-Mapping Hardware", WSI/GRIS lau fende Studienarbeit, 1998.
[12] T. Ikedo, J. Ma, "An Advanced Graphics Chip with Bump-mapped Phong Shading", Proceedings of the IEEE Computer Graphics International Conference, Seite 156-165, 1997.
[13] D. Jackèl, H. Rüsseler, "A Real-Time Rendering System with Normal Vector Shading", Proceedings of the 9th Eurographics Workshop on Graphics Hardware, Seite 48-57, 1994.
[14] A. Kugler, "The Setup for Triangle Rasterization", Proceedings of the 11th Eurographics Workshop on Graphics Hardware, Seite 49-58, 1996.
[15] G. Knittel, A. Schilling, W. Straßer, "GRAMMY: High Performance Graphics Using Graphics Memories", High Performance Computing for Computer Graphics and Visualization, Springer, Berlin, 1995.
[16] T. McReynolds, "Programming with OpenGL: Advanced Rendering", SIGGRAPH '97 Course, section 8.3, 1997.
[17] S. Oberman, M. J. Flynn, "Design Issues in Floating-Point Division", Stanford Technical Report, CSL-TR-94-647, 1994.
[18] OpenGL Architecture Review Board, "OpenGL Reference Manual", Addison- Wesley, 1992.
[19] M. Peercy, J. Airey, B. Cabral, "Efficient Bump Mapping Hardware", Computer Graphics 31 (4), Seite 303-306, 1997.
[20] B. T. Phong, "Illumination for computer generated images", Communications of the ACM 18(6), Seite 311-317, 1975.
[21] C. Scherjon, "Design and Implementation of a Triangle Rendering Engine", WSI/GRIS Diploma Thesis, April 1997.
[22] A. Schilling, G. Knittel, W. Straßer, "TEXRAM - A Smart Memory for Textur ing", IEEE Computer Graphics and Applications 16(3), Seite 32-41, 1996.
[23] A. Schilling, Towards Real-Time Photorealistic Rendering: Challenges and Solutions, Proceedings of the 1997 SIGGRAPH/Eurographics Workshop on Graphics Hardware, Seite 7-15, 1997.
[24] D. Voorhies, J. Foran, "Reflection Vector Shading Hardware", Computer Graphics 28(4), Seite 163-166, 1994.
[25] D. Wong, M. J. Flynn, "Fast Division Using Accurate Quotient Approximations to Reduce the Number of Iterations", IEEE Transactions on Computers, 41 (8), Seite 981-995, 1992.
Claims (5)
1. Verfahren für die effiziente und schnelle Hardwareunterstützung in der Polygon
Renderingpipeline - von Bump- und Reflection-Shading, dadurch gekennzeich
net, daß Bump-Mapping durch Verwendung von Polarkoordinaten im Objekt
koordinatensystem, Zugriff auf eine Tabelle die sogenannte Spherical-to-
Spherical-Map erfolgt und Reflection-Shading durch Zugriff auf Koordinaten
generierungstabellen, die durch den Normalvektor indiziert werden, zur Berech
nung des reflektierten Strahls erfolgt.
2. Bump- und Reflection-Mapping nach Anspruch 1, dadurch gekennzeichnet, daß
auf die Koordinatengenerierungstabellen für jeden generierten Bildpunkt (Pixel)
parallel zugegriffen wird.
3. Bump- und Reflection-Mapping nach Anspruch 1 oder 2 dadurch gekennzeich
net, daß Bump- und Reflection-Shading im Objektkoordinatensystem durch
geführt werden, das Shading ist blickpunktabhängig durch den Einsatz von
Koordinatengenerierungstabellen. Für die Veränderung des Normalvektors,
werden komplizierte Vektornormierung und -arithmetik durch wenige Tabellen,
zwei Addierer und einem Cache-RAM ersetzt.
4. Bump- und Reflection-Mapping nach Anspruch 1 bis 3 wurde als Pipeline mit
Hilfe von Addiereren, Multiplizieren, einigen Tabellen integriert.
5. Bump- und Reflection-Mapping nach Anspruch 1 bis 4 dadurch gekennzeichnet,
daß die Koordinatengenerierungstabellen für Shading und Reflection-Map vor
berechnet sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP98116062 | 1998-08-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19940468A1 true DE19940468A1 (de) | 2000-03-09 |
Family
ID=8232515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1999140468 Withdrawn DE19940468A1 (de) | 1998-08-26 | 1999-08-26 | Verfahren und Hardware für Bump- und Reflection-Shading |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE19940468A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1413988A1 (de) * | 2001-07-27 | 2004-04-28 | Sony Computer Entertainment Inc. | Malverfahren |
-
1999
- 1999-08-26 DE DE1999140468 patent/DE19940468A1/de not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1413988A1 (de) * | 2001-07-27 | 2004-04-28 | Sony Computer Entertainment Inc. | Malverfahren |
EP1413988A4 (de) * | 2001-07-27 | 2009-12-09 | Sony Computer Entertainment Inc | Malverfahren |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bishop et al. | Fast phong shading | |
US7532213B2 (en) | Bicubic surface real time tesselation unit | |
Rottger et al. | Hardware-accelerated volume and isosurface rendering based on cell-projection | |
DE69610341T2 (de) | 3-D-Bildertexturierung und -schattierung | |
Catmull | Computer display of curved surfaces | |
Kersting et al. | Interactive 3D visualization of vector data in GIS | |
US7239319B2 (en) | Rendering outline fonts | |
Sigg et al. | GPU-based ray-casting of quadratic surfaces. | |
DE112007002991B4 (de) | Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling | |
US6184891B1 (en) | Fog simulation for partially transparent objects | |
Theoharis et al. | Graphics and visualization: principles & algorithms | |
US7170527B2 (en) | Interactive horizon mapping | |
DE69917799T2 (de) | Texturierungssysteme zur verwendung in drei-dimensionalen abbildungssystemen | |
Hanson et al. | Interactive visualization methods for four dimensions | |
Boubekeur et al. | A flexible kernel for adaptive mesh refinement on GPU | |
DE102004007835A1 (de) | Vorrichtung zur Darstellung von dynamischen komplexen Szenen | |
Schneider et al. | Real-time rendering of complex vector data on 3d terrain models | |
Rockwood | A generalized scanning technique for display of parametrically defined surfaces | |
Vyatkin et al. | Voxel Volumes volume-oriented visualization system | |
Pajarola et al. | DMesh: Fast depth-image meshing and warping | |
DE69808932T2 (de) | Schattierung von dreidimensionalen computergraphiken | |
CN116385619B (zh) | 对象模型渲染方法、装置、计算机设备和存储介质 | |
Xue et al. | Efficient splatting using modern graphics hardware | |
Hormann et al. | A quadrilateral rendering primitive | |
Emst et al. | Hardware supported bump mapping: A step towards ingber quality real-time rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8127 | New person/name/address of the applicant |
Owner name: KUGLER, ANDREAS, DIPL.-ING., 72070 TUEBINGEN, DE |
|
8139 | Disposal/non-payment of the annual fee |