Home

Awesome

<div align="center"> <img width="600" src="./README/isf4ae_logo.png" /> <br> <h1>ISF4AE - Interactive Shader Format for After Effects</h1> <br> <img src="./README/screenshot.gif" /> <br> <br> </div>

After Effects plugin to allows you to use GLSL code written in the Interactive Shader Format as an effect. In short, it's an effect that lets you build effects by yourself -- without struggling with the complicated C++ SDK.

Supported Environments

The plugin has been confirmed to work in the following environments. However, it should generally work in CC 2022 or later on any macOS and Windows:


Additional ISF Specification

Since ISF was originally designed for real-time purposes, such as VJing, it has some limitations that do not align with After Effects' characteristics. This section describes how the plugin interprets ISFs and interoperates with After Effects. The following explanation assumes that you have already understood the specification of ISF.

Limitations

Currently, the plugin does not support several types of inputs, persistent buffers, or custom vertex shaders. It also has a maximum of 16 inputs (excluding "inputImage" and reserved uniforms "i4a_" as mentioned later).

Supported Input Types

Note that "event", "audio", and "audioFFT" are not yet supported currently.

Other Addotional Properties for Inputs

"MIN" and "MAX" only affect the range of slider UI in the Effect Controls panel and users can still set the values outside of the range. To forcibly constrain the value within the range, you can use the plugin's custom properties "CLAMP_MIN" and "CLAMP_MAX" in a boolean value.

ISF Built-in Uniforms

Here is how the plugin determines the value of ISF built-in uniforms

UniformDescription
TIMEWhen you load a shader referring to this uniform, the hidden parameters appear in the Effect Controls panel. You can use either layer time or custom value.
TIMEDELTAAlways set to a value that equals to an expression thisComp.frameDuration
FRAMEINDEXEquivalent to TIME / TIMEDELTA, or TIME * fps.

ISF4AE-specific Uniforms

Inputs with names beginning with i4a_ are reserved by the plugin. When you define the inputs shown below, the plugin automatically binds values that can be useful for accessing the status of the Preview panel from a shader.

NameISF TypeDescription
"i4a_Downsample"point2DDownsampling factor in Preview panel. For instance, the value is set to (0.5, 0.5) in half resolution.
"i4a_CustomUI"boolSet to true when the effect requests an image for Custom Comp UI, which is only visible when you click and focus the effect title in the Timeline / Effect Controls panels. The pass returned by a shader will be overlayed onto the result layer.<br>NOTE: you cannot refer to any image inputs on this pass.
"i4a_UIForegroundColor"<br>"i4a_UIShadowColor"boolFor referring to After Effects' current color scheme to draw Custom Comp UI. Only available when i4a_CustomUI is true.
"i4a_UIShadowOffset"point2DSame as above. Unlike user-defined inputs, the range of value is not normalized and will be passed in absolute px.
"i4a_UIStrokeWidth"<br>"i4a_UIVertexSize"floatSame as above. Passed in px.

How to Build

  1. Download After Effects Plug-in SDK 2022 Mac - Oct 2021.

  2. Clone this repository, including its submodule, by following the steps below:

# At the root folder of SDK
cd Examples/Effect
git clone https://github.com/bskl-xyz/ISF4AE.git
cd ISF4AE
git submodule update --init

On Mac

  1. Open the Xcode project and build it. The binary will automatically be copied under /Library/Application Support/Adobe/Common/Plug-ins/7.0/MediaCore/.

On Windows

  1. Set environment variable AE_PLUGIN_BUILD_DIR to C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore.

  2. Copy the glew32.dll dynamic library from VVISF-GL\external\GLEW\win_x64 to C:\Windows\System32\ folder.

  3. Apply VVISF-GL patch in the root of this repo:

git apply VVISF-GL-Submodule.patch

License

This plugin has been published under an MIT License. See the included LICENSE file.

Similar Projects

Acknowledgments