Real-time Shading with Filtered Importance Sampling
Mark ColbertUniversity of Central Florida
Jaroslav KřivánekCzech Technical University in Prague
Real-time Shading with Filtered Importance Sampling
Motivation• Dynamic BRDF and lighting• Applications– Material design– Gaming
• Production pipeline friendly– Single GPU shader– No precomputation– Minimal code base
Demo
Real-time Shading with Filtered Importance Sampling
Our Approach• BRDF proportional sampling• Environment map filtering
Real-time Shading with Filtered Importance Sampling
Related Work• A Unified Approach to
Prefiltered Environment Maps[ Kautz et al. 2000 ]
• Efficient Rendering of Spatial Bi-directional Reflectance Distribution Functions[ McAllister et al. 2002 ]
• Efficient Reflectance and Visibility Approximations for Environment Map Rendering [ Green et al. 2007 ]
• Interactive Illumination with Coherent Shadow Maps[ Ritschel et al. 2007 ]
Real-time Shading with Filtered Importance Sampling
Illumination Integral
• Ignores visibility[ Kozlowski and Kautz 2007 ]
• Computationally expensive
Real-time Shading with Filtered Importance Sampling
Importance Sampling
• Choose a few random samples• Select according to the BRDF
Real-time Shading with Filtered Importance Sampling
Importance Sampling Result
40 samples per pixel
Real-time Shading with Filtered Importance Sampling
Random Numbers on the GPU• Relatively expensive – Random numbers per pixel (computation)– Random number textures (memory/indirection)
• Quasi-random sequence– Good sample distribution (no clumping)– Use same sequence for each pixel
Real-time Shading with Filtered Importance Sampling
Same Sequence Result
40 samples per pixel
Real-time Shading with Filtered Importance Sampling
Filtered Importance Sampling
• Filter environment mapbetween samples over hemisphere– Samples distributed by the BRDF
• Support approximately equivalent to:
Real-time Shading with Filtered Importance Sampling
Filtering• Use MIP-maps• Level proportional to
log of filter size
Real-time Shading with Filtered Importance Sampling
Implementation• Auto-generated MIP-map• Dual paraboloids• Single GPU Shader– Sum together filtered samples
Real-time Shading with Filtered Importance Sampling
ResultsSphere – Grace Probe
Stoc
hasti
c
Refe
renc
e
No
Filte
ring
Our
Res
ult
Real-time Shading with Filtered Importance Sampling
ResultsBunny – Ennis Probe
Stoc
hasti
c
No
Filte
ring
Refe
renc
e
Our
Res
ult
Real-time Shading with Filtered Importance Sampling
Approximations• Constant BRDF across filter• Isotropic filter shape• Tri-linear filtering
Real-time Shading with Filtered Importance Sampling
RMS Error
n=10
n=100
n=1000
Phong Reflection - Ennis Light Probe
Real-time Shading with Filtered Importance Sampling
Performance512x512 Sphere
Real-time Shading with Filtered Importance Sampling
Conclusions• Real-time glossy surface
reflections• Signal Processing Theory• Practical• Affords new interfaces• For more information:
GPU Gems 3• Download the code now!– graphics.cs.ucf.edu/gpusampling/
Questions
Additional Slides
Real-time Shading with Filtered Importance Sampling
Performance
Real-time Shading with Filtered Importance Sampling
• Product of lighting and BRDF– Requires bookkeeping– Too expensive
• Lighting• BRDF
Which distribution?
Real-time Shading with Filtered Importance Sampling
Which distribution?• Product of lighting and BRDF• Lighting– Too many samples for glossy surfaces
• BRDF
Real-time Shading with Filtered Importance Sampling
Which distribution?• Product of lighting and BRDF• Lighting• BRDF– Computationally efficient
Real-time Shading with Filtered Importance Sampling
Environment Mapping• Dual Paraboloid
Error
Support Region
Real-time Shading with Filtered Importance Sampling
Environment Mapping• Cube Maps– Low distortion– Accelerated by GPU– Decimation/reconstruction
filters non-spherical– Introduces Seams
Real-time Shading with Filtered Importance Sampling
Environment Mapping• Latitude/Longitude– Too much distortion at poles
Real-time Shading with Filtered Importance Sampling
Measured BRDF Data• Fast primitive distribution for illustration
[ Secord et al. 2002 ]
• Efficient BRDF importance sampling using a factored representation[ Lawrence et al. 2004 ]
• Probability Trees[ McCool and Harwood 1997 ]
Real-time Shading with Filtered Importance Sampling
Importance Sampling
10
1
0
Random Sampleson Unit Square
PDF-Proportional Samples on Hemisphere
PDF Mapping
Real-time Shading with Filtered Importance Sampling
Pseudocodefloat4 FilteredIS(float3 viewing : TEXCOORD1
uniform sampler2D env) : COLOR{ float4 c = 0; // sample loop for (int k=0; k < N; k++) { float2 xi = quasi_random_seq(k); float3 u = sample_material(xi); float pdf = p(u, viewing); float lod = compute_lod(u, pdf);
float3 L = tex2Dlod(env,float4(u, lod)); c += L*f(u,viewing)/pdf; } return c/N;}
Real-time Shading with Filtered Importance Sampling
Filter Support
• Ideal• Isotropic approximation– Assume sample points are perfectly stratified– Implies area of 1 sample = 1 / N– Use Jacobian approximation for warping
function (Inverted PDF)– Support region of sample 1 / p(i, o) N
Real-time Shading with Filtered Importance Sampling
Ideal Sample Filter Design
• h – Filter function• More expensive than
illumination integral
dhp
fLS k
ok
okiok )(
),(
cos),()(),(
Real-time Shading with Filtered Importance Sampling
Approximate Sample Filter
• Estimate for sample • BRDF PDF– PDF is normalized BRDF– Near constant over single sample
• Low frequency cosine approximation– Use multiple samples to estimate effect
dhLp
fS ki
ok
kokok )()(
),(
cos),(),(