As a new member of the PLW, I have entered into a long history of beautiful things. In particular, a history of ways to go about enabling the creation of beautiful things.
Low-level graphics programming was once rather difficult. Over the course of the past few years, however, computer speeds have increased, and graphics hardware has improved. Today, these improvements have enabled many technologies for the rapid generation and prototyping of low-level graphics based applications. Graphical programming tools such as Max/MSP/Jitter have been able to take advantage of modern hardware to abstract away some of the heavy lifting of OpenGL-based programming and make graphics programming more accessible. Similarly, the ability to embed interpreters into applications has enabled a dramatically different style of programming known as livecoding. To an extent, the traditional <compile, run, debug, repeat> style of graphics programming is no longer necessary to produce aesthetically interesting things on screen.
I've become fond of certain aspects of these developments. I like the idea of running a program that I can sit down and interact with without the context switch associated with stopping, re-compiling, and running an application. This enables a degree of intimacy with an application that, with the proper controls, allows the environment to be explored to find beautiful and unexpected things.
Even though these approaches have made graphics programming simpler and more interactive, the 2D and 3D programming models are rarely unique, and simply expose roughly the same set of 2D drawing primitives and/or 3D OpenGL commands. For me, 2D graphics programming is simple and makes sense. I can sit down for a few minutes and write a program that shows me a 2D rendering of a bouncing ball. Sitting down to do the same thing in 3D is much more involved. What if the graphics commands used for a 3D interactive programming environment were basically 2D?
Like its livecoding siblings, E15:oGFx is a project focused on the elimination of the <compile, run, debug, repeat> style of interactive graphics programming, while maintaining a roughly 2D programming style. In E15:oGFx, the evaluation of scripts generate 2D textures. By allowing this 2D context to communicate with carefully selected components that are responsible for the generation of the 3D environment, a dramatically different style of graphics programming emerges. Coupled with more advanced features of dynamic programming languages (such as metaclass tracking for on-the-fly object instance modification), E15:oGFx stands alone with respect to both it's simplicity and interactive potential.
I made the following images in E15:oGFx beginning in mid 2007. You can find more up to date images on my blog, or my flickr account. A (rather dated) introductory video can be found here.














