680 likes | 859 Views
Radiance Cache Splatting: A GPU-Friendly Global Illumination Algorithm. P. Gautron J. K ř iv á nek K. Bouatouch S. Pattanaik. Direct. Indirect. Global Illumination. Global Illumination. Why?. ∫. L i (P, ω i ). =. Global Illumination. How?. L o (P, ω o ).
E N D
Radiance Cache Splatting:A GPU-Friendly Global Illumination Algorithm P. Gautron J. Křivánek K. BouatouchS. Pattanaik
Direct Indirect Global Illumination Global Illumination Why? EGSR 2005 – Konstanz, Germany
∫ Li(P, ωi) = Global Illumination How? Lo(P, ωo) * BRDF(ωo, ωi) *cos(θ)dωi EGSR 2005 – Konstanz, Germany
∫ Li(P, ωi) = Global Illumination How? Lo(P, ωo) * BRDF(ωo, ωi) *cos(θ)dωi No analytical solution Numerical methods - Radiosity - Photon mapping - Path tracing - Bidirectional path tracing - Irradiance & Radiance caching - … EGSR 2005 – Konstanz, Germany
GPU Speed Time GPUs Speed EGSR 2005 – Konstanz, Germany
Simple 3D graphics only Time GPUs Versatility Linear algebra Fluid dynamics Signal processing Databases … And graphics! EGSR 2005 – Konstanz, Germany
GPU Global Illumination & GPUs CPU EGSR 2005 – Konstanz, Germany
Hemicube Cohen et al. 1985 Photon mapping on GPU Purcell et al. 2003 PRT Sloan et al. 2002 Global Illumination & GPUs Previous work EGSR 2005 – Konstanz, Germany
Contributions A reformulation of (Ir)Radiance caching … - No complex data structure - Fast, image-space (ir)radiance interpolation - Fast approximation of hemisphere sampling … for fast and easy GPU implementation EGSR 2005 – Konstanz, Germany
Outline Introduction Irradiance & Radiance Caching Our method: Radiance Cache Splatting Results Conclusion & Future Work EGSR 2005 – Konstanz, Germany
Outline Introduction Irradiance & Radiance Caching Our method: Radiance Cache Splatting Results Conclusion & Future Work EGSR 2005 – Konstanz, Germany
Irradiance Caching Sparse computation of indirect diffuse lighting EGSR 2005 – Konstanz, Germany
Irradiance Caching Sparse computation of indirect diffuse lighting EGSR 2005 – Konstanz, Germany
Irradiance Caching Sparse computation of indirect diffuse lighting Interpolation EGSR 2005 – Konstanz, Germany
nk n E(P) = + (nk x n) Ek Ek Ek + D r t Interpolation E EGSR 2005 – Konstanz, Germany
E Σ n4 n2 n n3 n1 wk(P) k S Σ E(P) = wk(P) k S + (nk x n) Ek Ek Ek + D r t Interpolation S = { k / wk(P) > 1/a } EGSR 2005 – Konstanz, Germany
Radiance Caching Extension of irradiance caching to glossy interreflections Cache directional distribution of light EGSR 2005 – Konstanz, Germany
Radiance Caching Extension of irradiance caching to glossy interreflections Cache directional distribution of light Hemispherical Harmonics EGSR 2005 – Konstanz, Germany
f1 L1 f2 L2 fn Ln Radiance Caching HSH Incident Radiance HSH BRDF EGSR 2005 – Konstanz, Germany
Implementation Cache Record Computation Ray tracing EGSR 2005 – Konstanz, Germany
Implementation Cache storage 4 6 1 10 8 2 3 11 3 13 2 4 5 6 7 12 8 9 10 11 12 13 9 7 5 1 EGSR 2005 – Konstanz, Germany
Outline Introduction Irradiance & Radiance Caching Our method: Radiance Cache Splatting Results Conclusion & Future Work EGSR 2005 – Konstanz, Germany
(Ir)Radiance Caching vs GPU (Ir)Radiance Caching GPU ? Ray tracing Rasterization Cache stored in tree 1/2/3D textures Spatial queries Texture lookups EGSR 2005 – Konstanz, Germany
(Ir)Radiance Caching (Ir)Radiance Caching Native GPU features Octree Ray tracing Reformulation Our method EGSR 2005 – Konstanz, Germany
Outline Introduction Irradiance & Radiance Caching Our method: Radiance Cache Splatting From octree to splatting From ray tracing to rasterization Overall algorithm Results Conclusion & Future Work EGSR 2005 – Konstanz, Germany
Outline Introduction Irradiance & Radiance Caching Our method: Radiance Cache Splatting From octree to splatting From ray tracing to rasterization Overall algorithm Results Conclusion & Future Work EGSR 2005 – Konstanz, Germany
E Σ n4 n n3 n1 n2 wk(P) k S Σ E(P) = wk(P) k S + (nk x n) Ek Ek Ek + D r t From Octree to Splatting Irradiance Interpolation S = { k / wk(P) > 1/a } EGSR 2005 – Konstanz, Germany
P Pk nk n 1 wk(P) = ||P-Pk|| 1-n.nk + Rk From Octree to Splatting Irradiance Caching Weighting Function Normals divergence Distance EGSR 2005 – Konstanz, Germany
nk n 1 wk(P) = ||P-Pk|| 1-n.nk + Rk From Octree to Splatting Simplified Weighting Function Pk P Normals divergence Distance EGSR 2005 – Konstanz, Germany
n nk ~ 1 1 wk(P) = wk(P) = ||P-Pk|| ||P-Pk|| 1-n.nk + Rk Rk Distance From Octree to Splatting Simplified Weighting Function Pk P Normals divergence Distance EGSR 2005 – Konstanz, Germany
nk n ~ Rk wk(P) = > 1/a ||P-Pk|| From Octree to Splatting Simplified Weighting Function Pk P aRk EGSR 2005 – Konstanz, Germany
~ Rk wk(P) = > 1/a ||P-Pk|| From Octree to Splatting Principle EGSR 2005 – Konstanz, Germany
From Octree to Splatting Principle EGSR 2005 – Konstanz, Germany
From Octree to Splatting Principle wk(P)>1/a ? EGSR 2005 – Konstanz, Germany
From Octree to Splatting Principle wk(P)E(P) wk(P) EGSR 2005 – Konstanz, Germany
From Octree to Splatting Principle EGSR 2005 – Konstanz, Germany
Σ Σ k k From Octree to Splatting Principle wk(P)E(P) wk(P) EGSR 2005 – Konstanz, Germany
wk(P)E(P) wk(P) Σ Σ k k From Octree to Splatting Final Image Generation EGSR 2005 – Konstanz, Germany
From Octree to Splatting Example EGSR 2005 – Konstanz, Germany
Outline Introduction Irradiance & Radiance Caching Our method: Radiance Cache Splatting From octree to splatting From ray tracing to rasterization Overall algorithm Results Conclusion & Future Work EGSR 2005 – Konstanz, Germany
From Ray Tracing to Rasterization CPU EGSR 2005 – Konstanz, Germany
Vertex Shader Fragment Shader From Ray Tracing to Rasterization Simple plane sampling GPU EGSR 2005 – Konstanz, Germany
Vertex Shader Fragment Shader From Ray Tracing to Rasterization Simple plane sampling GPU EGSR 2005 – Konstanz, Germany
Vertex Shader Fragment Shader From Ray Tracing to Rasterization Simple plane sampling GPU EGSR 2005 – Konstanz, Germany
Vertex Shader Fragment Shader From Ray Tracing to Rasterization Simple plane sampling GPU Incoming radiance loss EGSR 2005 – Konstanz, Germany
Vertex Shader Fragment Shader From Ray Tracing to Rasterization Our plane sampling GPU EGSR 2005 – Konstanz, Germany
Vertex Shader Fragment Shader From Ray Tracing to Rasterization Our plane sampling GPU Compensation of incoming radiance loss EGSR 2005 – Konstanz, Germany
Our plane sampling Summary 3x more accurate than simple plane sampling Plausible directional information Easy implementation on GPU EGSR 2005 – Konstanz, Germany
Outline Introduction Irradiance & Radiance Caching Our method: Radiance Cache Splatting From octree to splatting From ray tracing to rasterization Overall algorithm Results Conclusion & Future Work EGSR 2005 – Konstanz, Germany
Vertex Shader Fragment Shader Algorithm Step 1 : information generation GPU EGSR 2005 – Konstanz, Germany