jan novák

Portal-Masked Environment Map Sampling

Benedikt Bitterli, Jan Novák, and Wojciech Jarosz

Computer Graphics Forum (Proceedings of EGSR 2015), vol. 34, no. 4

For scenes illuminated by environment maps, our technique provides the best RMSE (in parenthesis) compared to previous approaches. We show two zoom-in locations for each technique; please refer to the supplemental material for full-resolution images.

abstract

We present a technique to efficiently importance sample distant, all-frequency illumination in indoor scenes. Standard environment sampling is inefficient in such cases since the distant lighting is typically only visible through small openings (e.g. windows). This visibility is often addressed by manually placing a portal around each window to direct samples towards the openings; however, uniformly sampling the portal (its area or solid angle) disregards the possibly high frequency environment map. We propose a new portal importance sampling technique which takes into account both the environment map and its visibility through the portal, drawing samples proportional to the product of the two. To make this practical, we propose a novel, portal-rectified reparametrization of the environment map with the key property that the visible region induced by a rectangular portal projects to an axis-aligned rectangle. This allows us to sample according to the desired product distribution at an arbitrary shading location using a single (precomputed) summed-area table per portal. Our technique is unbiased, relevant to many renderers, and can also be applied to rectangular light sources with directional emission profiles, enabling efficient rendering of non-diffuse light sources with soft shadows.

downloads

publication

supplementals

presentation

citation

bibtex

@article{Bitterli15Portals,
    title   = {Portal-Masked Environment Map Sampling},
    author  = {Benedikt Bitterli and Jan Nov\'{a}k and Wojciech Jarosz},
    journal = {Computer Graphics Forum (Proc. of EGSR)},
    year    = {2015},
    volume  = {34},
    number  = {4},
    month   = jun,
}