Stories Come to Light

Group Members Christian Ebel · Jiayin Feng
Final render of the cinema hall

The goal of this render is to recreate the atmosphere of a cinema hall shortly before a movie starts. The scene focuses on the interaction between area lights, screen emission and iterior materials to create a believable indoor environment. A cinema was chosen because it naturally combines multiple challenging rendering aspects such as low-light conditions, repetitive geometry, and meterial variation. The cinema hall allows for clear motivation of light scourece: the screen acts as a area light with large rectangle, while ceiling and floor lights provide sencondary illumination.

Statistics

  • Resolution: 1920 x 1080
  • Samples: 400
  • Render Time: 1:02:21
  • Hardware: Apple M2 Pro 16 GB
  • Lights: Area Lights with sphere and rectangle

Features and Challenges

Normal Mappig

Normal Mapping uses a texture to modify surface normals, creating the illusion of fine geometric detail without increasing mesh complexity. In our scene, normal mapping is applied wall panels and ceiling to enhance realism.

Low_Discrepancy Sampling

Low-discrepancy sampling, such as Halton sampler, generate well-distributed samples that reduce noise and improve convergence in path tracing.

Rough Dielectric

The roughdielectric is supposed to represent a rough material that can both reflect and refract, i.e. not-smooth glass.

For this we implemented a new BSDF in roughdielectric.cpp. It includes an evaluate() and sample() function that mixes the previous dielectric and roughconductor classes, as well as the paper Microfacet Models for Refraction through Rough Surfaces (Walter et al. 2007).

The biggest challenge here was finding out which parts of dielectric or roughconductor were meant to be used and when to use the paper’s definitions.

Area Lights

Area lights are supposed to improve our lighting from rectangular and spherical forms.

For this purpose we implemented simple area lights (uniform spherical sampling for spheres) and improved it to use cone based sampling. This is based on PBRT improved area lights, but instead of sampling in world space, we pass a point into sampleArea() that has been turned into object space. We also changed transformFrame to adapt the pdf scaling and instance now has a function transform() that returns its m_transform field, since area.cpp needs it to transform the origin into object space.

The interplay between MIS, instance, area and sphere files were the most confusing and challenging as many changes and bugs were because of this interdependency.

Multiple Importance Sampling (MIS)

The MIS pathtracer attempts to improve lighting in cases where multiple different light sources, in our case BSDF and direct lights, could illuminate a point by not choosing one or the other, but by assigning relative weights and applying both with these weights.

The MIS-pathtracer is in the mispathtracer.cpp class in integrator. For this we added pdfs to BsdfEval, BsdfSample and therefore pdfs in all bsdf and lights files. We use the balance heuristic.

The difficulty here was fine tuning, as in what factors had to be added, where do we need to not only multiply with the pdfs/weights, but also distances squared, etc. Pdfs for volumes seem to not work.

Post-Processing

Bloom is a post processing method that enhances bright areas of an image, creating a soft glow that enhance realism without additional rendering cost.

Image Denoising

Image denoising is applied as a post-processing step to improve image quality at low sample counts. We integrated a denoising library Intel ®︎Open Image Denoise (https://www.openimagedenoise.org) into the rendering pipeline. In addition to the rendered image, the denoiser uses auxiliary AOVs such as surface normals and albedo to preserve details and avoid over-blurring.

Acknowledgement

Assets, Libraries, and References

Assets

References