Parallel Spectral Renderer Computer Systems Lab Presentation Stuart Maier
Abstract Computer generation of highly realistic images has been a difficult problem. Although there are algorithms that can generate images that look essentially real, they take large amounts of time to render. This project explores ways of distributing that onto multiple computers, in order to speed up the process.
Graphics Background Many different algorithms Most unrealistic Real-life based algorithms developed Ray tracing Path tracing Spectral rendering
Ray Tracing Rays shoot through screen Rays seek light sources Phong shading Image from Wikipedia.
Path Tracing Rays don't seek light Rays can: Probabilistic Find light Be absorbed Be reflected Be transmitted Probabilistic
Spectral Rendering Complete color space RGB part illuminated Many different colors can create the same RGB value Image from Wikipedia.
Parallel Background BOINC Splitting data Multiple independent clients No interclient communication Clients barely talk with server Splitting data Pixels are divided up among clients
Design Written in C with MPI and OpenGL libraries Currently implements a parallel spectral renderer with spectral colors Six components Main Renderer Object Spectrum Vector XML
Main Runs the entire show Talks with MPI and OpenGL Starts up the renderer Passes off to the Renderer component
Renderer Holds information about the scene Renders the scene Performs the high-level ray calculations
Object Information about objects Calculates ray-object intersections
Spectrum Contains the spectral colors Can retrieve these colors Converts spectral colors to RGB ones for display
Vector Generic library Creates 3-D vectors and processes them Used for spatial calculations
XML First component called after Main Reads in the scene file Passes off information to Renderer
data.xml <scene sampling="10" depth="4" width="256" height="256"> <camera x="0.0" y="0.0" z="0.0" /> <screen> <origin x="-1.0" y="-1.0" z="1.0" /> <width x="2.0" y="0.0" z="0.0" /> <height x="0.0" y="2.0" z="0.0" /> </screen> <object type="sphere" radius="0.2" index_refraction="1.5"> <origin x="0.0" y="0.0" z="1.0" /> <emmitivity color="black" /> <diffuse color="black" /> <reflectivity color="black" /> <refractivity color="white" /> </object>
Results
Analysis Spectral Renderer works in parallel No Cornell Box yet Grainy Large amount of work
Cornell Box Reference scene Spectral colors Not tested yet
Parallel Speedup Some speedup on multiple computers Unequal work distribution Network lag
Questions?