680 likes | 725 Views
This paper introduces Radiance Cache Splatting, a GPU-friendly global illumination technique. It discusses the challenges in global illumination algorithms and presents a method that simplifies the process using GPUs. The algorithm aims to achieve fast and easy implementation for GPUs while handling indirect diffuse lighting calculations efficiently. By extending irradiance caching to include glossy interreflections and cache the directional distribution of light, this technique provides a streamlined approach to global illumination rendering. The paper outlines the methodology, results, and future work of Radiance Cache Splatting for improved performance in GPU-based rendering systems.
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