chaosink / yotsuba

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Yotsuba

Yotsuba is a Mitsuba based renderer that uses Aether to generate samples and compute PDFs.

Learning About Aether/Yotsuba

The directory src/integrators/myintegrators/ contains implementations of many standard algorithms using Aether.

A more extensive tutorial is available here.

Compiling

Yotsuba depends on Aether. Aether is a header-only library, so you can either copy the aether folder to include, or clone the repository directly through the following commands:

cd include
git clone https://github.com/aekul/aether

Yotsuba uses the same build system as Mitsuba (see Mitsuba's documentation for build instructions) but there are some things to be aware of when editing config.py.

Yotsuba has been tested with clang 3.7 (using -std=c++1z and -std=libc++) so make sure that config.py is configured to use an appropriate version of clang and contains the flags:

-std=c++1z
-std=libc++

Yotsuba uses -std=libc++, but Mitsuba uses -std=libstdc++. Any conflicts between libc++ and libstdc++ have been resolved in the source, but have not been resolved in Mitsuba's dependencies. When compiling Yotsuba, you may encounter link errors because of conflicts between libc++ and libstdc++. To resolve these errors, recompile the dependencies manually using libc++.

Aether makes extensive use of template metaprogramming. To avoid template/constexpr maximum step/depth related compiler errors, add the following flags to config.py:

-ftemplate-depth=512
-fconstexpr-steps=127124200
-fconstexpr-depth=720

Contact

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

About

License:GNU General Public License v3.0


Languages

Language:C++ 89.8%Language:Objective-C 3.7%Language:C 2.4%Language:CMake 1.8%Language:Python 1.3%Language:Objective-C++ 0.4%Language:GLSL 0.3%Language:XSLT 0.1%Language:Shell 0.1%Language:CSS 0.0%Language:Makefile 0.0%Language:PowerShell 0.0%Language:Batchfile 0.0%