intersect is a project of mine on which I have been working for quite some time now. Recently, I managed to continue it as part of my Studienarbeit (kind of like a bachelor’s thesis in the German diploma system). I’ll blog about it from time to time for those who are interested in its progress. But first an introduction:
intersect is comprised of three parts: A special microprocessor, a linux kernel driver and a piece of software called beam. Together, they try to solve the problem which has become known as Global illumination (GI):
Global illumination algorithms used in 3D computer graphics are commonly used to add realistic lighting to 3D scenes. Images rendered using global illumination algorithms often appear more photorealistic than images rendered using only direct illumination algorithms. However, they are also much slower to generate and more computationally expensive. [Wikipedia]
Today, there are is an abundance of algorithms for computing Global illumination solutions and each one has some kind of severe drawback. One of the more robust algorithms is called bidirectional path tracing; its flaw is the excessive number of required ray-triangle intersection tests.
intersect uses bidirectional path tracing but takes a new approach: A custom graphics co-processor performs some of the calculations and makes use of the massive amount of parallelism. Up to 96 photons are simultaneously shot through the scene to speed up the calculations. The microprocessor is partly finished and for now, there is a software emulation to demonstrate its functionality. While it probably still has lots of bugs, it can already create some pretty pictures like this cornell box rendering:
Stay tuned..