05.11.2012 Aufrufe

Entwicklung eines BRDF-Shader-Plugins für Cinema 4d

Entwicklung eines BRDF-Shader-Plugins für Cinema 4d

Entwicklung eines BRDF-Shader-Plugins für Cinema 4d

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Listing 7: C++: Schleife über alle Lichtquellen<br />

1 cam = sd−>vd−>GetRayCamera ( )−>m. o f f ;<br />

2 toCam = cam − sd−>vd−>p ;<br />

3 toCamL . x = ddu ∗ toCam ;<br />

4 toCamL . y = ddn ∗ toCam ;<br />

5 toCamL . z = ddv ∗ toCam ;<br />

6<br />

7 CalcSphericalCoordinates ( toCamL,& theta_s ,& phi_s ) ;<br />

8<br />

9 for ( long i =0; i vd−>GetLight ( i )−>link −>GetMg ( ) . o f f ;<br />

12 toLight = l i g h t − sd−>vd−>p ;<br />

13 toLightL . x = ddu ∗ toLight ;<br />

14 toLightL . y = ddn ∗ toLight ;<br />

15 toLightL . z = ddv ∗ toLight ;<br />

16<br />

17 CalcSphericalCoordinates ( toLightL ,& t h e t a _ i ,& phi_i ) ;<br />

18<br />

19 / / sum up BrdfValue<br />

20 radiance += SampleBrdf ( t h e t a _ i , phi_i , theta_s , phi_s ) ;<br />

21<br />

22 / / BrdfValue ∗ 1 / r ∗ r<br />

23 i f ( bdata . d i s t a n c e f a l l o f f )<br />

24 radiance ∗= (1/Pow( Len ( toLight ) , 2 ) ) ;<br />

25 }<br />

Da die <strong>BRDF</strong>-Werte je nach Datei generell sehr klein sind oder durch den<br />

aktivierten Lichtabfall extrem klein werden können, wird ein Tonemapper<br />

benötigt, der eine effektive Darstellung der Werte überhaupt erst möglich<br />

macht. Die <strong>BRDF</strong>-Werte in den Dateien sind meist sehr niedrig. Das Ergebnis<br />

ist daher in den meisten Fällen eine fast schwarze Oberfläche, auf der lediglich<br />

ein extrem hoher <strong>BRDF</strong>-Wert <strong>für</strong> das Glanzlicht des Materials dargestellt<br />

wird. Abschnitt 2.2 beschreibt die Wahl <strong>eines</strong> geeigneten Tonemappers und<br />

dessen Funktionsweise, der wie in Codeausschnitt 8 implementiert wurde.<br />

36

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!