190 likes | 388 Views
Using Interactive Ray Tracing for Interactive Global Illumination. Computer Graphics Lab Saarland University, Germany http://graphics.cs.uni-sb.de. Interactive Global Illumination - Goals. Support for all relevant features Complete direct & indirect diffuse illumination
E N D
Using Interactive Ray Tracing forInteractive Global Illumination Computer Graphics Lab Saarland University, Germany http://graphics.cs.uni-sb.de
Interactive Global Illumination - Goals • Support for all relevant features • Complete direct & indirect diffuse illumination • Specular Effects: Refractions, Reflections, Caustics • Be independent of geometry (scalability) ! • Interactive: > 1 fps at video resolution (640x480) • Full recomputation every frame • Lights, Materials, Geometry, Camera, … • No approximative or image-based techniques • Interactive, user-controllable speed/quality tradeoff • E.g. trade some flickering or aliasing for speed … • Automatic and progressive convergence to high-quality solution when possible (e.g within 2-5 sec)
Interactive Global Illumination • Previous solutions: • Image-Based approaches • Artifacts • Radiosity + OpenGL • Missing specularities, Meshing artifacts, … • High-quality Global Illumination uses ray tracing anyway • Ray Tracing is now interactive
Interactive Global Illumination • Previous solutions: • Image-Based approaches • Artifacts • Radiosity + OpenGL • Missing specularities, Meshing artifacts, … • High-quality Global Illumination uses ray tracing anyway • Ray Tracing is now interactive Simplisitic Idea: “Interactiveray tracing”+“Ray-traced global illumination”= Interactive global illumination
Interactive Global Illumination But: Real World isn’t simplistic… Problem: GlobIllum often doesn’t scale (shared-memory)… • Radiosity: • Shared global data for radiosities, geometry-dependency • Photon Map: • KD-Tree reconstruction every frame, global photon map data, … Have to live with extremely low sample rates • Even 16 MRays/sec is only 16 rays/pixel at 640x480x3Hz… • Path-Tracing and Bidirectional Path-Tracing too noisy … Need another approach …
Instant Global Illumination Our approach: “Instant Global Illumination” • Done in cooperation with Kaiserslautern University(Alex Keller and Thomas Kollig) • Most of the algorithms are based on their work ! • Idea: Combine advantages of several, differentalgorithms: • Instant Radiosity: smooth diffuse lighting • Ray Tracing: reflections, refractions, visibility testing • Interleaved Sampling (ILS): better quality, easy to parallelize • Discontinuity Buffer: removes ILS artifacts • Caustic Photon Mapping: the only way for sensible caustics
Basic Ingredient: Instant Radiosity [Keller] • Trace few (10-20) particles from (area) light sources • Use these to light the scene as ‘virtual point lights’ (VPLs) • Contains both direct and indirect diffuse illumination • Shadows originally with OpenGL, now with Ray Tracing • Raytracing gives reflections/refractions for free • Inherently smooth, since radiosity-based • Artifacts for few VPLs • Converges, but at only 10-20 VPLs clearly visible • Plus: Add PhotonMapfor Caustics • Hack for faster query…
Too few samplesAdd Interleaved Sampling • Use different sets of virtual point lights for diff. Pixels • Every SxS’th pixel uses same set of VPLs and caustic photons • Recomputing VPL’s and photons for every pixel too costly… • Better quality: • 9 times as many VPLsper image than without • Same for photons ! • Still cheap pixels ! • Easily parallelizable • Each CPU needs only 1 set Scales with #CPUs !!! • Aliasing • Can see SxS grid …
ILS Aliasing Add Filtering • Discontinuity Buffer [Keller, Kollig] • Filter irradiances of neighbouring pixels • Smoothing/removal of ILS-artifacts • Like irradiance caching, but more stable • Only filter in smooth regions, detect discontinuities • Criterion: normal & distance • Problem: Clients don’t have neighboring pixels ! • Server has to filter High server load • Server has to get required data • Normal, irradiance, distance • High network bandwidth !
Finally, add QMC • Use Randomized Quasi Monte Carlo [Keller et al] • Much faster convergence, especially for such small sample rates ! • Can be combined easily with Interleaved sampling • Plus: ‘Technical’ advantages of QMC • Fast random number generation (table lookup + bit-ops) • Can reproduce any sequence of samples based on single seed value • Can easily synchronize different clients on same data • Each client can easily reproduce the sample set of any other client • Avoid ‘jumping’ of VPLs: • Just start with same seed every frame • For progressive convergence, just advance the seed value… • QMC sequences perfectly combine into the future…
Summary • Base ingredient • Instant Radiosity + Ray Tracing • Plus fast caustic photon maps • Combine with Interleaved Sampling • Better quality • Parallelizable • Remove ILS artifacts with Disco-Buffer • Faster convergence • Better parallelizability • Use randomized QMC • Low sampling rates, parallelizability • Result: Definitely not perfect • But not too bad for only ~20 rays/pixel !
Parallelization & Scalability • Adapt Scheduler to ILS: • Different clients work on different sets • Same client preferably works on same set In theory, each client only has to compute one sample set • In practice, its still about only 1.5-2 out of 9 • Very small overhead (few redundant operations) • But: Server Bottleneck due to Disco-Buffer • Filtering cost and Network bandwidth limit max. framerate • Currently: On dual-Athlon 1800+: max. framerate of ~5 fps.. • But: Can still scale in quality • Twice #CPUs = Twice #VPLs/pixel at same framerate ! Limited only by max. framerate, not by number of clients !
Results • Up to 5 fps at video resolution (640x480) • With 8+ dual Athlon MP 1800+ • All targeted effects • Reflections, refractions and caustics • Smooth direct and indirect diffuse illumination • Everything recomputed every frame • No limitation on interaction types • All parameters can be changed interactively • Sampling rate, photon query radius, filter size, … • Automatic convergence to high-quality solution • high good quality in about 2-5 sec.
Current Research • Have implemented a new improved system from scratch • Main Features: • 2-3 times faster through ray packet traversal and streaming architecture • Removed photon shooting • Support for accumulation on client side, necessary for providing high quality during interaction and animation • Nearly linear scalability • up to 22 fps at 640x480 with reduced quality • Sub-linear costs in image resolution • Fully programmable shading
Remaining Problems& Future Work • Still to slow (it’s always too slow…) • Incorporate glossyness/arbitrary BRDF’s • Emission properties for light sources • Caustics • Main Limitation: Inefficient in highly occluded scenes ! • We’re working on it …
Missing Caustics: Add Caustic Photon Map • Basically just like standard photon mapping [Jensen] • Shoot directly at ‘caustic generators’ • But: too slow for our purpose : (Cost(Query)=10Rays) • Fix query radius to a fixed R • Can be interactively changed by the user … • Store photons in grid with width 2R • Have to touch only 8 voxels for each query ! • Can use hashing to keep reduce storage cost • Fast, but not perfect… • Can afford only few photons(reconstruction cost too high) • Looks bad if R is chosen bad