Übung zu Photorealistische Bildsynthese

Hinweis zu den Praxisaufgaben

Die Praxisaufgaben können freiwillig vorlesungsbegleitend bearbeitet werden. Sie stellen eine sehr gute Ergänzung da und dürften spannend sein. Leistungsfähige Computer mit geeigneten Grafikkarten finden Sie im ATIS-Poolraum. Diese sind insbesondere während der Zeit der Rechnerübung (Donnerstags zwischen 11:30 und 13 Uhr) für Sie reserviert! Bei Fragen können Sie sich gerne an Max-Gerd Retzlaff wenden.

 

Übungsblätter

  • Übungsblatt 1Framework (Raytracer.zip)Referenzbilder — Der Theorieteil wird am 25.4.2012 besprochen. — Update: Nach der Vorlesung vom 26.4.2012 sollten Sie nun alles nötige erfahren haben, um die Praxisaufgaben in Angriff nehmen zu können. Viel Erfolg und hoffentlich Spaß!
  • Übungsblatt 2 — Das Übungsblatt wird am 2.5.2012 besprochen, zunächst wird es allerdings ein klein wenig Praxis geben.
  • Übungsblatt 3Framework (Aufgabe2.zip) — Reines Praxisblatt. Am 9.5.2012 wird zunächst kurz noch die Aufrabe 1b) zur Energieerhaltung der BxDFs vom Blatt 2 besprochen, anschließend wird auf die Praxisaufgaben von Blatt 1 eingegangen und die Lösungen etwas erläutert.
  • Übungsblatt 4Framework (Blatt4.zip) — Reines Praxisblatt. Wir besprechen es am 30.5.2012.
  • Übungsblatt 5Framework (Blatt5_Pathtracer.zip)Referenzbilder — Pathtracing und Importance-Sampling, frisch getestet und mit brandneuen Referenzbildern! Am 6.6.2012 werde ich wegen Fragen während der Rechnerübung zunächst noch einmal kurz auf die CDFs und das Stippling eingehen, anschließend werden die neuen Aufgaben besprochen. Strengt euch an! Viel Erfolg und hoffentlich auch ein wenig Spaß!

 

Parallelisierung des Raytracers

Ein kleiner Tipp, da Sie wohl einen Computer mit mindestens zwei Kernen verwenden werden: Benutzen Sie OpenMP zur Parallelisierung des Raytracers!

Anleitung

In Visual Studio 2010 aktivieren Sie OpenMP wie folgt:

   Menuleiste: Project -> Raytracer Properties
      links: Configuration Properties -> C/C++ -> Language
      dann rechts: "Open MP Support" auf "Yes (/openmp)" stellen


Unter Linux ersetzen Sie bitte die Datei Raytracer/Linux/Makefile durch dieses neue Makefile (Makefile__OpenMP).

Nun muß nur noch die Hauptschleife über die einzelnen Bildzeilen parallelisiert werden. Öffnen Sie dazu die Datei Raytracer\src\Core\Scene.cpp und fügen Sie in der Funktion "void Scene::Render()" vor Zeile 41:
    for( int32_t y = 0; y < h; y++ )
folgende Zeile ein (ohne Leerraum vor der Raute):
#pragma omp parallel for
Desweiteren verschieben Sie bitte Deklaration und Initialisierung von "allocator" in die erste Schleife (also hinter die ursprüngliche Zeile 41), da diese Datenstruktur nun parallel benötigt wird.

Alternativ einfach Scene.cpp durch diese neue Datei (Scene.cpp__OpenMP) ersetzen (neue Version vom 7.5.2012).

 

Raytracer unter Linux

Unter meiner Linuxinstallation (amd64) konnte das Projekt zunächst nicht kompiliert werden, da der Typ "int64_t" bereits in den systemweiten Header-Dateien definiert gewesen ist. Ich habe die betreffende Typdeklaration in Zeile 89 von Raytracer/include/Raytracer.h einfach auskommentiert.