From 4ce2c4bcce7ab03b3ca3b345712e5f60fed6e891 Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Mon, 6 Jul 2026 21:44:41 -0700 Subject: [PATCH 1/9] In progress update for guides sdk update Need to update placeholder versions once we know the exact version of the SDK we are shipping that has these suites. --- docs/aegps/aegp-suites.md | 156 ++++++++++++++++++++++++++++++++++++++ docs/history.md | 1 + docs/intro/whats-new.md | 13 ++++ 3 files changed, 170 insertions(+) diff --git a/docs/aegps/aegp-suites.md b/docs/aegps/aegp-suites.md index 656114f..c738a69 100644 --- a/docs/aegps/aegp-suites.md +++ b/docs/aegps/aegp-suites.md @@ -87,6 +87,10 @@ As mentioned earlier, AEGPs do everything through suites. The following suites a +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | [File Import Manager Suite](#file-import-manager-suite) | Registers AEGP file and project importers as part of After Effects' file handling. | +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| [Guide Suite](#aegp_guidesuite2) | Read and write the guides shown in Composition, Layer, and Footage views, including orientation, position, color, and edge pinning. | ++---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| [Item View Suite](#aegp_itemviewsuite2) | Query and set the per-view guide display options: visible, snap, and locked. | ++---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ --- @@ -612,6 +616,158 @@ Unless more specificity is required for the function(s) you're using, remain as --- +## Guides + +The `AEGP_GuideSuite` lets plug-ins read and write the guides shown in Composition, Layer, and Footage views. Guides are accessed per item or per layer, by index. + +The suite exposes two generations of accessors. The base functions cover orientation plus a pixel position. The extended `*2` functions (new in `AEGP_GuideSuite2`) add percentage positioning, a per-guide color, and edge pinning. Acquiring `AEGP_GuideSuite2` gives you both. + +!!! note + Guide position values are normalized when applied: pixel positions are clamped to ±100,000 px, percentage positions to ±300%. Non-finite values (NaN, Infinity) are rejected and not applied. + +!!! note + When guide colors, percentage positioning, or edge pinning are in use, the base accessors still operate, but they report only the orientation and raw position value; a base getter may therefore return a percentage value in `outPositionP` without indicating the position type. Use the `*2` accessors to read the position type, color, and pinned flag. + +### Guide types + +```cpp +enum { + AEGP_GuideOrientationType_HORIZONTAL = 0, + AEGP_GuideOrientationType_VERTICAL = 1 +}; +typedef A_long AEGP_GuideOrientationType; + +enum { + AEGP_GuidePositionType_PIXEL = 0, + AEGP_GuidePositionType_PERCENTAGE = 1 +}; +typedef A_long AEGP_GuidePositionType; + +typedef struct { + A_FpLong red; // 0.0 - 1.0 + A_FpLong green; // 0.0 - 1.0 + A_FpLong blue; // 0.0 - 1.0 +} AEGP_GuideColor; +``` + +### AEGP_GuideSuite2 + +!!! note + Suite version 2 (`kAEGPGuideSuiteVersion2`), frozen in After Effects 26.2. The base functions were introduced in `AEGP_GuideSuite1` (frozen in After Effects 26.0) and are re-exposed here unchanged; the extended `*2` functions are new in version 2. + +The `*2` functions add a position type (pixel or percentage), a per-guide color, and a pinned flag (pin to the opposite edge - bottom for horizontal guides, right for vertical guides). Position clamping and non-finite rejection apply as described above. + + ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | Purpose | ++==============================+=======================================================================================================================================================================================================================================================================================================================================================================================================+ +| `AEGP_GetLayerNumGuides` | Returns the number of guides on a layer. | +| | | +| |
AEGP_GetLayerNumGuides(
AEGP_LayerH inLayerH,
A_long \*outNumGuidesP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemNumGuides` | Returns the number of guides on an item. | +| | | +| |
AEGP_GetItemNumGuides(
AEGP_ItemH inItemH,
A_long \*outNumGuidesP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetLayerGuideByIndex` | Retrieves a layer guide's orientation and pixel position. | +| | | +| |
AEGP_GetLayerGuideByIndex(
AEGP_LayerH inLayerH,
A_long inGuideIndex,
AEGP_GuideOrientationType \*outOrientationP,
A_FpLong \*outPositionP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemGuideByIndex` | Retrieves an item guide's orientation and pixel position. | +| | | +| |
AEGP_GetItemGuideByIndex(
AEGP_ItemH inItemH,
A_long inGuideIndex,
AEGP_GuideOrientationType \*outOrientationP,
A_FpLong \*outPositionP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_AddLayerGuide` | Adds a guide to a layer and returns its index. | +| | | +| |
AEGP_AddLayerGuide(
AEGP_LayerH inLayerH,
AEGP_GuideOrientationType inOrientation,
A_FpLong inPosition,
A_long \*outGuideIndexP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_AddItemGuide` | Adds a guide to an item and returns its index. | +| | | +| |
AEGP_AddItemGuide(
AEGP_ItemH inItemH,
AEGP_GuideOrientationType inOrientation,
A_FpLong inPosition,
A_long \*outGuideIndexP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetLayerGuide` | Sets the pixel position of an existing layer guide. | +| | | +| |
AEGP_SetLayerGuide(
AEGP_LayerH inLayerH,
A_long inGuideIndex,
A_FpLong inPosition);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemGuide` | Sets the pixel position of an existing item guide. | +| | | +| |
AEGP_SetItemGuide(
AEGP_ItemH inItemH,
A_long inGuideIndex,
A_FpLong inPosition);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_RemoveLayerGuide` | Removes the guide at the given index from a layer. | +| | | +| |
AEGP_RemoveLayerGuide(
AEGP_LayerH inLayerH,
A_long inGuideIndex);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_RemoveItemGuide` | Removes the guide at the given index from an item. | +| | | +| |
AEGP_RemoveItemGuide(
AEGP_ItemH inItemH,
A_long inGuideIndex);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetLayerGuideByIndex2` | New in `AEGP_GuideSuite2`. Retrieves a layer guide's full state. | +| | | +| |
AEGP_GetLayerGuideByIndex2(
AEGP_LayerH inLayerH,
A_long inGuideIndex,
AEGP_GuideOrientationType \*outOrientationP,
AEGP_GuidePositionType \*outPositionTypeP,
A_FpLong \*outPositionP,
AEGP_GuideColor \*outColorP,
A_Boolean \*outPinnedP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemGuideByIndex2` | New in `AEGP_GuideSuite2`. Retrieves an item guide's full state. | +| | | +| |
AEGP_GetItemGuideByIndex2(
AEGP_ItemH inItemH,
A_long inGuideIndex,
AEGP_GuideOrientationType \*outOrientationP,
AEGP_GuidePositionType \*outPositionTypeP,
A_FpLong \*outPositionP,
AEGP_GuideColor \*outColorP,
A_Boolean \*outPinnedP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_AddLayerGuide2` | New in `AEGP_GuideSuite2`. Adds a fully-specified guide to a layer and returns its index. Position is clamped to the allowed range. | +| | | +| |
AEGP_AddLayerGuide2(
AEGP_LayerH inLayerH,
AEGP_GuideOrientationType inOrientation,
AEGP_GuidePositionType inPositionType,
A_FpLong inPosition,
const AEGP_GuideColor \*inColorP,
A_Boolean inPinned,
A_long \*outGuideIndexP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_AddItemGuide2` | New in `AEGP_GuideSuite2`. Adds a fully-specified guide to an item and returns its index. Position is clamped to the allowed range. | +| | | +| |
AEGP_AddItemGuide2(
AEGP_ItemH inItemH,
AEGP_GuideOrientationType inOrientation,
AEGP_GuidePositionType inPositionType,
A_FpLong inPosition,
const AEGP_GuideColor \*inColorP,
A_Boolean inPinned,
A_long \*outGuideIndexP);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetLayerGuide2` | New in `AEGP_GuideSuite2`. Updates all properties of an existing layer guide. Position is clamped (pixel ±100,000, percentage ±300%). | +| | | +| |
AEGP_SetLayerGuide2(
AEGP_LayerH inLayerH,
A_long inGuideIndex,
AEGP_GuideOrientationType inOrientation,
AEGP_GuidePositionType inPositionType,
A_FpLong inPosition,
const AEGP_GuideColor \*inColorP,
A_Boolean inPinned);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemGuide2` | New in `AEGP_GuideSuite2`. Updates all properties of an existing item guide. Position is clamped (pixel ±100,000, percentage ±300%). | +| | | +| |
AEGP_SetItemGuide2(
AEGP_ItemH inItemH,
A_long inGuideIndex,
AEGP_GuideOrientationType inOrientation,
AEGP_GuidePositionType inPositionType,
A_FpLong inPosition,
const AEGP_GuideColor \*inColorP,
A_Boolean inPinned);
| ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +--- + +## Item Views + +The `AEGP_ItemViewSuite` provides access to the per-view guide display toggles (visible, snap, locked). These mirror the `ViewOptions` guide properties available to scripting. + +### AEGP_ItemViewSuite2 + +!!! note + The guide display functions were added to `AEGP_ItemViewSuite` version 2 (`kAEGPItemViewSuiteVersion2`, frozen in After Effects 26.0). `AEGP_GetItemViewPlaybackTime` is unchanged from the prior version. + + ++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ +| Function | Purpose | ++=================================+==================================================================================================================================+ +| `AEGP_GetItemViewGuidesVisible` | Returns whether guides are visible in the view. | +| | | +| |
AEGP_GetItemViewGuidesVisible(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_visiblePB);
| ++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemViewGuidesVisible` | Sets whether guides are visible in the view. | +| | | +| |
AEGP_SetItemViewGuidesVisible(
AEGP_ItemViewP item_viewP,
A_Boolean guides_visibleB);
| ++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemViewGuidesSnap` | Returns whether snapping to guides is enabled. | +| | | +| |
AEGP_GetItemViewGuidesSnap(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_snapPB);
| ++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemViewGuidesSnap` | Sets whether snapping to guides is enabled. | +| | | +| |
AEGP_SetItemViewGuidesSnap(
AEGP_ItemViewP item_viewP,
A_Boolean guides_snapB);
| ++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemViewGuidesLocked` | Returns whether guides are locked in the view. | +| | | +| |
AEGP_GetItemViewGuidesLocked(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_lockedPB);
| ++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemViewGuidesLocked` | Sets whether guides are locked in the view. | +| | | +| |
AEGP_SetItemViewGuidesLocked(
AEGP_ItemViewP item_viewP,
A_Boolean guides_lockedB);
| ++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ + +--- + ## Managing Selections This suite manages selection states, mirroring the functionality supplied by vectors in the C++ Standard Template Library. diff --git a/docs/history.md b/docs/history.md index aab8a5b..0fa053e 100644 --- a/docs/history.md +++ b/docs/history.md @@ -2,6 +2,7 @@ | Revision Date | Documentor | Notes | | ---------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Release date TBD] | Jessica McMillan | Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details. | | 8 Sep 2025 | Pablo Colapinto | 25.6 SDK Release - AE SDK supports building effects for Windows on Arm Natively. Please see the [Windows on Arm Support](intro/windows-on-arm-support.md) section for more information. | | 24 Feb 2025 | Sean Jenkin | 25.2 SDK Release - AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_MODEL if the object type is a 3D model | | 5 May 2023 | Jason Bartell | Update Color Settings suite to AEGP_ColorSettingsSuite5 with new OCIO calls, and added URL property to the PiPL. See [AEGP_ColorSettingsSuite5](aegps/aegp-suites.md#aegp_colorsettingssuite5) and [PiPL Resources](intro/pipl-resources.md) respectively for more details. | diff --git a/docs/intro/whats-new.md b/docs/intro/whats-new.md index 4c456f6..c92e3b8 100644 --- a/docs/intro/whats-new.md +++ b/docs/intro/whats-new.md @@ -4,6 +4,19 @@ If this is your first time developing an After Effects plug-in, you can skip the --- + +## What's New in the 26.x SDK + +### AEGP Guide Suite + +* A new `AEGP_GuideSuite` lets plug-ins read and write the guides shown in Composition, Layer, and Footage views. `AEGP_GuideSuite1` covers orientation and pixel position; `AEGP_GuideSuite2` adds percentage positioning, per-guide color, and edge pinning. See [Guides](../aegps/aegp-suites.md#guides) for more information. + +### Item View Guide Properties + +* `AEGP_ItemViewSuite2` adds getters and setters for the per-view guide options (visible, snap, and locked). See [AEGP_ItemViewSuite2](../aegps/aegp-suites.md#aegp_itemviewsuite2) for more information. + +--- + ## What's New in the 25.6 SDK ### Windows on Arm Support From 9a47078f4cbd1f79667946f8a3d303358a84f423 Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Tue, 7 Jul 2026 12:04:21 -0700 Subject: [PATCH 2/9] Adding missed api Adding missing v1 suite that was never documented. --- docs/aegps/aegp-suites.md | 60 +++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/docs/aegps/aegp-suites.md b/docs/aegps/aegp-suites.md index c738a69..87a3c8f 100644 --- a/docs/aegps/aegp-suites.md +++ b/docs/aegps/aegp-suites.md @@ -738,33 +738,39 @@ The `AEGP_ItemViewSuite` provides access to the per-view guide display toggles ( The guide display functions were added to `AEGP_ItemViewSuite` version 2 (`kAEGPItemViewSuiteVersion2`, frozen in After Effects 26.0). `AEGP_GetItemViewPlaybackTime` is unchanged from the prior version. -+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ -| Function | Purpose | -+=================================+==================================================================================================================================+ -| `AEGP_GetItemViewGuidesVisible` | Returns whether guides are visible in the view. | -| | | -| |
AEGP_GetItemViewGuidesVisible(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_visiblePB);
| -+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ -| `AEGP_SetItemViewGuidesVisible` | Sets whether guides are visible in the view. | -| | | -| |
AEGP_SetItemViewGuidesVisible(
AEGP_ItemViewP item_viewP,
A_Boolean guides_visibleB);
| -+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ -| `AEGP_GetItemViewGuidesSnap` | Returns whether snapping to guides is enabled. | -| | | -| |
AEGP_GetItemViewGuidesSnap(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_snapPB);
| -+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ -| `AEGP_SetItemViewGuidesSnap` | Sets whether snapping to guides is enabled. | -| | | -| |
AEGP_SetItemViewGuidesSnap(
AEGP_ItemViewP item_viewP,
A_Boolean guides_snapB);
| -+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ -| `AEGP_GetItemViewGuidesLocked` | Returns whether guides are locked in the view. | -| | | -| |
AEGP_GetItemViewGuidesLocked(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_lockedPB);
| -+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ -| `AEGP_SetItemViewGuidesLocked` | Sets whether guides are locked in the view. | -| | | -| |
AEGP_SetItemViewGuidesLocked(
AEGP_ItemViewP item_viewP,
A_Boolean guides_lockedB);
| -+---------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | Purpose | ++=================================+=======================================================================================================================================================================+ +| `AEGP_GetItemViewPlaybackTime` | Returns the view's playback time if previewing is active, otherwise the current associated item time. | +| | `is_currently_previewingPB0` reports whether the returned time is the playback time (`TRUE`) or the item's current time | +| | (`FALSE`). | +| | | +| |
AEGP_GetItemViewPlaybackTime(
AEGP_ItemViewP item_viewP,
A_Boolean \*is_currently_previewingPB0,
A_Time \*curr_timePT);
| ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemViewGuidesVisible` | Returns whether guides are visible in the view. | +| | | +| |
AEGP_GetItemViewGuidesVisible(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_visiblePB);
| ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemViewGuidesVisible` | Sets whether guides are visible in the view. | +| | | +| |
AEGP_SetItemViewGuidesVisible(
AEGP_ItemViewP item_viewP,
A_Boolean guides_visibleB);
| ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemViewGuidesSnap` | Returns whether snapping to guides is enabled. | +| | | +| |
AEGP_GetItemViewGuidesSnap(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_snapPB);
| ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemViewGuidesSnap` | Sets whether snapping to guides is enabled. | +| | | +| |
AEGP_SetItemViewGuidesSnap(
AEGP_ItemViewP item_viewP,
A_Boolean guides_snapB);
| ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetItemViewGuidesLocked` | Returns whether guides are locked in the view. | +| | | +| |
AEGP_GetItemViewGuidesLocked(
AEGP_ItemViewP item_viewP,
A_Boolean \*guides_lockedPB);
| ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetItemViewGuidesLocked` | Sets whether guides are locked in the view. | +| | | +| |
AEGP_SetItemViewGuidesLocked(
AEGP_ItemViewP item_viewP,
A_Boolean guides_lockedB);
| ++---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ --- From 8e7c69d7799b75b7f406ed337977ec3beb9d97cb Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Tue, 18 Aug 2026 22:39:52 -0700 Subject: [PATCH 3/9] warn against the system plug-ins folder on macOS Clarify that the macOS Build Location --- docs/intro/sample-projects.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/intro/sample-projects.md b/docs/intro/sample-projects.md index 9ef0ab7..38303bd 100644 --- a/docs/intro/sample-projects.md +++ b/docs/intro/sample-projects.md @@ -152,6 +152,9 @@ Note that this Windows path is only recommended for development purposes. Window In Xcode, you can set this path once for the projects in the Xcode File > Project Settings > Advanced. Under *Build Location* choose *Custom: Absolute*, and fill in the path. +!!! warning + On macOS, use the per-user `~/Library` path above, which needs no elevated privileges. Don't point the Build Location at the system `/Library/Application Support/Adobe/...` folder: it is owned by `root`, so an unprivileged build fails with a confusing Xcode "Could not compute dependency graph / mktemp failed" error rather than a clear permissions message. Building with `sudo` to work around this is not recommended either, as it leaves root-owned build artifacts that break later rebuilds and cleans. If you specifically need the plug-in in the system folder, build normally and then copy the finished `.plugin` there with an elevated copy (for example `sudo cp -R`). + In Visual Studio, for convenience, we have specified the output path for all sample projects using the environment variable AE_PLUGIN_BUILD_DIR. You'll need to set this as a user environment variable for your system. On Windows 7, right-click *My Computer* > *Properties* > and in the left sidebar choose *Advanced System Settings*. In the new dialog, hit the *Environment Variables* button. In the User variables area, create a New variable named AE_PLUGIN_BUILD_DIR, and with the path described above. Log out of Windows and log back in so that the variable will be set. Alternatively, you can set output path for each project individually in Visual Studio by right-clicking a project in the Solution Explorer, choosing Properties, and then in Configuration Properties > Linker > General, set the Output File. From 2cb1099b6397e351c1fcc307c7e0bb4e1b94dafe Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Wed, 19 Aug 2026 10:43:47 -0700 Subject: [PATCH 4/9] Document parametric mesh layers and bump Comp Suite to v13 Updates provided by Yao Zhang - Add AEGP_CreateParametricMeshLayerInComp (AEGP_CompSuite13) and its six mesh types (cube, sphere, plane, torus, cone, cylinder) - Add AEGP_ObjectType_VECTOR and AEGP_ObjectType_3D_PARAMETRIC_MESH to the AEGP_GetLayerObjectType object types - Retarget the remaining AEGP_CompSuite11 references to the current AEGP_CompSuite13 (comp/cheating/artisan pages) - Fold into the consolidated 26.5 SDK "What's New" section and Version History entry --- docs/aegps/aegp-suites.md | 21 +++++++++++++++---- .../cheating-effect-usage-of-aegp-suites.md | 2 +- docs/artisans/artisan-data-types.md | 2 +- docs/history.md | 2 +- docs/intro/whats-new.md | 10 +++++++-- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/docs/aegps/aegp-suites.md b/docs/aegps/aegp-suites.md index 87a3c8f..d87cbff 100644 --- a/docs/aegps/aegp-suites.md +++ b/docs/aegps/aegp-suites.md @@ -45,7 +45,7 @@ As mentioned earlier, AEGPs do everything through suites. The following suites a +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | [Keyframe Suite](#aegp_keyframesuite3) | Used to access and manipulate all keyframe data. | +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| [Marker Suite](#aegp_markersuite2) | Used to manipulate markers. Use `AEGP_GetNewCompMarkerStream()` (in [AEGP_CompSuite11](#aegp_compsuite11)) to get the composition marker stream. | +| [Marker Suite](#aegp_markersuite2) | Used to manipulate markers. Use `AEGP_GetNewCompMarkerStream()` (in [AEGP_CompSuite13](#aegp_compsuite13)) to get the composition marker stream. | +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | [Mask Suite](#aegp_masksuite6) | Provides access to retrieve information about a layer's masks. | +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -471,7 +471,7 @@ Unless more specificity is required for the function(s) you're using, remain as +--------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_SelectItem` | Toggles the selection state of the item, and (depending on `deselect_othersB`) can deselect other items. This call selects items in the Project panel. | | | | -| | To make selections in the Composition panel, use `AEGP_SetSelection` from [AEGP_CompSuite11](#aegp_compsuite11). | +| | To make selections in the Composition panel, use `AEGP_SetSelection` from [AEGP_CompSuite13](#aegp_compsuite13). | | | | | |
AEGP_SelectItem(
AEGP_ItemH itemH,
A_Boolean selectB,
A_Boolean deselect_othersB);
| +--------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -826,9 +826,9 @@ When `AEGP_StreamRefHs` are inserted into a collection, they are adopted by the ## Manipulate Compositions -Provide information about the compositions in a project, and create cameras, lights, and solids. +Provide information about the compositions in a project, and create cameras, lights, solids, and parametric mesh layers. -### AEGP_CompSuite11 +### AEGP_CompSuite13 +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Function | Purpose | @@ -1040,6 +1040,17 @@ Provide information about the compositions in a project, and create cameras, lig | | | | |
AEGP_SetCompDisplayDropFrame(
AEGP_CompH compH,
A_long index);
| +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_CreateParametricMeshLayerInComp` | New in 26.5. Creates and adds a parametric mesh layer to the specified composition. | +| | | +| |
AEGP_CreateParametricMeshLayerInComp(
AEGP_CompH parent_compH,
AEGP_ParametricMeshType mesh_type,
AEGP_LayerH \*new_parametric_mesh_layerPH);
| +| | | +| | - `AEGP_ParametricMeshType_CUBE` | +| | - `AEGP_ParametricMeshType_SPHERE` | +| | - `AEGP_ParametricMeshType_PLANE` | +| | - `AEGP_ParametricMeshType_TORUS` | +| | - `AEGP_ParametricMeshType_CONE` | +| | - `AEGP_ParametricMeshType_CYLINDER` | ++---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ --- @@ -1464,7 +1475,9 @@ As most After Effects usage boils down to layer manipulation, this is among the | | - `AEGP_ObjectType_LIGHT` | | | - `AEGP_ObjectType_CAMERA` | | | - `AEGP_ObjectType_TEXT` | +| | - `AEGP_ObjectType_VECTOR` | | | - `AEGP_ObjectType_3D_MODEL`, New in 24.4. | +| | - `AEGP_ObjectType_3D_PARAMETRIC_MESH`, New in 26.5. | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_IsLayer3D` | Is the footage item a 3D layer. All AV layers are either 2D or 3D. | | | | diff --git a/docs/aegps/cheating-effect-usage-of-aegp-suites.md b/docs/aegps/cheating-effect-usage-of-aegp-suites.md index 74a3561..0b1794b 100644 --- a/docs/aegps/cheating-effect-usage-of-aegp-suites.md +++ b/docs/aegps/cheating-effect-usage-of-aegp-suites.md @@ -2,7 +2,7 @@ As soon as we showed developers the initial implementation of AEGP suites, they wanted to "cheat" and use them from within effects. This is certainly possible, but please keep in mind that depending on factors outside the effect API (i.e., any information you get from the AEGP APIs) can lead to trouble. If After Effects thinks an effect has all the information it needs to render, it won't (for example) update its parameters based on changes made through an AEGP function. We're actively working on this dependency issue for future versions, but bear it in mind as you write effects which "masquerade" as AEGPs. -Effects can use some AEGP suites to take advantage of camera and lighting information, as well as the `AEGP_GetLayerParentComp` and `AEGP_GetCompBGColor` functions, from [AEGP_CompSuite11](aegp-suites.md#aegp_compsuite11). This should not be interpreted to mean that effects can use *any* AEGP suite calls. Also, see [Effect UI & Events](../effect-ui-events/effect-ui-events.md) for more information on effects adding keyframes. +Effects can use some AEGP suites to take advantage of camera and lighting information, as well as the `AEGP_GetLayerParentComp` and `AEGP_GetCompBGColor` functions, from [AEGP_CompSuite13](aegp-suites.md#aegp_compsuite13). This should not be interpreted to mean that effects can use *any* AEGP suite calls. Also, see [Effect UI & Events](../effect-ui-events/effect-ui-events.md) for more information on effects adding keyframes. [AEGP_PFInterfaceSuite](aegp-suites.md#aegp_pfinterfacesuite1) is the starting point. The functions in this suite allow you to retrieve the AEGP_LayerH for the layer to which the effect is applied, and the AEGP_EffectRefH for the instance of your effect. `AEGP_RegisterWithAEGP` from [AEGP_UtilitySuite6](aegp-suites.md#aegp_utilitysuite6) allows you to get an AEGP_PluginID, which is needed for many AEGP calls. diff --git a/docs/artisans/artisan-data-types.md b/docs/artisans/artisan-data-types.md index 4708d7c..56c7dd9 100644 --- a/docs/artisans/artisan-data-types.md +++ b/docs/artisans/artisan-data-types.md @@ -648,6 +648,6 @@ We've added the ability for artisans to provide functions After Effects can use `AEGP_QueryXformGetTransformTime()` and `AEGP_QueryXformGetViewTime()` are both necessary for an artisan to build a representation of the scene to render. -`AEGP_QueryXformGetTransformTime()` gets the time of the transform, which is then passed to `AEGP_GetCompShutterFrameRange()` from [AEGP_CompSuite11](../aegps/aegp-suites.md#aegp_compsuite11). +`AEGP_QueryXformGetTransformTime()` gets the time of the transform, which is then passed to `AEGP_GetCompShutterFrameRange()` from [AEGP_CompSuite13](../aegps/aegp-suites.md#aegp_compsuite13). `AEGP_QueryXformGetViewTime()` gets the time of the view, which is used in calling `AEGP_GetLayerToWorldXformFromView()` from [AEGP_LayerSuite9](../aegps/aegp-suites.md#aegp_layersuite9). diff --git a/docs/history.md b/docs/history.md index 0fa053e..5a744cf 100644 --- a/docs/history.md +++ b/docs/history.md @@ -2,7 +2,7 @@ | Revision Date | Documentor | Notes | | ---------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Release date TBD] | Jessica McMillan | Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details. | +| [Release date TBD] | Jessica McMillan | 26.5 SDK Release

Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details.

Added parametric mesh layers. AEGP_CompSuite13 adds AEGP_CreateParametricMeshLayerInComp, and AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_PARAMETRIC_MESH. See [What's New](intro/whats-new.md#whats-new-in-the-265-sdk) for more details. | | 8 Sep 2025 | Pablo Colapinto | 25.6 SDK Release - AE SDK supports building effects for Windows on Arm Natively. Please see the [Windows on Arm Support](intro/windows-on-arm-support.md) section for more information. | | 24 Feb 2025 | Sean Jenkin | 25.2 SDK Release - AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_MODEL if the object type is a 3D model | | 5 May 2023 | Jason Bartell | Update Color Settings suite to AEGP_ColorSettingsSuite5 with new OCIO calls, and added URL property to the PiPL. See [AEGP_ColorSettingsSuite5](aegps/aegp-suites.md#aegp_colorsettingssuite5) and [PiPL Resources](intro/pipl-resources.md) respectively for more details. | diff --git a/docs/intro/whats-new.md b/docs/intro/whats-new.md index c92e3b8..06e5764 100644 --- a/docs/intro/whats-new.md +++ b/docs/intro/whats-new.md @@ -5,7 +5,7 @@ If this is your first time developing an After Effects plug-in, you can skip the --- -## What's New in the 26.x SDK +## What's New in the 26.5 SDK ### AEGP Guide Suite @@ -15,6 +15,12 @@ If this is your first time developing an After Effects plug-in, you can skip the * `AEGP_ItemViewSuite2` adds getters and setters for the per-view guide options (visible, snap, and locked). See [AEGP_ItemViewSuite2](../aegps/aegp-suites.md#aegp_itemviewsuite2) for more information. + +### Parametric Mesh Layers + +* [AEGP_CompSuite](../aegps/aegp-suites.md#aegp_compsuite13) is now at version 13, adding a new function, `AEGP_CreateParametricMeshLayerInComp`, to create a parametric mesh layer (cube, sphere, plane, torus, cone, or cylinder) directly in a composition. +* `AEGP_GetLayerObjectType` (in [AEGP_LayerSuite9](../aegps/aegp-suites.md#aegp_layersuite9)) can now return `AEGP_ObjectType_3D_PARAMETRIC_MESH` if the object type is a parametric mesh. + --- ## What's New in the 25.6 SDK @@ -124,7 +130,7 @@ As this is a user-facing option, the design is intended to be transparent to the PF_AdvTimeSuite is now at version 3, providing a revised [PF_GetTimeDisplayPref()](../effect-details/useful-utility-functions.md#pf_advtimesuite4) call that uses a revised `PF_TimeDisplayPrefVersion` parameter, that supports higher frame rates. The previous version 2 of the call can now return an error if there is a problem with the values exceeding the range supported by the structure. -Comp Suite is now at version 11, with a new call, [AEGP_ReorderCompSelection()](../aegps/aegp-suites.md#aegp_compsuite11), to move a selection to a certain layer index. +Comp Suite is now at version 11, with a new call, [AEGP_ReorderCompSelection()](../aegps/aegp-suites.md#aegp_compsuite13), to move a selection to a certain layer index. It should be used along with `AEGP_SetSelection()`. --- From 050dff15ca331e33882afbe6036c3abfbfccd4b9 Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Wed, 19 Aug 2026 12:47:10 -0700 Subject: [PATCH 5/9] Add search-keywords and preview-media docs for the 26.5 SDK Updates provided by Pankaj Kumar - Add AE_Effect_Search_Keywords and AE_Effect_Description PiPL properties plus a "Search Keywords And Description" section (locale-keyed JSON, PF_REGISTER_EFFECT_EXT3 alternative, macOS Rez line-length workaround) - Add the Effect Preview Media (Effects Panel) page and nav entry - Flag both features as Premiere Pro Beta only (from 27.0); not yet in After Effects - Fold both into the consolidated 26.5 SDK "What's New" section and Version History row --- docs/effect-details/effect-preview-media.md | 49 +++++++++++++++++++++ docs/history.md | 2 +- docs/intro/pipl-resources.md | 40 +++++++++++++++++ docs/intro/whats-new.md | 13 ++++++ mkdocs.yml | 1 + 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 docs/effect-details/effect-preview-media.md diff --git a/docs/effect-details/effect-preview-media.md b/docs/effect-details/effect-preview-media.md new file mode 100644 index 0000000..69465f0 --- /dev/null +++ b/docs/effect-details/effect-preview-media.md @@ -0,0 +1,49 @@ +# Effect Preview Media (Effects Panel) + +!!! note + These features apply to Premiere Pro Beta only, starting with version 27.0. It does not currently apply to After Effects, though After Effects may adopt it in the future. + +Third-party effects can ship their own preview media to be shown in the host's Effects panel: a still thumbnail for the effect grid, and a short video that plays on hover. If you don't provide media, the host falls back to a generic category placeholder. + +## Where to put the media + +Preview media lives in a folder named `Preview`, and each file is named after your plug-in's binary file title (the plug-in filename without its extension). Because the media is keyed on the binary, all effects contained in a single plug-in share the same preview media. + +* **Thumbnail (still):** `.jpg` +* **Hover preview (video):** `.mp4` + +For example, a plug-in whose binary is `AcmeGlow` would provide `AcmeGlow.jpg` and `AcmeGlow.mp4`. + +### macOS + +Place the `Preview` folder inside your plug-in's `.plugin` bundle, under `Contents/Resources`: + +``` +.plugin/Contents/Resources/Preview/.jpg +.plugin/Contents/Resources/Preview/.mp4 +``` + +### Windows + +Place the `Preview` folder next to your plug-in's `.aex` binary: + +``` +/Preview/.jpg +/Preview/.mp4 +``` + +## Format and size + +**Thumbnail (still image):** + +* Format: `.jpg` +* Resolution: 640 x 360 + +**Hover preview (video):** + +* Format: `.mp4`, H.264 +* Resolution: 640 x 360 +* File size: as small as reasonably possible; typical is 400 KB to 1 MB +* Duration: no upper limit, but typically 4 to 10 seconds + +The thumbnail is used for the effect's tile in the grid; the video plays when the user hovers over the tile. If you supply only a `.jpg`, the still is used for the tile and there is no hover video. diff --git a/docs/history.md b/docs/history.md index 5a744cf..a440cd6 100644 --- a/docs/history.md +++ b/docs/history.md @@ -2,7 +2,7 @@ | Revision Date | Documentor | Notes | | ---------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Release date TBD] | Jessica McMillan | 26.5 SDK Release

Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details.

Added parametric mesh layers. AEGP_CompSuite13 adds AEGP_CreateParametricMeshLayerInComp, and AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_PARAMETRIC_MESH. See [What's New](intro/whats-new.md#whats-new-in-the-265-sdk) for more details. | +| [Release date TBD] | Jessica McMillan | 26.5 SDK Release

Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details.

Added parametric mesh layers. AEGP_CompSuite13 adds AEGP_CreateParametricMeshLayerInComp, and AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_PARAMETRIC_MESH. See [What's New](intro/whats-new.md#whats-new-in-the-265-sdk) for more details.

Added `AE_Effect_Search_Keywords` and `AE_Effect_Description` PiPL properties (see [PiPL Resources](intro/pipl-resources.md)), and Effects panel preview media support for third-party effects (see [Effect Preview Media (Effects Panel)](effect-details/effect-preview-media.md)). These features apply to Premiere Pro Beta only (from version 27.0). | | 8 Sep 2025 | Pablo Colapinto | 25.6 SDK Release - AE SDK supports building effects for Windows on Arm Natively. Please see the [Windows on Arm Support](intro/windows-on-arm-support.md) section for more information. | | 24 Feb 2025 | Sean Jenkin | 25.2 SDK Release - AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_MODEL if the object type is a 3D model | | 5 May 2023 | Jason Bartell | Update Color Settings suite to AEGP_ColorSettingsSuite5 with new OCIO calls, and added URL property to the PiPL. See [AEGP_ColorSettingsSuite5](aegps/aegp-suites.md#aegp_colorsettingssuite5) and [PiPL Resources](intro/pipl-resources.md) respectively for more details. | diff --git a/docs/intro/pipl-resources.md b/docs/intro/pipl-resources.md index 8a022ae..a7b69d9 100644 --- a/docs/intro/pipl-resources.md +++ b/docs/intro/pipl-resources.md @@ -35,6 +35,46 @@ In the interest of cross-platform compatibility, use a single .r file for both m +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | AE_Effect_Support_URL | **New in AE 23.5!** URL for the effect. Shown in the Effects Manager. A user might click the link for more information about the effect or to find a newer version. | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| AE_Effect_Search_Keywords | **New in the 26.5 SDK (Premiere Pro Beta 27.0 only).** Locale-keyed JSON of search terms for the Effects panel search, e.g. `{"en_US": ["glow"], "es_ES": ["resplandor"]}`. Searchable via the English (`en_US`) and the user's current locale. Malformed JSON is ignored. | ++-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| AE_Effect_Description | **New in the 26.5 SDK (Premiere Pro Beta 27.0 only).** Short description of the effect, shown in the Effects Manager. Authored as a plain string; use ASCII where possible, as non-ASCII in a PiPL resource uses the system code page. | ++-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +--- + +## Search Keywords And Description + +!!! note + These features apply to Premiere Pro Beta only, starting with version 27.0. It does not currently apply to After Effects, though After Effects may adopt it in the future. + +You can help users find your effect and understand what it does by declaring search keywords and a description. + +* `AE_Effect_Search_Keywords` are matched by the Effects panel search field, so users can find your effect by concepts and synonyms, not just its name. +* `AE_Effect_Description` is a short summary shown alongside your effect in the Effects Manager. + +Search keywords are authored as a JSON string keyed by locale. Each key is a locale code and each value is an array of keyword strings. Your effect is searchable using both the English (`en_US`) keywords and the keywords for the user's current locale, so always include an `en_US` entry and add localized keywords for whichever additional locales you want to support. If the JSON is malformed, the keywords are ignored. + +Add both properties to your effect's PiPL, alongside the existing entries: + +```c +AE_Effect_Search_Keywords { + "{\"en_US\": [\"glow\", \"bloom\", \"halation\"], \"es_ES\": [\"resplandor\"]}" +}, +AE_Effect_Description { + "Adds a soft glow around bright areas of the image." +}, +``` + +On macOS the PiPL is compiled with Apple's `Rez`, which limits each source line to 1023 bytes. If your keyword JSON is long, split it across adjacent string literals — `Rez` joins them into one string, so the compiled result is identical: + +```c +AE_Effect_Search_Keywords { + "{\"en_US\": [\"glow\", \"bloom\"], " + "\"es_ES\": [\"resplandor\"]}" +}, +``` + +Alternatively, if you register your effect from code rather than via a PiPL resource, supply the same two values through the `PF_REGISTER_EFFECT_EXT3` macro (defined in `entry.h`), which uses version 3 of the plug-in entry point and takes `SEARCH_KEYWORDS` and `EFFECT_DESCRIPTION` as its final two arguments. --- diff --git a/docs/intro/whats-new.md b/docs/intro/whats-new.md index 06e5764..3193be1 100644 --- a/docs/intro/whats-new.md +++ b/docs/intro/whats-new.md @@ -21,6 +21,19 @@ If this is your first time developing an After Effects plug-in, you can skip the * [AEGP_CompSuite](../aegps/aegp-suites.md#aegp_compsuite13) is now at version 13, adding a new function, `AEGP_CreateParametricMeshLayerInComp`, to create a parametric mesh layer (cube, sphere, plane, torus, cone, or cylinder) directly in a composition. * `AEGP_GetLayerObjectType` (in [AEGP_LayerSuite9](../aegps/aegp-suites.md#aegp_layersuite9)) can now return `AEGP_ObjectType_3D_PARAMETRIC_MESH` if the object type is a parametric mesh. +
+ +!!! note + The following features apply to Premiere Pro Beta only, starting with version 27.0. It does not currently apply to After Effects, though After Effects may adopt it in the future. + +### Search Keywords And Description + +* Effects can now declare search keywords and a description through two new PiPL properties, `AE_Effect_Search_Keywords` and `AE_Effect_Description` (or via the `PF_REGISTER_EFFECT_EXT3` registration macro). Keywords make your effect discoverable in the Effects panel search, and the description is shown in the Effects Manager. See [PiPL Resources](pipl-resources.md#search-keywords-and-description) for details. + +### Effects Panel Preview Media + +* Third-party effects can now ship their own thumbnail and hover-preview video for display in the host's Effects panel. See [Effect Preview Media (Effects Panel)](../effect-details/effect-preview-media.md) for the expected file locations and formats. + --- ## What's New in the 25.6 SDK diff --git a/mkdocs.yml b/mkdocs.yml index 249c7ef..a99b876 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -43,6 +43,7 @@ nav: - Effect Details: - Multi-Frame Rendering in AE: effect-details/multi-frame-rendering-in-ae.md - Effect Details: effect-details/effect-details.md + - Effect Preview Media (Effects Panel): effect-details/effect-preview-media.md - Accessing the After Effects Function Suites: effect-details/accessing-function-suites.md - Memory Allocation: effect-details/memory-allocation.md - Image Buffer Management Functions: effect-details/image-buffer-management-functions.md From 93860190d6cecd1afcb5993b572f8599d72707f5 Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Wed, 19 Aug 2026 16:58:36 -0700 Subject: [PATCH 6/9] AEGPStreamSuite7 update --- docs/aegps/aegp-details.md | 2 +- docs/aegps/aegp-suites.md | 68 +++++++++++++++++++++++++++++++++----- docs/aegps/data-types.md | 2 +- docs/intro/whats-new.md | 4 +-- 4 files changed, 64 insertions(+), 12 deletions(-) diff --git a/docs/aegps/aegp-details.md b/docs/aegps/aegp-details.md index 38738ef..7542aff 100644 --- a/docs/aegps/aegp-details.md +++ b/docs/aegps/aegp-details.md @@ -36,4 +36,4 @@ After Effects computes rotation based on auto-orientation (towards path, or poin ## Accessing Pixels From Effect Layer Parameters -Use `AEGP_GetNewStreamValue` (in [AEGP_StreamSuite5](aegp-suites.md#aegp_streamsuite5)) to get the layer's `layer_id`, then the new `AEGP_GetLayerFromLayerID` (in [AEGP_LayerSuite9](aegp-suites.md#aegp_layersuite9)) to get the `AEGP_LayerH`. +Use `AEGP_GetNewStreamValue` (in [AEGP_StreamSuite7](aegp-suites.md#aegp_streamsuite7)) to get the layer's `layer_id`, then the new `AEGP_GetLayerFromLayerID` (in [AEGP_LayerSuite9](aegp-suites.md#aegp_layersuite9)) to get the `AEGP_LayerH`. diff --git a/docs/aegps/aegp-suites.md b/docs/aegps/aegp-suites.md index d87cbff..cc80a3c 100644 --- a/docs/aegps/aegp-suites.md +++ b/docs/aegps/aegp-suites.md @@ -653,7 +653,7 @@ typedef struct { ### AEGP_GuideSuite2 !!! note - Suite version 2 (`kAEGPGuideSuiteVersion2`), frozen in After Effects 26.2. The base functions were introduced in `AEGP_GuideSuite1` (frozen in After Effects 26.0) and are re-exposed here unchanged; the extended `*2` functions are new in version 2. + Suite version 2 (`kAEGPGuideSuiteVersion2`), available in After Effects 26.2 and later. The base functions were introduced in `AEGP_GuideSuite1` (available in After Effects 26.0 and later) and are re-exposed here unchanged; the extended `*2` functions are new in version 2. The `*2` functions add a position type (pixel or percentage), a per-guide color, and a pinned flag (pin to the opposite edge - bottom for horizontal guides, right for vertical guides). Position clamping and non-finite rejection apply as described above. @@ -735,7 +735,7 @@ The `AEGP_ItemViewSuite` provides access to the per-view guide display toggles ( ### AEGP_ItemViewSuite2 !!! note - The guide display functions were added to `AEGP_ItemViewSuite` version 2 (`kAEGPItemViewSuiteVersion2`, frozen in After Effects 26.0). `AEGP_GetItemViewPlaybackTime` is unchanged from the prior version. + The guide display functions were added to `AEGP_ItemViewSuite` version 2 (`kAEGPItemViewSuiteVersion2`, available in After Effects 26.0 and later). `AEGP_GetItemViewPlaybackTime` is unchanged from the prior version. +---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -1644,7 +1644,7 @@ If Foobarocity is applied to a layer twice, there will be two distinct `AEGP_Eff | | | | | Do not use the value(s) in the ParamDef returned by this function (Use `AEGP_GetNewStreamValue()` instead); it's provided so AEGPs can access parameter defaults, checkbox names, and pop-up strings. | | | | -| | Use `AEGP_GetEffectNumParamStreams()` from [AEGP_StreamSuite5](#aegp_streamsuite5) to get the stream count, useful for determining the maximum `param_index`. The last parameter is optional. | +| | Use `AEGP_GetEffectNumParamStreams()` from [AEGP_StreamSuite7](#aegp_streamsuite7) to get the stream count, useful for determining the maximum `param_index`. The last parameter is optional. | | | | | |
AEGP_GetEffectParamUnionByIndex(
AEGP_PluginID aegp_plugin_id,
AEGP_EffectRefH effectH,
PF_ParamIndex param_index,
PF_ParamType \*param_typeP
PF_ParamDefUnion \*uP0);
| +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -1787,7 +1787,7 @@ A stream, once acquired, represents a value which may change over time. Not all There are two ways to access the value of a stream. If the stream has keyframes, you can use the [Working With Keyframes](#working-with-keyframes). The values provided won't reflect the influence of expressions. Note: In any expression, the current keyframed value is always available as the variable value. -You can also use `AEGP_GetNewStreamValue` from [AEGP_StreamSuite5](#aegp_streamsuite5), which samples the value of the stream at a particular time. For streams without expressions or keyframes, the time parameter is meaningless, and the function returns what essentially is the constant value of the stream. Use `AEGP_SetStreamValue` (which doesn't take a time as a parameter) to set these streams. +You can also use `AEGP_GetNewStreamValue` from [AEGP_StreamSuite7](#aegp_streamsuite7), which samples the value of the stream at a particular time. For streams without expressions or keyframes, the time parameter is meaningless, and the function returns what essentially is the constant value of the stream. Use `AEGP_SetStreamValue` (which doesn't take a time as a parameter) to set these streams. Many StreamSuite functions populate a StreamH, which your AEGP must dispose. when done. After Effects allocates and passes you a copy of the values, not a direct handle to the original value. `AEGP_GetNewLayerStream()` is restricted to streams for which no memory allocation is required to access their values. @@ -1827,7 +1827,7 @@ Use `IsStreamLegal` to allow you to determine if that stream type is offered on Since a layer can have multiple masks, access the masks using `AEGP_GetLayerMaskByIndex` from [AEGP_MaskSuite6](#aegp_masksuite6). -Masks don't have streams like layers do; they get their own enumeration. Access their streams using `AEGP_GetNewMaskStream` from [AEGP_StreamSuite5](#aegp_streamsuite5). +Masks don't have streams like layers do; they get their own enumeration. Access their streams using `AEGP_GetNewMaskStream` from [AEGP_StreamSuite7](#aegp_streamsuite7). --- @@ -1835,7 +1835,7 @@ Masks don't have streams like layers do; they get their own enumeration. Access They can have a variable number of streams/parameters, and the order and definition of them is not known when the AEGP is written. -Therefore we cannot offer an enum for selecting them, and instead you must get them by index, hence `GetNewEffectStreamByIndex` from [AEGP_StreamSuite5](#aegp_streamsuite5). +Therefore we cannot offer an enum for selecting them, and instead you must get them by index, hence `GetNewEffectStreamByIndex` from [AEGP_StreamSuite7](#aegp_streamsuite7). --- @@ -1843,7 +1843,10 @@ Therefore we cannot offer an enum for selecting them, and instead you must get t Access and manipulate the values of a layer's streams. For paint and text streams, use [Dynamic Streams](#aegp_dynamicstreamsuite4) instead. -### AEGP_StreamSuite5 +### AEGP_StreamSuite7 + +!!! note + Suite version 7. Version 6 (available in After Effects 22.5 and later) added `AEGP_GetUniqueStreamID`; version 7 adds independent get/set of the render stage of a `PF_Param_LAYER` stream (the `AEGP_LayerParamStage` accessors at the end of this section). All earlier functions are unchanged, so acquiring `AEGP_StreamSuite7` gives you the whole API. +----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Function | Purpose | @@ -2066,6 +2069,55 @@ Access and manipulate the values of a layer's streams. For paint and text stream | |
AEGP_DuplicateStreamRef(
AEGP_PluginID aegp_plugin_id,
AEGP_StreamRefH streamH,
AEGP_StreamRefH \*dup_streamPH);
| +----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +The following function was added after version 5: + ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | Purpose | ++==========================================+=============================================================================================================================================================================================================================================================================================================+ +| `AEGP_GetUniqueStreamID` | New in version 6 (available in After Effects 22.5 and later). Returns a session-unique numeric ID for the stream referenced by `streamH`. | +| | | +| |
AEGP_GetUniqueStreamID(
AEGP_StreamRefH streamH,
A_long \*outIDP);
| ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Version 7 adds independent access to the *render stage* of a `PF_Param_LAYER` stream — the point in the source layer's render pipeline at which its output is sampled. Such a stream carries two independent values: the source layer (`AEGP_StreamValue2::layer_id`) and the render stage, an `AEGP_LayerParamStage`: + +```cpp +enum { + AEGP_LayerParamStage_SOURCE = 0, // source layer pixels, before masks and effects (default) + AEGP_LayerParamStage_ONLY_MASKS = -2, // source layer with masks applied, effects skipped + AEGP_LayerParamStage_ALL_EFFECTS = -1 // source layer with masks and all effects applied + // 1..N - render the source layer through effect index N (1-based) +}; +typedef A_long AEGP_LayerParamStage; +``` + +!!! note + All five functions below require `streamH` to be a `PF_Param_LAYER` stream and return `Err_PARAMETER` otherwise. Stage values need no disposal; any `AEGP_StreamValue2` output must be freed with `AEGP_DisposeStreamValue`. + ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | Purpose | ++==========================================+=============================================================================================================================================================================================================================================================================================================+ +| `AEGP_GetStreamLayerParamStageValue` | Returns the current render stage of a `PF_Param_LAYER` stream. | +| | | +| |
AEGP_GetStreamLayerParamStageValue(
AEGP_PluginID aegp_plugin_id,
AEGP_StreamRefH streamH,
AEGP_LayerParamStage \*stage_outP);
| ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetStreamLayerParamStageValue` | Sets the render stage without changing the source layer. | +| | | +| |
AEGP_SetStreamLayerParamStageValue(
AEGP_PluginID aegp_plugin_id,
AEGP_StreamRefH streamH,
AEGP_LayerParamStage stage);
| ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetStreamLayerParamAndStageValue` | Returns both the source layer and the render stage in one call. Dispose `valueP` with `AEGP_DisposeStreamValue`. | +| | | +| |
AEGP_GetStreamLayerParamAndStageValue(
AEGP_PluginID aegp_plugin_id,
AEGP_StreamRefH streamH,
AEGP_StreamValue2 \*valueP,
AEGP_LayerParamStage \*stage_outP);
| ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_SetStreamLayerParamAndStageValue` | Sets both the source layer and the render stage atomically, as a single undo step. | +| | | +| |
AEGP_SetStreamLayerParamAndStageValue(
AEGP_PluginID aegp_plugin_id,
AEGP_StreamRefH streamH,
AEGP_StreamValue2 \*valueP,
AEGP_LayerParamStage stage);
| ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `AEGP_GetStreamInputStageCycleSafeLimit` | Returns the highest stage value that will not introduce a render cycle, given the current project state. Re-query before each use, as the result changes when effects are added, removed, or reordered, or when the source layer changes. `AEGP_LayerParamStage_SOURCE` (0) is always safe. | +| | | +| |
AEGP_GetStreamInputStageCycleSafeLimit(
AEGP_PluginID aegp_plugin_id,
AEGP_StreamRefH streamH,
AEGP_LayerParamStage \*max_stage_outP);
| ++------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + --- ## Dynamic Streams @@ -2206,7 +2258,7 @@ Also note that, often, you can simply use [Stream Suite](#stream-suite) calls to +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_GetMatchName` | Retrieves the match name for the specified `AEGP_StreamRefH`. | | | | -| | Note that this may differ from the display name, which can be retrieves using `AEGP_GetStreamName`, in [AEGP_StreamSuite5](#aegp_streamsuite5). | +| | Note that this may differ from the display name, which can be retrieves using `AEGP_GetStreamName`, in [AEGP_StreamSuite7](#aegp_streamsuite7). | | | | | | `nameZ` can be up to `AEGP_MAX_STREAM_MATCH_NAME_SIZE` in length. | | | | diff --git a/docs/aegps/data-types.md b/docs/aegps/data-types.md index 52db9ce..39e8feb 100644 --- a/docs/aegps/data-types.md +++ b/docs/aegps/data-types.md @@ -45,7 +45,7 @@ Whenever possible, After Effects presents plug-ins with opaque data types, and p +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ | `AEGP_StreamRefH` | Any [parameter stream](aegp-suites.md#diving-into-streams) attached to a layer, in a composition. | [AEGP Stream Suite](aegp-suites.md#stream-suite), | | | | [AEGP Dynamic Stream Suite](aegp-suites.md#aegp_dynamicstreamsuite4), | -| | See the description of `AEGP_GetNewLayerStream` from [AEGP_StreamSuite5](aegp-suites.md#stream-suite) for a full list of stream types. | [AEGP Keyframe Suite](aegp-suites.md#aegp_keyframesuite3) | +| | See the description of `AEGP_GetNewLayerStream` from [AEGP_StreamSuite7](aegp-suites.md#stream-suite) for a full list of stream types. | [AEGP Keyframe Suite](aegp-suites.md#aegp_keyframesuite3) | +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------+ | `AEGP_MaskRefH` | A mask applied to a layer. An AEGP_MaskRefH is used to access details about the mask stream, not the specific points which constitute the mask. | [AEGP Mask Suite](aegp-suites.md#aegp_masksuite6) | | | | | diff --git a/docs/intro/whats-new.md b/docs/intro/whats-new.md index 3193be1..5eac0f9 100644 --- a/docs/intro/whats-new.md +++ b/docs/intro/whats-new.md @@ -108,7 +108,7 @@ A new entry point has been defined, to allow effects to register basic informati The effect sample projects have been updated to use this approach, while maintaining the PiPL for backwards compatibility. -`AEGP_StreamSuite` is now at version 5, where [AEGP_GetExpression()](../aegps/aegp-suites.md#aegp_streamsuite5) and [AEGP_SetExpression()](../aegps/aegp-suites.md#aegp_streamsuite5) have been upgraded to support Unicode. +`AEGP_StreamSuite` is now at version 5, where [AEGP_GetExpression()](../aegps/aegp-suites.md#aegp_streamsuite7) and [AEGP_SetExpression()](../aegps/aegp-suites.md#aegp_streamsuite7) have been upgraded to support Unicode. `PF_AdvTimeSuite` is now at version 4, with a new call [PF_TimeCountFrames()](../effect-details/useful-utility-functions.md#pf_advtimesuite4), that returns the index of the frame in the current comp. @@ -422,7 +422,7 @@ Effects that provide custom UI can now receive `PF_Event_MOUSE_EXITED`, to gain `PF_GET_PLATFORM_DATA` now has new selectors for getting the wide character path of the executable and resource file: `PF_PlatData_EXE_FILE_PATH_W` and `PF_PlatData_RES_FILE_PATH_W`. The previous non-wide selectors are now deprecated. -3D is a major theme of AE CS6. A new `AEGP_LayerFlag_ENVIRONMENT_LAYER` has been added. Many new [layer streams](../aegps/aegp-suites.md#aegp_streamsuite5) were added. +3D is a major theme of AE CS6. A new `AEGP_LayerFlag_ENVIRONMENT_LAYER` has been added. Many new [layer streams](../aegps/aegp-suites.md#aegp_streamsuite7) were added. Additionally, `AEGP_LayerStream_SPECULAR_COEFF` was renamed to `AEGP_LayerStream_SPECULAR_INTENSITY`, `AEGP_LayerStream_SHININESS_COEFF` was renamed to `AEGP_LayerStream_SPECULAR_SHININESS`, and `AEGP_LayerStream_METAL_COEFF` was renamed to just `AEGP_LayerStream_METAL`. From abb4146b9cbec4d54f5efbb184dc557bbe8406fa Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Wed, 19 Aug 2026 18:07:13 -0700 Subject: [PATCH 7/9] Tidy up --- docs/aegps/aegp-suites.md | 8 ++++---- docs/intro/pipl-resources.md | 4 ++-- docs/intro/whats-new.md | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/aegps/aegp-suites.md b/docs/aegps/aegp-suites.md index cc80a3c..434b7b5 100644 --- a/docs/aegps/aegp-suites.md +++ b/docs/aegps/aegp-suites.md @@ -1038,7 +1038,7 @@ Provide information about the compositions in a project, and create cameras, lig +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_ReorderCompSelection` | Move the selection to a certain layer index. Use along with `AEGP_SetSelection().` | | | | -| |
AEGP_SetCompDisplayDropFrame(
AEGP_CompH compH,
A_long index);
| +| |
AEGP_ReorderCompSelection(
AEGP_CompH compH,
A_long index);
| +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_CreateParametricMeshLayerInComp` | New in 26.5. Creates and adds a parametric mesh layer to the specified composition. | | | | @@ -1861,8 +1861,6 @@ Access and manipulate the values of a layer's streams. For paint and text stream +----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_GetValidInterpolations` | Retrieves an `AEGP_KeyInterpolationMask` indicating which interpolation types are valid for the `AEGP_StreamRefH`. | | | | -| |
AEGP_GetValidInterpolations(
AEGP_StreamRefH streamH,
AEGP_KeyInterpolationMask \*valid_interpP);
| -+----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | `AEGP_KeyInterpolationMask` will be a combination of the following: | | | | | | - `AEGP_KeyInterpMask_NONE` | @@ -1871,6 +1869,8 @@ Access and manipulate the values of a layer's streams. For paint and text stream | | - `AEGP_KeyInterpMask_HOLD` | | | - `AEGP_KeyInterpMask_CUSTOM` | | | - `AEGP_KeyInterpMask_ANY` | +| | | +| |
AEGP_GetValidInterpolations(
AEGP_StreamRefH streamH,
AEGP_KeyInterpolationMask \*valid_interpP);
| +----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_GetNewLayerStream` | Get a layer's data stream. Plug-in must dispose of `streamPH`. Note that this will not provide keyframe access; use the [AEGP_KeyframeSuite](#aegp_keyframesuite3) instead. | | | | @@ -1952,7 +1952,7 @@ Access and manipulate the values of a layer's streams. For paint and text stream | | - `AEGP_LayerStream_BEGIN` = `AEGP_LayerStream_ANCHORPOINT` | | | - `AEGP_LayerStream_END` = `AEGP_LayerStream_LIGHT_FALLOFF_DISTANCE + 1` | | | | -| |
enum {
AEGP_LightFalloff_NONE = 0,
AEGP_LightFalloff_SMOOTH,
AEGP_LightFalloff_INVERSE_SQUARE_CLAMPED
};

typedef A_u_long AEGP_LightFalloffType;
| +| |
enum {
AEGP_LightFalloff_NONE = 0,
AEGP_LightFalloff_SMOOTH,
AEGP_LightFalloff_INVERSE_SQUARE_CLAMPED
};

typedef A_u_long AEGP_LightFalloffType;
| +----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | `AEGP_GetEffectNumParamStreams` | Get number of parameter streams associated with an effect. | | | | diff --git a/docs/intro/pipl-resources.md b/docs/intro/pipl-resources.md index a7b69d9..83fb418 100644 --- a/docs/intro/pipl-resources.md +++ b/docs/intro/pipl-resources.md @@ -35,9 +35,9 @@ In the interest of cross-platform compatibility, use a single .r file for both m +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | AE_Effect_Support_URL | **New in AE 23.5!** URL for the effect. Shown in the Effects Manager. A user might click the link for more information about the effect or to find a newer version. | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| AE_Effect_Search_Keywords | **New in the 26.5 SDK (Premiere Pro Beta 27.0 only).** Locale-keyed JSON of search terms for the Effects panel search, e.g. `{"en_US": ["glow"], "es_ES": ["resplandor"]}`. Searchable via the English (`en_US`) and the user's current locale. Malformed JSON is ignored. | +| AE_Effect_Search_Keywords | **New in the 26.5 SDK (Premiere Pro Beta 27.0 only).** Locale-keyed JSON of search terms for the Effects panel search, e.g. `{"en_US": ["glow"], "es_ES": ["resplandor"]}`. Searchable via the English (`en_US`) and the user's current locale. Malformed JSON is ignored. | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| AE_Effect_Description | **New in the 26.5 SDK (Premiere Pro Beta 27.0 only).** Short description of the effect, shown in the Effects Manager. Authored as a plain string; use ASCII where possible, as non-ASCII in a PiPL resource uses the system code page. | +| AE_Effect_Description | **New in the 26.5 SDK (Premiere Pro Beta 27.0 only).** Short description of the effect, shown in the Effects Manager. Authored as a plain string; use ASCII where possible, as non-ASCII in a PiPL resource uses the system code page. | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ --- diff --git a/docs/intro/whats-new.md b/docs/intro/whats-new.md index 5eac0f9..7ced59b 100644 --- a/docs/intro/whats-new.md +++ b/docs/intro/whats-new.md @@ -4,7 +4,6 @@ If this is your first time developing an After Effects plug-in, you can skip the --- - ## What's New in the 26.5 SDK ### AEGP Guide Suite From 74f42acbcf59c5ce4a0ef02613ee81095b135b0d Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Wed, 19 Aug 2026 18:07:31 -0700 Subject: [PATCH 8/9] Update AEGP_StreamSuite info + publish date --- docs/history.md | 2 +- docs/intro/whats-new.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/history.md b/docs/history.md index a440cd6..9ca56d0 100644 --- a/docs/history.md +++ b/docs/history.md @@ -2,7 +2,7 @@ | Revision Date | Documentor | Notes | | ---------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Release date TBD] | Jessica McMillan | 26.5 SDK Release

Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details.

Added parametric mesh layers. AEGP_CompSuite13 adds AEGP_CreateParametricMeshLayerInComp, and AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_PARAMETRIC_MESH. See [What's New](intro/whats-new.md#whats-new-in-the-265-sdk) for more details.

Added `AE_Effect_Search_Keywords` and `AE_Effect_Description` PiPL properties (see [PiPL Resources](intro/pipl-resources.md)), and Effects panel preview media support for third-party effects (see [Effect Preview Media (Effects Panel)](effect-details/effect-preview-media.md)). These features apply to Premiere Pro Beta only (from version 27.0). | +| 2 September 2026 | Jessica McMillan | 26.5 SDK Release

Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details.

Added parametric mesh layers. AEGP_CompSuite13 adds AEGP_CreateParametricMeshLayerInComp, and AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_PARAMETRIC_MESH. See [What's New](intro/whats-new.md#whats-new-in-the-265-sdk) for more details.

`AEGP_StreamSuite` is now at version 7, adding independent get/set of the render stage of a `PF_Param_LAYER` stream. See [AEGP_StreamSuite7](aegps/aegp-suites.md#aegp_streamsuite7) for more details.

Added `AE_Effect_Search_Keywords` and `AE_Effect_Description` PiPL properties (see [PiPL Resources](intro/pipl-resources.md)), and Effects panel preview media support for third-party effects (see [Effect Preview Media (Effects Panel)](effect-details/effect-preview-media.md)). These features apply to Premiere Pro Beta only (from version 27.0). | | 8 Sep 2025 | Pablo Colapinto | 25.6 SDK Release - AE SDK supports building effects for Windows on Arm Natively. Please see the [Windows on Arm Support](intro/windows-on-arm-support.md) section for more information. | | 24 Feb 2025 | Sean Jenkin | 25.2 SDK Release - AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_MODEL if the object type is a 3D model | | 5 May 2023 | Jason Bartell | Update Color Settings suite to AEGP_ColorSettingsSuite5 with new OCIO calls, and added URL property to the PiPL. See [AEGP_ColorSettingsSuite5](aegps/aegp-suites.md#aegp_colorsettingssuite5) and [PiPL Resources](intro/pipl-resources.md) respectively for more details. | diff --git a/docs/intro/whats-new.md b/docs/intro/whats-new.md index 7ced59b..c6eb435 100644 --- a/docs/intro/whats-new.md +++ b/docs/intro/whats-new.md @@ -20,6 +20,10 @@ If this is your first time developing an After Effects plug-in, you can skip the * [AEGP_CompSuite](../aegps/aegp-suites.md#aegp_compsuite13) is now at version 13, adding a new function, `AEGP_CreateParametricMeshLayerInComp`, to create a parametric mesh layer (cube, sphere, plane, torus, cone, or cylinder) directly in a composition. * `AEGP_GetLayerObjectType` (in [AEGP_LayerSuite9](../aegps/aegp-suites.md#aegp_layersuite9)) can now return `AEGP_ObjectType_3D_PARAMETRIC_MESH` if the object type is a parametric mesh. +### Stream Suite + +* [AEGP_StreamSuite](../aegps/aegp-suites.md#aegp_streamsuite7) is now at version 7, adding independent get/set of the render stage of a `PF_Param_LAYER` stream — sampling the source layer before masks, after masks, or through a specific effect. See [AEGP_StreamSuite7](../aegps/aegp-suites.md#aegp_streamsuite7) for more information. +
!!! note From 6f307b4b152497a0b4fbe1272469e24849402f0e Mon Sep 17 00:00:00 2001 From: Jessica McMillan Date: Thu, 10 Sep 2026 14:09:29 -0700 Subject: [PATCH 9/9] Tidying mixed ticked functions and apis --- docs/history.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/history.md b/docs/history.md index 9ca56d0..e0ee791 100644 --- a/docs/history.md +++ b/docs/history.md @@ -2,7 +2,7 @@ | Revision Date | Documentor | Notes | | ---------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 2 September 2026 | Jessica McMillan | 26.5 SDK Release

Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details.

Added parametric mesh layers. AEGP_CompSuite13 adds AEGP_CreateParametricMeshLayerInComp, and AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_PARAMETRIC_MESH. See [What's New](intro/whats-new.md#whats-new-in-the-265-sdk) for more details.

`AEGP_StreamSuite` is now at version 7, adding independent get/set of the render stage of a `PF_Param_LAYER` stream. See [AEGP_StreamSuite7](aegps/aegp-suites.md#aegp_streamsuite7) for more details.

Added `AE_Effect_Search_Keywords` and `AE_Effect_Description` PiPL properties (see [PiPL Resources](intro/pipl-resources.md)), and Effects panel preview media support for third-party effects (see [Effect Preview Media (Effects Panel)](effect-details/effect-preview-media.md)). These features apply to Premiere Pro Beta only (from version 27.0). | +| 2 September 2026 | Jessica McMillan | 26.5 SDK Release

Added the AEGP Guide Suite (`AEGP_GuideSuite1`/`AEGP_GuideSuite2`) for reading and writing guides - orientation, pixel/percentage positioning, per-guide color, and edge pinning - and the `AEGP_ItemViewSuite2` guide display functions (visible, snap, locked). See [Guides](aegps/aegp-suites.md#guides) for more details.

Added parametric mesh layers. `AEGP_CompSuite13` adds `AEGP_CreateParametricMeshLayerInComp`, and `AEGP_GetLayerObjectType` can now return `AEGP_ObjectType_3D_PARAMETRIC_MESH`. See [What's New](intro/whats-new.md#whats-new-in-the-265-sdk) for more details.

`AEGP_StreamSuite` is now at version 7, adding independent get/set of the render stage of a `PF_Param_LAYER` stream. See [AEGP_StreamSuite7](aegps/aegp-suites.md#aegp_streamsuite7) for more details.

Added `AE_Effect_Search_Keywords` and `AE_Effect_Description` PiPL properties (see [PiPL Resources](intro/pipl-resources.md)), and Effects panel preview media support for third-party effects (see [Effect Preview Media (Effects Panel)](effect-details/effect-preview-media.md)). These features apply to Premiere Pro Beta only (from version 27.0). | | 8 Sep 2025 | Pablo Colapinto | 25.6 SDK Release - AE SDK supports building effects for Windows on Arm Natively. Please see the [Windows on Arm Support](intro/windows-on-arm-support.md) section for more information. | | 24 Feb 2025 | Sean Jenkin | 25.2 SDK Release - AEGP_GetLayerObjectType can now return AEGP_ObjectType_3D_MODEL if the object type is a 3D model | | 5 May 2023 | Jason Bartell | Update Color Settings suite to AEGP_ColorSettingsSuite5 with new OCIO calls, and added URL property to the PiPL. See [AEGP_ColorSettingsSuite5](aegps/aegp-suites.md#aegp_colorsettingssuite5) and [PiPL Resources](intro/pipl-resources.md) respectively for more details. |