ISF, also known as Interactive Shader Format by those who dislike acronyms, is a programming language that allows users to create their own shaders. A shader is a little computer program that creates visuals or effects by running instructions directly on your GPU.
Wire supports the ISF format and ISF even has its own node, you’ve guessed it: The ISF node.
In this article we’ll discuss how to use ISF in your patches. Note that we are not teaching you how to code ISF. More information on writing your own shaders can be found in the ISF Documentation or in the mythical Book of Shaders.
Curious about what a shader can do? Check out some amazing shaders made by the ISF community.
Creating a Shader
To start using shaders in Wire you will need to create an ISF node.
By itself the node will do nothing, because it doesn’t have a shader yet.
Select the node and navigate to the node panel.
Under the Attributes header you’ll find the option to select a “Fragment Shader”.
You’ll have the option to either create a new shader, create a shader from the clipboard or import a shader. Whichever option you choose, the text editor will open.You can always access the text editor by selecting it from the view menu or using the CTRL+T shortcut.
ProTip: go to View → Layout → Shader Editing for a Wire layout that is optimized for writing shaders.
When you are working with your ISF shader you probably want to add an input or two. To do this you have to add an input in the ISF code using the JSON blob at the top of the code.
There are many different attributes that you can add to the JSON blob.But we only care about the “INPUTS”. You can totally remove Credit and Categories, Wire doesn’t need them.
There are a couple of different inputs you can add, most notably “float” , “bool” , “color” and “event”. A full description of each inlet can be found in the ISF Attributes Documentation.
Note that some inputs can handle additional keys like “MIN” and “MAX” for float values.
Please note that Wire currently (version 7.8) does not support Vertex shaders for the simple fact that we are still dealing with 2D and therefore it doesn’t make much sense to support it.