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.