460 likes | 574 Views
A 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.
E N D
A 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
Scattered (glows) Direct Transmission Light Transport in Scattering Media Point Source Viewer Surface Point Clear Day Foggy Day Clear Day Foggy Day
Our 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
The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:
The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:
The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:
The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:
The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:
The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:
The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:
Point Source, s Surface Point, p Viewer, v The Airlight Model Originally 4D: , , ,
Point Source, s Surface Point, p Viewer, v The Airlight Model Originally 4D: , , ,
Point Source, s Surface Point, p Viewer, v The Airlight Model Originally 4D: , , ,
Special Function F • Well behaved and purely numerical 2D function. • Pre-computed once for all and stored as a 2D texture.
Shader Code for Airlight Model float AirLight( ) { float u = A1(beta, Dsv, gammasv); float v1 = 0.25*PI+0.5*atan((DvpDsv*cos(gammasv))/(Dsv*sin(gammasv))); float v2 = 0.5*gammasv; float4 f_1=texRECT(F, v1, u); float4 f_2=texRECT(F, v2, u); return A0(lightIntensity, beta, Dsv, gammasv)*(f_1.x-f_2.x); }
Shader Code for Airlight Model float AirLight( ) { float u = A1(beta, Dsv, gammasv); float v1 = 0.25*PI+0.5*atan((DvpDsv*cos(gammasv))/(Dsv*sin(gammasv))); float v2 = 0.5*gammasv; float4 f_1=texRECT(F, v1, u); float4 f_2=texRECT(F, v2, u); return A0(lightIntensity, beta, Dsv, gammasv)*(f_1.x-f_2.x); }
Shader Code for Airlight Model float AirLight( ) { float u = A1(beta, Dsv, gammasv); float v1 = 0.25*PI+0.5*atan((DvpDsv*cos(gammasv))/(Dsv*sin(gammasv))); float v2 = 0.5*gammasv; float4 f_1=texRECT(F, v1, u); float4 f_2=texRECT(F, v2, u); return A0(lightIntensity, beta, Dsv, gammasv)*(f_1.x-f_2.x); }
Shader Code for Airlight Model float AirLight( ) { float u = A1(beta, Dsv, gammasv); float v1 = 0.25*PI+0.5*atan((DvpDsv*cos(gammasv))/(Dsv*sin(gammasv))); float v2 = 0.5*gammasv; float4 f_1=texRECT(F, v1, u); float4 f_2=texRECT(F, v2, u); return A0(lightIntensity, beta, Dsv, gammasv)*(f_1.x-f_2.x); }
Shader Code for Airlight Model float AirLight( ) { float u = A1(beta, Dsv, gammasv); float v1 = 0.25*PI+0.5*atan((DvpDsv*cos(gammasv))/(Dsv*sin(gammasv))); float v2 = 0.5*gammasv; float4 f_1=texRECT(F, v1, u); float4 f_2=texRECT(F, v2, u); return A0(lightIntensity, beta, Dsv, gammasv)*(f_1.x-f_2.x); }
Implementation 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
Airlight Demo Demo
The Surface Radiance Model Point Source, s BRDF Viewer, v Surface Point, p
: , 2D 1D function on : Lambertian, Phong 2D: The Surface Radiance Model Point Source, s BRDF Viewer, v Surface Point, p
Shader Code for Surface Radiance float SurfaceRadiance( ) { float4 G = texRECT(G_20, Tsp, thetas); return Ks*Io*beta/(2*Dsp*PI)*G; }
Shader Code for Surface Radiance float SurfaceRadiance( ) { float4 G = texRECT(G_20, Tsp, thetas); return Ks*Io*beta/(2*Dsp*PI)*G; }
Shader Code for Surface Radiance float SurfaceRadiance( ) { float4 G = texRECT(G_20, Tsp, thetas); return Ks*Io*beta/(2*Dsp*PI)*G; }
Implementation 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
Implementation 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
Lambertian and Phong Spheres Clear Day Lambertian Phong=10 Phong=20 Foggy Day
2 Lookups and 2 Lookups The Complete Model Surface Radiance Model Airlight Model
2 Lookups and 2 Lookups The 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.
BRDF Complex Lighting and Material • Rendering time is linear in the number of lights. Viewer, v Surface Point, p
Intensity Intensity Intensity Angles Angles Angular Component Amplitude Component Point Spread Function • Assume equidistant point sources • Scattering is essentially Point Spread Function (PSF). Input Output PSF
Intensity Intensity Intensity Angles Angles Angular Component Amplitude Component Point Spread Function • Assume equidistant point sources • Scattering is essentially Point Spread Function (PSF). Input Output PSF Tsv*exp[-Tsv] * Pre-convolved Environment Map
Convolution with PSF BRDF Environment Map Clear Day Foggy Day
Summary An OpenGL-Like Practical Real-Time Rendering Technique: • Analytic Airlight Model 50fps 40fps
Summary An OpenGL-Like Practical Real-Time Rendering Technique: • Analytic Airlight Model • Analytic Surface Radiance Model 50fps 60fps
Summary An OpenGL-Like Practical Real-Time Rendering Technique: • Analytic Airlight Model • Analytic Surface Radiance Model • PSF for Complex Lighting and Natural Material 100fps 20fps
Acknowledgement • 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.
Thanks for Listening! Maya Plug-in, 2D tables, and Shader code:http://www.cs.columbia.edu/~bosun/research.htm