Efficient Rendering of Layered Materials
using an Atomic Decomposition with Statistical Operators
Laurent Belcour
Last Year ...
Rendered in Unity
Last Year ...
 Rendering thinfilm iridescence
 Using a clearcoat plugin in Mitsuba
 But no clearcoat available in Unity 😭
 I wanted to show the beetle live
 One solution: code one in time!
 Turn out we can do much more
 Multiple rough interfaces
 Energy conservation
 ...
Rendered in Mitsuba
Layered Materials
Layered Materials
$\boldsymbol{\omega}_i$
$\boldsymbol{\omega}_o$
Layered Materials
 Bruteforce rendering is not possible
 At least not in realtime graphics
 Precomputation is not statisfactory
 Forbid to use textured assets
 Memory limitation on GPUs
 Our solution: tight approximation
Our Idea: Sum of GGX Lobes
$\mathbf{\omega}_i$
$\mathbf{n}$
$$\rho(\mathbf{\omega}_i, \mathbf{\omega}_o) = \sum_{k} w_k \, \rho_k(\mathbf{\omega}_i, \mathbf{\omega}_o)$$
Statistical Analysis: Mapping
 We study BSDF statistics
 In the orthographicaly projected disc
 There, GGX is almost rotationaly symmetric
Orthographic projection
GGX lobe with $\alpha = 0.01$
Statistical Analysis: Mapping
 We study BSDF statistics
 In the orthographicaly projected disc
 There, GGX is almost rotationaly symmetric
 To find a mapping
 From the three moments (energy, mean, variance)
 To a BRDF lobe parameters (albedo, view, roughness)
Orthographic projection
Equivalent Statistics
$\mathbf{\omega}_i$
$(e, \mathbf{\mu}, \sigma)$
Statistical Analysis: Mapping
 We study BSDF statistics
 In the orthographicaly projected disc
 There, GGX is almost rotationaly symmetric
 To find a mapping
 From the three moments (energy, mean, variance)
 To a BRDF lobe parameters (albedo, view, roughness)
 Can we find the statistics of layered materials?
Statistical Analysis: Framework
 Infer statistics atomically
 Details in the paper
 Update $e$, $\mu$, and $\sigma$

Example: refraction operator

Shift, scales and convolves the incident lobe
$$
e_t = \tilde{\mbox{F}} \, e_i
$$
$$
\mu_t =  \eta_{12} \, \mu_i
$$
$$
\sigma_t = \eta_{12} \, \color{blue}{\sigma_i} + \color{red}{s}
$$
Reflection
Refraction
Scattering
Statistical Analysis: Validation
 Interactively testing atomic operators
Statistical Analysis: Framework
 Multiple layers: chain operators
Statistical Analysis: Framework
$(e_1, \mu_1, \sigma_1)$
$(e, \mu, \sigma)$
$(e, \mu, \sigma) = \left(e_1+e_2, \mu, \dfrac{e_1}{e}\sigma_1+\dfrac{e_2}{e}\sigma_2\right)$
$(e_2, \mu_2, \sigma_2)$
$+$
Statistical Analysis: Framework
 Merging statistics
 Multiple scattering
 Closedform statistics
 ArithmeticoGeometric series
Statistical Analysis: Framework
 Merging statistics
 Multiple scattering
 Closedform statistics
 ArithmeticoGeometric series
 AddingDoubling
Offline Validation
 Mitsuba renderer
 Both opaque and transparent plugins
 Varying number of textured layers
 Multiple Importance Sampling with the lobes
Offline Validation
 Mitsuba renderer
 Comparison with stochastic reference


Ours
Reference

Metal foil 
Rough metal 
Gold Coated 
Offline Validation
 Mitsuba renderer
 Comparison with stochastic reference
 Layered method of Weidlich & Wilkie [2007]
Ours
Reference
[WW07]
Reference
Offline Validation
 Mitsuba renderer
 Comparison with stochastic reference
 Layered method of Weidlich & Wilkie [2007]
 Multiple scattering



$R + TRT$ 
$R + TR^+T$ 
Ours 
Offline Results: Textures



Textured base $\alpha$ 
Textured top $\eta$ 
Textured top $\alpha$ 
Offline Results: Robot Bust
 Two layer configuration
 Multiple textured layers
 Base and top Index of Refraction
 Top roughness
Offline Results: Robot Bust
Offline Results: Dragon
 Gold metal dragon
 Adding a medium layer
 Simulate dust
 Increase the haze
RealTime Results in Unity
Limitations: High Roughnesses
$\alpha = 0.3$
Ours
Reference
$\alpha = 0.6$
Ours
Reference
$\alpha = 0.9$
Ours
Reference
Summary
 A novel BSDF model for layered structures
 Accurate for low roughnesses
 Accounts from multiple scattering
 No parameter dependent precomputation
 Compatible with realtime scenario
 Our contributions
 Statistical analysis of light transport in layers
 New addingdoubling scheme for variance
Thank you for your attention




paper 
supp. mat. 
code 
HDRP StackLit 
available at belcour.github.io/blog