Before truly getting started on the development of Gaia, there were some important design choices that had to be made. Some were easier than others, some I might come to regret, but they have been made nonetheless.
My language of choice had to be C++, simply because it is the language that I am most comfortable with. This works well for compatibility with external libraries such as OpenGL, which will continue to be used to monitor render progress.
Gaia will be, at its core, a bidirectional path tracer, meaning rays are traced both from the camera and from the light source, to be connected in the middle. This is more computationally expensive per ray but significantly reduces noise. I also hope to implement the Metropolis light transport algorithm, although this will come later.
Design-wise, Gaia is going to be built as a movie renderer, and as such will be a biased renderer. Eventually, I hope to use techniques such as ray sorting to accelerate rendering, which is more important than physical accuracy to a movie studio.
On top of this, Gaia will eventually be able to support a variety of primitives including spheres, triangles, planes and curves; as well as volumes, all of which will support motion blur when desired.
Of course this is all subject to change, but for now it gives me quite a few areas to work on!