Efficient Rendering of Local Subsurface Scattering Tom Mertens 1, Jan Kautz 2, Philippe Bekaert 1, Frank Van Reeth 1, Hans-Peter Seidel 2 1 2
Overview Problem Related Work Local Subsurface Scattering Our Approach Implementation & Results Discussion Summary & Future Work
Subsurface Scattering BRDFBSSRDF opaque translucent
BSSRDF model function of distance introduced by Jensen et al. (SIGGRAPH’01) multiple scattering materials with high albedo: marble, milk, wax, skin,…
BSSRDF model function of distance introduced by Jensen et al. (SIGGRAPH’01) multiple scattering materials with high albedo: marble, milk, wax, skin,…
Related Work Jensen et al. ’02 –General scattering effects –Offline rendering Mertens et al. ’03 –Dynamic models –General scattering effects –Per vertex Our paper –Dynamic models –Local scattering effects –Per pixel
Local Subsurface Scattering Certain cases no global response –Dense materials –Large scale Distinct appearance! –Rough surface Local sampling sufficient But accuracy is important! –R d decays exponentially –Per vertex too coarse Apply to skin rendering Only local response Global response
Local Subsurface Scattering Local subsurface scattering Diffuse
Local Subsurface Scattering Local Full
Our Approach High level description –Employ importance sampling scheme for R d –Rendering algorithm Generate importance samples Render irradiance image Integrate irradiance image locally in tangent plane
Importance Sampling of R d Need to solve integral Idea: sample according to R d Result: set of distances r i Issues: –Need samples on surface, not r i ’s –Need irradiance at sample
Importance sampling of R d Solution: –Pick a view e –Render irradiance to image T –Generate sample p’ in tangent plane –Project p’ on surface p –Project p’ into T to retrieve irradiance E(p’)
Importance sampling of R d We take eye position for e p’ p implies a jacobian J –ratio of solid angles Integral becomes:
Rendering Algorithm Generate importance samples in 2D 2D RdRd riri
Rendering Algorithm Render irradiance image
Rendering Algorithm Integrate image locally in tangent plane
Rendering Algorithm Store result in final image
Implementation Variance reduction –Stratified sampling Deterministic, pseudo random –Interleaved sampling Noise dither pattern –Combined sampling Importance + uniform Irradiance discontinuties Software implementation Programmable Graphics Hardware Combined sampling Uniform importance
Implementation Programmable Graphics Hardware –Overview: generate 2D samples –quick per-frame preprocess in software Render irradiance image T Bind E as texture For each sample –Look up sample E in T (pixel shader) –Accumulate E in temporary texture Output temporary texture
Results ATI Radeon 9700 Pro 500x500 image, 4 to 5 frames/sec Some pictures…
Image Quality Color bleeding (forehead)Shadow smoothing
Image Quality nVIDIA’s skin shaderOur method
Complex lighting
Demo video
Discussion No global effects –E.g. backlit ears Prone to noise –Irradiance discontinuities Shadow borders –Geometric discontinuities Kills effect of importance sampling Ghosting artifacts Accumulation fill-rate limited ghosting
Summary Novel technique for local subsurface scattering Amenable for hardware implementation Interactive frame rates Dynamic models Application: skin rendering
Future Work Hybrid algorithm –Global response per vertex –Local response per pixel Eliminate ghosting –Apply technique in texture space Combine with skin BRDF Take into account varying blood concentrations
Acknowledgments Head model courtesy of nVIDIA Funding: European Regional Development Fund