Skip to content

Commit 15de832

Browse files
authored
v3.6.0 for ffmpeg 8.0
1 parent 18fd077 commit 15de832

2 files changed

Lines changed: 55 additions & 50 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [3.6.0] - 2025-10-18
8+
9+
### Fixed
10+
11+
- support for FFmpeg version 8 (altered logging broke plotting)
12+
13+
### Changed
14+
15+
- `gl_Swirl` added `clockwise` parameter for direction control
16+
717
## [3.5.2] - 2025-07-30
818

919
### Changed
@@ -172,7 +182,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
172182

173183
### Fixed
174184

175-
- support for FFmpeg version 7.1, `FilterLink` refactoring
185+
- support for FFmpeg version 7.1 (`FilterLink` refactoring)
176186

177187
## [3.0.3] - 2024-09-28
178188

@@ -268,7 +278,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
268278

269279
### Fixed
270280

271-
- support for FFmpeg version 7, deprecated option `-filter_complex_script`
281+
- support for FFmpeg version 7 (deprecated option `-filter_complex_script`)
272282

273283
## [2.1.3] - 2024-08-07
274284

README.md

Lines changed: 43 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ and the `reverse` option to reverse the easing and/or transition effect
3333
* **custom expression**:
3434
set the xfade `transition` option to `custom` and the `expr` option to the concatenation of a standard easing expression and a transition expression
3535
(this variant does not support CSS easings or reversed effects). \
36-
*Example* (quartic-out,radial): \
36+
*Example* (quartic-out, radial): \
3737
`xfade=duration=3:offset=10:transition=custom:expr='st(0,P^4);` \
3838
`st(1,atan2(X-W/2,Y-H/2)-(ld(0)-0.5)*PI*2.5); st(1,st(1,clip(ld(1),0,1))*ld(1)*(3-2*ld(1))); B*ld(1)+A*(1-ld(1))'` \
3939
Pre-generated [expressions](expr) can be copied verbatim from supplied files.
@@ -239,35 +239,29 @@ st(0,cos((1-P)*20.944)/2^(10*(1-P)))
239239

240240
This format is best for expressions that are too unwieldy for inline ffmpeg commands.
241241

242-
*Example*: `gl_rotate_scale_fade` transition (expects eased progress in `ld(0)`) (cf. [rotate_scale_fade.glsl](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/rotate_scale_fade.glsl))
242+
*Example*: `gl_Swirl` transition (expects eased progress in `ld(0)`) (cf. [Swirl.glsl](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Swirl.glsl))
243243
```
244-
st(1, 0.5);
245-
st(2, 0.5);
246-
st(3, 1);
247-
st(4, 8);
248-
st(5, X / W - ld(1));
249-
st(6, 1 - Y / H - ld(2));
250-
st(7, hypot(ld(5), ld(6)));
251-
st(5, ld(5) / ld(7));
252-
st(6, ld(6) / ld(7));
253-
st(8, 2 * abs(ld(0) - 0.5));
254-
st(8, ld(7) / (ld(4) * (1 - ld(8)) + ld(8)));
255-
st(3, 2 * PI * ld(3) * (1 - ld(0)));
256-
st(4, sin(ld(3)));
257-
st(3, cos(ld(3)));
258-
st(7, ld(5) * ld(3) - ld(6) * ld(4));
259-
st(6, ld(5) * ld(4) + ld(6) * ld(3));
260-
st(1, ld(1) + ld(7) * ld(8));
261-
st(2, ld(2) + ld(6) * ld(8));
262-
if(between(ld(1), 0, 1) * between(ld(2), 0, 1),
263-
st(1, ld(1) * W);
264-
st(2, (1 - ld(2)) * H);
265-
st(3, ifnot(PLANE, a0(ld(1),ld(2)), ifnot(1-PLANE, a1(ld(1),ld(2)), ifnot(2-PLANE, a2(ld(1),ld(2)), a3(ld(1),ld(2))))));
266-
st(4, ifnot(PLANE, b0(ld(1),ld(2)), ifnot(1-PLANE, b1(ld(1),ld(2)), ifnot(2-PLANE, b2(ld(1),ld(2)), b3(ld(1),ld(2))))));
267-
ld(4) * (1 - ld(0)) + ld(3) * ld(0),
268-
st(1, 0.15);
269-
if(3-PLANE, max(ld(1), 0), gte(ld(1), 0)) * 255
270-
)
244+
st(1, 1);
245+
st(2, 1);
246+
st(3, X / W - 0.5);
247+
st(4, 0.5 - Y / H);
248+
st(5, hypot(ld(3), ld(4)));
249+
if(lt(ld(5), ld(1)),
250+
st(1, (ld(1) - ld(5)) / ld(1));
251+
st(5, 1 - 2 * abs(ld(0) - 0.5));
252+
st(1, ld(1) * ld(1) * ld(5) * 8 * PI);
253+
ifnot(ld(2), st(1, -ld(1)));
254+
st(5, sin(ld(1)));
255+
st(6, cos(ld(1)));
256+
st(1, ld(3) * ld(6) - ld(4) * ld(5));
257+
st(4, ld(3) * ld(5) + ld(4) * ld(6));
258+
st(3, ld(1))
259+
);
260+
st(3, (ld(3) + 0.5) * W);
261+
st(4, (0.5 - ld(4)) * H);
262+
st(5, ifnot(PLANE, a0(ld(3),ld(4)), ifnot(1-PLANE, a1(ld(3),ld(4)), ifnot(2-PLANE, a2(ld(3),ld(4)), a3(ld(3),ld(4))))));
263+
st(6, ifnot(PLANE, b0(ld(3),ld(4)), ifnot(1-PLANE, b1(ld(3),ld(4)), ifnot(2-PLANE, b2(ld(3),ld(4)), b3(ld(3),ld(4))))));
264+
ld(6) * (1 - ld(0)) + ld(5) * ld(0)
271265
```
272266

273267
### Uneased, for transitions without easing
@@ -479,45 +473,47 @@ All GLSL transitions adapted to the [GL Transition Specification](https://github
479473
480474
The following list shows the transition names, customisation parameters and defaults, and authors:
481475
476+
#### GLSL gallery
477+
482478
| transition | parameters (=default) | author |
483479
| :--------: | :-------------------: | :----: |
484480
| gl_angular | `startingAngle=90`<br>`clockwise=0` | Fernando Kuteken |
485481
| gl_Bars | `vertical=0` | Mark Craig |
486-
| gl_blend<sup>*</sup> | `mode=0` | scriptituk |
482+
| gl_blend<sup></sup> | `mode=0` | scriptituk |
487483
| gl_BookFlip | | hong |
488484
| gl_Bounce | `bounces=3`<br>`direction=0`<br>`shadowAlpha=0.6`<br>`shadowHeight=0.075`<br>`shadowColor=0` | Adrian Purser |
489-
| gl_BowTie<sup>*</sup> | `vertical=0` | huynx |
490-
| gl_ButterflyWaveScrawler<sup>*</sup> | `amplitude=1`<br>`waves=30`<br>`colorSeparation=0.3` | mandubian |
485+
| gl_BowTie<sup></sup> | `vertical=0` | huynx |
486+
| gl_ButterflyWaveScrawler<sup></sup> | `amplitude=1`<br>`waves=30`<br>`colorSeparation=0.3` | mandubian |
491487
| gl_cannabisleaf | | Flexi23 |
492488
| gl_chessboard | `grid=8` | lql |
493489
| gl_CornerVanish | | Mark Craig |
494490
| gl_CrazyParametricFun | `a=4`<br>`b=1`<br>`amplitude=120`<br>`smoothness=0.1` | mandubian |
495491
| gl_crosshatch | `center.x=0.5`<br>`center.y=0.5`<br>`threshold=3`<br>`fadeEdge=0.1` | pthrasher |
496492
| gl_CrossOut | `smoothness=0.05` | Mark Craig |
497493
| gl_crosswarp | | Eke Péter |
498-
| gl_CrossZoom<sup>*</sup> | `strength=0.4`<br>`centerFrom.x=0.25`<br>`centerFrom.y=0.5`<br>`centerTo.x=0.75`<br>`centerTo.y=0.5` | rectalogic |
494+
| gl_CrossZoom<sup></sup> | `strength=0.4`<br>`centerFrom.x=0.25`<br>`centerFrom.y=0.5`<br>`centerTo.x=0.75`<br>`centerTo.y=0.5` | rectalogic |
499495
| gl_cube | `persp=0.7`<br>`unzoom=0.3`<br>`reflection=0.4`<br>`floating=3`<br>`background=0` | gre |
500496
| gl_Diamond | `smoothness=0.05` | Mark Craig |
501497
| gl_DirectionalScaled | `direction.x=0`<br>`direction.y=1`<br>`scale=0.7`<br>`background=0` | Thibaut Foussard |
502498
| gl_directionalwarp | `smoothness=0.1`<br>`direction.x=-1`<br>`direction.y=1` | pschroen |
503499
| gl_doorway | `reflection=0.4`<br>`perspective=0.4`<br>`depth=3`<br>`background=0` | gre |
504500
| gl_DoubleDiamond | `smoothness=0.05` | Mark Craig |
505501
| gl_Dreamy | | mikolalysenko |
506-
| gl_EdgeTransition<sup>*</sup> | `edgeThickness=0.001`<br>`edgeBrightness=8` | Woohyun Kim |
507-
| gl_Exponential_Swish<sup>*</sup> | `zoom=0.8`<br>`angle=0`<br>`offset.x=0`<br>`offset.y=0`<br>`exponent=4`<br>`wrap.x=2`<br>`wrap.y=2`<br>`blur=0`<br>`background=0` | Boundless |
508-
| gl_fadecolor<sup>*</sup> | `color=0`<br>`colorPhase=0.4` | gre |
502+
| gl_EdgeTransition<sup></sup> | `edgeThickness=0.001`<br>`edgeBrightness=8` | Woohyun Kim |
503+
| gl_Exponential_Swish<sup></sup> | `zoom=0.8`<br>`angle=0`<br>`offset.x=0`<br>`offset.y=0`<br>`exponent=4`<br>`wrap.x=2`<br>`wrap.y=2`<br>`blur=0`<br>`background=0` | Boundless |
504+
| gl_fadecolor<sup></sup> | `color=0`<br>`colorPhase=0.4` | gre |
509505
| gl_FanIn | `smoothness=0.05` | Mark Craig |
510506
| gl_FanOut | `smoothness=0.05` | Mark Craig |
511507
| gl_FanUp | `smoothness=0.05` | Mark Craig |
512508
| gl_Flower | `smoothness=0.05`<br>`rotation=360` | Mark Craig |
513-
| gl_GridFlip<sup>*</sup> | `size.x=4`<br>`size.y=4`<br>`pause=0.1`<br>`dividerWidth=0.05`<br>`randomness=0.1`<br>`background=0` | TimDonselaar |
509+
| gl_GridFlip<sup></sup> | `size.x=4`<br>`size.y=4`<br>`pause=0.1`<br>`dividerWidth=0.05`<br>`randomness=0.1`<br>`background=0` | TimDonselaar |
514510
| gl_heart | | gre |
515511
| gl_hexagonalize | `steps=50`<br>`horizontalHexagons=20` | Fernando Kuteken |
516512
| gl_InvertedPageCurl | `angle=100`<br>`radius=0.159`<br>`reverseEffect=0` | Hewlett-Packard |
517513
| gl_kaleidoscope | `speed=1`<br>`angle=1`<br>`power=1.5` | nwoeanhinnogaehr |
518514
| gl_LinearBlur | `intensity=0.1` | gre |
519-
| gl_Lissajous_Tiles<sup>*</sup> | `grid.x=10`<br>`grid.y=10`<br>`speed=0.5`<br>`freq.x=2`<br>`freq.y=3`<br>`offset=2`<br>`zoom=0.8`<br>`fade=3`<br>`background=0` | Boundless |
520-
| gl_morph<sup>*</sup> | `strength=0.1` | paniq |
515+
| gl_Lissajous_Tiles<sup></sup> | `grid.x=10`<br>`grid.y=10`<br>`speed=0.5`<br>`freq.x=2`<br>`freq.y=3`<br>`offset=2`<br>`zoom=0.8`<br>`fade=3`<br>`background=0` | Boundless |
516+
| gl_morph<sup></sup> | `strength=0.1` | paniq |
521517
| gl_Mosaic | `endx=2`<br>`endy=-1` | Xaychru |
522518
| gl_perlin | `scale=4`<br>`smoothness=0.01` | Rich Harris |
523519
| gl_pinwheel | `speed=2` | Mr Speaker |
@@ -531,24 +527,22 @@ The following list shows the transition names, customisation parameters and defa
531527
| gl_RotateScaleVanish | `fadeInSecond=1`<br>`reverseEffect=0`<br>`reverseRotation=0`<br>`background=0`<br>`trkMat=0` | Mark Craig |
532528
| gl_rotateTransition | | haiyoucuv |
533529
| gl_rotate_scale_fade | `centre.x=0.5`<br>`centre.y=0.5`<br>`rotations=1`<br>`scale=8`<br>`background=0.15` | Fernando Kuteken |
534-
| gl_SimpleBookCurl<sup>*</sup> | `angle=150`<br>`radius=0.1`<br>`shadow=0.2` | scriptituk |
530+
| gl_SimpleBookCurl<sup></sup> | `angle=150`<br>`radius=0.1`<br>`shadow=0.2` | scriptituk |
535531
| gl_SimplePageCurl | `angle=80`<br>`radius=0.15`<br>`roll=0`<br>`reverseEffect=0`<br>`greyBack=0`<br>`opacity=0.8`<br>`shadow=0.2` | Andrew Hung |
536532
| gl_Slides | `type=0`<br>`slideIn=0` | Mark Craig |
537533
| gl_squareswire | `squares.x=10`<br>`squares.y=10`<br>`direction.x=1.0`<br>`direction.y=-0.5`<br>`smoothness=1.6` | gre |
538-
| gl_StageCurtains<sup>*</sup> | `color=0xCC1A33FF`<br>`bumps=15`<br>`drop=0.1` | scriptituk |
534+
| gl_StageCurtains<sup></sup> | `color=0xCC1A33FF`<br>`bumps=15`<br>`drop=0.1` | scriptituk |
539535
| gl_StarWipe | `borderThickness=0.01`<br>`starRotation=0.75`<br>`borderColor=1` | Ben Lucas |
540536
| gl_static_wipe | `upToDown=1`<br>`maxSpan=0.5` | Ben Lucas |
541-
| gl_StereoViewer<sup>*</sup> | `zoom=0.9`<br>`radius=0.25`<br>`flip=0`<br>`background=0`<br>`trkMat=0` | Ted Schundler |
542-
| gl_Stripe_Wipe<sup>*</sup> | `nlayers=3`<br>`layerSpread=0.5`<br>`color1=0x3319CCFF`<br>`color2=0x66CCFFFF`<br>`shadowIntensity=0.7`<br>`shadowSpread=0`<br>`angle=0` | Boundless |
537+
| gl_StereoViewer<sup></sup> | `zoom=0.9`<br>`radius=0.25`<br>`flip=0`<br>`background=0`<br>`trkMat=0` | Ted Schundler |
538+
| gl_Stripe_Wipe<sup></sup> | `nlayers=3`<br>`layerSpread=0.5`<br>`color1=0x3319CCFF`<br>`color2=0x66CCFFFF`<br>`shadowIntensity=0.7`<br>`shadowSpread=0`<br>`angle=0` | Boundless |
543539
| gl_swap | `reflection=0.4`<br>`perspective=0.2`<br>`depth=3`<br>`background=0` | gre |
544-
| gl_Swirl | `radius=1` | Sergey Kosarevsky |
540+
| gl_Swirl | `radius=1`<br>`clockwise=1` | Sergey Kosarevsky |
545541
| gl_WaterDrop | `amplitude=30`<br>`speed=30` | Paweł Płóciennik |
546542
| gl_windowblinds | | Fabien Benetou |
547543
| gl_windowslice | `count=10`<br>`smoothness=0.5` | gre |
548544
549-
<sup>*</sup> native build only
550-
551-
#### GLSL gallery
545+
<sup></sup> native build only
552546
553547
<!-- GL pics at https://github.com/gre/gl-transition-libs/tree/master/packages/website/src/images/raw -->
554548
@@ -623,6 +617,7 @@ etc.
623617
- `reverseEffect` produces an uncurl effect (custom ffmpeg only)
624618
- `gl_RotateScaleVanish` has an additional `trkMat` parameter (track matte, custom ffmpeg only) which treats the moving image/video as a variable-transparency overlay – see Dr Who example under [Transparency](#transparency)
625619
- `gl_StereoViewer` (custom ffmpeg only) has an additional `flip` parameter to flip the split angles, a `background` parameter and a `trkMat` parameter
620+
- `gl_Swirl` has an additional `clockwise` parameter to change direction
626621
- this implementation provides a `background` parameter for all GL Transitions that show a black background during their transition, e.g. `gl_cube` and `gl_doorway`, see [Colour parameters](#colour-parameters) and [Backgrounds](#backgrounds).
627622
628623
*Example*: `gl_InvertedPageCurl` 30° with uncurl
@@ -1144,7 +1139,7 @@ Other faster ways to use GL Transitions with FFmpeg are:
11441139
### Usage
11451140
11461141
```
1147-
FFmpeg XFade easing and extensions version 3.5.2 by Raymond Luckhurst, https://scriptit.uk
1142+
FFmpeg XFade easing and extensions version 3.6.0 by Raymond Luckhurst, https://scriptit.uk
11481143
Wrapper script to render eased XFade/GLSL transitions natively or with custom expressions.
11491144
Generates easing and transition expressions for xfade and for easing other filters.
11501145
Also creates easing graphs, demo videos, presentations and slideshows.

0 commit comments

Comments
 (0)