Projects

Let’s Grow!Jan. 2013 – Apr. 2013

Explore your creativity, enjoy the beauty and relax with the ‘Let’s Grow!’ app. Make your iPad your own private orangery, where you can create and admire beautiful plants and pots.” – This beautifully sums up the mission statement for Let’s Grow!. I was Lead Programmer on the project during my last three months at Unity Studios and was brought on to provide a more robust codebase and take over from the previous GFX programmer. During my time on the project we added social sharing to the application and a whole new pose-mode, where user could pose their creations in different environments.

Due to the highly parallel nature of DACRT I wanted to move my previous implementation of the algorithm to the GPU. The architecture change provides a speedup for the DAC ray tracer, but also highlights some of the problems with performing DACRT completely dataparellel, such as undeterministic ray or geometry storage size.
To focus on testing DACRT and avoid constructing primitive wrappers and kernels, the implementation is based on the thrust library.
MobiGlobeOct. 2011 – Oct. 2012
The MobiGlobe installations in Autostadt looks at global (auto-)mobility phenomenas. Across 48 different topics, spanning as vast as the vehicle’s development over the past 3000 years to energi requirements on a global scale, MobiGlobe researches questions and proposes solutions on how to keep people and goods mobile in the future by a combination of innovation and responsible development.
As part of the latest update of the project, Unity Studios was contracted to create a flexible overall structure for these 48 different visualizations, which would be used in future MobiGlobe incarnations. Using what has been dubbed MobiCore, we created three interactive user experiences; MobiGlobe Islands, MobiGlobe Kinect and content update for MobiGlobe Facts.
Divide-and-Conquer Ray TracingNov. 2011 – April. 2012
Recent research has sparked a lot of interest in Divide and Conquer Ray Tracing, in which the usual acceleration structure is abandoned in favor of a constructing a partial one for each ray iteration. The first papers on the subject have continued to use standard axis aligned splitting planes and based their implementation on kd-trees and bvh’s. Realising that an iteration can consist of millions of rays and only hundreds of thousands of triangles, it makes sense to look at subdivisions that increase the coherence of rays instead of geometry. During this sparetime project I have successfully combined the flexibility of DACRT with 5D ray hierarchies.
Ray tracing dynamic scenes is an interesting and fun challenge. A lot of litterature about the subject of ray tracing is concerned with creating optimal acceleration structures, mostly trees. In my thesis I explore the relationship between construction speed and tree quality and if the overall rendering time can be increased by producing acceleration structures much faster, but at a lower quality.
Landscape RenderingJuly 2009 – June 2010
During the Introduction to Computer Graphics course I teamed up with Christian Christoffersen to create a project about rendering outdoor landscapes in OpenEngine. Some techniques implemented by me in the project includes bump mapping on the terrain, simultaineous rendering of thousands of swaying leaves of grass, and a dynamic level of detail system, which employed geomorphing to avoid geometry popping. I also developed a post process framework for OpenEngine as part of the project, to enable such effects as motion blur, depth of field, screen space ray casting of volumes and underwater caustics to be applied to the rendered image.
Radiotherapy SimulationOct. 2009 – Dec. 2009
Since the introduction of the programmable GPU, more and more algorithms in medical imaging have been moved from the CPU to the GPU. In the course Parallel Computing for Medical Imaging and Simulation I and 2 friends implemented a basic radiotherapy simulator. The simulator traced rays of radiation through a thoractic cage and calculated TERMA based on the strength of the radiation dose and the tissue that the ray had previously passed through. A convolution kernel was employed to propagate the influence of the released energy to the surrounding voxels.
Aarhus By LightFeb. 2008 – Nov. 2008
I worked on the interactive mediefacade project Aarhus By Light, where cameras enabled onlookers to influence creatures on a mediefacade using their silhouette. My contribution to the project was an extension of the creature physics, which allowed them to seamlessly switch from their background environment to interacting with the silhouettes, e.g. by walking or climbing on them. I also developed a sandbox environment, where features of the facade could be ‘drawn’ into the creatures environment and would allow the creatures to interact with a facade’s windows and other prominent features.