Antialiasing Complex Global Illumination Effects
in Path-space

Laurent Belcour
Montréal University
Ling-Qi Yan
UC Berkeley
Ravi Ramamoorthi
UC San Diego
Derek Nowrouzezahrai
Montréal University

Antialiasing Surface Appearance

Image from Mitsuba [Wenzel Jakob]

Antialiasing Surface Appearance

Antialiasing Surface Appearance

  • Idea: limit materials frequency to reduce noise
    • Adapt texture resolution to screen resolution
    • Better cache handling for textures

Antialiasing Surface Appearance

  • Idea: limit materials frequency to reduce noise
    • Adapt texture resolution to screen resolution
    • Better cache handling for textures

  • Method: use the pixel's footprint
    • Geometrical method: what is the pixel's projection?
    • Use the pixel/ray derivatives [Igehy 1999]

Antialiasing Surface Appearance

Problem Statement

  • Differentials work fine for specular interaction

  • Fail short to model subtle effects
    • Binary footprints: no pixel filter

  • Decorrelated light in antialiasing

image from [Suykens and Willems 2001]

Problem Statement

  • Bidirectional path tracing requires symmetric light transport


Our Solution

  • Stop thinking in terms of geometry!
    • Use frequency analysis to define antialiasing kernels
    • Adapt textures frequency to incoming light-field frequency

  • Make modern path tracing (e.g., BDPT) a first class citizen
    • Support multiple non-specular bounce
    • Antialiasing kernels using both eye and light paths

  • Simple implementation
    • Extension of ray class, similar to ray differentials

Previous Models for Antialiasing

  • Filtering is defined by surface area: $\color{red}{\mathcal{P}}$

Our Model for Antialiasing

  • Pixel filter is a kernel applied on the surface!

Frequency Analysis Perspective

  • This kernel is a low-pass filter on the SV-BRDF:
Fourier domain

What is the Kernel?

$$\Sigma = \begin{pmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xu} & \sigma_{xv} \\ \sigma_{yx} & \sigma_{yy} & \sigma_{yu} & \sigma_{yv} \\ \sigma_{ux} & \sigma_{uy} & \sigma_{uu} & \sigma_{uv} \\ \sigma_{vx} & \sigma_{vy} & \sigma_{vu} & \sigma_{vv} \\ \end{pmatrix} $$
$$\Sigma = \begin{pmatrix} \color{red}{\sigma_{xx}} & \sigma_{xy} & \sigma_{xu} & \sigma_{xv} \\ \sigma_{yx} & \color{black}{\sigma_{yy}} & \sigma_{yu} & \sigma_{yv} \\ \sigma_{ux} & \sigma_{uy} & \color{blue}{\sigma_{uu}} & \sigma_{uv} \\ \sigma_{vx} & \sigma_{vy} & \sigma_{vu} & \color{black}{\sigma_{vv}} \\ \end{pmatrix} $$
  • Use statistical analysis in Fourier space [Durand 2005]
    • Second order information is relevant [Belcour 2012]
    • Similar to a Gaussian approximation of the kernel
  • Construction similar to Ray Differentials
    • Initialize at light/eye vertex and propagate
    • Account for rough interactions and volumes
  • How to specify it?

Covariance Antialiasing


Bidirectional Antialiasing

Bidirectional Antialiasing

eye kernel
material
light
light kernel
material
light

Bidirectional Antialiasing

$$ \color{blue}{\Sigma_e} \; + \; \color{green}{\Sigma_l} \; = \; \Sigma $$

Bidirectional Antialiasing

Implementation details

  • We need to re-evaluate BSDFs at each connection
    • To account for the mean covariance
    • In practice we can re-evaluate at connection vertices only
  • Mitsuba Implementation
    • Added a RayCovariance class
    • Convertion to RayDifferential before BSDF evaluation
  • Providing a Small PT [Beason 2010] example
    • Available on GitHub

Kernel Validation


Kernel after one bounce

Results

Results: Snails

  • Unidirectional antialiasing kernels
    • Using [Yan 2016] normal map model
    • Focusing on indirect footprints with glossy materials

Results: Spoon

  • Bidirectional antialiasing kernels
    • Using [Yan 2016] normal map model
    • Focusing on long light paths (caustics)
Ours (~50min)
Reference (24 days)
BDPT (equal-time)

Results: Christmas

  • Bidirectional antialiasing kernels
    • Highly indirect illumination
    • Complex lighting (light bulbs)
Ours (~4h)
Reference (141 days)
BDPT (equal-time)

Limitations and Future Work

  • Limitations
    • Only treated spatial antialiasing
    • Stationary footprint
  • Future directions of work
    • Incorporate geometry in antialiasing (curvature, ...)
    • Antialiasing kernels for participating media
    • Other uses of covariance tracing

Thank you for your attention

paper code
available at belcour.github.io/blog