07 July 2006

JRay - Java Raytracer (or Joao's Raytracer :-) )

From last October to last December I spent some of my after-work time studying deeper some of the raytracing family of algorithms. I bought two great books (Henrik Wann Jensen's "Realistic Image Synthesis Using Photon Mapping" and Peter Shirley + R. Keith Morley's "Realistic Raytracing") which helped me entering in this world. Meanwhile I read several classical papers and after that I decided to implement a raytracer in Java (which is a great language to experiment algorithms, since it is simple enough to help one to be focused on the algorithm, and not on its implementation). The result was JRay - Java Raytracer (or Joao's Raytracer), which was uploaded into Sourceforge. Take a look in JRay's Sourceforge site to see some renders and to download its source-code. Some of the features implemeted are:

  • Whitted's Raytracing algorithm (shadows, reflections, refractions)
  • Cook's Distributed Raytracing algorithm (antialiasing, soft shadows, depth-of-field)
  • Kajiya's Path-Tracing (to solve the Rendering Equation: color bleeding from inter-object reflections, caustics)
  • Abstract camera model (whith a pin-hole and thin-lens camera, which allows to render depth-of-field phenomena);
  • Abstract shaders (with several implementations: lambertian, mirror, glass - with Fresnell effect)
  • Abstract ray-object intersection accelerator (implementation of a Kd-Tree)

I was planning to implement other algorithms, such as Bidirectional Path-Tracing, Metropolis Light Transport and Photon Mapping, but my after-work time got shorter and shorter, and I had to stop my Java developments. Recently I started to rewrite JRay's algorithms in C++, my next posts will show the results.

0 Comments:

Post a Comment

<< Home