Coder Social home page Coder Social logo

dpt's Introduction

dpt

dpt is a prototypical renderer that implements the algorithm presented in the paper "[Anisotropic Gaussian Mutations for Metropolis Light Transport through Hessian-Hamiltonian Dynamics] (https://people.csail.mit.edu/tzumao/h2mc/)" by Tzu-Mao Li, Jaakko Lehtinen, Ravi Ramamoorthi, Wenzel Jakob, and Frédo Durand. The algorithm utilizes the derivatives of the contribution function of a (bidirectional) path tracer to guide local sampling, hence the name dpt.

dpt supports a limited form of mitsuba's scene format. It supports pinhole camera, three kinds of BSDF (diffuse, phong, roughdielectric), three kinds of emitters (point, area, envmap), trianglemesh shape, and linear motion blur. See scenes/torus for an example scene.

If you want to understand the algorithm by looking at the source code, a good starting point is to look at mlt.cpp, h2mc.cpp, and path.cpp first.

dpt uses tup as its build system. It depends on several libraries: Eigen, OpenImageIO, embree, and zlib. It uses ispc to compile the derivative code it generates. It also uses pugixml to parse the scene file and PCG for fast and high-quality random number generation. A large portion of dpt is inspired by mitsuba, pbrt-v3, and SmallVCM

dpt needs to generate a dynamic library that contains functions for computing the derivatives of the path contribution function. Before you execute dpt, you will need to specify the directory used for reading/writing the dynamic library by setting the environment variable DPT_LIBPATH (e.g. export DPT_LIBPATH=/path/to/dpt/src/bin). dpt will search that directory for the dynamic library, and if it does not find it, it will create one.

The program is only tested on OSX 10.10.5 with clang and Ubuntu 14.04 with gcc. Currently it does not support windows system.

Please contact Tzu-Mao Li (tzumao at mit.edu) if there are any issues/comments/questions.

dpt's People

Contributors

bachili avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.