DE3825539A1 - Einrichtung zum schattieren von bildern auf einem display - Google Patents
Einrichtung zum schattieren von bildern auf einem displayInfo
- Publication number
- DE3825539A1 DE3825539A1 DE19883825539 DE3825539A DE3825539A1 DE 3825539 A1 DE3825539 A1 DE 3825539A1 DE 19883825539 DE19883825539 DE 19883825539 DE 3825539 A DE3825539 A DE 3825539A DE 3825539 A1 DE3825539 A1 DE 3825539A1
- Authority
- DE
- Germany
- Prior art keywords
- function
- implementing
- color
- shading
- reflection
- 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.)
- Granted
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/80—Shading
- G06T15/83—Phong shading
-
- 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
-
- 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/80—Shading
- G06T15/87—Gouraud shading
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Description
Bezuggenommen wird auf die deutschen Patentanmeldungen P 38 15 390.4,
betreffend Anordnung und Verfahren zur adaptiven Vorwärtsdifferenzbildung
bei der Erzeugung von Kurven und Flächen,
und P 38 15 361.0, betreffend Einrichtung und Verfahren
zum Erzeugen von Vektoren auf einem Displaygerät. Die Inhalte
der vorgenannten rangälteren deutschen Patentanmeldungen werden
durch Bezugnahme in die vorliegende Offenbarung einbezogen.
Die vorliegende Erfindung bezieht sich auf ein Verfahren und
eine Einrichtung zur Erzeugung von Bildern auf einer Kathodenstrahlröhre
("CRT") oder einem anderen Displaygerät. Insbesondere
befaßt sich die Erfindung mit einem Verfahren und einer
Einrichtung zur Farbwiedergabe (painting) von Kurven, gekrümmten
Oberflächen, Vektoren, Polygonen oder Objekten auf einer
Kathodenstrahlröhre oder einem anderen Bildschirm.
Bei vielen Computersystemen ist es üblich, einem Benutzer
Informationen durch digitale Bilder darzustellen und zu übertragen.
Diese Bilder können viele Formen annehmen, beispielsweise
alphanumerische Zeichen, kartesische Graphiken und andere
Bilddarstellungen, Bei vielen Anwendungen werden die digitalen
Bilder auf einem Display, z. B. einem Rasterabtast-Videomonitor,
einem Drucker o.dgl. an den Benutzer übermittelt.
Typischerweise werden die wiederzugebenden Bilder in digitaler
Form gespeichert, verarbeitet und danach zur Anzeige gebracht.
Bei der Wiedergabe eines Bildes auf einer Kathodenstrahlröhre
müssen die Koordinaten für jedes Pixel eines anzuzeigenden
Bildes ebenso berechnet werden wie die Werte beispielsweise
für die Farbe, Transparenz, Bildtiefensimulation, Schleier-
und Spiegelungs- (specular) und Diffusionsfaktoren für jedes
derartige Pixel. Die Wiedergabe eines Pixels derart, daß es
eine Charakteristik eines wiederzugebenden Objekts (d. h. eines
dreidimensionalen Objekts) unter Berücksichtigung der Tiefe,
Nähe zum Betrachter, Lichtreflexion usw. darstellt, wird
"Schattierung" ("shading") des Pixels genannt.
Einige Schattierungsmethoden werden zur Erzeugung glatt bzw.
weich schattierter Bilder von Flächen verwendet, die durch
dreidimensionale parametrische Flecken oder Polygone angenähert
sind. Eine bekannte Methode ist die Phong-Schattierung,
die sich als günstige Schattierungsmethode erwiesen hat, da
sie eine ausreichend realistische Wiedergabe des gewünschten
Bildes bei mäßigen Rechenkosten ermöglicht. Die meisten dreidimensionalen,
computergestützten Konstruktionsmethoden geben
der interaktiven Darstellung höchste Priorität und machen
daher häufig von dem durch die Phong-Schattierung zur Verfügung
gestellten Realismus Gebrauch. Eine andere bekannte
Schattierungstechnik wird als Gouraud-Schattierung bezeichnet
und führt eine lineare Interpolation der Farbe über die wiederzugebenden
individuellen Polygone durch. Diese Methode ist
jedoch weniger genau als die Phong-Schattierungs-Methode.
Polygonapproximationen von gekrümmten Flächen werden aus Darstellungsgründen
benutzt, da die Hochgeschwindigkeits-Graphikhardware
zum überwiegenden Teil für die rasche Wiedergabe von
Polygonen gebaut wurde. Ein typischer Fleck (patch) kann beispielsweise
100 oder mehr Polygone zur Erzielung einer vernünftig
genauen Approximation des gewünschten Flecks erforderlich
machen. Viele konstruktive Anwendungen würden beträchtlich
erleichtert, wenn eine übergangslose, glatte Hochgeschwindigkeitswiedergabe
gekrümmter Flächen ohne großen Aufwand
realisiert werden könnte.
Es ist daher Aufgabe der vorliegenden Erfindung, ein Verfahren
und eine Einrichtung zur parametrischen Fleckwiedergabe zur
Verfügung zu stellen, die mit relativ einfacher Hardware zur
direkten Phong-Schattierung ohne Verlangsamung der Pixel-Wiedergabefrequenz
auskommen. Wiedergegeben werden sollen auch
Bilder mit gleichmäßigen, doppelt veränderlichen (bivariate)
Flächenflecken sowie ungleichmäßige rationale B-Splineflächen.
Zu diesem Zweck werden bei der Erfindung bi-kubische Funktionen,
welche die Schattierungsparameter annähern, abgeleitet
und ausgewertet durch adaptive Vorwärtsdifferenzbildungsschaltungen
(AFDU), um eine Farbschattierung (shaded color) an
jedem Pixel entlang einer parametrischen Kurve zu erzeugen.
(Adaptive Vorwärtsdifferenzbildungsschaltungen (AFDU) werden
weiter unten erläutert.) Die Erfindung schafft eine Einrichtung
zum genauen und raschen Schattieren von Vektoren und
Polygonen bei einer wesentlich höheren Geschwindigkeit bzw.
Frequenz und ohne beachtlichen Qualitätsverlust, als dies mit
herkömmlichen Verfahren möglich war. (Zur Erleichterung des
Verständnisses der Phong-Schattierung und Schattierung von
Polygonen, Vektoren, Kurven und anderen Objekten wird verwiesen
auf: Bui Tuong Phong, Illumination For Computer-Generated
Images, UTEC-CS c-73-129, Juli 1973; Tom Duff, "Smoothly
Shaded Renderings Of Polyhedral Objects On Raster Displays",
Computer Graphics, Band 13, Nr. 2, August 1979; Steven A.
Coon, "Surfaces For Computer-Aided Design of Space Forms",
Project MAC, Massachusetts Institute Of Technology, MAC-TR-41,
Juni 1967; Bishop und Weimer, "Fast Phong Shading", Computer
Graphics, Band 20, Nr, 4, August 1986; M. Shantz und S-L Lien,
"Shading Bicubic Patches", Computer Graphics, Band 21, Nr. 4,
Juli 1987; Sheue-Ling Lien, Michael Shantz und Vaughan Pratt,
"Adaptive Forward Differencing For Rendering Curves And
Surfaces", Computer Graphics, Band 21, July 1987.)
Die erfindungsgemäße Einrichtung zum Schattieren (shading) von
Vektoren und Kurven auf einem Displaygerät enthält Mittel zum
Implementieren einer ersten Funktion, wobei die erste Funktion
durch den folgenden Ausdruck beschrieben ist:
Tc [PB₁] + (1 - T c) X,
wobei Tc gleich einem Transparenzfaktor ist; PB₁ gleich
einem ersten Pixelpuffer von Daten ist, die aus einem Rahmenpuffer
von jeder Pixeladresse entlang eines Objekts, beispielsweise
einer Kurve zurückgeführt sind, und wobei X eine
zweite Funktion darstellt. Die Einrichtung zur Schattierung
von Vektoren und Kurven weist außerdem ein Mittel zum Implementieren
der zweiten Funktion auf, wobei die zweite Funktion
dargestellt ist durch
Be [PB₂] + (1 - Be) Y,
wobei Be = ein modifizierter Bresenham-Fehlerfaktor, der von
der erfindungsgemäßen Einrichtung berechnet wird, PB₂ = ein
zweiter Pixelpuffer mit Daten, die aus dem Rahmenpuffer zurückgeführt
sind, und Y eine dritte Funktion darstellt. Die
angegebene Einrichtung weist auch ein Mittel zum Implementieren
einer dritten Funktion auf, wobei die dritte Funktion
dargestellt ist durch
Z [Cd] + (1 - Z) [PM],
wobei Z den Tiefenbereich oder die Distanz des Objekts vom
Betrachter, Cd einen "Schleier" oder eine Hintergrundfarbe und
PM die intrinsische Kurvenfarbe aus einem Musterspeicher darstellen.
Schließlich weist die Einrichtung zum Schattieren von
Vektoren und Kurven ein Mittel zum Kombinieren der o. g. Implementierung
der ersten, zweiten und dritten Funktionen zur
Gewinnung der Implementierung von
Tc(PB₁) + (1 - Tc) [Be (PB₂) + (1 - Be) [Z(Cd) + 1 - Z (PM)]]
wodurch die Schattierung der Kurve und des Vektors erzeugt
wird.
Die Erfindung stellt ferner eine Einrichtung zum Schattieren
von Polygonen zur Verfügung, die ein Mittel zum Implementieren
einer ersten Funktion aufweist, letztere dargestellt durch
Tc [Pb] + (1 - Tc) X,
wobei Tc = ein Transparentfaktor, PB = Pixelpuffer von aus dem
Rahmenpuffer zurückgeführten Daten und X eine zweite Funktion
darstellt. Die Einrichtung zum Schattieren von Polygonen weist
außerdem ein Mittel zum Implementieren der zweiten Funktion
auf, dargestellt durch
Z [Cd] + (1 - Z) [Diffusion (IM) + Reflexion (Le)],
wobei Cd die Bildtiefenfarbe oder die Hintergrundfarbe, Z die
Tiefe und "Diffusion" und "Reflexion" dritte und vierte Funktionen
darstellen.
Ferner ist erfindungsgemäß ein Mittel zum Implementieren der
o. g. dritten (Diffusions-)Funktion vorgesehen, wobei die dritte
Funktion dargestellt ist durch
Ka + 1/√ [α NL rt + (1 - α ) NL lt],
wobei N · N den Oberflächen-Normalvektor darstellt; N · N ist das
Punktprodukt von N mit sich selbst, NL rt ist das Punktprodukt
des Oberflächennormals am rechten Rand des Polygons und
des Einheitsvektors L auf eine Lichtquelle; NL lt ist das
Punktprodukt von N und L am linken Rand des Polygons; Ka
stellt den Umgebungsreflexionskoeffizienten dar, und Lc ist
eine Lichtquellenfarbe. Alpha ( ) nimmt von 0 bis 1 zwischen
den linken und rechten Rändern des Polygons zu.
Die Einrichtung zum Schattieren von Polygonen weist außerdem
ein Mittel zum Implementieren der o. g. vierten Reflexions-
bzw. (Spiegel)-Funktion (specular function) auf. Diese vierte
Funktion ist dargestellt durch
1/ √ [α NH rt + (1 - α ) NH lt] Oe ,
wobei NH rt das Punktprodukt des Oberflächennormals N am
rechten Rand des Polygons mal dem Einheitsvektor H in Richtung
des maximal Schlaglichts (highlight), NH lt das Punktprodukt
des Normalvektors N am linken Rand des Polygons mal H und Oe
eine Potenz ist, zu der der Klammerausdruck erhoben wird, und
wobei α zwischen den linken und rechten Rändern des Polygons
von 0 bis 1 zunimmt.
Schließlich weist die erfindungsgemäße Einrichtung zum Schattieren
von Polygonen ein Mittel zum Kombinieren der implementierten
ersten, zweiten, dritten und vierten Funktionen in der
folgenden Form auf:
Tc [PB] + (1 - Tc) [z(Cd) + (1 - z) [Diffusion (IM) + Reflexion
(Lc)]],
wobei IM die Objektfarbe von einem konstanten Farbwert oder
ein Farbwert von einem adressierten Bildspeicherfeld aus Farbwerten
und Lc die Farbe der Lichtquelle ist.
Die Erfindung weist ein Mittel zum Schattieren parametrischer
Flecken (patches) durch Schattieren einer Folge von eng benachbarten
Oberflächenkurven auf. Die Abstandsberechnung wird
unten beschrieben. Vorgesehen ist ein Mittel zum Implementieren
der ersten Funktion, die dargestellt ist durch
Tc [PB] + (1 - Tc) X.
Die Einrichtung zum Schattieren von Flecken weist auch ein
Mittel zum Implementieren der zweiten Funktion X auf, die
enthält:
Z [Cd] + (1 - Z) Y,
wobei Cd die Bildtiefenfarbe, Z die Tiefe und "Diffusion" und
"Reflexion" ("specular") die fünften und sechsten Funktionen
sind.
Die Einrichtung weist ein Mittel zum Implementieren einer
fünften (Diffusions-) und sechsten (Reflexions-)Funktion auf.
Die fünfte Funktion enthält:
Ka + N · L/√,
wobei N der Oberflächennormalvektor ist, der entlang einer
Oberflächenkurve als parametrische Funktion variiert. Die
sechste Funktion (Reflexion) ist dargestellt durch:
(N · H/ √) Oe .
Schließlich weist die Einrichtung zum Schattieren parametrischer
Flecken ein Mittel zum Kombinieren der implementierten
ersten, zweiten, fünften und sechsten Funktionen zu dem folgenden
Ausdruck auf:
Tc [PB] + (1 - Tc) [Z (Cd) + (1 - Z) [(Ka + N · L/ √) (IM)
+ (N · H/ √) Oe (Lc)]]
wodurch die Oberflächenkurve des wiederzugebenden parametrischen
Flecken schattiert wird.
Im folgenden wird die Erfindung anhand von in der Zeichnung
schematisch dargestellten Ausführungsbeispielen näher erläutert.
In der Zeichnung zeigen:
Fig. 1 ein Blockschaltbild der Anordnung zum Schattieren
von Pixeln gemäß einem Ausführungsbeispiel
der Erfindung;
Fig. 2 ein detaillierteres Blockdiagramm der Anordnung
gemäß Fig. 1;
Fig. 3 eine Einzelheit der in Fig. 2 gezeigten Schaltung;
und
Fig. 4 ein alternatives Ausführungsbeispiel der Schaltung
gemäß Fig. 2.
Erfindungsgemäß werden eine Einrichtung und ein Verfahren zur
bevorzugten Verwendung in einem Computersystem für die graphische
Bildwiedergabe angegeben. Obwohl die Erfindung unter
Bezugnahme auf spezielle Schaltungen, Blockschaltbilder, Signale,
Algorithmen usw. beschrieben wird, ist es für den Fachmann
klar, daß derartige Einzelheiten nur zur Erleichterung
des Verständnisses für die vorliegende Erfindung beschrieben
werden. Es ist klar, daß die Erfindung auch ohne diese besonderen
Einzelheiten realisiert werden kann. In anderen Fällen
sind bekannte Schaltungen nur als Blockschaltbilder dargestellt,
um die Erfindung nicht mit überflüssigen Einzelheiten
zu belasten.
In Fig. 1 ist ein funktionelles Gesamtblockdiagramm der Erfindung
gezeigt. Um Bilder auf einem CRT-Display oder einer anderen
Bildwiedergabeeinrichtung zu definieren, müssen Daten mit
hoher Geschwindigkeit bearbeitet werden, um den Pixelort und
die -farbe auf einem CRT-Display auszuwählen, welche die Kurve,
gekrümmte Fläche, den Vektor oder das wiederzugebende Bild
definieren. Es ist im Stande der Technik bekannt, daß der Ort
jedes auf einer CRT wiederzugebenden Punktes häufig durch
Digitalwerte dargestellt ist, die in einem Speicher gespeichert
sind und x, y, z und w homogenen Koordinaten entsprechen.
Ein Geometrieabschnitt 7 enthält die X-, Y-, Z- und W-AFDU-Einheiten
14, die in Fig. 1 der o. g. älteren Anmeldungen gezeigt
und beschrieben sind. Der Geometrieabschnitt 7 berechnet homogene
x-, y-, w- und z-Koordinaten eines Objektes, dessen Bild
wiederzugeben ist. Der Geometrieabschnitt 7 enthält auch eine
Adressenpipeline 16 mit der Pixel-Filterschaltung 30, gezeigt
in den Fig. 1 und 7 der zugehörigen o. g. älteren Anmeldungen,
die einen modifizierten Bresenham-Algorithmus-Fehlerausdruck
als Anti-Aliasierung-Wichtungsfunktion ausgibt. (Die
oben erwähnte modifizierte Version des Bresenham-Algorithmus
findet verbreitete Verwendung zum schrittweisen Vorrücken
entlang des Randes eines Polygons in Abtastzeilenreihenfolge
und in Anti-Aliasierung-Vektortechniken (siehe Akira Fujimoto
und Ko Iwata, "Jag Free Images on a Raster CRT", Computer
Graphics Theory and Applications, herausgegeben von Tosiyasu
Kunii, Springer Verlag, 1983). Die Wichtungsfunktion wird zu
einer Schattierungspipeline 12 eines Farbgebungsabschnitts 150
ausgegeben. Der Farbgebungsabschnitt 150 dient der Farbgebung
von Pixeln auf einer CRT 22, wie weiter unten beschrieben
werden wird. Die AFDU's 14 geben momentan x-, y-, w- und z-Koordinaten
an die Adreßpipeline 16 aus. Der Pixelfilter 30 gibt
die Bogenlänge und eine Anti-Aliasierung-Wichtungsfunktion Ce
und außerdem die z-Koordinate, die Bogenlänge und die Anti-
Aliasierung-Wichtungsfunktion an eine Adreßpipeline 12 des
Farbgebungsabschnitts 150 aus, wie weiter unten beschrieben
werden wird.
Die Adreßpipeline 16 gibt die x-, y-, w- und z-Koordinaten an
einen Rahmenpuffer 20 aus, um ein spezielles Pixel auf einer
CRT zu definieren. Die Momentankoordinate z, welche in die
Schattierungspipeline 12 eingegeben wird, dient dort zur Bildtiefensimulation.
Hierbei handelt es sich um eine bekannte
Technik zum Ausblenden von wiederzugebenden Objekten derart,
daß sie weiter entfernt (in der z-(Tiefen-)Richtung) vom Betrachter
des Bildes erscheinen. (Foley & Van Damm, Interactive
Computer Graphics, Addison Wesley, 1982.) Die an die Schattierungspipeline
12 ausgegebene Bogenlänge dient zum inkrementellen
Weiterschalten eines Musterspeichers zum Zwecke der Abbildung
eines Musters entlang einer Kurve, während der Anti-Aliasierung-
Wichtungsfaktor zum Mischen von Pixeln entlang des
Randes oder der Silhouette eines wiederzugebenden Objektes mit
dem Hintergrund zwecks Verringerung von Bildzacken auf einer
Rasteranzeige verwendet wird.
Der Farbgebungsabschnitt 150 enthält mehrere zusätzliche AFDU-
Schaltungen 10 und die oben bereits erwähnte Schattierungspipeline
12. Farbgebungsabschnitt 150 erzeugt und gibt rote,
grüne und blaue Darstellungen der an jedem Pixel wiederzugebenden
Farbe aus und führt Vektorschattierung, Kurvenschattierung,
Polygonschattierung sowie Fleckschattierung (d. h. Schattierung
von bi-kubischen Flecken) aus. Die Operation und Darstellung
jeder dieser Funktionen werden weiter unten genauer
beschrieben.
Die AFDU-Schaltungen 10 dienen als Funktionsgeneratoren zur
Erzeugung parametrischer Eingangssignale für die Schattierungspipeline
12. Insbesondere dienen die AFDU's 10 dem Zweck
der Berechnung parametrischer kubischer Approximationen für
die Normalvektor-Punktprodukte in der bekannten Phong-Schattierungsgleichung
sowie der Berechnung linearer Interpolationsfunktionen
und Adressen in den Bildspeicher zur Abbildung
von Bildern auf Flecken. Die Schattierungspipeline 12 weist
drei Kanäle auf, jeweils einer für Rot-, Grün- und Blauverarbeitung.
Jeder Kanal enthält eine Folge von in Serie geschalteten
arithmetischen Einheiten, welche Farbvektor-Arithmetikoperationen
ausführen. Jede arithmetische Einheit in der
Schattierungspipeline 12 führt eine von mehreren arithmetischen
Funktionen aus, welche weiter unten beschrieben werden
und von dem aus der CPU 9 empfangenen Befehl abhängig sind.
Die Schattierungspipeline 12 berechnet und gibt an den Rahmenpuffer
20 Farben aus, welche sowohl Diffusions- als auch Spiegelungs-
bzw. Reflexionsbeiträge haben, und außerdem addiert
sie Farbbildtiefensimulation, Anti-Aliasierung, optionelle
Bewegungsunschärfe und Transparenz zu jedem Farbpixel. Die
Pixel-Farbwerte werden aus der Schattierungspipeline 12 zum
Rahmenpuffer 20 zur Anzeige an der CRT 22 ausgegeben (d. h.
entsprechend der Definition durch x-, y-, z- und w-Koordinaten).
Die Schattierungspipeline 12 kann auch ausgangsseitig auf
Pixelpuffer in der Schattierungspipeline 12 gerichtet sein, so
daß sich eine rekursive Rechenfähigkeit ergibt. Die an jeder
Pixeladresse berechneten Werte werden sequentiell in einen
Pixelpufferspeicher geschrieben. Wie weiter unten erläutert
werden wird, kann die gleiche Kurve wieder durch AFDU's 14 und
10 ausgeführt und mit den zuvor berechneten und im Pixelpuffer
für zusätzliche Schattierungsberechnungen gespeicherten Werten
kombiniert werden.
Die Adreßpipeline 16 kann auch in einem Rahmenpuffer-Lesemodus
wirksam sein, wodurch die von der Adreßpipeline 16 erzeugten
Adressen zum Lesen von Pixelwerten aus dem Rahmenpuffer 20 und
zum Ausgeben dieser Werte an sequentielle Stellen in der
Schattierungspipeline 12 verwendet werden, so daß diese Werte
in nachfolgenden Operationen, z. B. zur Anti-Aliasierung, zur
Transparenz- und zu Bewegungsunschärfeberechnungen herangezogen
werden können.
Bei der Wiedergabe von Vektoren enthalten Vektorattribute
Zeilenbreite, Anti-Aliasierung, Farbtiefensimulation und
Transparenz. Zeilenbreite und Anti-Aliasierung werden aus dem
Geometrieabschnitt 7 abgeleitet, wie zuvor beschrieben und
nachfolgend noch genauer erläutert werden wird. Die Farbtiefensimulation
(color depth cueing) und Transparenz werden
durch Implementierung der unten angegebenen Koeffizienten
entsprechend der Berechnung gemäß Formel (1) unten abgeleitet.
Tc = Transparenzkoeffizient reicht von 0 (undurchsichtig) bis 1 (klar) und enthält typischerweise 12 fraktionelle Bits. Tc ist konstant für ein vorgegebenes Objekt.
PB = Pixelpufferspeicher, adressiert durch von den AFDU's 10 erzeugte Werte. < R, G, B <, Bereich 0 bis 1, 12 fraktionelle Bits (typische Ausführung).
Be = modifizierter Bresenham-Fehler (verwendet als Anti-Aliasierung- Wichtungsfunktion), Bereich von 0 bis 1, typischerweise mit 12 fraktionellen Bits. B wird von den AFDU's 14 für jedes Pixel entlang des Vektors erzeugt.
IM = Bildspeicher, IM
PM = Musterspeicher, PM
Z = Tiefenwert aus ZAFD, Bereich 0 bis 1, typischerweise 12 fraktionelle Bits.
Ca = Farbkonstante für Anti-Aliasierung-Hintergrund, <R, G, B<, 8 Bits
Tc = Transparenzkoeffizient reicht von 0 (undurchsichtig) bis 1 (klar) und enthält typischerweise 12 fraktionelle Bits. Tc ist konstant für ein vorgegebenes Objekt.
PB = Pixelpufferspeicher, adressiert durch von den AFDU's 10 erzeugte Werte. < R, G, B <, Bereich 0 bis 1, 12 fraktionelle Bits (typische Ausführung).
Be = modifizierter Bresenham-Fehler (verwendet als Anti-Aliasierung- Wichtungsfunktion), Bereich von 0 bis 1, typischerweise mit 12 fraktionellen Bits. B wird von den AFDU's 14 für jedes Pixel entlang des Vektors erzeugt.
IM = Bildspeicher, IM
PM = Musterspeicher, PM
Z = Tiefenwert aus ZAFD, Bereich 0 bis 1, typischerweise 12 fraktionelle Bits.
Ca = Farbkonstante für Anti-Aliasierung-Hintergrund, <R, G, B<, 8 Bits
Die obige Gleichung kann dadurch vereinfacht werden, daß man
Tc = 0 für undurchsichtige Objekte setzt, daß man eine konstante
Farbe Ca für PB im Anti-Aliasierung-Ausdruck substituiert,
daß man Be = 0 für Arbeiten ohne Anti-Aliasierung einstellt,
daß man eine konstante Farbe Oc für IM substituiert
oder daß man Z = 0 einstellt, wenn keine Bildtiefensimulation
vorgesehen ist. (Zu beachten ist bezüglich eines Anti-
Aliased-Vektor, daß dessen beiden Seiten unabhängig als zwei
separate Vektoren Seite mal Seite gezeichnet werden können.)
Die Implementierung von Gleichung (1) wird weiter unten unter
Bezugnahme auf die Schaltung gemäß Fig. 2 beschrieben.
Die Kurven sind Vektoren sehr ähnlich in ihren Schattierungsattributen.
(Fundstelle Foley und Van Damm, Fundamentals of
Interactive Computer Graphics, Addison, Wesley, 1982.) Der
Hauptunterschied besteht darin, daß ein Anti-Aliasierung-Koeffizient
Ce das Be der Gleichung (1) ersetzt. Demgemäß wird die
Gleichung zum Wiedergeben einer Kurve erfüllt durch Implementierung
der nachfolgenden Gleichung (2).
Gleichung (2) bietet die gleichen Vereinfachungen wie für
Vektoren. Der Koeffizient Ce wird von dem Pixelfilter 30 in
der Adreßpipeline 16 für jedes Pixel entlang der Kurve berechnet.
Diese Schaltung ist Teil eines Pixelfilters 30 und wird
weiter unten genauer beschrieben.
Die Schattierungsattribute, die sich auf Polygone anwenden
lassen, umfassen Hohl- und Volldarstellung, Gouraud- oder
Phong-Schattierungsstil, Bildeinteilung, Anti-Aliasierung,
Bildtiefensimulation und Transparenz. Die folgende Gleichung
gibt die Schattierungsgleichung für eine Linie zwischen zwei
Punkten (d. h. einer Abtastzeile) eines Polygons. Die Polygonschattierung
wird durch Implementierung der unten in Gleichung
(3) und (4) aufgeführten Koeffizienten durchgeführt.
NL = nicht-normalisiertes Punktprodukt N · L am linken oder rechten Rand einer Abtastlinie bzw. -zeile eines zu schattierenden Polygons, wobei die Normalen an den Scheiteln derart normalisiert werden, daß eine lineare Interpolation NL stets in den Bereich von 0 bis 1, niemals oberhalb von 1, fallenläßt. NL hat bei dem bevorzugten Ausführungsbeispiel 12 fraktionelle Bits, obwohl mehr oder weniger Bits verwendet werden können.
NH = nicht-normalisiertes Punktprodukt N · H am linken oder rechten Rand der Abtastzeile oder -linie des Polygons (typischerweise in demselben Bereich und mit derselben Bit-Anzahl wie NL).
NN = die quadrierte Länge des Oberflächennormalvektors, d. h. das Punktprodukt von N und N. Dieser Wert liegt bei dem beschriebenen Ausführungsbeispiel im Bereich von 0,5 bis 1 und erfordert 12 fraktionelle Bits.
α = ein von einer AFDU-Schaltung erzeugter Wert, der von 0 bis 1 zwischen den linken und rechten Rändern der Abtastlinie bzw. -zeile eines zu schattierenden Polygons linear zunimmt und typischerweise 12 fraktionelle Bits enthält. (Zu beachten: die AFDU- Schaltung ist schaltungsmäßig identisch mit der X-AFDU-Schaltung in Fig. 3 der eingangs genannten älteren Anmeldungen aufgebaut.)
NL = nicht-normalisiertes Punktprodukt N · L am linken oder rechten Rand einer Abtastlinie bzw. -zeile eines zu schattierenden Polygons, wobei die Normalen an den Scheiteln derart normalisiert werden, daß eine lineare Interpolation NL stets in den Bereich von 0 bis 1, niemals oberhalb von 1, fallenläßt. NL hat bei dem bevorzugten Ausführungsbeispiel 12 fraktionelle Bits, obwohl mehr oder weniger Bits verwendet werden können.
NH = nicht-normalisiertes Punktprodukt N · H am linken oder rechten Rand der Abtastzeile oder -linie des Polygons (typischerweise in demselben Bereich und mit derselben Bit-Anzahl wie NL).
NN = die quadrierte Länge des Oberflächennormalvektors, d. h. das Punktprodukt von N und N. Dieser Wert liegt bei dem beschriebenen Ausführungsbeispiel im Bereich von 0,5 bis 1 und erfordert 12 fraktionelle Bits.
α = ein von einer AFDU-Schaltung erzeugter Wert, der von 0 bis 1 zwischen den linken und rechten Rändern der Abtastlinie bzw. -zeile eines zu schattierenden Polygons linear zunimmt und typischerweise 12 fraktionelle Bits enthält. (Zu beachten: die AFDU- Schaltung ist schaltungsmäßig identisch mit der X-AFDU-Schaltung in Fig. 3 der eingangs genannten älteren Anmeldungen aufgebaut.)
Im folgenden wird der Diffusionswert als "diff" und der Spiegel-
bzw. Reflexionswert mit "spec" bezeichnet.
Die obigen Gleichen (3) und (4) können unter Verwendung der
W-AFDU zur Erzeugung einer Annäherung für spec und einer AFDU-
Schaltung (weiter unten beschrieben unter Bezugnahme auf Fig.
2) zur Approximation von diff wesentlich vereinfacht werden.
spec und diff liegen im Bereich von 0 bis 1 und müssen sich
zusammen mit Ka zu 1 summieren; jeder dieser Werte besteht bei
dem beschriebenen Ausführungsbeispiel aus 12 fraktionellen
Bits.
Bei der Gouraud-Schattierung (d. h. Interpolation von Farbe
entlang einer Abtastzeile einer CRT) kann die obige Schattierungsgleichung
durch Eliminierung des Multiplikators 1/ √
vereinfacht werden. (Gouraud-Schattierung ist im Stande der
Technik bekannt und erläutert, beispielsweise in Henri Gouraud,
Computer Display of Curved Surfaces, Department 1971; Tom
Duff, "Smoothly Shaded Renderings of Polyhedral Objects on
Raster Displays", Computer Graphics, Band 13, 1979.)
Bekanntlich müssen beim Schattieren von Polygonen häufig Grenzen
um Polygone gezogen werden, um das Randverlaufsattribut
(edge-style attribute) wiederzugeben. Wenn derartige Grenzen
breiter als ein Pixel sind, wächst das Problem, richtige Werte
für dz/dx an der wiederzugebenden Grenze so zu erhalten, daß
der Wert die x-Wert-Grenzpixel nicht minimiert. Zu der Erfindung
gehört eine Lösung des o. g. Problems der Erzeugung bzw.
Wiedergabe von Grenzen, deren Breite größer ist als eine Pixelbreite.
Zwei Polygone werden erzeugt, wobei ein Randpolygon
eine äußere Grenze und ein inneres Polygon ein inneres Loch
definieren. Die Scheitel des inneren Polygons sind auch diejenigen
des Polygon-Innenraums, wodurch auch das Problem der
ausgeschlossenen Grenzpixel eliminiert wird. Wenn die Grenze
nur eine Breite von einem Pixel hat oder wenn Anti-Aliasierung
am Rande des zu erzeugenden Polygons erwünscht ist, ist es
alternativ vorzuziehen, einen Vektor zu erzeugen (die Hälfte
eines anti-aliasierten Vektors), der das Polygon umhüllt. Das
x- oder y-Offset der anti-aliasierten Vektormethode stellt
sicher, daß der Umhüllungsvektor keine Pixel enthält, welche
innerhalb der genauen Grenze des Polygons liegen. Die Schattierungsgleichung
für einen anti-aliasierten Rand um ein
Phong-schattiertes Polygon ist
Es wurde festgestellt, daß Mehrfachlichtquellen von der Einrichtung
gemäß Fig. 2 wiedergegeben werden können, indem zunächst
diff (IM) in den Pixelpuffern 116, 216 und 316 der Fig.
2 gespeichert und danach wiederholt die Reflexionskomponente
spec oe (Lc) für jede Lichtquelle zum Pixelpuffer addiert
wird.
Die folgende Gleichung stellt die Schattierungsgleichung für
eine Oberflächenkurve über einem bivarianten parametrischen
Fleck (bivariate parametric patch) dar.
Wie in den zugehörigen älteren Anmeldungen P 38 15 361 und P
38 15 390 beschrieben ist, können AFDU-Schaltungen zum implementieren
einer kubischen (oder höherer Ordnung) parametrischen
Funktion der Variablen (genannt der Parameter) v verwendet
werden. Diese AFDU-Schaltungen, die als kubische Funktionsgeneratoren
dienen, werden zur Erzeugung von x (v), y(v),
z (v) und w(v) verwendet, um die Pixeladressen entlang einer
kubischen Kurve derart zu liefern, daß im wesentlichen ein-Pixel-
Schritte erzeugt werden. AFDU-Schaltungen können außerdem
zur Erzeugung kubischer Funktionsapproximationen von spec(v),
diff(v), N · L(v), N · H(v) oder N · N(v) verwendet werden, die alle
vom Pixelfilter 30 zur Erzeugung von Schattierungswerten für
die entsprechenden Pixeladressen gesteuert werden.
Zum Schattieren eines bivarianten Oberflächenflecks f(u, v)
erzeugt die Einrichtung gemäß Fig. 2 eine Folge von Kurven
g(v) die genügend eng im u-Parameter beabstandet sind, damit
die resultierende Oberfläche keine Löcher oder Pixelspalten
enthält. Daher wird der Fleck im u,v-Parameterraum erzeugt
bzw. wiedergegeben, wodurch Schattierungsoperationen, wie die
Bildeinteilung und die Flecktrimmung, die im Stande der Technik
bekannt sind, wesentlich erleichtert werden. Das Erzeugen
einer Folge von eng benachbarten Kurven zum Schattieren eines
bivarianten bzw. aus zwei Größen bestehenden Flecks kann unter
Verwendung der o. g. adaptiven Vorwärtsdifferenzmethode gemäß
eingangs angegebenen rangälteren Anmeldungen implementiert
werden.
Die folgende Beschreibung erläutert dem Fachmann das erfindungsgemäße
Verfahren zum Schattieren von Flecken (patches)
durch Erzeugung einiger eng beabstandeter bzw. benachbarter
Kurven.
Bei der adaptiven Vorwärtsdifferenzbildung von einer ersten
Kurve zur nächsten Kurve ist die Basisfunktion für die erste
Kurve f(u,v), während die Basisfunktion für die zweite Kurve
f(u + du,v) ist. Die bekannte Matrix bei der Vorwärtsdifferenzbildungsbasis
zur Darstellung einer Kurve in u,v ist:
wobei Bv und Bo die Vorwärtsdifferenz-Basismatrizen sind. (Zum
besseren Verständnis der Vorwärtsdifferenz-Basismatrizen wird
verwiesen auf Foley & Van Damm, Interactive Computer Graphics,
Addison Wesley, 1982.)
Die j-te Spalte der A-Matrix wird mit Axj bezeichnet. In ähnlicher
Weise wird die i-te Zeile der A-Matrix bezeichnet mit
Aix. Ein Vorwärtsdifferenzbildungsschritt von einer Kurve zur
nächsten Kurve auf einem bivarianten parametrischen Fleck wird
erreicht durch Addition von Spalte A x1 zu A x0, A x2 zu
A x1 und A x3 zu A x2. Die nächste Kurve wird danach durch
die vier Werte in Spalte A x0 definiert. Die nächste Kurve
wird geprüft, um festzustellen, ob sie zu weit (Bildung von
Pixelspalten) entfernt von der aktuellen Kurve liegt.
Die "Differenz"-Spalte A x1 wird in die bekannte "Bezier"-Basis
umgesetzt. Die bekannte konvexe Bezier-Schale wird dann
getestet, um den Maximalabstand der Pixelkoordinate x und y
zwischen zwei Kurven zu erhalten. Wenn dieser Abstand größer
als ein vorgegebener Schwellenwert ist, wird die Kurve jede
Zeile der A-Matrix herunter angepaßt. Wenn der Abstand in der
x-Koordinate und derjenigen der y-Koordinate kleiner als ein
vorgegebener Mindestwert ist, wird jede Zeile der Matrix hochgesetzt.
(Zum besseren Verständnis der "Bezier"-Basis und
deren Wechselwirkung mit der Vorwärtsdifferenzbildung wird auf
Foley & Van Damm, Fundamentals of Interactive Computer
Graphics, Addison Wesley, 1982 verwiesen.)
Die Implementierung der oben angegebenen Gleichungen für Vektor-,
Kurven-, Polygon- und bi-kubische Fleck-Schattierung
wird im folgenden unter Bezugnahme auf Fig. 2 erläutert.
In Fig. 2 ist ein Gesamtblockschaltbild der Schattierungs-
Hardware gemäß vorliegender Erfindung gezeigt. Fig. 2 stellt
einen drei-Kanal-Prozessor zur Entwicklung der Standard-rot-,
-grün- und -blau-Signale für eine Farbbildröhre (CRT) dar.
Generell gehören die Komponenten mit den Bezugszeichen 100 bis
199 zum Rotkanal, 200-299 zum Grünkanal und 300-399 zum Blaukanal.
Vier adaptive Vorwärtsdifferenzbildungsschaltungen (AFDU's)
50, 60, 70 und 90 entsprechen den AFDU's 10 der Fig. 1 und
liefern Pixel-Schattierungswerte entsprechend den Pixeladressen,
die von AFDU's 14 ausgegeben werden. Die AFDU's sind
digitale Differenzialanalysierer dritter Ordnung, welche eine
adaptive Vorwärtsdifferenzbildungslösung für eine parametrische
kubische Funktion des Parameters t implementieren, wie in
den eingangs genannten Patentanmeldungen beschrieben ist,
wobei sich t von 0 bis 1 entlang einer kubischen Kurve ändert
und die dt-Schrittgröße für t adaptiv derart eingestellt wird,
daß auf der Kurve mit Schrittlängen von angenähert einem Pixel
vorgerückt wird. Die arithmetischen Einheiten ("Au's") 76, 78,
86, 88, 104, 114, 122, 124, 128, 204, 214, 222, 224, 228, 304,
314, 322, 324 und 328 sind alle identische Einheiten, die als
Gatteranordnungen oder aus diskreten Komponenten, wie "TRW"-
Multiplizierer und ALU's implementiert werden können.
Aus Gründen der Verdeutlichung bezieht sich das hier beschriebene
Ausführungsbeispiel auf eine Pipeline-Struktur, bei der
jeder Rechenschritt einer bezeichneten ALU zugeordnet ist. Es
ist für den Fachmann klar, daß gleiche Ergebnisse durch Verwendung
einer rekursiven Verarbeitung erreicht werden können,
wobei eine einzige ALU für jeden Kanal jede der Rechenoperationen
während aufeinanderfolgender Operationszyklen ausführt.
Rückkopplungs- und Multiplexerschaltungen sind für derartige
rekursive Verarbeitungen erforderlich. Ein Beispiel für eine
solche rekursive Ausführungsform wird weiter unten in Verbindung
mit Fig. 4 beschrieben.
Jede der Au's erhält Eingangssignale A, B und ALPHA und liefert
ein mit RES bezeichnetes Ergebnis. Jede der AU's berechnet
einen der folgenden Ausdrücke am RES-Ausgang:
(ALPHA) A + (1-ALPHA) B (6 a)
(ALPHA) B + (1-ALPHA) A (6 b)
(ALPHA) A + B (7 a)
(ALPHA) B + A (7 b)
A * B (7 c)
A + B (7 d)
(ALPHA) B + (1-ALPHA) A (6 b)
(ALPHA) A + B (7 a)
(ALPHA) B + A (7 b)
A * B (7 c)
A + B (7 d)
Das Ausgangssignal von AA-AFDU 50 wird an einen AA-Funktionsmodul
52 geliefert, der eine Nachschlagetabelle ist, die eine
den Abstand von einer Abtastlinie bzw. -zeile zu Be in Gleichung
(1) umsetzende Funktion enthält. Das Ausgangssignal des
AA-Funktionsmoduls 52 wird einem Multiplexer 96 eingegeben.
Letzterer erhält als Eingangssignal außerdem einen Anti-Aliasierung-
Wichtungsfaktor (Ce in Gleichung (2)) aus einer Pixel-
Filterschaltung 30 (gezeigt in Fig. 3 des Geometrieabschnitts
7. Fig. 3 zeigt einige der Register (102, 103, 104, 120, 121,
122) gemäß Fig. 7 der oben angezogenen älteren Anmeldungen.
Subtraktionsschaltung 170 der Fig. 3 erhält Eingangssignale
von x-Registern 103 und 104 und erzeugt das Ausgangssignal
t x = x n+1 - n n+2 (tx ist die x-Komponente des momentanen
Tangensvektors). Die Subtraktionsschaltung 171 nimmt Eingangssignale
aus y-Registern 121 und 122 auf und erzeugt das
Ausgangssignal t y = Y n+1 - Y n+2 (t y ist die y-Komponente
des momentanen Tangensvektors). Nachschlagetabelle 176 der
Fig. 3 nimmt den momentanen Tangensvektor <t x, t y< Eingangssignale
von den Subtraktionsschaltungen 170 und 171,
Eingang 182 von der CPU 9 sowie den Bruchbestandteil der
Adresse f x und f y aus den Registern 103 und 121 auf.
Die Nachschlagetabelle 176 erzeugt drei Ausgangssignale: ein
Ausgangssignal 178, den Anti-Aliasierungs-Gewichtsfaktor x zum
Farbgebungsabschnitt 150, ein weiteres Ausgangssignal am Ausgang
179 (das x-Offset) zum Addierer 183 und ein Ausgangssignal
180 (das y-Offset) zum Addierer 184, das zum Rahmenpuffer
weitergeleitet wird. Die Nachschlagetabelle 176 wird mit vorberechneten
Werten entsprechend den beiden unten angegebenen
Tabellen geladen. Ein ein-Bit-Eingangssignal 182 an der Nachschlagetabelle
176 wird von der CPU 9 auf "Null" gesetzt, um
die Schaltung gemäß Fig. 1 zu veranlassen, einen ersten Durchlauf
einer anti-aliasierten Kurve zu entwickeln. Das ein-Bit-
Signal wird auf "Eins" gesetzt, um einen zweiten Durchlauf zu
erzeugen. Für den ersten Durchlauf wird das von den AFDU's
erzeugte Pixel <x, y< mit dem Schattierungsfaktor 1 - |α|
mit α = α x schattiert, wenn die zu erzeugende Kurve eine
x-Hauptkurve ist, und α = α y , wenn sie eine y-Hauptkurve
ist. Der Anti-Aliasierungs-Gewichtsfaktor wird berechnet
durch:
Der Ausgang der Nachschlagetabelle 176 für einen Durchlauf für
x- und y-Hauptkurven (major curves) ist unten in Tabelle I
gezeigt.
Bei dem zweiten Durchlauf wird das Pixel mit den Koordinaten
<x + x offset, y + y offset< schattiert mit dem Schattierungsfaktor
|α|, wobei x offset = Vorzeichen ( α) · x-Hauptkurve und
y offset = Vorzeichen ( α) · y-Hauptkurve. Der Ausgang der
Nachschlagetabelle 176 für den zweiten Durchlauf der x- und
y-Hauptkurven ist unten in Tabelle II angegeben.
Wie in den Tabellen I und II gezeigt ist, ist das Signal 182
zur Nachschlagetabelle 176 auf "Null" eingestellt. Ausgang 179
der Nachschlagetabelle 176 ist x offset = 0. Wenn das Signal
182 auf "Eins" eingestellt ist, so ist der Ausgang 179 der
Nachschlagetabelle 176 wie folgt: (i) 0, wenn Eingang 174
angibt, daß die entwickelte Kurve ein x-Haupt-Tangensvektor
ist; (ii) 1, wenn Eingang 174 einen y-Haupt-Tangensvektor
angibt und α positiv ist; (iii) -1, wenn Eingang 174 einen
y-Haupt-Tangensvektor angibt und α negativ ist. Ausgang 180
von Tabelle 176 ist wie folgt: (i) 0, wenn Eingang 174 einen
y-Haupt-Tangensvektor anzeigt; (ii) 1, wenn Eingang 174
einen x-Haupt-Tangensvektor anzeigt und α positiv ist;
(iii) -1, wenn Eingang 174 einen x-Haupt-Tangensvektor anzeigt
und α negativ ist. Addierer 183 addiert das x-Offset 179 aus
Tabelle 176 zum Inhalt des Registers 102 und gibt die x-Koordinate
des aktuellen Pixels aus. Addierer 184 addiert das
y-Offset 180 aus Tabelle 176 zum Inhalt des Registers 120 und
gibt die y-Koordinate des aktuellen Pixels aus.
Im folgenden wird auf Fig. 2 Bezug genommen. Der Ausgang des
Multiplexers 96 gemäß Fig. 2 wird von den ALPHA-Eingängen der
Au 124, 224 und 324 aufgenommen.
Der Ausgang von N · N-AFDU 60 wird von der Nachschlagetabelle 62
aufgenommen, die eine Annäherung der Umkehr der Quadratwurzel
N · N durchgeführt. Der Ausgang der Nachschlagetabelle 62 wird an
den ALPHA-Eingang von AU's 78 und 88 angelegt. AU 78 erhält
seinen A-Eingang vom RES-Ausgang von AU 76. Der Ausgang von
INTERP-AFDU 70 wird an den ALPHA-Eingang von AU 76 und AU 86
angelegt. Die Register 72 und 74 liefern A- bzw. B-Eingänge an
die AU 76. Der Ausgang der AU 78 wird an den x oe-Funktionsmodul
79 angelegt. Der Ausgang des x oe-Funktionsmoduls 79
wird den ALPHA-Eingängen von AU's 114, 214 und 314 zugeführt.
Die Ausgänge von Registern 82 und 84 bilden Eingänge A bzw. B
der AU 86. Der RES-Ausgang von AU 86 wird an den A-Eingang von
AU 88 angelegt. Der B-Eingang von AU 88 wird von einem Register
87 geliefert. Der RES-Ausgang von AU 88 wird an den
ALPHA-Eingang der AU's 104, 204 und 304 angelegt.
Der Ausgang der Muster-AFDU 90 wird an einen Muster-Funktionsmodul
92 angelegt. Der Ausgang des Moduls 92 ist eine Muster-
Speicheradresse, die in Musterspeicher 102, 202 und 302 eingegeben
wird. Der Inhalt der adressierten Plätze in den Musterspeichern
102, 202 und 302 wird an die A-Eingänge von AU's
104, 204 bzw. 304 angelegt. Der RES-Ausgang von AU's 104, 204
und 304 wird an Multiplexer 110, 210 bzw. 310 angelegt. Multiplexer
110, 210 und 310 erhalten als Eingänge auch die Ausgänge
von Registern 106, 206 bzw. 306. Die Ausgänge der Multiplexer
110, 210 bzw. 310 werden als A-Eingänge an die AU's 114,
214 bzw. 314 angelegt.
Die RES-Ausgänge der AU's 114, 214 bzw. 314 werden an die
A-Eingänge von AU's 122, 222 bzw. 322 angelegt. Dieselben
RES-Ausgänge werden als sequentielle Eingänge an Pixel-Pufferspeicher
116 und 118, 216 und 218 bzw. 316 und 318 angelegt.
Die sequentiellen Ausgänge dieser Pixel-Pufferspeicher gehen
an Multiplexer 112, 212 bzw. 312. Diese erhalten als Eingänge
auch die Ausgänge von Registern 108, 208 bzw. 308. Die Ausgänge
der Multiplexer 112, 212 und 312 werden an die B-Eingänge
von AU's 114, 214 bzw. 314 angelegt. Unter Verwendung der
erfindungsgemäßen Schaltung gemäß Fig. 2 kann eine neue Schattierungsfunktion
derselben Kurve berechnet und in den AU's
arithmetisch mit dem Schattierungswert des zuvor berechneten
und im Pixel-Pufferspeicherfeld gespeicherten entsprechenden
Pixels kombiniert werden. Die Pixelpuffer werden sequentiell
gesteuert von einem in der Zeichnung nicht gezeigten Zähler,
der bei Beginn einer Kurvenoperation von der CPU 9 rückgesetzt
werden muß. Alle Register können von der CPU 9 zugegriffen
werden.
Die AU's 122, 222 und 322 erhalten B-Eingangssignale von den
Ausgängen der Register 120, 220 bzw. 320. Die RES-Ausgänge der
AU's 122, 222 bzw. 322 werden an die A-Eingänge der AU's 124,
224 bzw. 324 angelegt. Rote, grüne und blaue Rückkopplungsdaten
vom Rahmenpuffer 20 (nicht gezeigt) werden als Eingangssignale
an sequentiell adressierte Pixel-Pufferspeicher 126,
130, 226, 230, 326 und 330 angelegt. Die Ausgänge der Pixelpuffer
126, 226 und 326 werden an die B-Eingänge von AU's 124,
224 bzw. 324 angelegt. Die Ausgänge der Pixelpuffer 130, 230
und 330 werden an die B-Eingänge der AU's 128, 228 bzw. 328
angelegt. Die RES-Ausgänge der AU's 124, 224 bzw. 324 werden
an die A-Eingänge der AU's 128, 228 bzw. 328 angelegt. Der
ALPHA-Eingang der AU's 128, 228 und 328 wird vom Ausgang eines
Transparenzregisters 98 beaufschlagt. Die RES-Ausgänge von
AU's 128, 228 bzw. 328 liefern Digitaldarstellungen der Pixelschattierung
für die Rot-, Grün- und Blau-CRT-Kanäle.
Nach der Beschreibung der Schaltungsverbindungen der in Fig. 2
gezeigten Schaltungskomponenten wird auf die Funktionsweise
der Schaltung unter Bezugnahme auf die oben angegebenen Schattierungsgleichungen
eingegangen, welche durch die Schaltung
gemäß Fig. 2 implementiert sind. In der folgenden Erörterung
wird nur auf den Rot-Kanal Bezug genommen. Es ist natürlich
klar, daß ohne andere Angaben eine identische Arbeitsweise in
den grünen und blauen Kanälen stattfindet.
Wie gesagt, wird die Kurvenschattierung durch Implementieren
der Gleichung (8) wie folgt erreicht:
Pixelfarbe = T c (PB₄) + (1 - T c ) (Be(PB₃) + (1 - Be) (z(Cd) + (1 - z) (PM) )), (8)
wobei:
T c = Transparenzfaktor
PB₃, PB₄ = Pixel-Pufferdatenrückkopplung vom Rahmenpuffer
Be = modifizierte Bresenham-Fehlerfunktion
z = Tiefenwichtung
C d = Schleier- (haze) oder Bildtiefenfarbe
PM = intrinsische Kurvenfarbe von den Musterspeichern der Fig. 2.
T c = Transparenzfaktor
PB₃, PB₄ = Pixel-Pufferdatenrückkopplung vom Rahmenpuffer
Be = modifizierte Bresenham-Fehlerfunktion
z = Tiefenwichtung
C d = Schleier- (haze) oder Bildtiefenfarbe
PM = intrinsische Kurvenfarbe von den Musterspeichern der Fig. 2.
Muster-AFDU 90 gibt den aktuellen Wert einer parametrischen
Funktion an eine Musteradressen-Umsetzungsfunktionseinheit 92,
die eine Musteradressentranslation des ihr eingegebenen Wertes
durchführt. Die von der Adressentranslationsfunktion 92 ausgegebene
Musteradresse wird an einen Musterspeicher 102 gegeben,
um einen in diesem befindlichen Speicherplatz zu adressieren.
Der adressierte Inhalt des Musterspeichers 90 stellt die intrinsische
Kurvenfarbe PM in der obigen Gleichung (8) dar (und
enthält auch ein Schreibaktivierungsbit für das aktuelle Pixel
des Vektors oder der wiederzugebenden Kurve). In diesem Falle
passiert PM die AU's 104 und 114 unverändert und wird an den
Eingang A von AU 122 angelegt. Die Schleierfarbe (haze color)
C d der Gleichung (8) wird vom Register 120 an den Eingang B
von AU 122 angelegt. Ein z-Koordinatenwert aus dem Geometrieabschnitt
7 wird in den z-Funktionsmodul 94 eingegeben. Modul
94 führt eine Nachschlagetabellenfunktion durch, um ein Interpolationsgewicht
an den ALPHA-Eingang von AU 122 als Funktion
des z-Koordinatenwerts anzulegen. AU 122 führt die obige Gleichung
(6 b) aus mit:
ALPHA-Eingang von AU 122 gleich z;
Eingang A von AU 122 gleich PM;
Eingang B von AU 122 gleich Cd.
Eingang A von AU 122 gleich PM;
Eingang B von AU 122 gleich Cd.
Ausgang RES von AU 122 läßt sich daher entsprechend nachfolgender
Gleichung (9) ausdrücken:
z(C d ) + (1 - z) (PM) (9)
Diese Größe stellt die intrinsische Farbe dar, eingestellt
nach der Tiefe (d. h. gemischt mit einer Dichte der Schleierfarbe,
die von dem z-Koordinatenwert abhängt); diese Größe
wird auch als Bildtiefenfarbe (depth cued color) bezeichnet.
Dieser Wert wird dann an Eingang A von AU 124 angelegt.
AA AFDU 50 entwickelt in Verbindung mit dem AA-Funktionsmodul
52 die oben erwähnte modifizierte Bresenham-Fehlerfunktion Be.
Diese Funktion wird vom Multiplexer 96 an den ALPHA-Eingang
von AU 124 angelegt. Pixeldatenrückkopplung vom Rahmenpuffer
20 der Fig. 1 wird vom Pixel-Pufferspeicher 126 gehalten und
an den B-Eingang von AU 124 angelegt. AU 124 führt die obige
Gleichung (6b) aus mit:
ALPHA-Eingang von AU 122 gleich Be;
Eingang A von AU 124 erhält das oben angegebene Bildtiefen-Farbergebnis, das am RES-Ausgang von AU 122 ausgegeben wird;
Eingang B von 124 ist gleich PB₃ aus Gleichung (1).
Ausgang RES von AU 124 ist daher:
Eingang A von AU 124 erhält das oben angegebene Bildtiefen-Farbergebnis, das am RES-Ausgang von AU 122 ausgegeben wird;
Eingang B von 124 ist gleich PB₃ aus Gleichung (1).
Ausgang RES von AU 124 ist daher:
Be(PB₃) + (1 - Be) (Bildtiefensimulationsfarbe) (10)
Diese Größe wird als die anti-aliasierte Farbe bezeichnet und
an Eingang A von AU 128 angelegt. Der Transparenzfaktor T c
wird vom Transparenzregister 98 an den ALPHA-Eingang von AU
128 angelegt. Die Pixel-Datenrückkopplung wird im Pixel-Pufferspeicher
130 gehalten und an den Eingang von AU 128 gegeben.
AU 128 führt ebenfalls die obige Gleichung (6b) aus mit:
ALPHA-Eingang von AU 128 gleich T c ;
Eingang A gleich der anti-aliasierten Farbe;
Eingang B von AU 128 gleich PB₄;
Ausgang RES von AU 128 ist daher ausgedrückt durch die nachstehende Gleichung (11):
Eingang A gleich der anti-aliasierten Farbe;
Eingang B von AU 128 gleich PB₄;
Ausgang RES von AU 128 ist daher ausgedrückt durch die nachstehende Gleichung (11):
T c (PB₄) + (1 - T c ) (anti-aliasierte Farbe) (11)
Unter Bezugnahme auf die obigen Gleichungen (9) und (10) und
die Schaltung gemäß Fig. 2 ist zu sehen, daß die Größe (11),
welche die Pixelfarbe entsprechend Definition durch Gleichung
(8) ist, durch die beschriebene Schaltung in neuartiger Weise
wiedergegeben wird.
Unter Anwendung der bekannten Phong-Approximation wird die
Farbe an irgendeinem Punkt auf der Oberfläche eines von einer
einzigen, im Unendlichen angeordneten Lichtquelle beleuchteten
Polygons dargestellt durch die Summe eines Diffusionskoeffizienten
mal der Objektfarbe und einem Spiegelungs- bzw. Reflexionskoeffizienten,
erhoben zu einem Objekt-Reflexions- bzw.
-Spiegelungsexponenten, mal der Lichtfarbe. (Beachte: Phong-
Approximationen sind im Stande der Technik bekannt und vollständig
beschrieben beispielsweise in einem Artikel von Tom
Duff mit der Bezeichnung "Smoothly Shaded Renderings of Polyhedral
Objects on Raster Displays", Computer Graphics, Band
13, Nr. 2, August 1979.) Wie gesagt, werden die Spiegelungs-
und Diffusionskoeffizienten für eine Polygon-Abtastlinie gemäß
Gleichungen (12) und (13) wie folgt berechnet:
Diffusion = K a + 1/√ [α NL RT + (1 - α) NL LT ] (12)
Spiegelung = 1/√ [α NH RT + (1 - a) NH LT ] (13)
wobei:
N der Oberflächennormalenvektor ist;
L ein Einheitsvektor in Richtung der Lichtquelle ist;
H ein Einheitsvektor in Richtung des maximalen Schlaglichts ist (d. h. der Vektor in Richtung der halben Strecke zwischen dem Betrachter und der Lichtquelle);
K a der Koeffizient der Umgebungsreflexion;
α ein Interpolationskoeffizient, dessen Wert sich linear zwischen 0 bis 1 entlang eines Abtastliniensegments eines wiederzugebenden Polygons ändert;
RT und LT beziehen sich auf den Wert des Punktprodukts N · L an den rechten und linken Enden eines Abtastliniensegments eines Polygons.
N der Oberflächennormalenvektor ist;
L ein Einheitsvektor in Richtung der Lichtquelle ist;
H ein Einheitsvektor in Richtung des maximalen Schlaglichts ist (d. h. der Vektor in Richtung der halben Strecke zwischen dem Betrachter und der Lichtquelle);
K a der Koeffizient der Umgebungsreflexion;
α ein Interpolationskoeffizient, dessen Wert sich linear zwischen 0 bis 1 entlang eines Abtastliniensegments eines wiederzugebenden Polygons ändert;
RT und LT beziehen sich auf den Wert des Punktprodukts N · L an den rechten und linken Enden eines Abtastliniensegments eines Polygons.
Die CPU 9-Abtastung setzt das Polygon um und liefert ein Abtastlinien-
bzw. -zeilensegment über das zu erzeugende Polygon.
Diffusions- und Spiegelungskoeffizienten an jedem Ende
der Abtastlinie werden berechnet, nämlich NL RT , NL LT,
NH RT und NH LT. Diese Koeffizienten werden in Register 82,
84, 72 bzw. 74 geladen. N · N-AFDU 60 erzeugt eine quadratische
Funktion für N · N, (d. h. das Punktprodukt des Normalvektors
entlang der Abtastlinie; dieses Produkt ist im Stande der
Technik bekannt, siehe Tom Duff, "Smoothly Shaded Renderings
of Polyhedral Objects on Raster Displays", Computer Graphics,
Band 13, 1979).
Interp-AFDU 70 erzeugt eine lineare Interpolation von x zwischen
0 und 1 entlang des Abtastliniensegmentes des wiederzugebenden
Polygons. Dieser Faktor wird an die ALPHA-Eingänge von
AU's 76 und 86 angelegt. Das Implementieren der obigen Gleichung
(6a) in den AU's 76 und 86 führt zu folgenden Ergebnissen:
RES-AU 76 = (ALPHA) NH RT + (1 - ALPHA) NH LT (14)
RES-AU 86 = (ALPHA) NL RT + (1 - ALPHA) NL LT (15)
Gleichungen 14 und 15 stellen glatte lineare Interpolationen
von N · H bzw. N · L dar. Diese Werte sind nicht-normalisiert, da
sie aufgrund des linearen Interpolationsprozesses nicht mehr
Einheitsvektoren darstellen. Eine Neu-Normalisierung wird
erreicht durch die quadratische Funktion für N · N, durchgeführt
in der N · N-AFDU 60.
Die quadratische Funktion für N · N wird in der N · N-AFDU 60
erzeugt und in die Nachschlagetabelle 62 eingegeben, welche
eine Annäherung der Inversion der Quadratwurzel liefert. Der
Ausgang der Nachschlagetabelle 62 wird an die ALPHA-Eingänge
der AU's 78 und 88 angelegt. Die AU's 78 und 88 führen die
obige Gleichung (7a) aus. Da der B-Eingang von AU 78 offen
ist, liefert der RES-Ausgang (ALPHA) A, das gleich ist 1/√
[RES-AU 76] dem Spiegelungskoeffizienten aus Gleichung (13).
Dieser Ausgang wird als nächstes zum x oe-Funktionsgenerator
79 übertragen, wo der Objekt-Spiegelungs- bzw. Reflexionsexponent
(die Reflexionspotenz) angelegt wird.
Der Koeffizient der Umgebungsreflexion Ka ist im Register 87
enthalten und wird angelegt an den B-Eingang von AU 88. Daher
ist der RES-Ausgang von AU 88 gleich dem Diffusionskoeffizienten
der obigen Gleichung (12).
Die Muster-AFDU 90 und die Musteradress-Umsetzfunktion 92
erzeugen eine Muster-Speicheradresse. Wie oben unter Bezugnahme
auf das Schattieren von Vektoren beschrieben wurde, liefert
der Musterspeicher Rot 102 die Objektfarbe an jedem Pixel. Die
Objektfarbe (Rotkomponente) wird angelegt an den A-Eingang von
AU 104. AU 104 löst die obige Gleichung (7a), und der RES-Ausgang
stellt, da der B-Eingang offen ist, das Produkt des Diffusionskoeffizienten
(ALPHA-Eingang) und Objektfarbe (A-Eingang)
dar. Dieses Signal wird vom Multiplexer 110 als Eingang
zum A-Eingang der AU 114 ausgewählt. Die Lichtfarbe im Register
108 wird vom Multiplexer 112 als Eingangssignal für den
B-Eingang von AU 114 ausgewählt. Der Spiegelungs- bzw. Reflexionskoeffizient,
erhoben zum Objekt-Spiegelungsexponenten vom
Funktionsmodul 79, wird an den ALPHA-Eingang von AU 114 angelegt.
AU 114 führt die Gleichung (7b) aus, wodurch ein vollständiger
Pixelfarbausdruck am RES-Ausgang entwickelt wird.
Die Weiterverarbeitung stromab der AU 114 wurde bereits unter
Bezugnahme auf die Kurven- und Vektorschattierung beschrieben.
Wie oben erwähnt, wurde die vorstehende Erläuterung der Erfindung
unter Bezugnahme auf Duff's-Approximation der Phong-
Schattierung entsprechend dem Duff-Artikel "Smoothly Shaded
Renderings of Polyhedral Objects on Raster Displays", Computer
Graphics, Band 13, 1979 gegeben. Dieselbe Schaltung kann auch
die Gouraud-Schattierung implementieren. Die Gouraud-Schattierung
wird gewöhnlich wegen ihrer Einfachheit der Berechnung
und Geschwindigkeit benutzt. Sie ist besonders brauchbar für
eine grobe Schattierung. Die Gouraud-Schattierung wird als
einfache lineare Interpolation der Farbe von einem Punkt zu
einem anderen über die Polygon-Abtastlinie implementiert.
Daher werden Diffusions- und Spiegelungskoeffizienten nicht
berechnet, und die Farbe an Zwischenpixeln entlang der Abtastlinie
bzw. -zeile ist gegeben durch:
ALPHA (rechte Farbe) + (1 - ALPHA) (linke Farbe).
Die Gouraud-Schattierung ist nicht-normalisiert, so daß es
nicht notwendig ist, die inverse Quadratwurzel von N · N an den
AU's 78 und 88 einzuführen. Stattdessen werden die ALPHA-Eingänge
von AU 78 und 88 auf dem Wert 1 gehalten. Das Register
74 wird mit 0 geladen, das Register 72 wird mit 1 geladen, so
daß der lineare Interpolationsfaktor von Interp-AFDU 70 unmodifiziert
bis zum A-Eingang der AU 78 durchgeleitet wird. AU
78 entwickelt die obige Gleichung (7d) und läßt daher den
A-Eingang unmodifiziert durch zu RES und überbrückt dadurch
die x oe-Funktion, sowie zum ALPHA-Eingang von AU 114. Ein
rechter Objekt-Farbwert wird in das Register 108 geladen, und
ein linker Objekt-Farbwert wird in das Register 106 geladen.
Die Interpolationskoeffizienten werden von Interp-AFDU 70 am
ALPHA-Eingang von AU 114 zur Verfügung gestellt. Der Multiplexer
110 wählt Register 106 und der Multiplexer 112 Register
108 aus. AU 114 entwickelt die obige Gleichung (6a), wodurch
die Gouraud-Schattierung am RES-Ausgang zur Verfügung gestellt
und zum A-Eingang von AU 122 übertragen wird.
Die Verarbeitung von Flecken innerhalb der Schattierungsschaltung
ist ähnlich Polygonen, mit der Ausnahme, daß die Schattierungsparameter
N · L und N · H durch bi-kubische Funktionen
approximiert werden, die von AFDU's 60 und 70 geliefert werden,
anstatt durch eine lineare Interpolation über die Abtastlinie
bzw. -zeile. (In dem Artikel von Michael Shantz und
Sheue-Ling Lien, "Shading Bi-cubic Patches", Computer
Graphics, Band 21, Nr. 4, 1987, sind einige mathematische
Methoden zum Ableiten der oben erwähnten approximierenden
bi-kubischen Funktionen angegeben.) Zur Fleck-Schattierung
erzeugt N · N-AFDU 60 eine Approximation des Reflexions- bzw.
Spiegelungskoeffizienten, und Interp-AFDU 70 erzeugt eine
Approximation des Diffusionskoeffizienten. Die Ausgänge von
N · N-AFDU 60 und Interp-AFDU 70 werden an die ALPHA-Eingänge
der AU's 78 und 86 angelegt. Der Spiegelungskoeffizient durchläuft
die Nachschlagetabelle 62 ohne Änderung.
Der A-Eingang von AU 78 wird auf den Wert 1 gehalten, wodurch
der Spiegelungskoeffizient ungeändert zum RES-Ausgang durchläuft.
In ähnlicher Weise wird der Diffusionskoeffizient durch
die AU's 86 und 88 ohne Änderung durchgelassen. Danach erfolgt
die Verarbeitung in der gleichen Weise wie zuvor für Polygone
beschrieben.
Die Erzeugung der Fleck- und Polygonschattierung wird vom
RES-Ausgang der AU 114 in der zuvor für die Kurven- und Vektorschattierung
beschriebenen Weise mit Bezug auf die Bildtiefensimulation
und Transparenz fortgesetzt. Zwischenergebnisse
durchlaufen ungeändert die AU 124, da ein Anti-Aliasieren für
Flecke oder Polygone nicht durchgeführt wird.
In Fig. 4 ist ein alternatives Ausführungsbeispiel der in Fig.
2 gezeigten Schaltung angegeben. In Fig. 4 entspricht die PFDU
400 der Muster-AFDU 90 und der N · N-AFDU 60 in Fig. 2 und führt
die gleiche Funktion aus, wie sie zuvor unter Bezugnahme auf
diese Komponenten beschrieben wurde. In ähnlicher Weise ersetzt
QAFDU 402 die AA-AFDU 50 und die Interp-AFDU 70 in Fig.
2 und führt dieselben Funktionen aus. Adreßmodems 402 und 406
ersetzen bei gleichen Funktionen die Muster-Translation 92.
Bildspeicher 0, 1 und 2 entsprechen bei gleichen Funktionen
den Adreßmusterspeichern 102, 202 und 302 sowie der 1/Quadratwurzelfunktion
62 und den Pixelpufferspeichern (d. h. 116, 118,
216 usw.). Multiplexer 414 wählt als Eingang eine gewünschte
Farbkonstante C₀, die NL lt, Ca, Cd oder Oc in den obigen
Gleichungen sein kann, oder den Ausgang des Bildspeichers 0.
Multiplexer 416 wählt als Eingang Be (der modifizierte Bresenham-
Fehlerfaktor) oder den Ausgang von Bildspeicher 1 oder z
oder tc, und zwar in Abhängigkeit von der wiederzugebenden
besonderen Funktion. Multiplexer 418 wählt den Ausgang von
Bildspeicher 1 oder den Ausgang von Bildspeicher 2 oder C₁,
eine gewünschte Farbkonstante, die NL lt, Ca, Cd, Oc oder ein
anderes konstantes Farbvolumen sein kann. Der gewählte Ausgang
der Multiplexer 414, 416 und 418 wird den AU's 420, 422 und
424 zugeführt, welche in Fig. 4 an die Stelle aller Rot-,
Grün- und Blau-AU's der Ausführungsform gemäß Fig. 2 sowie der
AU's 76, 78, 86 und 88 der Fig. 2 treten. Die CPU 9 steuert
die Schaltung gemäß Fig. 4 derart, daß jede Komponente eine
geeignete Funktion durchführt, um die oben beschriebenen Funktionen
auszuführen, deren Implementierung anhand der Fig. 2
vollständig beschrieben worden ist.
Es ist einleuchtend, daß die zuvor beschriebene Erfindung in
anderen speziellen Ausführungsformen realisiert werden kann.
Insbesondere können die AFDU's ohne weiteres derart erweitert
werden, daß sie Funktionen höherer Ordnung als kubische implementieren
können.
Claims (25)
1. Einrichtung zum Schattieren von Vektoren und Kurven auf
einem Display, gekennzeichnet durch
Mittel zum Implementieren einer ersten Funktion, die
beinhaltet:
T c [PB₁] + (1 - T c ) X;wobei T c gleich einem Transparenzfaktor, PB₁
gleich von einem Rahmenpuffer rückgekoppelten ersten
Pixeldaten ist und X eine zweite Funktion darstellt,
Mittel zum Implementieren der zweiten Funktion, die beinhaltet:Be [PB₂] + (1 - Be) Y;wobei Be = eine modifizierte Bresenham-Fehlerfunktion und PB₂ = zweite aus dem Rahmenpuffer rückgekoppelte Pixeldaten und wobei Y eine dritte Funktion darstellt,
Mittel zum Implementieren der dritten Funktion, die beinhaltet:Z[C d ] + (1 - Z) [PM],wobei Z die Tiefenwichtung, C d die Schleierfarbe (haze color) und PM die intrinsische Kurvenfarbe darstellen, und
Mittel zum Kombinieren der Implementierung der ersten, zweiten und dritten Funktionen zur Gewinnung der Implementierung von Tc (PB₁) + (1 - Tc) [Be (PB₂) + (1 - Be)] Z(Cd) + (1 - Z) (PM)]], wodurch die Kurve und der Vektor schattiert und gemustert werden.
Mittel zum Implementieren der zweiten Funktion, die beinhaltet:Be [PB₂] + (1 - Be) Y;wobei Be = eine modifizierte Bresenham-Fehlerfunktion und PB₂ = zweite aus dem Rahmenpuffer rückgekoppelte Pixeldaten und wobei Y eine dritte Funktion darstellt,
Mittel zum Implementieren der dritten Funktion, die beinhaltet:Z[C d ] + (1 - Z) [PM],wobei Z die Tiefenwichtung, C d die Schleierfarbe (haze color) und PM die intrinsische Kurvenfarbe darstellen, und
Mittel zum Kombinieren der Implementierung der ersten, zweiten und dritten Funktionen zur Gewinnung der Implementierung von Tc (PB₁) + (1 - Tc) [Be (PB₂) + (1 - Be)] Z(Cd) + (1 - Z) (PM)]], wodurch die Kurve und der Vektor schattiert und gemustert werden.
2. Einrichtung zum Schattieren von Polygonen, gekennzeichnet
durch Mittel zum Implementieren einer ersten Funktion, die
beinhaltet:
Tc [PB + (1 - Tc)] X,wobei Tc einen Transparenzfaktor, PB von einem Rahmenpuffer
rückgekoppelte Pixeldaten und X eine zweite
Funktion darstellen,
Mittel zum Implementieren der zweiten Funktion, die beinhaltet:Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [Lc]],wobei Z die Tiefe, Cd die Bildtiefensimulationsfarbe oder die Schleierfarbe, Lc eine Lichtquellenfarbe, PM einen gespeicherten Farbwert und Diffusion und Spiegelung dritte und vierte Funktionen darstellen,
Mittel zum Implementieren der dritten Funktion, die im Falle von Polygonschattierung beinhaltet:Ka + (1/√ [α NL rt + (1 - α) NL lt],Mittel zum Implementieren der vierten Funktion, die beinhaltet:(1/ √ [α NH rt + (1 - α) NH lt] oe ,wobei N den Oberflächennormalenvektor, L einen Einheitsvektor in Richtung einer Lichtquelle, H einen Einheitsvektor in Richtung des maximalen Schlaglichts, Ka den Koeffizienten der Umgebungsreflexion, einen linearen Interpolationskoeffizienten, oe einen Objekt- Spiegelungsexponenten darstellen, rt einen Wert an einem rechten Ende und lt einen Wert an einem linken Ende einer Abtastlinie bezeichnen, und
Mittel zum Kombinieren der implementierten ersten, zweiten, dritten und vierten Funktionen zur Gewinnung von:Tc [PB] + (1 - Tc) [Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [LC]]].
Mittel zum Implementieren der zweiten Funktion, die beinhaltet:Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [Lc]],wobei Z die Tiefe, Cd die Bildtiefensimulationsfarbe oder die Schleierfarbe, Lc eine Lichtquellenfarbe, PM einen gespeicherten Farbwert und Diffusion und Spiegelung dritte und vierte Funktionen darstellen,
Mittel zum Implementieren der dritten Funktion, die im Falle von Polygonschattierung beinhaltet:Ka + (1/√ [α NL rt + (1 - α) NL lt],Mittel zum Implementieren der vierten Funktion, die beinhaltet:(1/ √ [α NH rt + (1 - α) NH lt] oe ,wobei N den Oberflächennormalenvektor, L einen Einheitsvektor in Richtung einer Lichtquelle, H einen Einheitsvektor in Richtung des maximalen Schlaglichts, Ka den Koeffizienten der Umgebungsreflexion, einen linearen Interpolationskoeffizienten, oe einen Objekt- Spiegelungsexponenten darstellen, rt einen Wert an einem rechten Ende und lt einen Wert an einem linken Ende einer Abtastlinie bezeichnen, und
Mittel zum Kombinieren der implementierten ersten, zweiten, dritten und vierten Funktionen zur Gewinnung von:Tc [PB] + (1 - Tc) [Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [LC]]].
3. Einrichtung zum Schattieren einheitlicher und uneinheitlicher,
rationaler und nicht-rationaler B-Stäbchen (splines)
und anderer Flecken, gekennzeichnet durch
Mittel zum Implementieren einer ersten Funktion, die
beinhaltet:
Tc [Pb + (1 - Tc) ] X,wobei Tc einen Transparenzfaktor, PB von einem Rahmenpuffer
rückgekoppelte Pixeldaten und X eine zweite
Funktion darstellen,
Mittel zum Implementieren der zweiten Funktion, wobei die zweite Funktion beinhaltet:Z [Cd ] + (1 - Z) [Diffusion [PM] + Spiegelung [Lc]],wobei Z die Tiefe, Cd die Bildtiefensimulationsfarbe oder den Schleier, Lc eine Lichtquellenfarbe, PM einen gespeicherten Festwert und Diffusion und Spiegelung dritte und vierte Funktionen darstellen,
Mittel zum Implementieren der dritten Funktion, beinhaltend:Ka + N · L/ √Mittel zum Implementieren der vierten Funktion, die beinhaltet:[(1/√) (N · H)] oe ,wobei N den Oberflächennormalenvektor, L einen Einheitsvektor in Richtung einer Lichtquelle, H einen Einheitsvektor in Richtung maximalen Schlaglichts, Ka den Koeffizienten der Umgebungsreflexion, Lc eine Lichtquellenfarbe und PM einen gespeicherten Farbwert darstellen, und
Mittel zum Kombinieren der implementierten ersten, zweiten, dritten und vierten Funktionen zu:Tc [Pb] + (1 - Tc) [Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [LC]]].
Mittel zum Implementieren der zweiten Funktion, wobei die zweite Funktion beinhaltet:Z [Cd ] + (1 - Z) [Diffusion [PM] + Spiegelung [Lc]],wobei Z die Tiefe, Cd die Bildtiefensimulationsfarbe oder den Schleier, Lc eine Lichtquellenfarbe, PM einen gespeicherten Festwert und Diffusion und Spiegelung dritte und vierte Funktionen darstellen,
Mittel zum Implementieren der dritten Funktion, beinhaltend:Ka + N · L/ √Mittel zum Implementieren der vierten Funktion, die beinhaltet:[(1/√) (N · H)] oe ,wobei N den Oberflächennormalenvektor, L einen Einheitsvektor in Richtung einer Lichtquelle, H einen Einheitsvektor in Richtung maximalen Schlaglichts, Ka den Koeffizienten der Umgebungsreflexion, Lc eine Lichtquellenfarbe und PM einen gespeicherten Farbwert darstellen, und
Mittel zum Kombinieren der implementierten ersten, zweiten, dritten und vierten Funktionen zu:Tc [Pb] + (1 - Tc) [Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [LC]]].
4. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß
arithmetische Logikeinheiten zum Implementieren der ersten,
zweiten und dritten Funktionen vorgesehen sind.
5. Einrichtung nach Anspruch 1 oder 4, dadurch gekennzeichnet,
daß Musterspeichermittel mit den Mitteln zum Implementieren
der dritten Funktion zum Speichern und selektiven Wiedergewinnen
der intrinsischen Kurvenfarbe (PM) gekoppelt sind.
6. Einrichtung nach Anspruch 5, dadurch gekennzeichnet, daß
eine Funktionsgeneratoranordnung mit den Musterspeichermitteln
zum selektiven Adressieren der Musterspeichermittel als Funktion
eines Pixelplatzes gekoppelt ist.
7. Einrichtung nach Anspruch 6, dadurch gekennzeichnet, daß
die Funktionsgeneratoranordnung eine adaptive Vorwärtsdifferenzbildungseinheit
(AFDU) aufweist.
8. Einrichtung nach Anspruch 2 oder 3, dadurch gekennzeichnet,
daß die ersten, zweiten, dritten und vierten Funktionen
in arithmetischen Logikeinheiten implementiert sind.
9. Einrichtung nach Anspruch 2 oder 3, dadurch gekennzeichnet,
daß zum Speichern und selektiven Wiedergewinnen der intrinsischen
Kurvenfarbe (PM) Musterspeichermittel mit den
Mitteln zum Implementieren der zweiten Funktion gekoppelt
sind.
10. Einrichtung nach Anspruch 9, dadurch gekennzeichnet, daß
mit den Musterspeichermitteln ein erster Funktionsgenerator
zum selektiven Adressieren der Musterspeichermittel als Funktion
eines Pixelplatzes gekoppelt ist.
11. Einrichtung nach Anspruch 10, dadurch gekennzeichnet, daß
der erste Funktionsgenerator eine adaptive Vorwärtsdifferenzbildungseinheit
(AFDU) enthält.
12. Einrichtung nach einem der Ansprüche 8 bis 11, dadurch
gekennzeichnet, daß mit den Mitteln zum Implementieren der
dritten und vierten Funktionen ein zweiter Funktionsgenerator
gekoppelt ist, um eine lineare Interpolation der Position auf
einem Abtastliniensegment der Polygone durchzuführen.
13. Einrichtung nach Anspruch 12, dadurch gekennzeichnet, daß
der zweite Funktionsgenerator eine adaptive Vorwärtsdifferenzbildungseinheit
(AFDU) aufweist.
14. Einrichtung nach einem der Ansprüche 8 bis 13, dadurch
gekennzeichnet, daß zur Erzeugung des Ausdrucks 1/ √ ein
dritter Funktionsgenerator vorgesehen und mit den Mitteln zum
Implementieren der dritten und vierten Funktion gekoppelt
ist.
15. Einrichtung nach Anspruch 14, dadurch gekennzeichnet, daß
der dritte Funktionsgenerator eine adaptive Vorwärtsdifferenzbildungseinheit
(AFDU) und eine Inversions-Quadratwurzel-Nachschlagetabelle
(62) aufweist.
16. Einrichtung nach Anspruch 2, oder einem der Ansprüche 8
bis 14, dadurch gekennzeichnet, daß die Mittel zum Implementieren
der vierten Funktion einen Exponentialfunktionsgenerator
(79) enthalten.
17. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß
zur Erzeugung des Ausdrucks N · L √ ein zweiter Funktionsgenerator
mit den Mitteln zum Implementieren der dritten Funktion
gekoppelt ist.
18. Einrichtung nach Anspruch 17, dadurch gekennzeichnet, daß
der zweite Funktionsgenerator eine adaptive Vorwärtsdifferenzbildungseinheit
(AFDU) enthält.
19. Einrichtung nach Anspruch 3, 17 oder 18, dadurch gekennzeichnet,
daß zur Erzeugung des N · H √-Ausdrucks ein dritter
Funktionsgenerator mit den Mitteln zum Implementieren der
vierten Funktion gekoppelt ist.
20. Einrichtung nach Anspruch 19, dadurch gekennzeichnet, daß
der dritte Funktionsgenerator eine adaptive Vorwärtsdifferenzbildungseinheit
(AFDU) aufweist.
21. Einrichtung nach einem der Ansprüche 4 bis 20, dadurch
gekennzeichnet, daß die arithmetischen Logikeinheiten derart
angeordnet sind, daß sie zur Pipelineverarbeitung geeignet
sind.
22. Einrichtung nach einem der Ansprüche 4 bis 20, dadurch
gekennzeichnet, daß die arithmetischen Logikeinheiten zur
rekursiven Verarbeitung geeignet angeordnet sind.
23. Verfahren zum Schattieren von Vektoren und Kurven auf
einem Display, gekennzeichnet durch
- a) Implementieren einer ersten Funktion, die beinhaltet: Tc [PB₁] + (1 - Tc) X,wobei Tc einen Transparenzfaktor, PB₁ von einem Rahmenpuffer rückgekoppelte erste Pixeldaten und X eine zweite Funktion darstellen;
- b) Implementieren der zweiten Funktion, die beinhaltet: Be [PB₂] + (1 - Be) Y,wobei Be eine modifizierte Bresenham-Fehlerfunktion, PB₂ von dem Rahmenpuffer rückgekoppelte zweite Pixeldaten und Y eine dritte Funktion darstellen;
- c) Implementieren der dritten Funktion, wobei die Funktion beinhaltet: Z [Cd] + (1 - Z) [PM],wobei Z die Tiefenwichtung, Cd eine Schleierfarbe und PM eine intrinsische Kurvenfarbe darstellen;
- d) Kombinieren der Ergebnisse der ersten, zweiten und dritten Funktionen zu der Implementierung von Tc (PB₁) + (1 - Tc) [Be (PB₂) + (1 - Be) [Z(Cd) + (1 - Z) (PM)]].
24. Verfahren zum Schattieren von Polygonen, gekennzeichnet
durch:
- a) Implementieren einer ersten Funktion, beinhaltend: Tc [PB + (1 - Tc)] X,wobei Tc einen Transparenzfaktor, PB von einem Rahmenpuffer rückgekoppelte Pixeldaten und X eine zweite Funktion darstellen;
- b) Implementieren der zweiten Funktion, beinhaltend: Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [LC]].wobei Z die Tiefe, Cd die Bildtiefenfarbe oder den Schleier, Lc eine Lichtquellenfarbe, PM einen gespeicherten Farbwert und Diffusion und Spiegelung dritte und vierte Funktionen darstellen;
- c) Implementieren der dritten Funktion, letztere beinhaltend: Ka + (1/ √) [α NL rt + (1-α ) NL lt]
- d) Implementieren der vierten Funktion, letztere beinhaltend: (1/ √) [α NH rt + (1 - α ) NH lt] Oe ,wobei N einen Oberflächennormalenvektor, L einen Einheitsvektor in Richtung einer Lichtquelle, H einen Einheitsvektor in Richtung maximalen Schlaglichts, Ka einen Umgebungsreflexionskoeffizienten, rt einen Wert am rechten Ende einer Abtastlinie, lt einen Wert am linken Ende einer Abtastlinie, α einen linearen Interpolationskoeffizienten und Oe einen Objekt-Spiegelungsexponenten darstellen;
- e) Kombinieren der Ergebnisse der implementierten ersten, zweiten, dritten und vierten Funktionen zu: Tc [PB] + (1 - Tc) [Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [LC]]].
25. Verfahren zum Schattieren einheitlicher und nichteinheitlicher,
rationaler und nichtrationaler B-Splines und anderer
Flecken, gekennzeichnet durch:
- a) Implementieren einer ersten Funktion, die beinhaltet: Tc [PB + (1 - Tc)] X,wobei Tc einen Transparenzfaktor, PB von einem Rahmenpuffer rückgekoppelte Pixeldaten und X eine zweite Funktion darstellen;
- b) Implementieren der zweiten Funktion, letztere beinhaltend: Z [Cd] + (1 - Z) [Diffusion [PM] + Spiegelung [Lc]],wobei Z die Tiefe, Cd die Bildtiefensimulationsfarbe oder den Schleier, Lc eine Lichtquellenfarbe, PM einen gespeicherten Farbwert und Diffusion und Spiegelung dritte und vierte Funktionen darstellen;
- c) Implementieren der dritten Funktion, wobei die dritte Funktion beinhaltet: Ka + Kd (N · L/√);
- d) Implementieren der vierten Funktion, letztere beinhaltend: [(1/√) (N · H)] Oe ,wobei N einen Oberflächennormalenvektor, L einen Einheitsvektor in Richtung einer Lichtquelle, H einen Einheitsvektor in einer Richtung maximalen Schlaglichts, Ka einen Umgebungsreflexionskoeffizienten und Oe einen Objekt- Spiegelungsexponenten darstellen; und
- e) Kombinieren der Ergebnisse der ersten, zweiten, dritten und vierten Funktionen zu: Tc [PB] + (1 - Tc) [z[Cd] + (1 - z) [Diffusion [PM] + Spiegelung [LC]]].
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7779787A | 1987-07-27 | 1987-07-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3825539A1 true DE3825539A1 (de) | 1989-02-09 |
DE3825539C2 DE3825539C2 (de) | 1997-06-12 |
Family
ID=22140108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19883825539 Expired - Fee Related DE3825539C2 (de) | 1987-07-27 | 1988-07-27 | Einrichtung u. Verfahren zum Erzeugen schattierter Werte von graphischen Objekten auf einer Anzeigeeinrichtung |
Country Status (7)
Country | Link |
---|---|
JP (1) | JP2777577B2 (de) |
CA (1) | CA1305802C (de) |
DE (1) | DE3825539C2 (de) |
FR (1) | FR2622030B1 (de) |
GB (1) | GB2207585B (de) |
HK (1) | HK60992A (de) |
SG (1) | SG52792G (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4124564B4 (de) * | 1990-07-26 | 2005-02-24 | Sun Microsystems, Inc., Mountain View | Verfahren und Einrichtung zur Erzeugung von schattierten Abbildungen |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179638A (en) * | 1990-04-26 | 1993-01-12 | Honeywell Inc. | Method and apparatus for generating a texture mapped perspective view |
GB2271259A (en) * | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
US6184891B1 (en) * | 1998-03-25 | 2001-02-06 | Microsoft Corporation | Fog simulation for partially transparent objects |
JP2014056371A (ja) * | 2012-09-12 | 2014-03-27 | Fujitsu Semiconductor Ltd | 画像処理装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4586038A (en) * | 1983-12-12 | 1986-04-29 | General Electric Company | True-perspective texture/shading processor |
JPS60126771A (ja) * | 1983-12-14 | 1985-07-06 | Hitachi Ltd | 自由曲面表示方式 |
JPS61103277A (ja) * | 1984-10-26 | 1986-05-21 | Hitachi Ltd | 図形シエ−デイング装置 |
-
1988
- 1988-05-13 GB GB8811392A patent/GB2207585B/en not_active Expired - Fee Related
- 1988-07-19 CA CA000572463A patent/CA1305802C/en not_active Expired
- 1988-07-25 FR FR8810000A patent/FR2622030B1/fr not_active Expired - Fee Related
- 1988-07-27 DE DE19883825539 patent/DE3825539C2/de not_active Expired - Fee Related
- 1988-07-27 JP JP63187968A patent/JP2777577B2/ja not_active Expired - Fee Related
-
1992
- 1992-05-11 SG SG52792A patent/SG52792G/en unknown
- 1992-08-13 HK HK60992A patent/HK60992A/xx not_active IP Right Cessation
Non-Patent Citations (1)
Title |
---|
IEEE Transactions on Computers, Vol. C-20, No. 6, June 1971, Pg. 623-629 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4124564B4 (de) * | 1990-07-26 | 2005-02-24 | Sun Microsystems, Inc., Mountain View | Verfahren und Einrichtung zur Erzeugung von schattierten Abbildungen |
Also Published As
Publication number | Publication date |
---|---|
FR2622030B1 (fr) | 1994-03-04 |
GB2207585A (en) | 1989-02-01 |
HK60992A (en) | 1992-08-21 |
CA1305802C (en) | 1992-07-28 |
GB8811392D0 (en) | 1988-06-15 |
FR2622030A1 (fr) | 1989-04-21 |
JPH01120685A (ja) | 1989-05-12 |
DE3825539C2 (de) | 1997-06-12 |
SG52792G (en) | 1992-12-04 |
JP2777577B2 (ja) | 1998-07-16 |
GB2207585B (en) | 1992-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19646194B4 (de) | Echtzeit-Wiedergabeverfahren zum wahlweisen Ausführen von Bump-Mapping- und Phong-Schattierungs-Prozessen und zugehörige Vorrichtung | |
US6181836B1 (en) | Method and system for non-destructive image editing | |
DE69839277T2 (de) | Verfahren und anordnung zur ausführung von farbschlüsseln, transparenz und nebelfunktionen | |
DE69725809T2 (de) | Anpassungsschichten für die Manipulation von zusammengesetzten Bildern | |
DE3348093C2 (de) | ||
DE69830767T2 (de) | Verfahren und Vorrichtung zum Zusammensetzen geschichteter synthetischer graphischer Filter | |
EP0984397B1 (de) | Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster | |
DE69529500T2 (de) | Verwendung von abgetasteten Bildern in einem Bildzusammensetzungssystem | |
DE19807053B4 (de) | Strahltransformationsverfahren für eine schnelle Volumenaufbereitung für eine perspektivische Betrachtung | |
DE4124564A1 (de) | Verfahren und einrichtung zur erzeugung von schattierten abbildungen | |
DE3022454A1 (de) | Optisches abbildesystem mit computererzeugtem bild fuer einen bodenfesten flugsimulator | |
DE4314265A1 (de) | Dreidimensionales Textur-Abbildungs-Displaysystem | |
DE69534697T2 (de) | Verfahren zur Erzeugung texturierter Bilder und Spezialvideoeffekte | |
DE3518416A1 (de) | Speicher- und prozessorsystem mit schnellem zugriff zur rasteranzeige | |
DE2703021A1 (de) | Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige | |
DE4014231A1 (de) | Verfahren zum bearbeiten der steuerpunkte eines symbolbildes | |
DE4211385A1 (de) | Daten-projektionssystem | |
DE3315148C2 (de) | ||
DE3619420A1 (de) | Computer-displayeinrichtung | |
DE3815361A1 (de) | Einrichtung und verfahren zum erzeugen von vektoren auf einem displaygeraet | |
DE19708679A1 (de) | Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens | |
DE60024117T2 (de) | Tiefenbasierte mischung mit 3d aufrasterungsgerät | |
DE69830766T2 (de) | Verfahren und Vorrichtung zum Bestimmen des Anwendungsumfangs geschichteter synthetischer graphischer Filter | |
AT525294A1 (de) | Verfahren zum Erzeugen einer hierarchischen Datenstruktur, hierarchische Datenstruktur sowie Verfahren zum Streamen von dreidimensionalen Objekten | |
DE3815374C2 (de) | Verfahren zum Ableiten eines Reziprokwerts der homogenen Koordinate w zur Verwendung bei der Gewinnung von rationalen kubischen Funktionen für die Bilderzeugung auf einem Sichtgerät und Anordnung zur Durchführung des Verfahrens |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |