Efficient 3D engines use scene databases to quickly answer queries such as "What must be drawn if the viewer is here and looking this direction?" and "Return all non-opaque triangles in back-to-front order." Most 3D engines are written in an imperative style, even though most scene databases are structured as trees and operations on them can be done without destructive updates. In this talk, I give a sneak peak at a standalone 3D engine with a purely functional API, comprised mostly of combinators that operate on scene databases. I intend it to replace Plot's internal 3D engine, which draws on Cairo device contexts, but also be flexible and efficient enough to render simple game scenes using OpenGL.
Neil Toronto is a recent PhD graduate from Brigham Young University, now researching programming language support for reliable mathematical computation at University of Maryland, College Park. He writes programs to draw pretty pictures in his nonexistent spare time.