December 09, 2007
Atom 1.0 'Alpha' Coming

After two months of development, the GUI version of Atom is nearly ready for an early release.

Some features still need to be completed, from things like loop support in the GUI, down to appearance tweaks such as drawing links as curves. Functionally, though, it is complete, and is going through some usability testing. It's already become a very fast and fun to use application.

The overall speed of development has encouraged me to go ahead with an extension of Atom into an actual painting & photo editing program similar to Photoshop, although much more focused on a few particular specialties which I feel are neglected:

  • Painting & Concepts
  • Texture Art
  • Pixel Art
  • General Image Editing
I don't plan on supporting anything related to print, and very little related to vector-based graphics.

This is partly in response to my dissatisfaction of what is provided by The Gimp in all of those areas, as well as Photoshop's continued growth in complexity, adding features which don't have any benefit to them either. I have also long wished for Photoshop to support a dynamic, node-based method for applying effects and filters to layers.

Atom itself is written in C++, using ImageMagick to load and save images in an absurd number of formats. The GUI is written in C# using Gtk# and Cairo.

A diverse set of filters have already been written, and more will be added before alpha. I am also open to suggestions of any kind. The included filters range from simple color manipulation to texture synthesis, and even more technical filters such as Fourier and Hough transforms.

Atom itself makes use of some key features to bring unusual flexibility to the user. For example, a filter is allowed to be given more than one image as input, and it is also allowed to output more than one image. When you combine this feature with the ability to create feedback loops, many complex image processing algorithms can be implemented with a few clicks and drags.

Atom is also fast and user-friendly. All operations give realtime feedback in the network view.

There are some other planned improvements which won't be seen in the alpha release. One of the major features planned is the ability for filters to use GPU acceleration when possible, and for the actual Cairo surface to be OpenGL-based. I am not sure of the best way to provide a good framework for GPU acceleration, so if you have suggestions, drop me a line!

In case you're curious, this is a very early screen-shot of the Atom-based paint program I am working on. It has a very long way to go, but considering the amount of time I've spent on it, this isn't too bad at all. C# is a wonderful language for writing GUI-centric applications, especially when you've got C++ sitting behind it!

PictureSynth is the program's working name, although this is sure to change.

Lastly, for anybody interested in the development of Geos, this application will probably be included as an in-editor utility for creating & editing assets.