Filterstorm gets a rewrite.
Filterstorm is the first iOS app I wrote, and by far the most successful. I still think that its editing capabilities are unmatched on mobile, but it’s never been the fastest or the prettiest photo app on the app store. The Achilles’ heel has always been reliance on the CPU; lots of time and memory is wasted copying the image from CPU to GPU memory. Because of this, Filterstorm has long relied on a reprocessing step, remembering all the editing steps you do on a preview image, then applying them to the full image later on.
I waited (too long) for Apple to let developers write custom Core Image filters on iOS as we can on the Mac, but to no avail. Several months ago I decided to go ahead without this capability and rewrite Filterstorm on OpenGL rather than Core Image. With some help from Brad Larson’s GPUImage project, I was able to build a much faster and more stable foundation for my new flagship app: Filterstorm Neue.
The new interface was all about simplicity. I spent less time trying to create icons for concepts like “effects” that have no readily understood pictorial representation, and instead used more text. Since text takes up more space than icons, I put the buttons on semi-transparent rectangles that wouldn’t fully obscure the image. To tie the interface to the image, I created an algorithm to create a color scheme based off whatever image was being edited*. The very initial result of the new interface concept is shown in this video I tweeted about 5 months ago.
Compared to the final version, the animation is atrocious and the spacing is poor, but it was immediately clear that the idea was a winner. From that point I made the buttons smaller and closer together to save screen space, and changed the animations to swipe in from the right when going into a menu, and push out to the right when backing out, to give a clearer sense of place. I also added overlay sheets that would attach to buttons to provide information and options in the same manner I used popovers for in previous versions. The results can be seen in my demo video here:
Please note that the poor frame rate is due to recording via airplay.
One of the most requested features I’ve received is for a way to use a mask brush without covering the area you’re brushing with your finger. The two suggested solutions were either to offset the brush from the finger, or to show the area obscured by your finger somewhere else on the screen that was visible. Filterstorm Neue solves this issue in a manner similar to the first recommendation. If you simply place your finger down and move it, the brush will follow your finger just as in older versions of Filterstorm. However, if you tap your finger, the brushing indicator will be moved without brushing. You can then grab the indicator by any edge, and drag it to move the brush which is now offset from your finger. If this description is confusing, please watch the above video as I demonstrate both methods.
Another feature I’ve long wanted to implement (also shown in that video) is the ability to go back and forth between masking and editing. Filterstorm has always had you set the filter first, then mask on the change. I’ve always thought this is better than masking before editing. However, when setting the filter for the whole image sometimes your initial perception is a little off, and once you’ve set the mask you want to increase the contrast effect, for example. In Filterstorm Neue, accepting the mask will bring you back to the contrast controls, and you can re-adjust before applying the filter. You can switch back and forth between masking and contrast as much as you like before applying. Unfortunately, there are a few features that rely on the CPU for now for which this isn’t possible, but it is for most.
Filterstorm’s been on the market for well over three years now, and I’ve learned a lot in that time. With all that extra experience, I’ve been able to build a much better engineered app that should stay fast and stable for years to come. The feature set is not yet as large as that of classic Filterstorm, but it is far faster and has a number of advantages like the ones I’ve discussed here. Future development should also bring back most of the missing features quickly. I plan to release Filterstorm Neue in early November as a new app, so please pick it up!
For more information, you can visit the website at http://filterstormneue.com