computer graphics & visualization Photon Mapping
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Motivation “Today ray tracing is one of the most popular and powerful techniques in the image synthesis repertoire: it is simple, elegant, and easily implemented. [However] there are some aspects of the real world that ray tracing doesn’t handle very well (or at all!) as of this writing. Perhaps the most important omissions are diffuse inter-reflections (e.g. the ‘bleeding’ of colored light from a dull red file cabinet onto a white carpet, giving the carpet a pink tint), and caustics (focused light, like the shimmering waves at the bottom of a swimming pool).” Andrew Glassner 1989
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Overview Generating a Photon Mapped Image: Two pass approach 1.Generate Photon Map “from the light source into the scene” 2.Render Image; e.g. with ray tracing “from the eye into the scene”
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Ray tracing The basic ray-tracing method The basic ray-tracing method – Recursive search for paths to the light source Interaction with matter Interaction with matter Point-wise evaluation of an illumination model Point-wise evaluation of an illumination model Shadows, reflection, transparency Shadows, reflection, transparency Viewpoint Point light source R2R2 R1R1 R3R3 N2N2 N1N1 N3N3 T1T1 T2T2 L2L2 L1L1 L3L3 N: surface normals R: reflected rays L: shadow rays T: transmitted rays
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Light sources Types of light sources Point Spherical Area General
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group From light source into the scene Point light source R2R2 R1R1 R3R3 N2N2 N1N1 N3N3 T1T1 T2T2 L3L3 Photon Map entries
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Excursion: Path tracing So far „recursive Raytracing“ EyeReflection Refraction ReflectionRefraction Reflection Refraction ReflectionRefraction “wastes most computations on little contribution”
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group New idea: „Path Tracing“ Consider only a single path through the tree at a time... and use Russian roulette to compute multiple paths EyeReflection Refraction ReflectionRefraction Reflection Refraction ReflectionRefraction
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Back to Photons N1N1 N1N1 N1N1
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Why path-tracing for photons? Constant photon energy Well defined number of Photons in map Problem: Aliasing
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Aliasing/Noise
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group What to store in the photon map? struct photon { float x,y,z; // position char phi, theta; // incident direction char p[4]; // color } // phi = 255 * (atan2(dy,dx)+PI) / (2*PI); // theta = 255 * acos(dx) / PI;
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group How to store photons? in a list / an array – simple – search operations O(n) in a grid – memory intense – search operations O(1) in a tree / kd-Tree – memory efficient – search operations O(log n)
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group A “balanced” kd-Tree pointList = [(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)] tree = kdtree(pointList)
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group KD-Tree Example
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Pass 1 Shooting: Summary For every light source – For a given number of photons Choose random position (not for point lights) Choose random direction Start path tracing from light source Stop in diffuse or absorbtion cases – If diffuse: store position and direction in list Convert list to kd-tree
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Pass 2 Rendering Photon Map per se can not be rendered
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Gathering
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Radiance Estimate
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Splitting up the RE Direct illumination from LS Specular from caustics and diffuse illumination Diffuse from caustics illumination Diffuse from diffuse incoming illumination
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Splitting up the RE Raytracing: Shadow Caster Direct illumination from LS Specular from caustics and diffuse illumination Diffuse from caustics illumination Diffuse from diffuse incoming illumination
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Splitting up the RE Raytracing: Shadow Caster Raytracing: Monte-Carlo Raytracing Direct illumination from LS Specular from caustics and diffuse illumination Diffuse from caustics illumination Diffuse from diffuse incoming illumination
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Splitting up the RE Raytracing: Shadow Caster Raytracing: Monte-Carlo Raytracing Photon Map: Direct Radiance Estimate Direct illumination from LS Specular from caustics and diffuse illumination Diffuse from caustics illumination Diffuse from diffuse incoming illumination
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Splitting up the RE Raytracing: Shadow Caster Raytracing: Monte-Carlo Raytracing Photon Map: Direct Radiance Estimate Photon Map: Indirect Radiance Estimate Direct illumination from LS Specular from caustics and diffuse illumination Diffuse from caustics illumination Diffuse from diffuse incoming illumination
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Irradiance Cache Instead of computing the Indirect Radiance Estimate, compute the irradiance of a given pixel from the irradiance values of its neighbors; „if possible“.
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Results
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Problems
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Disc Sampling
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group More Images Photons, 100 Photons for radiance estimate, 11 Minutes
computer graphics & visualization Image Synthesis – WS 07/08 Dr. Jens Krüger – Computer Graphics and Visualization Group Realtime Photon tracing on GPUs 0.05 Seconds