Classical methods in offline rendering
-
Upload
cao-jiayin -
Category
Engineering
-
view
1.004 -
download
7
Transcript of Classical methods in offline rendering
Classical Methods in Offline RenderingJerry Cao
Content Team
OverView
οΏ½ Basics in Computer Graphics
οΏ½ Whitted Ray Tracing
οΏ½ Path Tracing
οΏ½ Light Tracing
οΏ½ Instant Radiosity
οΏ½ Bidirectional Path Tracing
Ray Traced Images
Ray Traced Images
Ray Traced Images
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
Why Ray Tracing?
οΏ½ Soft Shadow
οΏ½ Color Bleeding
οΏ½ Reflection & Refraction
οΏ½ Caustics
οΏ½ Depth of Field
οΏ½ Motion Blur
οΏ½ Subsurface Scattering
οΏ½ β¦
How to do Ray Tracing
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.
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
οΏ½ ππ π, π€π, π€π =ππΏπ π,π€πππΈ π,π€π
Rendering Equation
οΏ½ Or Light Transport Equation (LTE)
οΏ½πΏπ π,π€π = πΏπ π,π€π + β« πΏπ π, π€π π π,π€π, π€π cosππππ€π
Monte Carlo Integration
οΏ½ To Evaluate an IntegralοΏ½ πΌ = β«Ξ©π(π₯)dx
οΏ½ We can use the following estimation
οΏ½ πΉπ =1πΞ£π=1π
π π₯ππ π₯π
οΏ½ Proof
οΏ½
πΈ πΉπ = πΈ1πΞ£π=1π
π π₯ππ π₯π
= 1πΞ£π=1π β«Ξ©
π π₯ππ π₯π
π π₯π π π₯
= β«Ξ© π π₯ ππ₯= πΌ
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βπ
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)
Multiple Importance Sampling
οΏ½πΉπππ = Ξ£π=1π1ππΞ£π=1ππ π€π ππ,π
π ππ,πππ ππ,π
οΏ½ππ should satisfy the following condition
οΏ½Ξ£π=1π π€π π₯ = 1 ππ π π₯ β 0οΏ½π€π π₯ = 0 ππ ππ π₯ = 0
Multiple Importance Sampling
οΏ½ Common weight factors:οΏ½ Balance Heuristic
οΏ½π€π π₯ =ππππ π₯Ξ£πππππ π₯
οΏ½ Power Heuristic
οΏ½π€π π₯ =ππππ
π
Ξ£ππππππ
Multiple Importance Sampling
οΏ½ MIS in direct light sampling
Multiple Importance Sampling
οΏ½ MIS in Bidirectional Path Tracing
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(π)
Whitted Ray Tracing
οΏ½ Only dirac delta BRDF and light sources are considered.οΏ½ Pure Reflective & Refractive
οΏ½ Point light & directional light
My GPU Solution
οΏ½ CUDA accelerated
οΏ½ Some data:οΏ½ 87w+ triangles in the dragon
οΏ½ 640 x 480 resolution
οΏ½ 7-8 fps on a GTX 260
Light Transport Equation
οΏ½πΏπ π, π€π = πΏπ π, π€π + β« πΏπ π, π€π π π, π€π, π€π cosππππ€π
Relation between dA and dw
οΏ½ππ€ = πππ ππ2ππ΄
οΏ½ππ΄ =πππ ππ2ππ€
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
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
Direct(Local) Illumination vs Global Illumination
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
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
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 + β―))
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.
Path Tracing
οΏ½ Tracing rays from camera
οΏ½ Whitted ray tracing stops if brdf is not a delta one, while path tracing doesnβt
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βππ,π)
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
Path Tracing Conclusion
οΏ½ Unbiased, easy to implement, RobustοΏ½ Convergence rate may be low for certain
scenes, No Caustics
Instant Radiosity
οΏ½ Distribute virtual point light in the first stage.
οΏ½ Use those virtual point light to evaluate the radiance
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 )
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.
Quite different way of converging
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.
Instant Radiosity Conclusion
οΏ½ Unbiased, easy to implement
οΏ½ Relatively slow convergence rate, almost no specular surface reflection
οΏ½ Not very practical unless with much enhancement
Light Tracing
οΏ½ Trace rays from light source
οΏ½ Inefficient most of the time
The reverse of Path Tracing
οΏ½ W is importance function.
οΏ½ππ π,π€π = ππ π,π€π + β«ππ π,π€π π π,π€π, π€π cosππππ€π
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 β¦πππ
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)
Light Tracing vs Path Tracing
Light Tracing Conclusion
οΏ½ Easy to implement, good caustics
οΏ½ Low convergence rate, especially for larger scene. Almost no specular surfaces.
Light Tracing Conclusion
οΏ½ Good at rendering caustics for small scene
οΏ½ Terrible convergence rate for outdoor scene
οΏ½ Specular or highly glossy surfaces need special treatment
Bidirectional Path Tracing
οΏ½ Shooting rays from both sides.
Different Cases in BDPT
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
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
With MIS in BDPT
οΏ½ Same amount of time
οΏ½ Much better result
οΏ½ Quite Robust
οΏ½ Shows everything!!
Resources for further detail
οΏ½ Reference Implementation:οΏ½ https://github.com/JerryCao1985/SORT
οΏ½ My Tech Blog:οΏ½ https://agraphicsguy.wordpress.com/
Q&A