45
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

A Practical Analytic Single Scattering Model for Real Time Rendering

  • Upload
    geona

  • View
    26

  • Download
    1

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: 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 UniversitySrinivasa Narasimhan Carnegie Mellon University Shree Nayar Columbia University

Sponsors: ONR, NSF

Page 2: A Practical Analytic Single Scattering  Model for Real Time Rendering

Clear Day Foggy Day

Light Transport in Scattering Media

Clear Day Foggy Day

Point Source

Surface PointViewer

Direct T

ransmiss

ion

Scattered (glows)

Page 3: A Practical Analytic Single Scattering  Model for Real Time Rendering

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

Page 4: A Practical Analytic Single Scattering  Model for Real Time Rendering

20)(d

eIk

d

xd

ed

eIk

2

0)(

d

The Airlight IntegralPoint Source, s

Surface Point, pViewer, v

svD

x vpD

vpD

: scattering coefficient of the medium

The Airlight Integral:2

0

d

eI d

Page 5: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight IntegralPoint Source, s

Surface Point, pViewer, v

svD

: scattering coefficient of the medium

The Airlight Integral: xd

ed

eIk

2

0)(

Page 6: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight IntegralPoint Source, s

Surface Point, pViewer, v

svD

: scattering coefficient of the medium

The Airlight Integral: xd

ed

eIk

2

0)(

Page 7: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight IntegralPoint Source, s

Surface Point, pViewer, v

svD

: scattering coefficient of the medium

The Airlight Integral: xd

ed

eIk

2

0)(

Page 8: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight IntegralPoint Source, s

Surface Point, pViewer, v

svD

: scattering coefficient of the medium

The Airlight Integral: xd

ed

eIk

2

0)(

Page 9: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight IntegralPoint Source, s

Surface Point, pViewer, v

svD

vpD

: scattering coefficient of the medium

The Airlight Integral:

vpD

xd

dxed

eIk

02

0)(

Page 10: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight IntegralPoint Source, s

Surface Point, pViewer, v

svD

The Airlight Integral:

vpD

: scattering coefficient of the medium

vpD

xd

dxed

eIk

02

0)(

),,,( vpsvairlight DDL

Page 11: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight Model

airlightL

Originally 4D: , , , svD vpD

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Point Source, s

Surface Point, pViewer, v

svD

vpD

Page 12: A Practical Analytic Single Scattering  Model for Real Time Rendering

airlightL

Originally 4D: , , , svD vpD

The Airlight Model

sin2

cos0

2

sv

T

T

eI sv

sinsvT

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Point Source, s

Surface Point, pViewer, v

svD

vpD

Page 13: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Airlight Model

airlightL

Originally 4D: , , , svD vpD

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Point Source, s

Surface Point, pViewer, v

svD

vpD

Page 14: A Practical Analytic Single Scattering  Model for Real Time Rendering

Special Function F

v

duvuF0

]tanexp[),(

Well behaved and purely numerical 2D function.

Pre-computed once for all and stored as a 2D texture.

Page 15: A Practical Analytic Single Scattering  Model for Real Time Rendering

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);

}

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Page 16: A Practical Analytic Single Scattering  Model for Real Time Rendering

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);

}

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Page 17: A Practical Analytic Single Scattering  Model for Real Time Rendering

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);

}

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Page 18: A Practical Analytic Single Scattering  Model for Real Time Rendering

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);

}

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Page 19: A Practical Analytic Single Scattering  Model for Real Time Rendering

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);

}

0A [ 1A ,2

)]1A )

sin

cosarctan2

1

4 sv

svvp

T

TT ,(F (F

Page 20: A Practical Analytic Single Scattering  Model for Real Time Rendering

Implementation Choices for Airlight

1. 64x64 floating point texture for F table

2. Add a skybox to invoke vertex/pixel shader to compute Airlight.

Nearest Neighbor

Bilinear Interpolation

Page 21: A Practical Analytic Single Scattering  Model for Real Time Rendering

Airlight Demo

Demo

Page 22: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Surface Radiance Model

Point Source, s

Surface Point, p

Viewer, vn̂

BRDF

Page 23: A Practical Analytic Single Scattering  Model for Real Time Rendering

2D:F

The Surface Radiance Model

Point Source, s

Surface Point, p

Viewer, vn̂

BRDF

1D function on i2D : Lambertian, Phong

nG0G: ,

iiairlightsurface dBRDFLL cos

Page 24: A Practical Analytic Single Scattering  Model for Real Time Rendering

Special Function G

Page 25: A Practical Analytic Single Scattering  Model for Real Time Rendering

Shader Code for Surface Radiance

float SurfaceRadiance( )

{

float4 G = texRECT(G_20, Tsp, thetas);

return Ks*Io*beta/(2*Dsp*PI)*G;

}

)',(2

20

sspnsp

ssurface TG

T

kIL

Page 26: A Practical Analytic Single Scattering  Model for Real Time Rendering

Shader Code for Surface Radiance

)',(2

20

sspnsp

ssurface TG

T

kIL

float SurfaceRadiance( )

{

float4 G = texRECT(G_20, Tsp, thetas);

return Ks*Io*beta/(2*Dsp*PI)*G;

}

Page 27: A Practical Analytic Single Scattering  Model for Real Time Rendering

Shader Code for Surface Radiance

)',(2

20

sspnsp

ssurface TG

T

kIL

float SurfaceRadiance( )

{

float4 G = texRECT(G_20, Tsp, thetas);

return Ks*Io*beta/(2*Dsp*PI)*G;

}

Page 28: A Practical Analytic Single Scattering  Model for Real Time Rendering

Implementation Choices for Surface Radiance

1. Need to add radiance contribution from attenuated direct lighting.

2. Attenuate the final radiance according to distance to the camera.

Point Source, s

Surface Point, p

Viewer, vn̂

BRDF

Page 29: A Practical Analytic Single Scattering  Model for Real Time Rendering

Implementation Choices for Surface Radiance

1. Need to add radiance contribution from attenuated direct lighting.

2. Attenuate the final radiance according to distance to the camera.

Point Source, s

Surface Point, p

Viewer, vn̂

BRDF

Page 30: A Practical Analytic Single Scattering  Model for Real Time Rendering

Lambertian and Phong Spheres

Lambertian Phong=10 Phong=20

Clear

Day

Foggy Day

Page 31: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Complete Model

airlightsurfaceT LLeL vp

Airlight Model

Surface Radiance Model

2 LookupsF2 Lookups andnG0G

Page 32: A Practical Analytic Single Scattering  Model for Real Time Rendering

The Complete Model

Texture lookups Analytic expression

Maya Plug-in available from our website.

NIS 4 IS8

Image size

Lights

Terms to approximate the phase function

airlightsurfaceT LLeL vp

Airlight Model

Surface Radiance Model

2 LookupsF2 Lookups andnG0G

Page 33: A Practical Analytic Single Scattering  Model for Real Time Rendering

Demo: Complex Geometry

Demo

Page 34: A Practical Analytic Single Scattering  Model for Real Time Rendering

Complex Lighting and Material

Rendering time is linear in the number of lights.

Surface Point, p

Viewer, v

svD

vpD

BRDF

Page 35: A Practical Analytic Single Scattering  Model for Real Time Rendering

Point Spread Function

Assume equidistant point sources

Scattering is essentially Point Spread Function (PSF).

PSF

Angles

Inte

nsi

ty

Input Output

Angles

Inte

nsi

ty

Inte

nsi

ty

Angular Component Amplitude Component

Page 36: A Practical Analytic Single Scattering  Model for Real Time Rendering

Point Spread Function

Assume equidistant point sources

Scattering is essentially Point Spread Function (PSF).

PSF

Angles

Inte

nsi

ty

Input Output

Angles

Inte

nsi

ty

Inte

nsi

ty

Angular Component Amplitude ComponentTsv*exp[-Tsv] * Pre-convolved Environment Map

Page 37: A Practical Analytic Single Scattering  Model for Real Time Rendering

Convolution with PSFBRDF Environment Map

Clear Day

Foggy Day

Page 38: A Practical Analytic Single Scattering  Model for Real Time Rendering

Demo: PSF for Complex Lighting

Demo

Page 39: A Practical Analytic Single Scattering  Model for Real Time Rendering

50fps 40fps

Summary

Analytic Airlight Model

An OpenGL-Like Practical Real-Time Rendering Technique:

Page 40: A Practical Analytic Single Scattering  Model for Real Time Rendering

Summary

Analytic Airlight Model

Analytic Surface Radiance Model

An OpenGL-Like Practical Real-Time Rendering Technique:

50fps 60fps

Page 41: A Practical Analytic Single Scattering  Model for Real Time Rendering

Summary

Analytic Airlight Model

Analytic Surface Radiance Model

PSF for Complex Lighting and Natural Material

An OpenGL-Like Practical Real-Time Rendering Technique:

100fps 20fps

Page 42: A Practical Analytic Single Scattering  Model for Real Time Rendering

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.

Page 43: A Practical Analytic Single Scattering  Model for Real Time Rendering

Thanks for Listening!Maya Plug-in, 2D tables, and Shader code:

http://www.cs.columbia.edu/~bosun/research.htm

Page 44: A Practical Analytic Single Scattering  Model for Real Time Rendering

The End

Page 45: A Practical Analytic Single Scattering  Model for Real Time Rendering

The End