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.