Descend

Descend

Descend is an open source program for drawing 3D surfaces from parametric equations. It uses a custom, very fast language called Misc to calculate the geometry. It also uses OpenGL to render scenes with high quality shaders.

The idea of the Descend project dates back to the 1990s when I had an Amiga 1200. One day I saw a very simple program which could draw 3D surfaces based on parametric equations entered by the user. One of my first attempts to create a similar program was called “Monster” and I wrote it in Turbo Pascal on my friend's PC as a computer science school project.

In December 1999 I bought my first own PC and just a few months later I started working on a program called Grape3D, which was based on a similar idea, but it was written using Visual C++. It had very a complex user interface for designing scenes consisting of multiple objects. Unlike its predecessor, I could also render these scenes in real time using 3D accelerated OpenGL graphics.

Later I made a few attempts to design a new version that would be even more powerful, but I never made any real progress with it. Finally in 2004 I decided to take a completely different approach. I designed a programming language called Misc, which could be used for very fast calculations using vectors and matrices. Then I started experimenting with building a new program for drawing 3D graphs, named Descend, that would be based on the Misc Engine. However, I was never satisfied with the results and finally I abandoned this project.

In summer of 2011 within just a few days I created an entirely new prototype of Descend  which used an adaptive surface tessellator to dramatically improve the quality of generated surfaces. The result was very encouraging, but the JavaScript engine which was used to calculate the parametric equations turned out to be too slow. I decided to revive the idea of Misc, but this time I kept it very simple and I focused on optimizing the performance. As a result I released the first and only official version of Descend in October 2012. It's much more of an experiment than other open source programs that I created, but I still think that Descend was one of the most interesting projects that I've worked on and I learned a lot from it.