Title: A Practical Analytic Single Scattering Model for Real Time Rendering
1A Practical Analytic Single Scattering Model for
Real Time Rendering
Bo Sun Columbia
University Ravi Ramamoorthi Columbia
University Srinivasa Narasimhan Carnegie
Mellon University Shree Nayar
Columbia University
Sponsors ONR, NSF
2Light Transport in Scattering Media
Point Source
Viewer
Surface Point
Clear Day
Foggy Day
Clear Day
Foggy Day
3Our Technical Contributions
- Explicit compact Airlight formula
- Explicit Surface Radiance formula
- - Accurate
- - Simple fragment shader
- - Fully interactive
- Assumptions
- Isotropic point light sources
- Homogenous media
- Single scattering
- No volumetric shadows
4The Airlight Integral
Point Source, s
scattering coefficient of the medium
Surface Point, p
Viewer, v
The Airlight Integral
5The Airlight Integral
Point Source, s
scattering coefficient of the medium
Surface Point, p
Viewer, v
The Airlight Integral
6The Airlight Integral
Point Source, s
scattering coefficient of the medium
Surface Point, p
Viewer, v
The Airlight Integral
7The Airlight Integral
Point Source, s
scattering coefficient of the medium
Surface Point, p
Viewer, v
The Airlight Integral
8The Airlight Integral
Point Source, s
scattering coefficient of the medium
Surface Point, p
Viewer, v
The Airlight Integral
9The Airlight Integral
Point Source, s
scattering coefficient of the medium
Surface Point, p
Viewer, v
The Airlight Integral
10The Airlight Integral
Point Source, s
scattering coefficient of the medium
Surface Point, p
Viewer, v
The Airlight Integral
11The Airlight Model
Originally 4D , , ,
12The Airlight Model
Originally 4D , , ,
13The Airlight Model
Originally 4D , , ,
14Special Function F
- Well behaved and purely numerical 2D function.
- Pre-computed once for all and stored as a 2D
texture.
15Shader Code for Airlight Model
float AirLight( ) float u
A1(beta, Dsv, gammasv) float v1
0.25PI0.5atan((DvpDsvcos(gammasv))/(Dsvsin(ga
mmasv))) float v2 0.5gammasv
float4 f_1texRECT(F, v1, u)
float4 f_2texRECT(F, v2, u) return
A0(lightIntensity, beta, Dsv, gammasv)(f_1.x-f_2.
x)
16Shader Code for Airlight Model
float AirLight( ) float u
A1(beta, Dsv, gammasv) float v1
0.25PI0.5atan((DvpDsvcos(gammasv))/(Dsvsin(ga
mmasv))) float v2 0.5gammasv
float4 f_1texRECT(F, v1, u)
float4 f_2texRECT(F, v2, u) return
A0(lightIntensity, beta, Dsv, gammasv)(f_1.x-f_2.
x)
17Shader Code for Airlight Model
float AirLight( ) float u
A1(beta, Dsv, gammasv) float v1
0.25PI0.5atan((DvpDsvcos(gammasv))/(Dsvsin(ga
mmasv))) float v2 0.5gammasv
float4 f_1texRECT(F, v1, u)
float4 f_2texRECT(F, v2, u) return
A0(lightIntensity, beta, Dsv, gammasv)(f_1.x-f_2.
x)
18Shader Code for Airlight Model
float AirLight( ) float u
A1(beta, Dsv, gammasv) float v1
0.25PI0.5atan((DvpDsvcos(gammasv))/(Dsvsin(ga
mmasv))) float v2 0.5gammasv
float4 f_1texRECT(F, v1, u)
float4 f_2texRECT(F, v2, u) return
A0(lightIntensity, beta, Dsv, gammasv)(f_1.x-f_2.
x)
19Shader Code for Airlight Model
float AirLight( ) float u
A1(beta, Dsv, gammasv) float v1
0.25PI0.5atan((DvpDsvcos(gammasv))/(Dsvsin(ga
mmasv))) float v2 0.5gammasv
float4 f_1texRECT(F, v1, u)
float4 f_2texRECT(F, v2, u) return
A0(lightIntensity, beta, Dsv, gammasv)(f_1.x-f_2.
x)
20Implementation Choices for Airlight
- 64x64 floating point texture for F table
- Add a skybox to invoke vertex/pixel shader to
compute Airlight.
Nearest Neighbor Bilinear Interpolation
21Airlight Demo
Demo
22The Surface Radiance Model
Point Source, s
BRDF
Viewer, v
Surface Point, p
23The Surface Radiance Model
Point Source, s
BRDF
Viewer, v
Surface Point, p
24Special Function G
25Shader Code for Surface Radiance
float SurfaceRadiance( ) float4 G
texRECT(G_20, Tsp, thetas) return
KsIobeta/(2DspPI)G
26Shader Code for Surface Radiance
float SurfaceRadiance( ) float4 G
texRECT(G_20, Tsp, thetas) return
KsIobeta/(2DspPI)G
27Shader Code for Surface Radiance
float SurfaceRadiance( ) float4 G
texRECT(G_20, Tsp, thetas) return
KsIobeta/(2DspPI)G
28Implementation Choices for Surface Radiance
- Need to add radiance contribution from attenuated
direct lighting. - Attenuate the final radiance according to
distance to the camera.
Point Source, s
BRDF
Viewer, v
Surface Point, p
29Implementation Choices for Surface Radiance
- Need to add radiance contribution from attenuated
direct lighting. - Attenuate the final radiance according to
distance to the camera.
Point Source, s
BRDF
Viewer, v
Surface Point, p
30Lambertian and Phong Spheres
Clear Day
Lambertian
Phong10
Phong20
Foggy Day
31The Complete Model
Surface Radiance Model
Airlight Model
32The Complete Model
Surface Radiance Model
Airlight Model
Image size
Lights
Terms to approximate the phase function
Texture lookups
Analytic expression Maya Plug-in available from
our website.
33Demo Complex Geometry
Demo
34Complex Lighting and Material
- Rendering time is linear in the number of lights.
-
Viewer, v
Surface Point, p
35Point Spread Function
- Assume equidistant point sources
- Scattering is essentially Point Spread Function
(PSF).
Input
Output
PSF
36Point Spread Function
- Assume equidistant point sources
- Scattering is essentially Point Spread Function
(PSF).
Input
Output
PSF
Tsvexp-Tsv Pre-convolved Environment Map
37Convolution with PSF
BRDF Environment Map
Clear Day Foggy Day
38Demo PSF for Complex Lighting
Demo
39Summary
An OpenGL-Like Practical Real-Time Rendering
Technique
50fps
40fps
40Summary
An OpenGL-Like Practical Real-Time Rendering
Technique
- Analytic Surface Radiance Model
50fps
60fps
41Summary
An OpenGL-Like Practical Real-Time Rendering
Technique
- Analytic Surface Radiance Model
- PSF for Complex Lighting and Natural Material
100fps
20fps
42Acknowledgement
- R. Wang, J. Tran and D. Luebke for the PRT code.
- S. Premoze for the Monte Carlo simulation code.
- P. Debevec for the light probes.
- W. Matusik for the tabulated BRDF.
- Supported by a Columbia University Presidential
Fellowship, an ONR Grant, an NSF Grant, an NSF
CAREER award, and equipment donations from Intel
and NVIDIA.
43Thanks for Listening!
Maya Plug-in, 2D tables, and Shader code
http//www.cs.columbia.edu/bosun/research.htm
44The End
45The End