The Milton Project
Milton is an open source, global illumination rendering system which focuses on speed, extensibility, robustness, and physically accuracy. Milton will support a wide range of global illumination rendering algorithms, illumination models, sampling methods, filtering methods, and scene file formats. It will be usable as a stand-alone library (libmilton.a / milton.dll) as well as an executable with a fully-featured Qt GUI and a command-line UI.
Milton is actively being developed by Travis Fischer and Matthew Jacobs, undergraduates at Brown University, along with the guidance of the ever helpful and all around wonderful Spike (aka, Professor John Hughes).
Metropolis What?
Metropolis Light Transport (MLT) is an advanced offline rendering algorithm which uses a monte carlo random walk to efficiently produce an unbiased view of a 3D scene. MLT is especially good at handling notoriously hard-to-handle scenes that other rendering algorithms (photon mapping, rasterizers, etc) typically choke on. These difficult scenes are, however, not at all pathological and are in fact quite common in the world around us.
In our opinion, a physically-based renderer's performance and accuracy should be relatively independent of how light is propogated through a scene. That is, scenes with strong indirect illumination or scenes which are illuminated mainly through small crevices should not be inherently harder to render than the equivalent scenes with more prevalent direct lighting. This is one of MLT's main advantages over other global illumination algorithms; it is capable of producing an unbiased (mathematically correct on average) 2D image of a 3D scene. There are other unbiased rendering algorithms which exist (path tracing and bidirectional path tracing, for instance), but MLT is provably orders of magnitude more efficient than these alternatives. It is this reasoning which makes MLT such an important algorithm in computer graphics, even over a decade after Eric Veach and Leonidas Guibas applied the Metropolis algorithm to light transport in their seminal paper, Metropolis Light Transport (1997).
MLT Independent Study
This site is intended to act initially as a preliminary independent study proposal for Travis Fischer and Matt Jacobs for the Fall of 2008, and we intend to update it regularly throughout the semester with notes about our status, insights about MLT or Spike, etc.
Project Goals
Note: We've pointed out where our planned implementation and Pete/Taylor's work would differ so as to put our proposal in a context you're already familiar with.
-
Spectrally-based bidirectional path tracer using the MLT framework
- Pete and Taylor implemented a standard path tracer with the MLT framework
- Ideally we would be able to simulate wavelength-dependent effects such as dispersion and fluorescence (don't worry; we'll definitely leave those til the end)
- Plan to support common implicit shapes as well as triangular meshes, including intersection acceleration (kd-Tree built with Surface Area Heuristic)
- Plan on supporting DOF and motion blur
- Deep understanding of light transport as it relates to computer graphics with an emphasis on understanding the metropolis algorithm
- Fully understand the light/importance transport equations (and their limitations/assumptions)
- Experiment with different variance reduction techniques (Russian roulette, low discrepancy QMC sequences, multiple importance sampling, etc)
- Plan is to follow Veach's thesis very closely and understand it fully together before even thinking about the guts of a program design (see proposed syllabus)
- Develop and cultivate ideas for possible future extensions (ie, possible second semester and/or honors thesis work). A priori, several ideas we've talked about included:
- A special-purpose programming language similar in spirit to existing shading languages which would allow procedural BSDFs that were guaranteed by the language to adhere to physical constraints such that the programatically-defined BSDFs that you'd be sampling from could possibly exist in the real world in which we live. The key idea here is that this language could create a graph of possible paths through it, with everything being deterministic including builtin "random" functions, and then assign a probability implicitly when a specific outgoing vector is sampled by calculating the probability that this shader-like function ran through the path that it did.
- Investigate the possibility of incorporating Dachsbacher et al's reformulation of the rendering equation into the MLT framework. Specifically, in Implicit Visibility and Antiradiance for Interactive Global Illumination (2007), Dachsbacher et al reworked the rendering equation to account for visibility implicitly by allowing light to propogate through occluders and accounting for that extra light by also propogating "negative" light they termed antiradiance (thus getting rid of all costly visibility calculations). An interesting prospect would be to rework the MLT framework to fit within this alternative rendering equation.
- Extremely high quality code and engineering practices
- Very well thought-out design that is sufficiently abstract with respect to rough spots like surface materials and colors to facilitate extensions of the already not-so-basic MLT algorithm in the future
- Beautiful yet highly optimized C++ :-)
- Cross-platform
- Open source at end of semester