140 likes | 285 Views
Caustics Triangles on the GPU. Umenhoffer Tam ás Gustavo Patow Szirmay-Kalos László. Caustics – Causticus – Kaustikos. shooting. specular. Generation of caustic paths. gathering. specular. specular. Caustic generation on the GPU. Multipass synthesis (Arvo, Jensen, Shirley)
E N D
Caustics Triangles on the GPU Umenhoffer Tamás Gustavo Patow Szirmay-Kalos László
shooting specular Generation of caustic paths gathering specular specular CGI
Caustic generation on the GPU • Multipass synthesis (Arvo, Jensen, Shirley) • Photon tracing from the light sources: Photon map • Final gathering for the camera • Ray tracing on the GPU: How? • Ray tracing of the original geometry: Ray engine(Carr02), Regular grid (Purcell02), octree (Meseth05), kd-tree (Foley05, Popov07, Zhou08), BVH (Carr06),ray-hierarchy (Szécsi06,Roger07). • Ray tracing of the sampled geometry: Shadow map (Shah06,Wyman06), Height map (Oliveira04), Distance map, Layered Depth Image (Krüger06) or layered cube maps (Umenhoffer07) CGI
distance Ray tracing on distance maps CGI
Linear search (marching) r’ r d x r = x + Rd undershoot: |r|<|r’|=distMap(r) overshoot: |r|>|r’|=distMap(r) R CGI
Linear search (marching) x |x| |R| t 1-t R d = CGI
Secant search CGI
Photon power distribution • Where to store photons? – neighborhood! • Object space (Purcell03), texture space(Szirmay05), ray space(Krüger06), shadow map space (Shah06), • This paper: cube map space • How to filter? • Nearest neighbor search (Jensen95, Purcell03, Zhou08), splatting (all others), • This paper: caustic triangles. small right large CGI
Photon tracing Hit location power Triangle area CGI
Filtering Photon hits Triangles with dummy vertices Vertex shader Pixel shader Vertices on the cube map face Additive blending CGI
Final gathering CGI
Results 60 FPS (NV6800) CGI
Conclusions • Caustic generation algorithm • Stores and filters photon hits in the space of the cube map used to trace rays • Good neighborhood: during filtering visibility from the caustic generator is also taken into account • Renders caustic triangles instead of splatting • No overblurring • Continuous signal automatically • caustic triangle = adaptive filter CGI