Milo Ray Tracer is a Windows application I developed for creating photo-realistic
images. The application uses advanced algorithms (code) to simulate real life
effects like reflections, refractions, shadows and caustics (light behavior
through transparent objects). Although C++ is the mainstream programming language
for commercial and non-commercial ray tracers, Milo Ray Tracer was written and
tested in several versions of Visual Basic, including the latest version, VB
2008. The pictures
on this page were all created in Milo
Setting the stage...
A few years ago, a friend of mine asked me to write a program to display 3D
surfaces. A few weeks later I was showing him my Surface
application. The application performed as expected, but it was
far from being complete. With time, Surface Generator evolved into the
application, with features like 3D
curve plotting, 3D object creation, texture and bump mapping, and Gouraud and
Phong shading. 3D Graphics was originally written in Quick Basic and ported
to Windows with Visual Basic, which I was also using to develop the
. With the advent of the .Net framework,
I rewrote an improved 3D Graphics with VB 2005.
Ready to trace...
With enough graphics programming experience in hand, I decided to write a ray
tracing application. I started my research on the internet and found enough
information to understand the basics and start writing a simple ray tracer.
My first picture of reflecting spheres showed the reflections on the wrong side
of the spheres! Refusing to give up, I acquired several good books to improve
my understanding of the subject and write better ray tracing code. With time
and perseverance, I developed the Milo Ray Tracer application (below), with
17,000+ lines of code and many advanced features including distributed ray tracing
to simulate glossy reflections, translucent transparencies, soft shadows and
depth of field, and new photon mapping algorithms to simulate reflective and
below are my creations. I don't mind anyone using
them for their personal enjoyment, wall paper, screen saver, etc. If you intend
to use them for profit, I would prefer that you contact me first.
The objects below were generated with equations. These objects render
but equations can model a limited number of real-life objects.
The objects below were created with triangular faces (polygons). These objects
take longer to render, but polygons can model all types of real-life objects.
Photon Mapping improves realism by allowing my ray tracer to render
illumination and reflective and refractive caustics.
Fresnel equations control reflections and refractions as a function of viewing
This allows my ray tracer to render more realistic dielectrics like
glass and water.
Global illumination simulates light interreflection and color bleeding between objects. These effects
can not be rendered with basic ray tracing alone. My ray tracer renders global illumintaion
photon mapping, final gathering, irradiance caching and ray tracing.
Left pictures: basic ray tracing.
Right pictures: ray tracing with golbal illumination