After Effects Plug-in to write GLSL with a format of glslCanvas

Overview

glslCanvas4AE

After Effects plug-in to run codes written at The Book of Shaders Editor.

NOTE: This codes is working in progress and has many problems yet. I'm focusing on building the plug-in only for latest AE on macOS at first, and then prepare for other environment. It would be awesome if you contribute this project to support Windows!

How to Build

  1. Download AE SDK CC 2017 for macOS.
  2. Put the SDK folder at the same directory as cloned folder of this repository and rename it to "SDK" like below:
    (parent folder)
        ├ glslCanvas4AE
        └ SDK
    

License

This plugin is published under a MIT License so far. See the included LICENSE file.

Achknowledgements

Comments
  • Support referencing ISF inputs via expressions

    Support referencing ISF inputs via expressions

    Since the plug-in dynamically changes the names of parameters to match with ISF inputs, it raises an error when you try to retrieve the value by expression.

    An expression like this:

    const d = thisLayer.effect("Polar Displacement")("Distance");
    

    triggers an error with the message: ”Error: property or method named 'Distance' in Class 'Group' is missing or does not exist.”.

    opened by baku89 1
  • AE 2018 Crash

    AE 2018 Crash

    First, let me thank You for creating and sharing GLSLCanvas!

    I've tried it with two versions of After Effects. AE CC 2017.2 (14.2.1.34) - loads and renders some of shaders from Book of Shaders that I've tried. So far no crashes, performance is ok (just a little choppiness while adjusting parameters in plug-in UI).

    AE CC 2018 (15.0.0, build 180) - after attempting to load shader via "Load Shader.." AE crashes, same if I just add GLSLCanvas to empty solid and move playhead. Few times it even froze my whole system (not a kernel panic, just complete freeze and lots of artefacts). I also tried to change AE renderer from Metal to Software Only, same thing. Crash report: AE_2018_GLSLCanvas_CRASH.txt

    I've compiled Your plugin on MacOS 10.12.6 & XCode 9.2 (9C40b) and used latest AE SDK.

    opened by YarlBoro 1
  • Display indices of parameters

    Display indices of parameters

    Because expressions cannot refer to an ISF parameter by name as it changes dynamically, displaying the ISF parameter's index would be helpful for users to write expressions referring to them consistently.

    Also, users can hide the indices by toggling "ISF Option.." to simplify the UI display.

     // This expression will be broken after reloading the project
    effect("ISF")("Label of input")
    // This way of referring ISF parameter would work unless the order of ISF inputs does not change
    effect("ISF")(12) 
    
    opened by baku89 0
  • Make the value of parameters persist as much as possible when updating ISF code

    Make the value of parameters persist as much as possible when updating ISF code

    The plug-in currently resets all of the inputs to defaults when you even update even a single character of the shader. So it'd be useful to find a pair of parameters whose names and types are equivalent, between old and new ISFs, and carry over the values.

    opened by baku89 0
  • Feature Request: Windows support

    Feature Request: Windows support

    Not sure if this is planned or not, but would be really nice to see this get Windows support! Looking at the source with my limited knowledge of cpp, I think the file open/save dialogs and such are the only parts that require macOS, but maybe there's more to it I'm not aware of.

    enhancement 
    opened by stysmmaker 2
  • Add 'Reset to Defaults' button for reverting all user-defined inputs back to defaults

    Add 'Reset to Defaults' button for reverting all user-defined inputs back to defaults

    At the moment, the 'Reset' label right to the name of effects refreshes not only inputs but also the imported shader itself. So it would be nice to add a 'Reset to Default' button under ISF options so that users can only reset the value of ISF inputs.

    opened by baku89 0
  • Set an expression 'thisLayer.time' as a default value for Time property

    Set an expression 'thisLayer.time' as a default value for Time property

    As discarding the 'Use Layer Time' checkbox, it'd be useful if the remaining 'Time' slider automatically refers the layer time that the effect is applied.

    Since PF_AD_PARAM only supports non-expression values as a default, I tried to use AEGP suites to modify a parameter like the below code at the timing PF_Cmd_SEQUENCE_SETUP has called:

    // Set the default expression to parameters
    AEGP_EffectRefH effectH = NULL;
    AEGP_StreamRefH streamH = NULL;
    
    ERR(suites.PFInterfaceSuite1()->AEGP_GetNewEffectForEffect(G_my_plugin_id, in_data->effect_ref, &effectH));
    ERR(suites.StreamSuite5()->AEGP_GetNewEffectStreamByIndex(G_my_plugin_id, effectH, FILTER_TIME_ID, &streamH));
    ERR(suites.StreamSuite2()->AEGP_SetExpressionState(G_my_plugin_id, streamH, true));
    ERR(suites.StreamSuite2()->AEGP_SetExpression(G_my_plugin_id, streamH, "thisLayer.time"));
        
    if (effectH) ERR(suites.EffectSuite3()->AEGP_DisposeEffect(effectH));
    if (streamH) ERR(suites.StreamSuite2()->AEGP_DisposeStream(streamH));    
    

    But it raises an error, which says ”internal verification failure, sorry! {child not found in parent} (20::0)”. Does any guru know how to handle this?

    opened by baku89 0
Releases(v0.4.0)
  • v0.4.0(Oct 27, 2022)

  • v0.3.1(Oct 23, 2022)

  • v0.3.0(Oct 23, 2022)

  • v0.2.0(Sep 15, 2022)

    What's Changed

    • Divided the unit type "angle" into two types, "direction" for absolute angles and "angle" for relative offset by @baku89 in https://github.com/baku89/ISF4AE/pull/10
    • Prevents resetting all of the parameters when updating ISF
    • Memorizes a location of directory on loading/saving ISFs by @baku89 in https://github.com/baku89/ISF4AE/pull/12
    • Added support for custom vertex shaders in https://github.com/baku89/ISF4AE/pull/13
    • Displays indices of parameters in https://github.com/baku89/ISF4AE/pull/14

    Full Changelog: https://github.com/baku89/ISF4AE/compare/v0.1.1...v0.2.0

    Source code(tar.gz)
    Source code(zip)
    ISF4AE_v0.2.0_macOS.zip(3.16 MB)
  • v0.1.1(Sep 2, 2022)

    The first beta version for macOS. I have confirmed that the plug-in runs almost properly in my environment shown below:

    • macOS Monterey 12.3.1 (M1 Max, Intel Hackintosh with two AMD dGPU)
    • After Effects CC 22.6.0

    Please do not use it for production, since this version is quite buggy and sometimes crashes the entire app.

    I am willing to give maximum freedom to any artist and developer who may contribute to this project and wish to hack the plug-in. At the same time, however, I would also like to monetize the development in some way, as it is stealing my time as an artist. So at the moment, I am thinking of making it shareware (or maybe pay-what-you-want) for end users while keeping the source code open as of the first production release -- any ideas or opinions would be appreciated.

    Special thanks to @mizt for advising me on how to notarize the plug-in.

    Source code(tar.gz)
    Source code(zip)
    ISF4AE_v0.1.1_macOS.zip(3.13 MB)
Owner
Baku 麦
video director・visual artist・coder
Baku 麦
appleseed is an open source, physically-based global illumination rendering engine primarily designed for animation and visual effects.

appleseed is an open source, physically-based global illumination rendering engine primarily designed for animation and visual effects.

appleseedhq 2k Jan 8, 2023
A header-only C-like shading language compiler that writes Metal, HLSL, GLSL

GPUC A generic shading language compiler that writes metal, HLSL, and GLSL GPUC is a work in progress, not ready for prime time. The primary motivatio

Garett Bass 61 Oct 18, 2022
GLSL and ESSL are Khronos high-level shading languages.

GLSL GLSL and ESSL are Khronos high-level shading languages. Khronos Registries are available for OpenGL OpenGL ES Vulkan Extension specifications in

The Khronos Group 241 Dec 9, 2022
AMD K6-2 (CXT) / K6-2+ / K6-3 / K6-3+ Write Allocate / Write Combine / Write Ordering / Frequency Multiplier Initialization driver for MS-DOS

K6INIT What is this? This is a driver for MS-DOS to replace k6dos.sys which is a bit useless and unflexible. It does not support the CXT versions of t

null 10 Sep 11, 2022
QtLottie is a tiny C++ library that can render Adobe® After Effects™ animations exported as JSON with Bodymovin.

QtLottie QtLottie is a tiny C++ library that can render Adobe® After Effects™ animations exported as JSON with Bodymovin. Features Support many After

Yuhang Zhao 28 Dec 7, 2022
glslcc: Cross-compiler for GLSL shader language (GLSL->HLSL,METAL,GLES,GLSLv3)

glslcc: Cross-compiler for GLSL shader language (GLSL->HLSL,METAL,GLES,GLSLv3) @septag glslcc is a command line tool that converts GLSL code to HLSL,

Sepehr Taghdisian 435 Dec 17, 2022
LLVM IR and optimizer for shaders, including front-end adapters for GLSL and SPIR-V and back-end adapter for GLSL

Licensing LunarGLASS is available via a three clause BSD-style open source license. Goals The primary goals of the LunarGLASS project are: Reduce the

LunarG, Inc. 153 Dec 8, 2022
⚔️ A tool for cross compiling shaders. Convert between GLSL, HLSL, Metal Shader Language, or older versions of GLSL.

A cross compiler for shader languages. Convert between SPIR-V, GLSL / GLSL ES, HLSL, Metal Shader Language, or older versions of a given language. Cross Shader wraps glslang and SPIRV-Cross, exposing a simpler interface to transpile shaders.

Alain Galvan 207 Dec 30, 2022
GLSL optimizer based on Mesa's GLSL compiler. Used to be used in Unity for mobile shader optimization.

GLSL optimizer ⚠️ As of mid-2016, the project is unlikely to have any significant developments. At Unity we are moving to a different shader compilati

Aras Pranckevičius 1.6k Jan 3, 2023
An AV1 Image (AVIF) file format plug-in for Adobe® Photoshop®

avif-format An AV1 Image (AVIF) file format plug-in for Adobe® Photoshop®. Single images can be loaded and saved using 8, 10 or 12 bits-per-channel, i

Nicholas Hayes 100 Dec 20, 2022
RemixDB: A read- and write-optimized concurrent KV store. Fast point and range queries. Extremely low write-amplification.

REMIX and RemixDB The REMIX data structure was introduced in paper "REMIX: Efficient Range Query for LSM-trees", FAST'21. This repository maintains a

Xingbo Wu 81 Dec 3, 2022
The OpenEXR project provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the motion picture industry.

OpenEXR OpenEXR provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the mot

Academy Software Foundation 1.3k Jan 6, 2023
(Simple String Format) is an syntax of format and a library for parse this.

SSFMT (Simple String Format) is an syntax of format and a library for parse this. SSFMT != {fmt} SSFMT is NOT an API/library for parse {fmt} syntax !

null 2 Jan 30, 2022
log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API.

% log4cplus README Short Description log4cplus is a simple to use C++17 logging API providing thread--safe, flexible, and arbitrarily granular control

null 1.4k Jan 4, 2023
A simple-to-build ortholinear keyboard named after a famous penguin

Nils Olav A simple-to-build, low-profile, ortholinear keyboard named after a famous penguin. This keyboard is based around the Elite-C v4. It features

Andrew Harvie 9 May 27, 2022
After a few loose attempts at porting Source-games; here comes my first real one!

StanleyParable-Vita After a few loose attempts at porting Source-games; here comes my first real one! (For anyone who wonders what happened to the HL2

Sleppo04 4 Sep 21, 2021
ESP32/8266 Arduino/PlatformIO library that painlessly enables incredibly fast re-connect to the previous wireless network after deep sleep.

WiFiQuick ESP32/8266 Platformio/Arduino library that painlessly enables incredibly fast re-connect to the previous wireless network after deep sleep.

Winford 1 Apr 3, 2022
SystemGap - Maintenance Tools after privilege escalation

SystemGap 适用于解决不稳定Windows漏洞提权成功后进行权限驻守的办法 SystemGap - 监听者 SystemGap 负责监听一个任意用户可读写的匿名管道,从管道中读取命令进行执行 SystemGapClient - 发送者 SystemGapClient 负责向匿名管道中传入指令

倾旋 39 Nov 9, 2022