Skip to content

Implementation of the research paper "Practical Path Guiding for Efficient Light-Transport Simulation"

License

Notifications You must be signed in to change notification settings

lukasstockner/practical-path-guiding

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Practical Path Guiding for Efficient Light-Transport Simulation

This repository contains the authors' implementation of the guided unidirectional path tracer of the research paper "Practical Path Guiding for Efficient Light-Transport Simulation" [Müller et al. 2017]. It also includes a visualization tool for the SD-Trees learned by the guided path tracer. The guided path tracer has been implemented in the Mitsuba Physically Based Renderer and the visualization tool with the nanogui library.

No Support for Participating Media

The guided path tracer in this repository was not designed to handle participating media, although it could potentially be extended with little effort. In its current state, scenes containing participating media might converge slowly or not to the correct result at all.

Scenes

The KITCHEN scene from the paper is included in this repository. It was originally modeled by Jay-Artist on Blendswap, converted into a Mitsuba scene by Benedikt Bitterli, and then slightly modified by us. The scene is covered by the CC BY 3.0 license.

The TORUS scene is available for download on the Mitsuba website. It was created by Olesya Jakob.

The POOL scene—created by Ondřej Karlík—is bundled with the public source code of the method by Vorba et al. [2014].

Implementation

  • The guided path tracer is implemented as the GuidedPathTracer Mitsuba integrator.
  • The visualization tool is implemented as a standalone program built on nanogui.

Modifications to Mitsuba

  • BlockedRenderProcess (renderproc.cpp, renderproc.h)
    • Allowed retrieving the total amount of blocks.
    • Disabled automatic progress bookkeeping.
  • GuidedPathTracer (guided_path.cpp)
    • Added the guided path tracer implementing [Müller et al. 2017].
  • ImageBlock (imageblock.h)
    • Allowed querying the reconstruction filter.
  • MainWindow (mainwindow.cpp)
    • Removed warning about orphaned rectangular work units (occured when multiple threads write into spatially overlapping blocks at the same time).
  • General
    • Changed the Visual Studio 2010 project to a Visual Studio 2013 project to make our integrator compile.
    • Removed the Irawan BSDF to make mitsuba compile under newer GCC versions.
    • Fixed various issues of the PLY parser to make mitsuba compile under newer GCC versions and clang.

Modifications to nanogui

  • ImageView (imageview.cpp, imageview.h)
    • Changed the shader to display a false-color visualization of a given high-dynamic-range image.
  • General
    • Removed noexcept qualifiers to make nanogui compile under Visual Studio 2013.
    • Removed constexpr qualifiers to make nanogui compile under Visual Studio 2013.

Compilation

Mitsuba

To compile the Mitsuba code, please follow the instructions from the Mitsuba documentation (sections 4.1.1 through 4.6). Since our new code uses C++11 features, a slightly more recent compiler and dependencies than reported in the mitsuba documentation may be required. We only support compiling mitsuba with the scons build system.

We tested our Mitsuba code on

  • Windows (Visual Studio 2013 Win64, custom dependencies via git clone https://github.com/Tom94/mitsuba-dependencies-windows mitsuba/dependencies)
  • macOS (High Sierra, custom dependencies via git clone https://github.com/Tom94/mitsuba-dependencies-macOS mitsuba/dependencies)
  • Linux (GCC 6.3.1)

Visualization Tool

The visualization tool, found in the visualizer subfolder, uses the CMake build system. Simply invoke the CMake generator on the visualizer subfolder to generate Visual Studio project files on Windows, and a Makefile on Linux / OS X.

The visualization tool was tested on

  • Windows (Visual Studio 2013-2017 Win64)
  • macOS (High Sierra)
  • Linux (GCC 6.3.1)

License

The new code introduced by this project is licensed under the GNU General Public License (Version 3). Please consult the bundled LICENSE file for the full license text.

The bundled KITCHEN scene is governed by the CC-BY 3.0 license.

About

Implementation of the research paper "Practical Path Guiding for Efficient Light-Transport Simulation"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 69.5%
  • C 13.9%
  • Fortran 6.7%
  • Objective-C 2.3%
  • CMake 2.1%
  • Python 2.0%
  • Other 3.5%