Benedikt Bitterli

Publications


An Efficient Denoising Algorithm for Global Illumination

An Efficient Denoising Algorithm for
Global Illumination

We propose a hybrid ray-tracing/rasterization strategy for real- time rendering enabled by a fast new denoising method. We factor global illumination into direct light at rasterized primary surfaces and two indirect lighting terms, each estimated with one path- traced sample per pixel. Our factorization enables efficient (biased) reconstruction by denoising light without blurring materials.

Proceedings of High Performance Graphics, 2017


Beyond Points and Beams: Higher-Dimensional Photon Samples for Volumetric Light Transport

Beyond Points and Beams: Higher-Dimensional
Photon Samples for Volumetric Light Transport

We develop a theory of volumetric density estimation which generalizes prior photon point and beam approaches to a broader class of estimators using “nD” samples along photon and/or camera subpaths. Our theory shows how to replace propagation distance sampling steps across multiple bounces to form higher-dimensional samples such as photon planes, photon volumes and beyond.

ACM Transactions on Graphics (Proc. of SIGGRAPH 2017)


Nonlinearly Weighted First-order Regression for Denoising Monte Carlo Renderings

Nonlinearly Weighted First-order Regression
for Denoising Monte Carlo Renderings

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.

Computer Graphics Forum (Proc. of EGSR 2016)


A Practical and Controllable Hair and Fur Model for Production Path Tracing

A Practical and Controllable Hair and Fur
Model for Production Path Tracing

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)


Portal-Masked Environment Sampling

Portal-Masked Environment Map Sampling

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)


Master Thesis

Informed Choices in Primary Sample Space

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 (released March 2017)


BSSRDF Explorer

BSSRDF Explorer

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

Projects


Tungsten Renderer

Tungsten Renderer

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.


Tantalum Renderer

Tantalum Renderer: 2D Light Transport

An open source physically based GPU 2D renderer written in JavaScript and WebGL.

Created for fun and out of personal interest.


Virtual Femto Photography

Virtual Femto Photography

A 2D implementation of transient rendering.

Created for fun and out of personal interest.


Rigid Body Simulator

Rigid Body Simulator

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.


Vorton Fluid

GPU Milkdrops

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.


Buddhabrot

The Buddhabrot Fractal

GPU rendering, importance sampling and denoising of a Buddhabrot fractal.


2D SPH

2D Smoothed Particle Hydrodynamics

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".


Paper

Star Stacker

A project on enhancing low quality night sky images using computer vision.

Using a combination of ensemble models, blob transforms, feature tracking and non-linear optimization, we can remove light pollution, extract stars, track constellations and align multiple poor quality images to produce a single high-quality one.


Paper

BVH Analysis

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.


GPU Fluid

GPU-Fluid

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.


Fluid

Incremental Fluids

An open-source tutorial series/reference implementation for Eulerian fluid solvers, intended as a tool for others to learn computational fluid dynamics.


Tensile

Tensile

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.


Wheels within Wheels

Wheels Within Wheels

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).


Bismuth Logo

Bismuth Compiler

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.


SVO Render

Sparse Voxel Octrees

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.


Physiclock

Physiclock

A physically based clock. Modern JS port of an old high school project.


Physiclock

Reverse Engineering a Scam Script

A quick afternoon dive into the inner workings of an internet scam site.