Generic Object Engine
By Scott Foust
The Generic Object Engine (GEO) was an academic project.
GOE was both an object viewing OpenGL
application as well as a ray tracing engine that supports both a simple scene
format and a subset of the open standard COLLADA
In the Beginning
Getting rays to just
hit a sphere was a bit of a challenge at one point.
(here
the color value was wrapping over '255' quite a few times)
Soon lights were
working but there was still something funky at the
edge of where light was striking spheres
Now, we're starting to
see some specularity and soft shadows.
Depth of Field is a
supported feature.
This feature still needs better control of the focus
point.
The best final image
This image shows off texture mapping and reflections.
COLLADA Scene Loading
Cameras, lights and tri-polygon
meshes
(with hierarchy
supported for meshes)
As stated earlier, this project is also an OpenGL
scene viewer.
As such, it contains both real time viewing code as
well as ray tracing code.
The ray tracer class pretty much piggy-backs on top of
the real time class.
This method is not as elegant as I would like.
Restrictions with
OpenGL requiring static functions prevents smooth inheritance
of
base
classes. There has to be a cleaner solution, but any other
method currently eludes me.