Advanced Computer Graphics: Difference between revisions
Line 133: | Line 133: | ||
====Integro-integral form==== | ====Integro-integral form==== | ||
* <math>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</math> | * <math>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</math> | ||
** <math>\exp(-\int_{0}^{s'}\sigma_t(\mathbf{x}-s''\omega)ds'')</math> is Transmittance <math>T(s')</math> due to extinction | |||
** <math>S(\mathbf{x}-s'\omega, \omega)</math> is source (emission, in-scattering) | |||
===Subsurface Scattering=== | |||
====BSSRDF==== | |||
bidirectional surface scattering reflectance distribution function | |||
* <math>S(\mathbf{x}_i, \omega_i, \mathbf{x}_o, \omega_o)</math> | |||
==Ignore== | ==Ignore== | ||
[[Visible to::users]] | [[Visible to::users]] |
Revision as of 21:26, 5 March 2020
Classnotes for CMSC740 taught by Matthias Zwicker
Acceleration
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
Radiometry
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})\)
Radiance
- power per solid angle per area
- \(\displaystyle L(\omega, \mathbf{x}) = \frac{d^2 \Phi(\omega, \mathbf{x})}{d\omega dA^\perp}\)
Irradiance
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.
Integration
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
Example:
- 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
Transmittance
- 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}}\)
Properties
- 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
BSSRDF
bidirectional surface scattering reflectance distribution function
- \(\displaystyle S(\mathbf{x}_i, \omega_i, \mathbf{x}_o, \omega_o)\)