54
Classical Methods in Offline Rendering Jerry Cao Content Team

Classical methods in offline rendering

Embed Size (px)

Citation preview

Page 1: Classical methods in offline rendering

Classical Methods in Offline RenderingJerry Cao

Content Team

Page 2: Classical methods in offline rendering

OverView

� Basics in Computer Graphics

� Whitted Ray Tracing

� Path Tracing

� Light Tracing

� Instant Radiosity

� Bidirectional Path Tracing

Page 3: Classical methods in offline rendering

Ray Traced Images

Page 4: Classical methods in offline rendering

Ray Traced Images

Page 5: Classical methods in offline rendering

Ray Traced Images

Page 6: Classical methods in offline rendering

Why Ray Tracing?

� Two well known methods for rendering.� Rasterization

� Ray Tracing

� Why Ray Tracing?� Unbiased Methods Available

� Similar to how reality works

� Much higher quality

Page 7: Classical methods in offline rendering

Why Ray Tracing?

� Soft Shadow

� Color Bleeding

� Reflection & Refraction

� Caustics

� Depth of Field

� Motion Blur

� Subsurface Scattering

� …

Page 8: Classical methods in offline rendering

How to do Ray Tracing

Page 9: Classical methods in offline rendering

The very Basics

� Solid Angle� An object's solid angle in steradians is equal to the area of the segment of a unit

sphere, centered at the angle's vertex, that the object covers.

Page 10: Classical methods in offline rendering

The very Basics

� Flux� Energy passing through a specific area per unit time

� Irradiance� Flux per unit area

� Radiance� Flux density per unit area, per solid angle

� Bidirectional Reflection Density Function (BRDF)� Gives a formalism for describing the reflection from a surface

� 𝑓𝑟 𝑝, 𝑤𝑖, 𝑤𝑜 =𝑑𝐿𝑜 𝑝,𝑤𝑜𝑑𝐸 𝑝,𝑤𝑖

Page 11: Classical methods in offline rendering

Rendering Equation

� Or Light Transport Equation (LTE)

�𝐿𝑜 𝑝,𝑤𝑜 = 𝐿𝑒 𝑝,𝑤𝑜 + ∫ 𝐿𝑖 𝑝, 𝑤𝑖 𝑓 𝑝,𝑤𝑖, 𝑤𝑜 cos𝜃𝑖𝑑𝑤𝑖

Page 12: Classical methods in offline rendering

Monte Carlo Integration

� To Evaluate an Integral� 𝐼 = ∫Ω𝑓(𝑥)dx

� We can use the following estimation

� 𝐹𝑁 =1𝑁Σ𝑖=1𝑁

𝑓 𝑥𝑖𝑝 𝑥𝑖

� Proof

𝐸 𝐹𝑁 = 𝐸1𝑁Σ𝑖=1𝑁

𝑓 𝑥𝑖𝑝 𝑥𝑖

= 1𝑁Σ𝑖=1𝑁 ∫Ω

𝑓 𝑥𝑖𝑝 𝑥𝑖

𝑝 𝑥𝑖 𝑑 𝑥

= ∫Ω 𝑓 𝑥 𝑑𝑥= 𝐼

Page 13: Classical methods in offline rendering

Why Monte Carlo

� Estimation goes the same way regardless of how many dimensions there are.

� Only need to be able to evaluate the function at arbitrary point.

� Cons:

� Low Convergence Rate: 1√𝑁

Page 14: Classical methods in offline rendering

Importance Sampling

� Sample where it matters most

� An example:

� 𝑓 𝑥 = { 0.01 𝑥 ∈ 0, 0.011.01 𝑥 ∈ [0.01, 1)

� Perfect pdf:

� p 𝑥 = { 0.01 𝑥 ∈ 0, 0.011.01 𝑥 ∈ [0.01, 1)

� A terrible pdf:

� p 𝑥 = { 99.01 𝑥 ∈ 0, 0.010.01 𝑥 ∈ [0.01, 1)

Page 15: Classical methods in offline rendering

Multiple Importance Sampling

�𝐹𝑚𝑖𝑠 = Σ𝑖=1𝑛1𝑛𝑖Σ𝑗=1𝑛𝑖 𝑤𝑖 𝑋𝑖,𝑗

𝑓 𝑋𝑖,𝑗𝑝𝑖 𝑋𝑖,𝑗

�𝑊𝑖 should satisfy the following condition

�Σ𝑖=1𝑛 𝑤𝑖 𝑥 = 1 𝑖𝑓 𝑓 𝑥 ≠ 0�𝑤𝑖 𝑥 = 0 𝑖𝑓 𝑝𝑖 𝑥 = 0

Page 16: Classical methods in offline rendering

Multiple Importance Sampling

� Common weight factors:� Balance Heuristic

�𝑤𝑖 𝑥 =𝑛𝑖𝑝𝑖 𝑥Σ𝑘𝑛𝑘𝑝𝑘 𝑥

� Power Heuristic

�𝑤𝑖 𝑥 =𝑛𝑖𝑞𝑖

𝑛

Σ𝑘𝑛𝑘𝑞𝑘𝑛

Page 17: Classical methods in offline rendering

Multiple Importance Sampling

� MIS in direct light sampling

Page 18: Classical methods in offline rendering

Multiple Importance Sampling

� MIS in Bidirectional Path Tracing

Page 19: Classical methods in offline rendering

How to Sample a pdf

� Rejection Method� Inefficient

� Inversion method

� Compute the CDF 𝑃 𝑥 = ∫0𝑥 𝑝 𝑡 𝑑𝑡

� Compute the inverse of CDF 𝑃−1 𝑥

� Obtain a uniformly distributed random number, µ

� Compute 𝑋 = 𝑃−1(𝜇)

Page 20: Classical methods in offline rendering

Whitted Ray Tracing

� Only dirac delta BRDF and light sources are considered.� Pure Reflective & Refractive

� Point light & directional light

Page 21: Classical methods in offline rendering

My GPU Solution

� CUDA accelerated

� Some data:� 87w+ triangles in the dragon

� 640 x 480 resolution

� 7-8 fps on a GTX 260

Page 22: Classical methods in offline rendering

Light Transport Equation

�𝐿𝑜 𝑝, 𝑤𝑜 = 𝐿𝑒 𝑝, 𝑤𝑜 + ∫ 𝐿𝑖 𝑝, 𝑤𝑖 𝑓 𝑝, 𝑤𝑖, 𝑤𝑜 cos𝜃𝑖𝑑𝑤𝑖

Page 23: Classical methods in offline rendering

Relation between dA and dw

�𝑑𝑤 = 𝑐𝑜𝑠𝜃𝑟2𝑑𝐴

�𝑃𝐴 =𝑐𝑜𝑠𝜃𝑟2𝑃𝑤

Page 24: Classical methods in offline rendering

Deeper dive into LTE

•𝐿 𝑝0,𝑤𝑜 = 𝐿𝑒 𝑝0, 𝑤𝑜 + ∫ 𝐿 𝑝0, 𝑤 𝑓 𝑝0,𝑤, 𝑤𝑜 cos𝜃0→1𝑑𝑤

= 𝐿𝑒 𝑝1 → 𝑝0 + ∫ 𝐿 𝑝2 → 𝑝1 𝑓 𝑝2 → 𝑝1 → 𝑝0𝑉(𝑝1↔𝑝2)𝑐𝑜𝑠𝜃1→2𝑐𝑜𝑠𝜃2→1

𝑟2𝑑𝐴2

= 𝐿𝑒 𝑝1 → 𝑝0 + ∫ 𝐿 𝑝2 → 𝑝1 𝑓 𝑝2 → 𝑝1 → 𝑝0 𝐺 𝑝1 ↔ 𝑝2 𝑑𝐴2

• 𝐺 𝑝1 ↔ 𝑝2 =𝑉(𝑝1↔𝑝2)𝑐𝑜𝑠𝜃1→2𝑐𝑜𝑠𝜃2→1𝑟2

Page 25: Classical methods in offline rendering

Deeper dive into LTE

� 𝐿 𝑝1 → 𝑝0 = 𝐿𝑒 𝑝1 → 𝑝0 + ∫ 𝐿 𝑝2 → 𝑝1 𝑓 𝑝2 → 𝑝1 → 𝑝0 𝐺 𝑝1 ↔ 𝑝2 𝑑𝐴2

� In the same way we can expend the red one:

� 𝐿 𝑝2 → 𝑝1 = 𝐿𝑒 𝑝2 → 𝑝1 + ∫ 𝐿 𝑝3 → 𝑝2 𝑓 𝑝3 → 𝑝2 → 𝑝1 𝐺 𝑝2 ↔ 𝑝3 𝑑𝐴3

� Dropping the brown part, we have the following equation for direct illumination:

� 𝐿 𝑝1 → 𝑝0 = 𝐿𝑒 𝑝1 → 𝑝0 + ∫ 𝐿𝑒 𝑝2 → 𝑝1 𝑓 𝑝2 → 𝑝1 → 𝑝0 𝐺 𝑝1 ↔ 𝑝2 𝑑𝐴2

Page 26: Classical methods in offline rendering

Direct(Local) Illumination vs Global Illumination

Page 27: Classical methods in offline rendering

Deeper dive into LTE

𝐿 𝑝0,𝑤𝑜 = 𝐿𝑒 𝑝1 → 𝑝0+ ∫ 𝐿𝑒 𝑝2 → 𝑝1 𝑓 𝑝2 → 𝑝1 → 𝑝0 𝐺 𝑝1 ↔ 𝑝2 𝑑𝐴2+ 𝐿𝑒 𝑝3 → 𝑝2 𝑓 𝑝3 → 𝑝2 → 𝑝1 𝐺 𝑝2 ↔ 𝑝3 𝑓 𝑝2 → 𝑝1 → 𝑝0 𝐺 𝑝1 ↔ 𝑝2 𝑑𝐴3𝑑𝐴2

…+∫…∫𝐿𝑒 𝑝𝑛 → 𝑝𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑘 → 𝑝𝑘−1 → 𝑝𝑘−2 𝐺 𝑝𝑘 ↔ 𝑝𝑘−1 𝑑𝐴𝑛 …𝑑𝐴2

� We define the following term:

� 𝑇𝑛(𝑝1 → 𝑝0)=∫…∫𝐿𝑒 𝑝𝑛 → 𝑝𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑘 → 𝑝𝑘−1 → 𝑝𝑘−2 𝐺 𝑝𝑘 ↔ 𝑝𝑘−1 𝑑𝐴𝑛 …𝑑𝐴2

Page 28: Classical methods in offline rendering

Deeper dive into LTE

� 𝐿 𝑝1 → 𝑝0 = 𝑖=1𝑖=∞𝑇𝑖(𝑝1 → 𝑝0)

� It turns out to be a very simple equation, what it says is relatively straightforward, radiance from P1 to P0 is the combination of:� Radiance comes from light directly

� Direct Illumination

� Light contribution from multiple bounces

Page 29: Classical methods in offline rendering

Russian Roulette

� For each Ti after several bounces, we start Russian roulette:

� 𝑇𝑖′ = {𝑇𝑖𝑝𝑥 ∈ 0, 𝑝

0 𝑥 ∈ [𝑝, 1)

� The average of 𝑇𝑖′ is exactly the same with 𝑇𝑖, which makes the above estimation unbiased.

� One step further:

� 𝐿 𝑝1 → 𝑝0 = T1 + T2 + T3 + T4 +1𝑝(𝑇5 +

1𝑝(𝑇6 + ⋯))

Page 30: Classical methods in offline rendering

Evaluate the integral of LTE

� We’ll focus on path with specific number of vertices.� 𝑇𝑛(𝑝1 → 𝑝0)=∫…∫𝐿𝑒 𝑝𝑛 → 𝑝𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑘 → 𝑝𝑘−1 → 𝑝𝑘−2 𝐺 𝑝𝑘 ↔ 𝑝𝑘−1 𝑑𝐴𝑛 …𝑑𝐴2

� With Monte Carlo method, we only need to evaluate the following equation:

� 𝑇𝑛 𝑝1 → 𝑝0 =1𝑁 𝑖=1𝑁

𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝐺 𝑝𝑖,𝑘↔𝑝𝑖,𝑘−1

𝑃𝐴 𝑝𝑖,0 𝑃𝐴 𝑝𝑖,1 𝑃𝐴 𝑝𝑖,2 …𝑃𝐴(𝑝𝑖,𝑛)

� The PDFs are different in different methods.

Page 31: Classical methods in offline rendering

Path Tracing

� Tracing rays from camera

� Whitted ray tracing stops if brdf is not a delta one, while path tracing doesn’t

Page 32: Classical methods in offline rendering

PDF of sampling a path of n+1 vertices

� We’ll assume 𝑃 𝑝0 and 𝑃 𝑝1 are both 1 for simplicity. That said depth of field is not taken into account so far.

� Since we generate new vertex by sampling a new ray from current bxdf, we only have the PDF w.r.t solid instead of area.� Sampling pdf w.r.t area is too much inefficient !

� 𝑃𝐴 𝑝𝑘 =𝑐𝑜𝑠𝜃𝑘→𝑘−1

𝑟2𝑃𝑤 𝑝𝑘−1 → 𝑝𝑘 =

𝐺 𝑝𝑘↔𝑝𝑘−1 𝑃𝑤 𝑝𝑘−1→𝑝𝑘𝑐𝑜𝑠𝜃𝑘−1→𝑘

� Dropping this term in, we have the following equation:

�𝑇𝑛 𝑝1 → 𝑝0 =

1𝑁 𝑖=1𝑁

𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝐺 𝑝𝑖,𝑘↔𝑝𝑖,𝑘−1

𝑃𝐴 𝑝𝑖,0 𝑃𝐴 𝑝𝑖,1 𝑃𝐴 𝑝𝑖,2 …𝑃𝐴 𝑝𝑖,𝑛

= 1𝑁 𝑖=1𝑁 𝐿𝑒 𝑝𝑖,𝑛 → 𝑝𝑖,𝑛−1 𝑘=2𝑘=𝑛

𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝑐𝑜𝑠𝜃𝑖,𝑘−1→𝑘𝑝𝑤(𝑝𝑖,𝑘−1→𝑝𝑖,𝑘)

Page 33: Classical methods in offline rendering

Tricks

� 𝑇𝑛 𝑝1 → 𝑝0 can reuse the existing path of 𝑇𝑛−1 𝑝1 → 𝑝0 , then only one vertex is needed to be sampled to evaluate each T.

�𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝑐𝑜𝑠𝜃𝑖,𝑘−1→𝑘

𝑝𝑤(𝑝𝑖,𝑘−1→𝑝𝑖,𝑘)can be computed incrementally.

� Use Multiple Importance Sampling to sample both of light source and bsdf, instead of trying to hit light source by chance, or:� It won’t work for delta lights.

� Terrible convergence rate if light source is small

Page 34: Classical methods in offline rendering

Path Tracing Conclusion

� Unbiased, easy to implement, Robust� Convergence rate may be low for certain

scenes, No Caustics

Page 35: Classical methods in offline rendering

Instant Radiosity

� Distribute virtual point light in the first stage.

� Use those virtual point light to evaluate the radiance

Page 36: Classical methods in offline rendering

PDF of a path in Instant Radiosity

� Again, we assume 𝑃 𝑝0 and 𝑃 𝑝1 are both 1.

� 𝑃𝐴 𝑝𝑘 =𝑐𝑜𝑠𝜃𝑘−1→𝑘

𝑟2𝑃𝑤 𝑝𝑘 → 𝑝𝑘−1 =

𝐺 𝑝𝑘↔𝑝𝑘−1 𝑃𝑤 𝑝𝑘→𝑝𝑘−1𝑐𝑜𝑠𝜃𝑘→𝑘−1

� The above equation only works for vertices from 2 to n-1, we already have the pdf w.r.t area of sampling vertex on light sources, since that’s exactly what we do.

� Again, dropping it in, we have:

𝑇𝑛 𝑝1 → 𝑝0 =1𝑁 𝑖=1𝑁

𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝐺 𝑝𝑖,𝑘↔𝑝𝑖,𝑘−1

𝑃𝐴 𝑝𝑖,0 𝑃𝐴 𝑝𝑖,1 𝑃𝐴 𝑝𝑖,2 …𝑃𝐴(𝑝𝑖,𝑛)

= 1𝑁 𝑖=1𝑁 (

𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑐𝑜𝑠𝜃𝑖,𝑛→𝑛−1𝑃𝑤 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑃𝐴(𝑝𝑖,𝑛)

𝑘=4𝑘=𝑛𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝑐𝑜𝑠𝜃𝑖,𝑘−1→𝑘−2

𝑝𝑤(𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2)

𝑓 𝑝𝑖,2 → 𝑝𝑖,1 → 𝑝𝑖,0 𝐺 𝑝𝑖,2 ↔ 𝑝𝑖,3 𝑓 𝑝𝑖,3 → 𝑝𝑖,2 → 𝑝𝑖,1 )

Page 37: Classical methods in offline rendering

LTE Evaluation

𝑇𝑛 𝑝1 → 𝑝0 =1𝑁 𝑖=1𝑁

𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝐺 𝑝𝑖,𝑘↔𝑝𝑖,𝑘−1

𝑃𝐴 𝑝𝑖,0 𝑃𝐴 𝑝𝑖,1 𝑃𝐴 𝑝𝑖,2 …𝑃𝐴(𝑝𝑖,𝑛)

= 1𝑁 𝑖=1𝑁 (

𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑐𝑜𝑠𝜃𝑖,𝑛→𝑛−1𝑃𝑤 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑃𝐴(𝑝𝑖,𝑛)

𝑘=4𝑘=𝑛𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝑐𝑜𝑠𝜃𝑖,𝑘−1→𝑘−2

𝑝𝑤(𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2)

𝑓 𝑝𝑖,2 → 𝑝𝑖,1 → 𝑝𝑖,0 𝐺 𝑝𝑖,2 ↔ 𝑝𝑖,3 𝑓 𝑝𝑖,3 → 𝑝𝑖,2 → 𝑝𝑖,1 )

� The green part will be evaluated incrementally in the VPL distribution stage.

� The red part is done during per pixel radiance evaluation.

Page 38: Classical methods in offline rendering

Quite different way of converging

Page 39: Classical methods in offline rendering

Special Case Handling

� See the hotspot at corners, it is caused by the inverse distance in G term.

� Clamp the inverse distance to avoid it.� 𝐺 = min 𝐺, 𝐺𝑐𝑙𝑎𝑚𝑝 + max(𝐺 − 𝐺𝑐𝑙𝑎𝑚𝑝, 0)

� Evaluate the red part by using other methods, like path tracing.

Page 40: Classical methods in offline rendering

Instant Radiosity Conclusion

� Unbiased, easy to implement

� Relatively slow convergence rate, almost no specular surface reflection

� Not very practical unless with much enhancement

Page 41: Classical methods in offline rendering

Light Tracing

� Trace rays from light source

� Inefficient most of the time

Page 42: Classical methods in offline rendering

The reverse of Path Tracing

� W is importance function.

�𝑊𝑜 𝑝,𝑤𝑜 = 𝑊𝑒 𝑝,𝑤𝑜 + ∫𝑊𝑖 𝑝,𝑤𝑖 𝑓 𝑝,𝑤𝑖, 𝑤𝑜 cos𝜃𝑖𝑑𝑤𝑖

Page 43: Classical methods in offline rendering

More than a Pixel

� What is stored in a pixel, radiance?

�𝐼𝑗 = ∫𝐴0 ∫𝑊𝑒 𝑝0, 𝜔 𝐿𝑖 𝑝1,−𝜔 𝑐𝑜𝑠𝜃 𝑑𝑝0𝑑𝜔

= ∫∫𝑊𝑒 𝑝0 → 𝑝1 𝐿𝑖 𝑝1 → 𝑝0 𝐺 𝑝0 ↔ 𝑝1 𝑑𝑝0𝑑𝑝1

� Drop LTE in it, we have the equation for the radiance contribution of a specific length:

� 𝐼𝑗 = ∫…∫𝑊𝑒 𝑝0 → 𝑝1 𝐺 𝑝0 ↔ 𝑝1 𝐿𝑒 𝑝𝑛 → 𝑝𝑛−1 𝑘=2𝑘=𝑛 𝐺 𝑝𝑖,𝑘 ↔ 𝑝𝑖,𝑘−1* 𝑓 𝑝𝑖,𝑘 → 𝑝𝑖,𝑘−1 → 𝑝𝑖,𝑘−2 𝑑𝑝0𝑑𝑝1 …𝑑𝑝𝑛

Page 44: Classical methods in offline rendering

PDF of sampling a path of n+1 vertices

� 𝑃𝐴 𝑝𝑘 =𝑐𝑜𝑠𝜃𝑘→𝑘+1

𝑟2𝑃𝑤 𝑝𝑘+1 → 𝑝𝑘 =

𝐺 𝑝𝑘↔𝑝𝑘+1 𝑃𝑤 𝑝𝑘+1→𝑝𝑘𝑐𝑜𝑠𝜃𝑘+1→𝑘

𝑇𝑛 𝑝1 → 𝑝0 =1𝑁 𝑖=1𝑁

𝑊𝑒 𝑝𝑖,0→𝑝𝑖,1 𝐺 𝑝𝑖,0↔𝑝𝑖,1 𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑘=2𝑘=𝑛 𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝐺 𝑝𝑖,𝑘↔𝑝𝑖,𝑘−1

𝑃𝐴 𝑝𝑖,0 𝑃𝐴 𝑝𝑖,1 𝑃𝐴 𝑝𝑖,2 …𝑃𝐴 𝑝𝑖,𝑛

= 1𝑁 𝑖=1𝑁

𝐿𝑒 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑐𝑜𝑠𝜃𝑖,𝑛→𝑛−1𝑃𝐴 𝑝𝑖,𝑛 𝑃𝑤 𝑝𝑖,𝑛→𝑝𝑖,𝑛−1 𝑃𝐴(𝑝𝑖,0)

𝐺 𝑝𝑖,0 ↔ 𝑝𝑖,1 𝑊𝑒 𝑝𝑖,0 → 𝑝𝑖,1

𝑓(𝑝𝑖,0 → 𝑝𝑖,1 → 𝑝𝑖,2) 𝑘=3𝑘=𝑛𝑓 𝑝𝑖,𝑘→𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2 𝑐𝑜𝑠𝜃𝑖,𝑘−1→𝑘−2

𝑝𝑤(𝑝𝑖,𝑘−1→𝑝𝑖,𝑘−2)

Page 45: Classical methods in offline rendering

Light Tracing vs Path Tracing

Page 46: Classical methods in offline rendering

Light Tracing Conclusion

� Easy to implement, good caustics

� Low convergence rate, especially for larger scene. Almost no specular surfaces.

Page 47: Classical methods in offline rendering

Light Tracing Conclusion

� Good at rendering caustics for small scene

� Terrible convergence rate for outdoor scene

� Specular or highly glossy surfaces need special treatment

Page 48: Classical methods in offline rendering

Bidirectional Path Tracing

� Shooting rays from both sides.

Page 49: Classical methods in offline rendering

Different Cases in BDPT

Page 50: Classical methods in offline rendering

All Cases in BDPT

� Path Tracing Case, no vertex sampled on light source.

� Light Tracing Case, only one vertex sampled on aperture.

� Direct Illumination Case, only one vertex sampled on light source

� Common Case, sub-path from each side contains at least two vertices

Page 51: Classical methods in offline rendering

A Naïve BDPT Implementation

� Works terrible, delivers no value at all.� Almost wrong value for specular

surface

� Caustics are a little bit dimmer

� A lot of fireflies around corners

Page 52: Classical methods in offline rendering

With MIS in BDPT

� Same amount of time

� Much better result

� Quite Robust

� Shows everything!!

Page 53: Classical methods in offline rendering

Resources for further detail

� Reference Implementation:� https://github.com/JerryCao1985/SORT

� My Tech Blog:� https://agraphicsguy.wordpress.com/

Page 54: Classical methods in offline rendering

Q&A