Advanced Computer Graphics

From David's Wiki
Jump to navigation Jump to search
\( \newcommand{\P}[]{\unicode{xB6}} \newcommand{\AA}[]{\unicode{x212B}} \newcommand{\empty}[]{\emptyset} \newcommand{\O}[]{\emptyset} \newcommand{\Alpha}[]{Α} \newcommand{\Beta}[]{Β} \newcommand{\Epsilon}[]{Ε} \newcommand{\Iota}[]{Ι} \newcommand{\Kappa}[]{Κ} \newcommand{\Rho}[]{Ρ} \newcommand{\Tau}[]{Τ} \newcommand{\Zeta}[]{Ζ} \newcommand{\Mu}[]{\unicode{x039C}} \newcommand{\Chi}[]{Χ} \newcommand{\Eta}[]{\unicode{x0397}} \newcommand{\Nu}[]{\unicode{x039D}} \newcommand{\Omicron}[]{\unicode{x039F}} \DeclareMathOperator{\sgn}{sgn} \def\oiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x222F}\,}{\unicode{x222F}}{\unicode{x222F}}{\unicode{x222F}}}\,}\nolimits} \def\oiiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x2230}\,}{\unicode{x2230}}{\unicode{x2230}}{\unicode{x2230}}}\,}\nolimits} \)

Classnotes for CMSC740 taught by Matthias Zwicker (Spring 2020).
This first portion of the class focuses on ray tracing (specifically, path tracing) and is based on the PBRT book
The second portion of the class introduces deep learning approaches to computer graphics.


How to speed up intersection calculations during ray tracing.

Object Subdivision

Bounding volume hierarchy

  • Create a tree where objects are placed together.
  • Each node corresponds to a region covering all the objects it has
  • You want to insert in some greedy way:
    • Minimize the size of each region
  • Subtrees may overlap and are unorder

Spacial Subdivision

Octtree, kd tree


Geometrical Optics

  • Light are rays which reflect, refract, and scatter

Solid Angle

  • Solid angle = area / radius^2 on a sphere

Spectral Radiance

  • Spectral radiance is energy per time per wavelength per solid angle per area
  • \(\displaystyle L(t, \lambda, \omega, \mathbf{x})=\frac{d^4 Q(t, \lambda, \omega, \mathbf{x})}{dt d\lambda d\omega dA^\perp}\)
where energy is \(\displaystyle Q(t, \lambda, \omega, \mathbf{x})\)


  • power per solid angle per area
  • \(\displaystyle L(\omega, \mathbf{x}) = \frac{d^2 \Phi(\omega, \mathbf{x})}{d\omega dA^\perp}\)


Radiant Intensity

BRDF, Reflection Integral

Monte Carlo Integration

Suppose we want to estimate \(\displaystyle I_1 = \int_{a}^{b}f(x)dx\).
Then we can use \(\displaystyle \hat{I_1} = \frac{b-a}{N}\sum f(X_i)\) where \(\displaystyle X_1,...,X_n \sim Uniform(a,b)\).
This is because \(\displaystyle E\left[\frac{b-a}{N}\sum f(X_i)\right] = \frac{b-a}{N}\sum E[f(X_i)] = \frac{1}{N}\sum \int_{a}^{b}(b-a)f(x)(1/(b-a))dx = \int_{a}^{b}f(x)dx\)
Note that in general, if we can sample from some distribution with pdf \(\displaystyle p(x)\) then we use the estimator:

  • \(\displaystyle \hat{I} = \frac{1}{N} \sum \frac{f(X_i)}{p(X_i)}\)

Importance Sampling

Suppose we can only sample from pdf \(\displaystyle g(x)\) but we want to sample from pdf \(\displaystyle p(x)\) to yield a more reliable (less variance) estimate.
Then we can sample from \(\displaystyle p(x)\) using \(\displaystyle Y = F_{p}^{-1}(F_{g}(X))\).
Then apply the above equation.


Some notes about integration

  • Hemisphere: \(\displaystyle d\omega = \sin \theta d\theta d\phi\) where \(\displaystyle \theta \in [0, \pi/2)\) and \(\displaystyle \phi \in [0, 2\pi)\)

Path Tracing

PDF for sampling light sources

\(\displaystyle p_{\omega}(x) = \frac{1}{\# lights} * \frac{1}{area of light} * conversion\)

Refractive objects

For mirrors

In practice, refractive objects are handled as a distinct case.
You do not need to sample a direction.

For glass
  • Randomly sample either reflected or refracted ray with given probability.
  • Typically produces a lot of noice

Emitting surfaces

  • If a ray accidentally hits emitting surface, don't add emission
    • Exception: If eye ray hits emitting surface
    • Exception: If ray is generated from a refractive surface

Advanced Sampling Techniques

Multiple Importance Sampling

Weighted sampling between \(\displaystyle F_a\) \(\displaystyle F_d\)

  • Take \(\displaystyle N\) samples from each technique (j=1,...,N)
  • \(\displaystyle F=\frac{1}{N} \sum_{j=1}^{N} \sum_{i=1}^{n} w_i(X_{i,j}) \frac{f(X_{i,j})}{p_i(X_{i,j})}\)
    • Make sure \(\displaystyle \sum_{i=1}^{n}w_i(x) = 1\)
  • Weights for provable variance reduction
    • Balance heuristics: \(\displaystyle w_i(x)=\frac{p_i(x)}{\sum_{k=1}^{n}p_k(x)}\)
    • Power heuristics: \(\displaystyle w_i(x)=\frac{p_i^2(x)}{\sum_{k=1}^{n}p_k^2(x)}\)

Stratified Sampling

  • Intuition: clumping of samples is bad
  • Instead of canonic uniform random variables, generate variables in strata
  • Also known as "Jittered sampling"

Other stratified sampling patterns

  • N-rooks (Latin hypercube)
  • Quasi Monte Carlo

Bidirectional Path Tracing

Trace path from eye and light

  • from eye we get path \(\displaystyle z_0, z_1, z_2\)
  • from light we get \(\displaystyle y_0, y_1\)
  • Then make shadow rays from every pair of z, y

Path of length k with k+1 vertices

  • s vertices from light, t from eye
  • Path denoted \(\displaystyle \bar{X}^{s,t}\) (e.g. \(\displaystyle \bar{X}^{2,3}\))
  • We also get probability density for this path \(\displaystyle p_{s,t}\)

Participating Media


  • Multiplicative property
    • \(\displaystyle T(s)=T(s_0) * T(s_1)\)
  • Beer's law \(\displaystyle T(s)=e^{-sigma_t s}\)
    • For homogenous media where \(\displaystyle \sigma(x) = \sigma\) is constant

Phase Functions

Henyey-Greenstein phase function

  • \(\displaystyle p(\cos \theta) = \frac{1-g^2}{4\pi(1+g^2-2g\cos \theta)^{1.5}}\)


  • Unitless
  • Reciprocity
    • \(\displaystyle p(\omega' \rightarrow \omega) = p(\omega \rightarrow \omega')\)
  • Energy conservation
    • Integrates to 1
  • Average phase angle determined by g

Volume Rendering Equation

Integro-integral form

  • \(\displaystyle L(\mathbf{x}, \omega) = \int_{0}^{\infty}\exp(-\int_{0}^{s'}\sigma_t(\mathbf{x}-s''\omega)ds'')S(\mathbf{x}-s'\omega, \omega)ds\)
    • \(\displaystyle \exp(-\int_{0}^{s'}\sigma_t(\mathbf{x}-s''\omega)ds'')\) is Transmittance \(\displaystyle T(s')\) due to extinction
    • \(\displaystyle S(\mathbf{x}-s'\omega, \omega)\) is source (emission, in-scattering)

Subsurface Scattering


bidirectional surface scattering reflectance distribution function

  • \(\displaystyle S(\mathbf{x}_i, \omega_i, \mathbf{x}_o, \omega_o)\)

Surface Reconstruction

Crust Technique

Crust Slides from Univ. BC