We address the problem of denoising Monte Carlo renderings by studying existing approaches and proposing a new algorithm that yields state-of-the-art performance on a wide range of scenes. We analyze existing approaches from a theoretical and empirical point of view. The observations of our analysis instruct the design of our new filter that offers high-quality results and stable performance.
To appear in Computer Graphics Forum (Proc. of EGSR 2016)
We present an energy-conserving fiber shading model for hair and fur that is efficient enough for path tracing. Our model adopts a near-field formulation to avoid the expensive integral across the fiber, accounts for all high order internal reflection events with a single lobe, and proposes a novel, closed-form distribution for azimuthal roughness based on the logistic distribution.
Computer Graphics Forum (Proc. of Eurographics 2016)
In this paper, we introduce a new algorithm for importance sampling environment lighting in indoor scenes. We make use of portals to importance sample the product of visibility and environment lighting. The resulting algorithm is easy to implement and yields considerable improvements over traditional environment map sampling.
To appear in Computer Graphics Forum (Proc. of EGSR 2015)
In this thesis, we investigate mappings from primary sample space to path space and their inverses. We describe how to construct inverses of several path sampling techniques employed in graphics, and use these inverses to create two new perturbations for Multiplexed Metropolis Light Transport.
Master Thesis, August 2015
An interactive GPU accelerated manipulation tool for bidirectional subsurface scattering distribution functions (BSSRDF) in the spirit of the BRDF Explorer. This project was implemented as part of my Bachelor's thesis at Disney Research Zurich.
Bachelor Thesis, April 2013
An open source physically based renderer written in C++11. Features state of the art material models and importance sampling techniques. Optimized for multicore SIMD hardware.
Originally created for a university competition, Tungsten is now taking up most of my free time and is still in development.
Created for fun and out of personal interest.
A 2D implementation of transient rendering.
Created for fun and out of personal interest.
An offline rigid body simulator with stable stacking, resting contacts, friction, soft constraints and flexible rods. Optimized for multicore SIMD hardware.
Used to create the short film "Planky with a chance of Meatballs" in collaboration with Antoine Milliez. Received Jury award and Audience award for best project at the PBS competition at ETH Zurich.
An offline vorton fluid simulator and volumetric path tracer implemented completely on the GPU.
Implemented mainly for fun and out of personal interest, it is used to simulate and render high-resolution milk drop collisions.
In 2013 I squeezed the code into 4kb of binary and submitted it to Demodays, where it won 2nd place in the "4k Executable Graphics" competition.
A robust, real-time CPU implementation of smoothed particle hydrodynamics (SPH) in 2D. Supports up to 70'000 particles at 60 frames per second.
Rendering is performed on the GPU using anisotropic gaussian splats as well as an aeration/diffusion model to render air bubbles transported with the fluid.
Implemented for the puzzle game "Bring Back Winter".
An extensive performance analysis of different bounding volume hierarchy (BVH) data structures, done in collaboration with Simon Kallweit.
We implemented various BVHs and optimized BVH traversal using different techniques such as SIMD vectorization, alignment, reordering for improved cache hit rate, sorting of input rays and more. We benchmarked and analysed the resulting code to get an estimate of which techniques perform well in pactice.
We summarized our results in a scientific report, which is of interest to anyone implementing high-performance applications that rely on fast ray-primitive intersection.
Open source, offline GPU fluid solver featuring fluid implicit particle, preconditioned conjugate gradient with the incomplete poisson preconditioner and 3rd order Runge-Kutta advection on a MAC grid. Implemented completely on the GPU via stream compaction and histopyramids.
Created as an exercise in GPGPU and efficient parallel stream compaction, it now lives on github.
An open-source tutorial series/reference implementation for Eulerian fluid solvers, intended as a tool for others to learn computational fluid dynamics.
Real-time computer generated short film implemented in 64kb of binary, in collaboration with Simon Kallweit and Vitor Bosshard. Won 2nd place in the "Real-time size limited" competition at Revision 2013.
I contributed a procedural mesh generation pipeline including robust voronoi fracturing, procedural trees and procedural interlocking axle/gear mechanisms. Additionally, I implemented the rendering pipeline and post processing stack.
Real-time computer generated short film implemented in 64kb of binary, in collaboration with Simon Kallweit and Vitor Bosshard. Won 1st place in the "Real-time size limited" competition at Demodays 2012.
I contributed a full HDR post processing pipeline including deferred shading, motion blur, depth of field, god rays, bloom and more. I also created part of the procedural content (everything involving cogs, gears, and infinite zoom).
A BASIC-like language and compiler, developed using Flex and Bison. Features classes with inheritance, method overloading, a module system and interfaces to C/++.
The language was originally developed as a modern alternative to popular BASIC-like languages (BlitzBasic, FreeBasic, etc.). The compiler was partially self-hosting and fully functional, but unfortunately due to time constraints I had to abandon the project before I was able to build a stable ecosystem.
An open-source, real-time, multi-threaded CPU implementation of Sparse Voxel Octrees. Includes robust octree generation capable of handling out-of-core construction.
Originally created out of personal interest, it now lives on github.