Creating Images with GLSL Fragment Shaders
In my time between leaving Framestore Labs and now I have been working on an application to help the iterative development of glsl shaders.
There is a slew of Shader Writing applications out there, the most prominent of which is ShaderToy, made by Íñigo Quílez - a web application using webgl, outputting a single full-screen quad shaded by what the user codes in the editor. These applications are amazing and intelligent and I love all of the work behind them, these are often the best graphics programmers in the industry who contribute to these sites and galleries - it is staggeringly impressive.
I love creating visuals with shaders, I find it really creatively powerful and simple - glsl is a C-like high level programming language that exposes all the data you need to operate on the individual pixels, so it feels to me the closest you can get to just writing a maths equation down and having it appear on the screen as slick graphics.
What I hate is how opaque the logic and inner workings are. Shaders are famous for being hard to debug, you get zero information about your inputs and outputs save for what your get on your screen at the end.
I find it kind of sad that such an interesting way of creating is shooting itself in the foot like this. I think there is so much more potential that is hidden away by our interfaces, so many unexplored ideas that die because of a lack of clarity and a high learning curve.
The Software I Have Made
I'd like a shader application that can show me what is happening when I change values, what happens to other values, to be able to see these changes clearly and immediately. At the same time I'd like to add some more intuitive interfaces to the coding process to make it feel more organic and less like I am punching numbers into a card, walking over to my machine and pressing the compile button, which I think kills a lot of the intuition and fun...
So that is my impetus for creating Shader Writer - I hope to develop it for my solo projects, having it evolve alongside my process, to keep on adding features that aid in the fast and effective creation of visuals.
It has been really fun so far, it is also far from the dream I was describing earlier, if nothing else it has taught me a great deal about system design and application building.
At the present Shader Writer acts like a kind of Visual IDE for writing .shader files, which is all shaders within a shader program combined (vertex, geometry, tessellation, fragment). It also has interactive interfaces that appear when you double click a value like a float or a vector to add a more intuitive creative process.
This, combined with an external sync-tracking software that allows values to be key-framed and interpolated across time, makes digital creation a physical act, like a live performance which involves user participation, creating spontaneous and unexpected results.
I'll update it's development here and hey maybe one day I will release the horrible code out into the wild if it garners enough interest....
I'd love to hear what you think, if you have any comments just drop me a message at firstname.lastname@example.org