Page heading
Languages and Services
 deutsch 
    You are here menu
    Subpage heading
    Virtual Reality Systems Group / Prof. Dr. Bernd Fröhlich
    Navigation
    Additional Content
    Main Content

    CPU-GPU Hybrid Ray Tracing Framework

    Ray Tracing, als offline Rendering Verfahren, zeichnet sich durch die Generierung qualitativ hochwertiger Bilder aus. Bisherige Ansätze, Global Illumination Verfahren in Echtzeit-Applikationen einzusetzen, zielten auf den Einsatz von Cluster- bzw. superskalaren Multiprozessor Systemen ab, oder versuchten diese Verfahren auf das Streaming Modell der GPU abzubilden.

    Der in diesem Projekt verfolgte Ansatz kombiniert die Vorteile beider
    Programmiermodelle, mit dem Ziel das Rendering von Szenen mittlerer bis hoher Komplexität mit angemessenenen Frameraten zu ermöglichen. Zu diesem Zweck wurde der Ray Tracing Algorithmus konzeptionell in fünf unterschiedliche Renderpasses eingeteilt, die entweder von der GPU oder CPU verarbeitet werden können. Beide Verarbeitungseinheiten laufen verschränkt zueinander, und ermöglichen somit eine effiziente Ausnutzung der verfügbaren Ressourcen.

    Abbildung 1: Eine Szene mittlerer Komplexität mit 500.000 Dreiecken und ca. 10% Reflektivität. Bei einer Auflösung von 1024*768 kann eine Bildwiederholrate von 8fps erzielt werden

    Konzept

    Abweichend von dem von Whitted im Jahr 1980 beschriebenen rekursiven Verfahren, kann Ray Tracing auch als iterativer Prozess verstanden werden. Der Beleuchtungsanteil eines jeden Pixels ergibt sich aus dem verwendeten Beleuchtungsmodell und den einzelnen Strahlenarten, die sich wiederum über alle betrachteten Pixel in Strahlengenerationen zusammenfassen lassen.

    Primärstrahlen, also Strahlen der ersten Generation, nehmen hierbei den größten rechnerischen Aufwand ein. Ihre Abarbeitung kann, ebenso wie die Bestimmung der primären Schattenstrahlen, gänzlich auf der GPU erfolgen, wobei die primären Schattenstrahlen mittels des Light Space Perspective Shadow Mapping Algorithmus approximiert werden. Dabei auftretende Aliasing-Artefakte an den Schattengrenzen werden von der GPU mittels eines Blurring-Filters markiert, und von einem auf der CPU implementierten, effizienten Ray Tracing Algorithmus weitestgehend neutralisiert. Nachfolgende Strahlengenerationen, im wesentlichen Reflektions- und Refraktionsstrahlen, werden ebenfalls von der CPU abgearbeitet.

    Die aus diesem Ansatz resultierenden fünf Renderpasses sind in Abbildung2 dargestellt. Nach Abschluss des finalen, fünften Renderpasses enthalten die darzustellenden Pixel die korrekten, aus der Betrachtung aller Strahlgenerationen resultierenden, Intensitätswerte.

    Abbildung 2: Die mittleren Bilder zeigen den Inhalt der RGB-Kanaele und die unteren Bilder den Inhalt des Alpha-Kanals. Der Ueberwiegende Teil der Renderpasses wird von der GPU abgearbeitet.

    Implementierung

    Entwickelt wurde das Framework komplett in C++ für die Linux-Plattform, wobei OpenGL als Grafik-API diente, und GLSL als Shading-Language zum Einsatz kam. Als Compiler standen die gnu compiler collection und der Intel C++ Compiler zur Verfuegung, der aufgrund einer um bis zu 30% hoeheren Performance auf nativen Intel-Plattformen zu praeferieren ist.

    CPU-basierte Vektor- und Matrixoperationen wurden im Framework mittels der auf Intel- als auch auf AMD-Prozessoren vorhandenen SIMD-Erweiterung (SSE) durchgeführt. Mittels der externen Bibliothek boost wurde das Multithreading und Speichermanagement realisiert. Die an der Bauhaus-Universiaet entwickelte libGLSL vereinfachte den Einsatz und die Implementierung der Vertex- und Fragment-Shader.

    Ergebnisse

    Wie Abbildung 3 illustriert, erwies sich der CPU-basierte Ray Tracing Algorithmus als limitierender Faktor, während die GPU weitestgehend suboptimal ausgelasted war. Aufgrund seiner Multithreading-Faehigkeiten zeigte das entwickelte Framework gute Skalierungseigenschaften, und obwohl die SSE-Einheiten der CPU ausschließlich bei der Vektor und Matrix-Arithmetik zum Einsatz kamen, wurden Performance-Gewinne von ca. 10% beobachtet. In Abhängigkeit von der Größe des Filter-Kernels, konnten Aliasing-Artefakte größtenteils eliminiert werden, wobei der Schwerpunkt entweder auf Qualität oder Geschwindigkeit gesetzt werden konnte.

     

     

     

    Abbildung 3: Die Renderzeiten der fünf Renderpasses für eine Szene mittlerer Komplexität bei einer Auflösung von 1024*768 Pixeln und unterschiedlichem Anteil an Sekundärstrahlen. Die CPU kann als bottleneck identifiziert werden.

    Abbildung 4: Links eine Testszene ohne Kanten-Nachsampling auf der CPU, rechts mit Kanten-Nachsampling. GPU-seitig kam ein 5*5 Blurring-Kernel zum Einsatz.

    Personen

    Projektleiter

    Projektteilnehmer

    • Prof. Dr. Bernd Fröhlich
    • Stephan Beck
    • Andreas-C. Bernstein
    • Daniel Danch

     

    Referenzen

    • CHRISTEN M.:
      Ray Tracing on GPU
      Master's thesis, University of Applied Sciences Basel, 2005.
    • CASSAGNABERE C., ROUSSELLE F., RENAUD C.:
      Path tracing using the ar350 processor
      In GRAPHITE '04: Proceedings of the 2nd international conference on Computer graphics and interactive techniques in Australasia and Southern East Asia (New York, NY, USA,2004), ACM Press, pp. 2329.
    • HAINES E.:
      Bsp plane cost function revisited
      ACM TOG 17, 1
    • HAVRAN V.:
      Heuristic Ray Shooting Algorithms
      PhD thesis, Faculty of Electrical Engineering, Czech Technical University, Prague, 2000
    • JÖRG SCHMITTLER, INGO WALD P. S.:
      Saarcor a hardware architecture for ray tracing
    • PURCELL T. J., BUCK I., MARK W. R., HANRAHAN P.:
      Ray tracing on programmable graphics hardware
      In SIGGRAPH '02: Proceedings of the 29th annual conference on Computer graphics and interactive techniques (New York, NY, USA, 2002), ACM Press, pp. 703712
    • STAMMINGER M., DRETTAKIS G.:
      Perspective shadow maps
      In SIGGRAPH '02: Proceedings of the 29th annual conference on Computer graphics and interactive techniques (New York, NY, USA, 2002), ACM Press, pp. 557562
    • SCHMITTLER J., WOOP S., WAGNER D., PAUL W. J., SLUSALLEK P.:
      Realtime ray tracing of dynamic scenes on an fpga chip
      In HWWS '04: Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware (New York, NY, USA, 2004), ACM Press, pp. 95106.
    • WALD I.:
      Realtime Raytracing and Interactive Global Illumination.
      PhD thesis, Computer Graphics Group Saarland University Saarbrücken, 2004.
    • WIMMER M., SCHERZER D., PURGATHOFER W.:
      Light space perspective shadow maps.
      In Proceedings of Eurographics Symposium on Rendering 2004 (2004)
    Content signature