1 / 45

A Practical Analytic Single Scattering Model for Real Time Rendering

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.

geona
Download Presentation

A Practical Analytic Single Scattering Model for Real Time Rendering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Scattered (glows) Direct Transmission Light Transport in Scattering Media Point Source Viewer Surface Point Clear Day Foggy Day Clear Day Foggy Day

  3. 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

  4. The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:

  5. The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:

  6. The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:

  7. The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:

  8. The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:

  9. The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:

  10. The Airlight Integral Point Source, s : scattering coefficient of the medium Surface Point, p Viewer, v The Airlight Integral:

  11. Point Source, s Surface Point, p Viewer, v The Airlight Model Originally 4D: , , ,

  12. Point Source, s Surface Point, p Viewer, v The Airlight Model Originally 4D: , , ,

  13. Point Source, s Surface Point, p Viewer, v The Airlight Model Originally 4D: , , ,

  14. Special Function F • Well behaved and purely numerical 2D function. • Pre-computed once for all and stored as a 2D texture.

  15. 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); }

  16. 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); }

  17. 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); }

  18. 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); }

  19. 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); }

  20. 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

  21. Airlight Demo Demo

  22. The Surface Radiance Model Point Source, s BRDF Viewer, v Surface Point, p

  23. : , 2D 1D function on : Lambertian, Phong 2D: The Surface Radiance Model Point Source, s BRDF Viewer, v Surface Point, p

  24. Special Function G

  25. Shader Code for Surface Radiance float SurfaceRadiance( ) { float4 G = texRECT(G_20, Tsp, thetas); return Ks*Io*beta/(2*Dsp*PI)*G; }

  26. Shader Code for Surface Radiance float SurfaceRadiance( ) { float4 G = texRECT(G_20, Tsp, thetas); return Ks*Io*beta/(2*Dsp*PI)*G; }

  27. Shader Code for Surface Radiance float SurfaceRadiance( ) { float4 G = texRECT(G_20, Tsp, thetas); return Ks*Io*beta/(2*Dsp*PI)*G; }

  28. 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

  29. 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

  30. Lambertian and Phong Spheres Clear Day Lambertian Phong=10 Phong=20 Foggy Day

  31. 2 Lookups and 2 Lookups The Complete Model Surface Radiance Model Airlight Model

  32. 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.

  33. Demo: Complex Geometry Demo

  34. BRDF Complex Lighting and Material • Rendering time is linear in the number of lights. Viewer, v Surface Point, p

  35. 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

  36. 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

  37. Convolution with PSF BRDF Environment Map Clear Day Foggy Day

  38. Demo: PSF for Complex Lighting Demo

  39. Summary An OpenGL-Like Practical Real-Time Rendering Technique: • Analytic Airlight Model 50fps 40fps

  40. Summary An OpenGL-Like Practical Real-Time Rendering Technique: • Analytic Airlight Model • Analytic Surface Radiance Model 50fps 60fps

  41. 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

  42. 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.

  43. Thanks for Listening! Maya Plug-in, 2D tables, and Shader code:http://www.cs.columbia.edu/~bosun/research.htm

  44. The End

  45. The End

More Related