18

Introduction | Crepuscular rays and Caustics Caustics are high intensity highlights due to convergence of light via different paths Crepuscular rays (godrays)

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Introduction | Crepuscular rays and Caustics

• Caustics are high intensity highlights due to convergence of light via different paths

• Crepuscular rays (godrays) are formed by the in-scattering of light in dense participating media, like water

• Why are godrays and caustics important?– Both phenomena present in shallow water environments– They convey the presence of a dense volume– Define the proximity and direction of surface and lighting

Introduction | Offline rendering

• Caustics:– Bidirectional ray tracing– Particle tracing from light source (sun)

• Local contribution to shading (no gathering step)

• Godrays:– Ray marching - Integration of in/out-scattering functions over the

line of sight in view direction.• Monte Carlo integration• Stratified sampling with constant jittering

Moving to Real Time | Early Approaches

• Caustics– Render the caustics as an animated

texture– Projective texturing– Inverse tracing of rays to a light map

above water using surface vertex data

– Intersect geometric light shafts (polyhedra) with receiving geometry

• Godrays– Render godrays as geometry “shafts”

(polyhedra)– Sample a variable density function on

planes parallel to the view plane.

Moving to Real Time | Particle Tracing?

• Generic GPU-based particle tracing:– Fully captures the effects– Unsuitable for real-time rendering (too slow)

• Point-based particle tracing (splatting)– Can effectively model caustics– Replaces near-sample search (particle tracing) by point

accumulation– The approach:

• Considers light-space line segments• Intersects segments with Z-buffer• Accumulates point samples in frame buffer

– Does not account for godrays

Our Method | Introduction

• Specialized particle tracing • Traces particles from the light through the water surface to the

underwater part of the scene• Handles both caustics and godrays• Compatible with both direct and deferred rendering schemes

Our Method | Overview

• Render the scene (camera view) depth buffer• Render the scene (light view) shadow map• Create photon mask • Cast photons:

– Generate coarse light-space point grid– Tesselate the grid– Cast photons and create refracted trajectories– Intersect trajectories with depth buffer photon

positions– Produce underwater godray line segments

• Draw (image space splatted) photons caustics• Draw (image space weighted) godrays• Filter caustics and godrays• Combine results

Mask

Frame Preparation

• Rendering:– The scene is normally rendered– We record the frame buffer (in FBO)– The shadow map of the “sun” light source is

captured• The above steps are standard to any rendering

engine• Photon (shadow) mask:

– The shadow map is compared with the water level

– No photons will be cast for lit points above water level (outside the water volume)

– Saves on calculations – Ensures proper shadowing for floating props

Mask

Shadow map

Depth buffer

Photon Tracing | Photon generation

(in light space)• Render a coarse grid of points• In a geometry shader:

– Tesselate grid– Generate primary ray– Produce refracted ray– Calculate intersection point

between refracted ray and shadow map

Photon Tracing | Intersection estimation

• Uses an Newton-Rhapson-like image space (shadow map) estimator• Approximates the intersection point in two iterations:

Water surface intersection

Initial estimate

Initial estimate

d

Water surface intersection

second estimate

d

Water surface intersection

final pointprojection projection

A B

Rendering the Caustics | Splatting

• Splatting replaces the photon storage and search stage of conventional photon mapping

• Photons are transformed to screen space and rendered as points• We splat the photons by perspectively varying the point primitive size:

– Account for perspective foreshortening– Ensure adequate blending for photons near view plane– Avoid excessive overlap for distant photons

• Points are attenuated according to distance from water surface (absorption)

γ = 9.2W/sr

Rendering the Caustics | Splatting

Rendering the Godrays

• Godrays are rendered as line primitives in screen space• They are attenuated per fragment accounting for:

– Fragment-to-eye absorption (out-scattering)– Surface-to-fragment absorption (out-scattering)– Light-to-viewing direction contribution (in-scattering)

• Mie scattering is modeled by the Henyey-Greenstein phase function

dfromViewerLine frags

Post-Filtering

• In low-intensity areas (poor photon concentration), aliasing may occur• The same goes for the godrays• Both buffers are post-filtered to spread the intensity• We use a rotating-kernel joint bilateral gaussian filter

– Kernel size is modulated by depth

kernel min max(1 ) , [0,1]s z s z s z

Post-Filtering | Caustics

Unfiltered Filtered

Post-Filtering | Godrays

Unfiltered Filtered

Putting it All Together

• Godrays + caustics + filtering + SSAO + shadows: 1440X850 @ 60+ fps• 800X600 @ 110+ fps

Thank you!

The work presented in this paper is funded by the Athens University of Economics and Business Special Account for Research Grants (EP-1600-10/00-1)