˘ ˇˆ - w3-o.cs.hm.edunischwit/diplom/celik_vortrag.pdf6,)( ˘ˇˆ (-./ ˜ ˝ 0 # 0 $ 1 ˆˇ˘ ˇ...
TRANSCRIPT
1
�������������� ������������ ����� ������
�������� ������������������ � � �������������
������������������������
��
���� ����
2
!������ ��������������� ��
� "� ����� �
� #���������$�� �����
� ����������� ������� ����������������������� �������������������������������� ������������������� ������������ ������������� ��
� %��������������$&
� ������� ����� ������%��������
� '������ ����� �
Programm RadiosGL:hierarchische Radiostiy-Verfahren vonJason Rohrer 2000, Studienarbeit an Cornell Uni Ithaca/NY
3
()�"� ����� �
� *��������
���������� ��!�������������"������������������� #�$ %�����������������&���� ��������������'� �(��������
������)���������
*������������������ ����� ��������+��",������������������������� ���-�����������.%��� ���
������������� #������/������ ���* ����
0���������������������� ������������(���������������'����������������������������1�������� #������������������������%��������������*��� ���
Motivation:
- trotz zahlreicher Optimierungen nicht ausreichend
- neue Generation der Grafikhardware:programmierbare Grafikprozessoren (Vertex- / Pixel-Shader)
4
()�"� ����� �
� '����� ��+����������+�����
2����������������������������-�������������������3������������������������� �����4��� ������������������������� �����������������
�� ���� ��������$ �������5 ����6�����������
2��������������$ 7����5)�������� �����5"2�������
���������������'��������������'���������$
89 /����������������������:9 ����������������5.9 ��������2��������������
5
,)�#���������$�� �����
6
,)(������������������
� (-./��� ������0�#���� �0�$��� ���� � ��1����������������-�������������� ������ #���������� ����� ������������7��� �!����
� 1������ ����������� ����1������ ��������� 2� +�����������1������,
���������5������������1������ ��������� 2 +��������������1������,
����������� ����������������������������������5����
� ����2 �������������������� ��������7��� �!�������������#���������� ����� ������$
� � ����������������'� ��������������)�!������������� ����������*��������+ ���������;����������*�������� ���,� �����)�!����������5������������� ���������<���������� � ��������������������������������������������������
Radiosity � basiert auf Gleichgewicht zw. zugeführter Strahlungsenergie von Lichtquellen undabsorbierter Strahlungsenergie durch alle Oberflächen
� Verfahren berechnet spezifische Beleuchtungsstärke jeder Fläche� Simulation der Auswirkungen der Lichtemission und –reflexion an diffusen Oberflächen� Energieerhaltung in einer geschlossenen Umgebung� gesamte von Fläche abgegebene Energie = Strahlung / Radiosity
Strahlungsenergiebilanz � es werden weder Energie zugeführt noch abgeführt � abgeschlossene Umgebung
es besteht ein Gleichgewicht zw. einfallender Lichtenergie und absorbierter/reflektierter
Lambertsche Strahler/Reflektoren � ideal diffuse Reflexion/Strahlung = Lichtintensität unabhängig vom Betrachterstandpunkt
lokale Verfahren � Flat- / Gouraud- (interpoliert Intensität) / Phong-Shading (interpoliert Normale)globale Verfahren � Raytracing (Strahlverfolgung) / Radiosity (Energiegleichgwicht)
7
i
n
jjijii EFBpB =− �
=1
= ���������
� -�$ �������������5��������+*������,���������� ��+)�!���,
= ����������$���� �
�������������������� ���������������������
������ ���� ��!���� ������ ������������)��� �������$
������������������������� ����>��������$
*�������������"� ������$��
+&� ������$���� ��������,
i
jn
jjijiii A
AFBpEB �
=
+=1
����������+ ����
-��<-? ��������������)�!�����������?*� *������������)�!������� �� ��&������� � ���������)�!�����)?� )��� �����$�/��������*���������������)�!����?��� ���#�������'� <'? ��(��� ����)�!���������������?� '� ��������)�!������������� ���
jijiji FAFA =
�=
+=n
jjijiii FBpEB
1
Radiosity-Gleichung: = FINITE-ELMENTE-Methode� Einteilung ein einfache geometrische Objekte (Polygone)
Radiosity eines Patch i besteht aus (Strahlung vom Patch i, die er sendet): � Summe abgestrahltes und reflektiertes Licht
der Eigenemission Eidem Reflexionskoeffizenten pi mitgewichteten Anteil der verschiedenen Bj mal den zugehörigen FF
reflektierte Licht:Summe des einfallenden Lichts multipliziert mit Reflexionsvermögen
einfallendes Licht:Summe des Lichts, das alle Flächen der Szene verläßt, multipliziert mitLichtanteil der eine Flächeneinheit des empfangenen Flächenelementserreicht (Bj*Fji*Aj)
diskrete Flächenelemente:endliche Größestrahlt über gesamte Fläche gleichmäßig Licht ab und reflektiert Licht� opake, diffuse Lambertsche Strahler und Reflektoren
8
3����� ����
= 3�4$ '����������*�������+5����,>���������'? �������������������������'� �������
= "��� ����� 2
)�����������!�����������������������+5����� ��������������� ���,
�����!�������������7��� �!������������� ���
���!���������'�����������7������������ ������*����������������������������
��������������
= ��������� ���������������3�5� �� ������
ijij
A A
ji
iij dAdAH
rAF
i j
� �=2
coscos1
πθθ
�'�<�'? )�!�������������������)�!�����������?� '�����������)�!����� ���������@�<@? A������ �9�)�!�������������������������������� �����������)�!�����? �������>�������������������������
Formfaktorrepräsentiert Energiebeziehung zwischen den Patches� also Energieaustausch zw. 2 Flächen in geometrischer Hinsicht
Anteil der ankommenden Energie hängt vom � Winkel zwischen den Flächennormalen (relative Ausrichtung)
� Abstand der Flächen zueinander (Entfernung)� Größe der Fläche von Aj ab� und den Verdeckungen
Formfaktor-Gleichungals Flächendurchschnitt definiert (Patch-zu-Patch)
� Betrachterstandpunkt unabhängig, da nur Geometrie-Abhängig� Neuberechnung der FF nur notwendig bei Neu-Anordnung der Szene� Sichtbarkeitsbestimmung notwendig
durch Radiosity-Voraussetzung (Energieerhaltung in geschlossener Umgebung)besitzen FF bestimmte Eigenschaften:
� Anzahl FF quadratisch zur Anzahl der Patches� Summe aller Fij einer Fläche i <= 1� für jede Fläche i gilt : Fii = 0 , d.h. transportiert keine Energie auf sich selbst� FF der Flächen i und j sind nicht kommutativ, d.h. Fij ungleich Fji� reziproke Beziehung zwischen Flächen i und j, d.h. Ai Fij = Aj Fji
9
3����� ����
= 1��� � �������� 2
Analytische Methoden :- für einfache Elemente (Element-Element) + differentielle Flächen- Voraussetzung: vollständig Sichtbar
� diff. Fläche auf Kreis� diff. Fläche auf Polygon� FF zwischen parallelen Rechtecken� FF zwischen senkrechten Rechtecken
Numerische Methoden :- Gauß-Verfahren
� FF-Berechnung (2-fach Integral), Stützpunkte sind:Punkt-Paare (bei Fläche-Fläche-Integral) oderPunkt-Vektor-Paar (bei Fläche-Raum-Integrale)
- Hemisphäre-Sampling� aufwendige Sichtbarkeitsbestimmung� FF von Patch i zu allen anderen Patches wird benötigt
- einmal Sichtbarkeitsberechnung durchführen- FF = Aufsummierung der differentiellen FF
* NUSSELT-Analogie : FF von dAi auf Patch Aj = proportional zur Fläche der Doppelprojektionauf die Kreisscheibe
� Fläche auf Einheits-Hemisphäre = Raumwinkel ( dw = cos_wj / r2 )� Projektion auf Grundfläche = ( cos_wi/pi )� somit : ( cos_wi * cos_wj ) / ( pi * r2 )
* HEMICUBE � Kugel durch Würfel ersetzen, Sichtbarkeit über z-Buffer* SINGLE-PLANE � von Sillons: statt Würfel ein Fläche* Monte-Carlo-Raytracing: Umkehrung der Nusselt-Analogie
- Area-Sampling* Monte-Carlo-Integration � Punkt auf Aj bestimmen und FF-Teile aufsummieren* Uniforme-Flächenunterteilung � Einteilung in Teilflächen und dann approximieren* Hierarchische-Unterteilung � Fläche wird adaptiv unterteilt, d.h wenn Änderung groß ist
( bei hohen Gradienten wird öfter unterteilt )
10
3����� ���� �6 ��������+ 5��� �7
= ����������*�����2
8�������+ ������$��3�4 9�3�+�+4
)��� ������)�? ���������������'�������������?� �������)�!����'? ��
��������� �!����������*���������������������������������� �'�
Nusselt-Analogie (geometrische Intepretation des FF) :FF als Verhältnis der Basisfläche einer Halbkugel zur Orthogonalprojektion der auf
die Halbkugel projizierten Fläche( 1. Projektion die aus F_i sichtbaren Teile von F_j auf Halbkugel mit rad = 1 um dFi
2. Projektion dieser orthogonal auf kreisförmige Grundfläche der Halbkugel3. Division durch die Kreisfläche )
� Projektion auf Halbkugel entspricht Raumwinkel dw= cos_j / r²� Projektion auf Grundfläche der Halbkugel = multiplikation mit cos_i� Division durch Flächeninhalt des Einheitskreises = pi im Nenner
Fij wird durch FdAiAj approximiertdAi liegt in der Mitte der Fläche i
Problem bei der Energieberechnung:- abgestrahlte Energie ist richtungsabhängig
d.h. es muß bekannt sein, welcher Anteil der Kugeloberfläche dem entsprechenden Flächenstückenzugeordnet ist
11
3����� ���� �6 ��������+ 5��� �7
= ��������*����� +�������������9���9�BCD�,
���?��������� �*������������#� ��
�����#� ������������������+����������������E�������� ,
� ?����E������� �����������9������������������������
� ��?�����E������&������������%����)��� ������+�:3�� ,
� 3�+�+4 9�;�:3��
� :3� #��E�������$���
rp
1cos =θ
r
z pi =θcos
122 ++= pp zyr
222 )1( ++∆
=∆pp
pp
zy
AzF
π
rp
1cos =θ
ri
1cos =θ
122 ++= pp yxr
222 )1( ++∆=∆
pp
pyx
AF
π
Ar
F pip ∆=∆
2
coscos
πθθ
��������#��2 ������������2
Hemicube-Methode:zur numerischen Berechnung wird Halbkugel durch Halbwürfel mit :
Zentrum im UrsprungNormalvektor in z-Achse ersetztOberseite des Würfels parallel zur Fläche
Formfaktoren werden in einer geschlossenen Umgebung approximiert
Rasterung � Pixel-Aufteilung und jedem Patch wird ein Pixel zugeordnet
Delta-Formfaktor � Beschreibt den Beitrag zu dem gesamten Formfaktor
Für eine Fläche Fi gilt � Summe aller Fij = 1
Formfaktor Fij wird approximiert durch Aufsummierung der einzelnen Delta-FF� FdAiAj � �Delta-FF
Qualität der Approximation abhängig von der Hemicube-Auflösung (Rasterung)
wegen der Symmetrie des Würfels werden nur:� 1/8 der Oberseite� und ¼ einer einzigen Halbseite der Delta-FF berechnet
12
&<�� �����$���� ���������
= ����������$���� �
= *����� 2
� ��������5(����$ ���F*������������� ������+�'� �����7+��G ,�, �� �����������������������(���������������)"551'/�2H1������ �� ��������
� ������������ �����$
6������<����F�������$ 5(����������E�������������������� ������������������������ ����#�������������� �������"��������+$����� ��*�����,
�������������� ������� +��������,$ ��������F�������*���������������� �������"��������+����� ��*�����, �������������-����������� ���(�������E��������(������� ���������������
���
�
�
���
�
�
=���
�
�
���
�
�
���
�
�
���
�
�
=−
−−−
−−−
−−−
�=
nE
E
E
nB
B
B
nnF
np
nF
np
nF
np
nFpFpFp
nFpFpFp
i
n
jjijii EFBpB
.....
..................
2
1
2
1
121
222221
211
111211111
1
Durch Lösen des Gleichungssystems werden � Energieverteilung der Flächen berechnet, d.h. die spezifische Ausstrahlung der einzelnen Patches in der Szene
lineares Gleichungssystem: K*B = E mit Koeffizientenmatrix K = 1-pF
Eigenschaften:- abhängig von K- diagonaldominant: � | kij | < | kii | mit i � j- regulär: es existiert eindeutige Lösung
FULL-MATRIX-Methode = zuerst alle FF berechnen (= n²), dann GS vollständig lösen und dann die Werte dargestellt �Speicheraufwendig
GATHERING-Methode =Radiosity von Patch i wird durch einsammeln der übrigen Patches j in der Umgebung bestimmt
SHOOTING-Methode =jeweils energiereichste Patch ist Sender und verteilt seine Energie an die Empfänger in die Umgebung
13
&<�� �����$���� ���������
= %��������������� ��� ��������� +������CC, �����������5(�������� �����
��������� ����?����������������������������������� +�������������,�������������
*�� !�����+��������,���������
����������?������������ )��� �����������������
�� ������������������� �������� �>��������� ��������������*�������������������������
���� �������������
��7��*��2*I�*)20*1*0/I)J�I*20I��77/20�I�'/��K <<��/'�/202/2'52�2*�"0�
∆-��L�*� <<�%� ���� � ��������������� ��������������-��+���������,���������� �-��L�*� <<������������������� ��������� �
<<��'"�/���5*2)*�������������������������
���������������������������� ��������&�����������������*�������+�∆-�'� ,���������)��� ������)�? #�������� ��>� 9-9�������������������������� #��?�������������������� ?
∆����L��? M�+�∆-��M)�? ,�M�+'? <�'�,� <<�������������������� �∆-? L�∆-? ;�∆��� <<�%� ���� ����(���-? L�-? ;�∆��� <<�������������������� ?����(���
��� ��∆-��L�N <<�����������#�������F ��������� ��������������O�
Progressive Refinement (Cohen 1988) � Variante des Southwells-Verfahren
ZIEL: nach jeder Iteration Rückschluß über gesamte Beleuchtung und in jeder Iteration werden nur n_FF berechnet
in einer Iteration wird eine Zeile der Matrix gelöst
1. Patch i mit größter zu verteilenden Energie bestimmen ( = Shooting-Patch), anfangs Lichtquellen (dBi*Ai)
2. für Patch i � alle Fij zu allen sichtbaren Patches j (= Shooting = Patches auf die die Energie verteilt wird) bestimmen
3. noch vorhandene (unverteilte) Energie dBi berechnen und gemäß FF zu den Energien der anderen Patches j addieren
4. gehe zu schritt (2), solange bis Patch i keine Energie zur Verteilung mehr hat
Nachteil: da jeweils das Shooting-Patch mit der größten Energie seine Radiosity verteilt � kann ein best. Patch mehrmals als Sender vorkommen
- d.h. entsprechend nochmalige Berechnung der n-Formfaktoren- d.h. es erfordert mehr als n-Iterationen bis jedes Patch mind. ein mal seine Radiosity verteilt- d.h. mehr als n-Iterationen bis Energiegleichgewicht erreicht wird und GS konvergiert
� somit kann u.U. die Lösung länger dauern als bei der FULL-Matrix-Methode
Verfahren arbeitet mit festgelegter Patch-Auflösung� Erweiterung des Verfahrens durch ein Refine-Kriterium
- Grad der benötigten Patch-Unterteilung wird in der Algorithmus-Ausführung ermittelt und die Szene
dem entsprechend unterteilt
- durch die Annahme: „Radiosity auf allen Patches ist konstant“ (constant radiosity assumption) � Unterteilung nur dann, wenn diese nicht mehr hinreichend erfüllt ist
- Patch-Unterteilung erfordert Neuberechnung aller vorhergegangenen Iterationen (da sich auch die Eigenschaften dieses Patches sich geändert haben)
� hierarchische Radiosity integriert diese Erweiterung
14
��������� ��������������������
= � ���������� ������� ������ �����������=����
���������A��� �������������)�!���������������*��������������������+���������9��9�BCD�,�$��
#��������������*�������������$
#������������������������*�������������$
)(41
4321 BBBBBe +++=
ea
a
BBB
BB
−==
1
1
2eb
cab
BBBB
BBBBB
−+=
+=+=
21
21 )(21)(2
1
������� #��-� <�-� <�-� ������� #��-� <�- <�-�
)(21
1 ea BBB +=
������� #��-:�<�-.�<�-P
Berechnung der Vertex-Radiosities von den Patch-Radi osities
Aus der Radiosity der Flächen werden die Strahlung für die Eckpunkte interpoliert� durch Mittelung der Radiosities der an den Eckpunkten angrenzenden Flächen
Radiosity der inneren Eckpunkte � ist Durchschnitt der Radiosities der an die Eckpunkte angrenzenden Patches
Radiosity der am Rand liegenden Eckpunkte � WICHTIG: nur angrenzende Patches berücksichtigen
Bc = B2 = 2*B2-Be | Bi = B4 = 2*B4-Be | Bg = B3 = 2*B3-BeBd = ½(Ba-Bg)= ½ (B1+B3) | Bf = ½ (Bc+Bi) = ½ (B2+B4) | Bh = ½ (Bg+Bi) = ½ (B3+B4)B2= ½ (Bc+Be) | B3 = ½ (Bg+Be) | B4 = ½ (Bi+Be)
15
����������+���������
"����������������������
)��� �����������������
������������������(���
��������������
%������
Q��������)����<-����������
Q��������-���������<A�����
Q�����������������
1. Unterteilung der Szene in endliche Anzahl diskreter Flächenelemente2. Formfaktoren berechnen3. Gleichungssystem lösen4. Berechnung der Eckpunkt-Farben5. direkte Darstellung mit Interpolation auf Hardware (Bildschirm)
bei Veränderung der Beleuchtung:- Koeffizientenmatrix (FF + Reflexionskoeffizient) unverändert, rechte Seite E
verändert� Gleichungssystem muß neu gelöst werden
bei Veränderung der Oberflächeneigenschaften:- Koeffizientenmatrix ändert sich, FF muß nicht neu berechnet werden
� Gleichungssystem muß neu gelöst werden
bei Veränderung der Geometrie:- FF ändern sich und damit auch die Matrix
16
� �� ��� ��� �����)�(-->?-(
� ������� ��@���� �+�������������������� ���� 2
-��������� ����� /�������� �����
� ����$ ���������R���/�������������������� ���������� ������������R���/���-!���� �������5����$�))�������������������� �������������������� /����������������������������� ����������������������� '����������� #���� ��������������������S�������� �������
,),��������������������
Bottom-up-Verfahren: weit entfernte Körper werden zu einem zusammengefasstTop-down-Verfahren: Anfang mit dem größten Körper und dann rekursive Unterteilung dieser
Hierarchische Radiosity :- motiviert durch N-Body-Problem
� welche Kraft wirkt bei N Planeten auf jeden einzelnen Planeten?� N(N-1)/2 = Interaktion O(N²)
durch Clusterbildung wird Interaktion auf O(N) reduziert (Planeten ab einem best. Abstandwie ein Planet betrachten)
ZIEL:Reduzierung der Interaktionen zwischen den Elementen
� Reduzierung der Anzahl der FF-Berechnungen
� Energieaustausch auf verschiedenen Ebenen im Patch-Baum: jeder Knoten kann empfangen oder senden (nicht nur Blätter)
- Unterteilung nur dort, wo es erforderlich ist (Refine-Kriterium � BF)
- definiert Level für Energieaustausch durch Kombination zwischen Sender-/Empfänger-Polygon � Links
- berechnete FF werden zusammen mit Sichtbarkeitsinformation in den Links gespeichert � dadurch wird Neuberechnung vermieden)
- in einer Iteration wird jeweils alle Patches bearbeitet � dadurch wird in erster Iteration gesamtes direkte Licht verteilt und
nach der zweiten Iteration das gesamte einfach reflektierte Licht ….
� nach wenigen Iterationen ist die konvergierte Radiosity-Lösung vorhanden- Unterteilung und Radiosity-Verteilung werden getrennt, so daß explizite Neuverteilung
aufgrund einer Patchunterteilung nicht mehr notwendig ist
17
�������������������
= 5������������������'���������� �������������������5�������������
= +���������$
8,�������������������������#����������������$ 5+�>?,�����
:,��������������������������������������$ �����+,
�,���� ���$ 5������ ��� �����������# ���� �����?�>������������������# ��
�,��������$ ��������������*�������#����?�����5����+����������,
�,����������$ �� �������S������A���� ����� #������������
LINKS :Links sind Gather-Links, d.h. Radiosity wird entlang der Links eingesammeltGathering statt shooting � erst alle Links bilden, dann Radiosity entlang dieser einsammeln
1) top-level-link (Initial-Link):� Startverlinkung generieren zw. allen gegenseitig sichtbaren Patches
(Root-Knoten miteinander verbinden)
2) lazy-link (modifizierte Startverlinkung):� Top-Level-Link nur dann, wenn Energiebeitrag relevant ist
� Holzschuch et al. (1994): zw. 65-95% der initialen Links wird nicht unterteilt, nicht alle Links tragen wegen ihrer Energie einen relevanten Beitrag für die Berechnung bei Zusatz-Kriterium epsilon_linkfür top-level-verlinkung (Energiebeitrag groß genug?)
3) Reducing-the-number-of-links:� Abbruchkriterium epsilon_reduce für die Flächenverfeinerung
refine-Kriterium� Überprüfung der 4 FF der Kindpatches mit Parent und der Abweichungen
untereinander für die Unterteilung
� somit ist Methode unabhängig von der transportierten Energiemenge (Vorab-Überprüfung)
18
�������������������
= ����������� #�������$
= ����������� #��������$
= ����������� #����������$
�����+,����������������������������������
#���������5����$ ������+5,T#���������/��5����������� ��������+�>�N,#���������5����$ �� ���+5>�-)U>�'U ,
������+�5����M5�,5��9-I���� ;L�5��9? M�5��9?9-I����� M�5� I�? M�5��I�?5�?9-I���� ;L�5�?9� M�5�?9�9-I����� M�5� I?� M�5��I?�
���������������+������ M��>��������-I���� ,-I�� L�N���������� ��-����
-I�� L���* ;���-I���� ;��-I���������
-I��� L���-I���� ;��-I����#���������S����������������� �
-I����� L���������+��>�-I���,-I�� ;L�-I����� M�+������ <�������,
��-I����� L�-I��������+�-I�� ,�
19
,)A�%���������������$%B�
� %���������������$%B +������� ���������� "���,�L�����&������ +����&��������,�;�)������������� +)���������������,
� ��������'�����������������������3������S������4
� ����&������$ 1����������������������& +/���� ��������>�7�?���������������>�V�,
� )�������������$ 1������������������)���������+��&�� ����>�/�&���������>�V�,
- Erste programmierbare GPUs im Jahre 2001
- Ab 2002 erweiterte GPU-Fähgikeiten:Branching-Operationen / Fliesskomma-Arithmetik / Berechnung von
Texturkoordinaten
- Heutige GPUs: haben feste und programmierbare Pipeline-Stufen
Feste Pipeline-Abschnitte :Primitive Assembly (Clipping, Culling, …) / RasterizationFramebuffer Operations (Alpha-Depth-Stencil-Tests) / Storage
Prog. Pipeline-Abschnitte :Per-Vertex-Operations (Transformation, Beleuchtung,…)Per-Fragment-Operations (Texel-Zuweisung, Nebel, Alphablending….)
Stream-Kernels � Eingabestrom vom vorherigen Abschnitt wird sequentiell weiterverarbeitet und über I/O-Register weitergereicht
Vertex-Shader: Transformation + Beleuchtungsberechnung von Eckpunkten (T&L transformation and Lighting)
Fragment-Shader: Texturverarbeitung + Pixelfarben
20
,)/����6C����� $�����D7
� ����02%2'����E������������������1������ ������������� ��� �����!����������5����������������� #��������"��������������
� '����$ ��� �����2���������� ����������!������)��&������!��������������������� ��� �����-���� ������� *��������������������������
� ��/������ �����������������-������������+���������� '�2�<���)H,� �������������������������������� � �������������������'������������� �����&����������������!����������������
� ����&������ ������ �����&*���� +��������>�0������>�)����>�5������������>V9,� )������������� ������ �)�������*�����+/�&���>�-����������>V9,
-Im Jahre 2001 Microsoft HLSL (High-Lever-Shader-Language)-Cg ursprünglich „C for Graphics“ � jetzt umgeändert in „C for GPUs“
-Einfache Integration: Compiler sitzt auf den API´s / partielle Integration = Kombination von Cg mit Assemblerund statischer GPU / unabhängig von der Anwendung
-Unabhängigkeit von anderen Komponenten: 3D-API-unabhängig und seperate Programmierung auf 2 Ebenen-Erweiterbarkeit der Sprache: alle in C und C++ enthaltenen Keywords sind auch in Cg reserviert
-SPRACH-SYNTAX:� Konnektoren = bilden Datenfluß in der GPU, sind Eingänge und Ausgänge zwischen den Recheneinheiten
(sind wie erweiterbare C-Strukturen)� Profile = bestimmen über nutzbare Features von Cg (Datentypen, Strukturen, Funktionen)� uniforme Variablen = als Inputkonnektor in den Eingangsvariablen, anzusiedeln in den konstanten Registern
der Prozessoren, NICHT TEIL des Datenflusses� Register-Bindung = aus Cg wird Assembler generiert und um Zusammenhang Register - Cg Variablen nicht verloren
geht Variablen an Register anbinden, Variable wird einer Registerkomponente gleichgesetzt
-Vertex-Programm : Input: Vertex � programm-spezifische Manipulationen � Assemblierung und Rasterisierung� Output : transformierte Vertices
-Fragment-Programm : Input: transf. Vertex � programm-spezifische Manipulationen � Framebuffer Operationen � Framebuffer � Output: Pixel
-Compiler : 2 Compilierungsarten: run-time / klassische application-development Compilierung-Run-time-Compilierung: Vorteil � hardwarespezifischer optimierter Assemblercode (BACK-END)-Application-Development-Compilierung: Vorteil � benutzerdefinierter profilspezifischer Assemblercode-2 Bibliotheken: 1) Cg-Runtime-API : aus 2 Komponenten
� a) Interface für Cg-Compiler und dessen Ausgaben : unabhängig von 3D-API� b) Interface für 3D-API und ermöglicht Anbindung von Cg-Programmen an 3D-API-Zustand
und Parameter-Übergabe
2) CgFX: Erweiterung für diverse CPU-Funktionen, API- und Spracherweiterungen,Funktionen Multipass-Rendering-Effekte und Verwaltung von Assembler-Shader-Programmen
-Register: konstante (read) / temporäre (read/write)adress-register (für relative Adressierung) / predicate-register (boolsche Werte für Flußsteuerung)textur-sample-register (für Texturspeicherzugriff)
21
A)�%��������������$&
� ���������������������������� ����6������������:NNN
� %� ����E���� � �� 2
� 3� ��� ������������������$
- RadiosGL entwickelt im Rahmen einer Studienarbeit an der Cornell Universität in Ithaka/New York- Implementation in C++
- Package aus drei Komponenten: Utilities (MakeHemicube, Vrml2mdl)Renderer RadiosGLViewer (RadiosGLView)
Funktionsweise:
1) mit Grafikprogramm Szenenbeschreibung in Vrml1.0 generieren und in Patches und Lightingabspeichern
2) mit Vrml2mdl Applikation eine MDL-Datei (Szenendescriptor) für den Input von RadiosGLgenerieren(mdl-Datei = strukturierte ascii-Datei mit des Objekteigenschaften (PatchVertices mitFarbe+Beleuchtung)
3) Hemicube-Daten erstellen mit vorgegebener Auflösung (hc-Datei = binär-Datei mit den Delta-FF)
4) mdl-Datei und hc-Datei und Parameter für das Rendering in RadiosGL als Input eingeben � Radiosity-Berechnung� Ergebnis wird in ein RGL-File herausgeschrieben
RadiosGL: echtzeitfähiger Kommandozeilenbasierender Renderer für Szenen mit DreiecksflächenRadiosGLView: OpenGL basierend, echtzeitfähiger RGL-File-Szenen-Viewer
22
/)�������� ����� ��%�������
� 3� ��� ������������������$ � ����������+�����2
23
������� ����� ��%�������
� ���� ����������� �$� %��������+�����2
� A��*�����$
24
F)�'������ ����� �
25
26