@remotion/effects 4.0.541 → 4.0.542

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/THIRD_PARTY_LICENSES.md +10 -0
  2. package/dist/esm/lightning.mjs +603 -0
  3. package/dist/esm/magnify.mjs +403 -0
  4. package/dist/esm/preview/barrel-distortion.mjs +303 -0
  5. package/dist/esm/preview/bevel-alpha.mjs +525 -0
  6. package/dist/esm/preview/blur.mjs +435 -0
  7. package/dist/esm/preview/brightness.mjs +95 -0
  8. package/dist/esm/preview/burlap.mjs +481 -0
  9. package/dist/esm/preview/checkerboard.mjs +8 -0
  10. package/dist/esm/preview/chromatic-aberration.mjs +308 -0
  11. package/dist/esm/preview/color-correction.mjs +522 -0
  12. package/dist/esm/preview/color-key.mjs +440 -0
  13. package/dist/esm/preview/contour-lines.mjs +608 -0
  14. package/dist/esm/preview/contrast.mjs +95 -0
  15. package/dist/esm/preview/corner-pin.mjs +6 -0
  16. package/dist/esm/preview/curves.mjs +357 -0
  17. package/dist/esm/preview/cylinder.mjs +273 -0
  18. package/dist/esm/preview/dot-grid.mjs +333 -0
  19. package/dist/esm/preview/drop-shadow.mjs +607 -0
  20. package/dist/esm/preview/duotone.mjs +344 -0
  21. package/dist/esm/preview/emboss.mjs +479 -0
  22. package/dist/esm/preview/evolve.mjs +485 -0
  23. package/dist/esm/preview/exposure.mjs +264 -0
  24. package/dist/esm/preview/film-burn.mjs +298 -0
  25. package/dist/esm/preview/fisheye.mjs +422 -0
  26. package/dist/esm/preview/flannel.mjs +401 -0
  27. package/dist/esm/preview/fractal-noise.mjs +642 -0
  28. package/dist/esm/preview/glow.mjs +598 -0
  29. package/dist/esm/preview/grayscale.mjs +86 -0
  30. package/dist/esm/preview/gridlines.mjs +8 -0
  31. package/dist/esm/preview/halftone-linear-gradient.mjs +523 -0
  32. package/dist/esm/preview/halftone.mjs +552 -0
  33. package/dist/esm/preview/hue.mjs +83 -0
  34. package/dist/esm/preview/index-00v3hr66.mjs +299 -0
  35. package/dist/esm/preview/index-0w4eqht8.mjs +351 -0
  36. package/dist/esm/preview/index-18y0zcy2.mjs +440 -0
  37. package/dist/esm/preview/index-1m1b1ad7.mjs +520 -0
  38. package/dist/esm/preview/index-34fxm3ax.mjs +518 -0
  39. package/dist/esm/preview/index-4fvp93ps.mjs +32 -0
  40. package/dist/esm/preview/index-4scpn12x.mjs +224 -0
  41. package/dist/esm/preview/index-4z6pt3ka.mjs +104 -0
  42. package/dist/esm/preview/index-618ky75w.mjs +51 -0
  43. package/dist/esm/preview/index-6agxdrvr.mjs +411 -0
  44. package/dist/esm/preview/index-6jkps947.mjs +120 -0
  45. package/dist/esm/preview/index-8agtsbw4.mjs +617 -0
  46. package/dist/esm/preview/index-8jx11jyn.mjs +29 -0
  47. package/dist/esm/preview/index-8p04sssx.mjs +123 -0
  48. package/dist/esm/preview/index-afdtmrh2.mjs +596 -0
  49. package/dist/esm/preview/index-b86qstcs.mjs +18 -0
  50. package/dist/esm/preview/index-cb77qg3g.mjs +587 -0
  51. package/dist/esm/preview/index-cdp7tr8x.mjs +122 -0
  52. package/dist/esm/preview/index-evy8hyah.mjs +55 -0
  53. package/dist/esm/preview/index-gnsce796.mjs +6 -0
  54. package/dist/esm/preview/index-kkvzt8b7.mjs +199 -0
  55. package/dist/esm/preview/index-r0v18b2n.mjs +425 -0
  56. package/dist/esm/preview/index-rswpzmm5.mjs +926 -0
  57. package/dist/esm/preview/index-s9mrx750.mjs +97 -0
  58. package/dist/esm/preview/index-tvfexb7s.mjs +164 -0
  59. package/dist/esm/preview/index-vp56k1gj.mjs +215 -0
  60. package/dist/esm/preview/index-wxhvgv2s.mjs +79 -0
  61. package/dist/esm/preview/index-wy95a41r.mjs +407 -0
  62. package/dist/esm/preview/index-ysnwfc4t.mjs +306 -0
  63. package/dist/esm/preview/index.mjs +51 -0
  64. package/dist/esm/preview/invert.mjs +84 -0
  65. package/dist/esm/preview/iris-wipe.mjs +315 -0
  66. package/dist/esm/preview/lens-blur.mjs +563 -0
  67. package/dist/esm/preview/levels.mjs +400 -0
  68. package/dist/esm/preview/light-leak.mjs +8 -0
  69. package/dist/esm/preview/light-trail.mjs +516 -0
  70. package/dist/esm/preview/lightning.mjs +603 -0
  71. package/dist/esm/preview/linear-gradient-tint.mjs +6 -0
  72. package/dist/esm/preview/linear-gradient.mjs +6 -0
  73. package/dist/esm/preview/linear-progressive-blur.mjs +516 -0
  74. package/dist/esm/preview/linear-progressive-pixelate.mjs +176 -0
  75. package/dist/esm/preview/lines.mjs +536 -0
  76. package/dist/esm/preview/liquid-contours.mjs +512 -0
  77. package/dist/esm/preview/long-shadows.mjs +437 -0
  78. package/dist/esm/preview/lut.mjs +601 -0
  79. package/dist/esm/preview/magnify.mjs +403 -0
  80. package/dist/esm/preview/mirror.mjs +341 -0
  81. package/dist/esm/preview/noise-displacement.mjs +584 -0
  82. package/dist/esm/preview/noise.mjs +318 -0
  83. package/dist/esm/preview/outline.mjs +725 -0
  84. package/dist/esm/preview/page-turn.mjs +302 -0
  85. package/dist/esm/preview/paper.mjs +1249 -0
  86. package/dist/esm/preview/pattern.mjs +6 -0
  87. package/dist/esm/preview/pixel-dissolve.mjs +360 -0
  88. package/dist/esm/preview/pixelate.mjs +249 -0
  89. package/dist/esm/preview/radial-progressive-blur.mjs +582 -0
  90. package/dist/esm/preview/radial-progressive-pixelate.mjs +220 -0
  91. package/dist/esm/preview/radial-wipe.mjs +224 -0
  92. package/dist/esm/preview/rain-fall.mjs +114 -0
  93. package/dist/esm/preview/region-blur.mjs +500 -0
  94. package/dist/esm/preview/rings.mjs +8 -0
  95. package/dist/esm/preview/roughen-edges.mjs +590 -0
  96. package/dist/esm/preview/saturation.mjs +86 -0
  97. package/dist/esm/preview/scale.mjs +109 -0
  98. package/dist/esm/preview/scanlines.mjs +362 -0
  99. package/dist/esm/preview/shadows-highlights.mjs +284 -0
  100. package/dist/esm/preview/shatter.mjs +868 -0
  101. package/dist/esm/preview/shine.mjs +368 -0
  102. package/dist/esm/preview/shrinkwrap.mjs +769 -0
  103. package/dist/esm/preview/skew.mjs +300 -0
  104. package/dist/esm/preview/snow-fall.mjs +170 -0
  105. package/dist/esm/preview/speckle.mjs +356 -0
  106. package/dist/esm/preview/sphere.mjs +252 -0
  107. package/dist/esm/preview/starburst.mjs +8 -0
  108. package/dist/esm/preview/tear.mjs +375 -0
  109. package/dist/esm/preview/thermal-vision.mjs +387 -0
  110. package/dist/esm/preview/tile.mjs +7 -0
  111. package/dist/esm/preview/tint.mjs +125 -0
  112. package/dist/esm/preview/translate.mjs +151 -0
  113. package/dist/esm/preview/turbulent-displace.mjs +613 -0
  114. package/dist/esm/preview/tv-signal-off.mjs +308 -0
  115. package/dist/esm/preview/venetian-blinds.mjs +341 -0
  116. package/dist/esm/preview/vibrance.mjs +254 -0
  117. package/dist/esm/preview/vignette.mjs +458 -0
  118. package/dist/esm/preview/wave.mjs +384 -0
  119. package/dist/esm/preview/waves.mjs +599 -0
  120. package/dist/esm/preview/white-balance.mjs +280 -0
  121. package/dist/esm/preview/white-noise.mjs +244 -0
  122. package/dist/esm/preview/zigzag.mjs +8 -0
  123. package/dist/esm/preview/zoom-blur.mjs +389 -0
  124. package/dist/lightning/geometry.d.ts +10 -0
  125. package/dist/lightning/index.d.ts +4 -0
  126. package/dist/lightning/mask.d.ts +2 -0
  127. package/dist/lightning/params.d.ts +259 -0
  128. package/dist/lightning/shaders.d.ts +2 -0
  129. package/dist/lightning.d.ts +2 -0
  130. package/dist/magnify/shader.d.ts +1 -0
  131. package/dist/magnify/webgpu-shader.d.ts +1 -0
  132. package/dist/magnify.d.ts +28 -0
  133. package/package.json +30 -6
@@ -0,0 +1,220 @@
1
+ import {
2
+ setupProgressivePixelate,
3
+ prepareProgressivePixelate,
4
+ drawProgressivePixelate,
5
+ cleanupProgressivePixelate,
6
+ PROGRESSIVE_PIXELATE_WEBGPU_SHADER
7
+ } from "./index-00v3hr66.mjs";
8
+ import {
9
+ assertOptionalFiniteNumber,
10
+ validateUnitInterval,
11
+ validateNonNegative
12
+ } from "./index-wxhvgv2s.mjs";
13
+ import {
14
+ setupWebGpuSinglePass,
15
+ cleanupWebGpuSinglePass,
16
+ applyWebGpuSinglePass
17
+ } from "./index-tvfexb7s.mjs";
18
+ import {
19
+ assertEffectParamsObject
20
+ } from "./index-4fvp93ps.mjs";
21
+
22
+ // src/radial-progressive-pixelate/index.ts
23
+ import { Internals } from "remotion";
24
+ var { createEffect } = Internals;
25
+ var DEFAULT_CENTER = [0.5, 0.5];
26
+ var DEFAULT_WIDTH = 1;
27
+ var DEFAULT_HEIGHT = 1;
28
+ var DEFAULT_ROTATION = 0;
29
+ var DEFAULT_START = 0;
30
+ var DEFAULT_START_BLOCK_SIZE = 1;
31
+ var DEFAULT_END_BLOCK_SIZE = 40;
32
+ var radialProgressivePixelateSchema = {
33
+ center: {
34
+ type: "uv-coordinate",
35
+ min: -1,
36
+ max: 2,
37
+ step: 0.01,
38
+ default: DEFAULT_CENTER,
39
+ description: "Center",
40
+ visual: {
41
+ type: "ellipse",
42
+ width: "width",
43
+ height: "height",
44
+ rotation: "rotation",
45
+ innerScale: "start"
46
+ }
47
+ },
48
+ width: {
49
+ type: "number",
50
+ min: 0,
51
+ step: 0.01,
52
+ default: DEFAULT_WIDTH,
53
+ description: "Width",
54
+ hiddenFromList: false
55
+ },
56
+ height: {
57
+ type: "number",
58
+ min: 0,
59
+ step: 0.01,
60
+ default: DEFAULT_HEIGHT,
61
+ description: "Height",
62
+ hiddenFromList: false
63
+ },
64
+ rotation: {
65
+ type: "rotation-degrees",
66
+ step: 1,
67
+ default: DEFAULT_ROTATION,
68
+ description: "Rotation"
69
+ },
70
+ start: {
71
+ type: "number",
72
+ min: 0,
73
+ max: 1,
74
+ step: 0.01,
75
+ default: DEFAULT_START,
76
+ description: "Start",
77
+ hiddenFromList: false
78
+ },
79
+ startBlockSize: {
80
+ type: "number",
81
+ min: 1,
82
+ max: 200,
83
+ step: 1,
84
+ default: DEFAULT_START_BLOCK_SIZE,
85
+ description: "Start block size",
86
+ hiddenFromList: false
87
+ },
88
+ endBlockSize: {
89
+ type: "number",
90
+ min: 1,
91
+ max: 200,
92
+ step: 1,
93
+ default: DEFAULT_END_BLOCK_SIZE,
94
+ description: "End block size",
95
+ hiddenFromList: false
96
+ }
97
+ };
98
+ var resolve = (params) => ({
99
+ center: [
100
+ ...params.center ?? DEFAULT_CENTER
101
+ ],
102
+ width: params.width ?? DEFAULT_WIDTH,
103
+ height: params.height ?? DEFAULT_HEIGHT,
104
+ rotation: params.rotation ?? DEFAULT_ROTATION,
105
+ start: params.start ?? DEFAULT_START,
106
+ startBlockSize: params.startBlockSize ?? DEFAULT_START_BLOCK_SIZE,
107
+ endBlockSize: params.endBlockSize ?? DEFAULT_END_BLOCK_SIZE
108
+ });
109
+ var assertOptionalUvCoordinate = (value, name) => {
110
+ if (value === undefined) {
111
+ return;
112
+ }
113
+ if (!Array.isArray(value) || value.length !== 2 || value.some((item) => typeof item !== "number" || !Number.isFinite(item))) {
114
+ throw new TypeError(`"${name}" must be a [number, number] tuple`);
115
+ }
116
+ };
117
+ var validateBlockSize = (value, name) => {
118
+ if (value < 1) {
119
+ throw new TypeError(`"${name}" must be >= 1`);
120
+ }
121
+ };
122
+ var validateParams = (params) => {
123
+ assertEffectParamsObject(params, "Radial progressive pixelate");
124
+ assertOptionalUvCoordinate(params.center, "center");
125
+ assertOptionalFiniteNumber(params.width, "width");
126
+ assertOptionalFiniteNumber(params.height, "height");
127
+ assertOptionalFiniteNumber(params.rotation, "rotation");
128
+ validateNonNegative(params.width ?? DEFAULT_WIDTH, "width");
129
+ validateNonNegative(params.height ?? DEFAULT_HEIGHT, "height");
130
+ assertOptionalFiniteNumber(params.start, "start");
131
+ validateUnitInterval(params.start ?? DEFAULT_START, "start");
132
+ assertOptionalFiniteNumber(params.startBlockSize, "startBlockSize");
133
+ assertOptionalFiniteNumber(params.endBlockSize, "endBlockSize");
134
+ validateBlockSize(params.startBlockSize ?? DEFAULT_START_BLOCK_SIZE, "startBlockSize");
135
+ validateBlockSize(params.endBlockSize ?? DEFAULT_END_BLOCK_SIZE, "endBlockSize");
136
+ };
137
+ var radialProgressivePixelate = createEffect({
138
+ type: "dev.remotion.effects.radialProgressivePixelate",
139
+ label: "radialProgressivePixelate()",
140
+ documentationLink: "https://www.remotion.dev/docs/effects/radial-progressive-pixelate",
141
+ calculateKey: (params) => {
142
+ const r = resolve(params);
143
+ return `radial-progressive-pixelate-${r.center.join(":")}-${r.width}-${r.height}-${r.rotation}-${r.start}-${r.startBlockSize}-${r.endBlockSize}`;
144
+ },
145
+ implementations: {
146
+ webgpu: Internals.createEffectImplementation({
147
+ setup: (target) => setupWebGpuSinglePass(target, "radial-progressive-pixelate"),
148
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
149
+ if (!gpuDevice) {
150
+ throw new Error("A WebGPU device is required for the radial-progressive-pixelate effect");
151
+ }
152
+ const r = resolve(params);
153
+ applyWebGpuSinglePass({
154
+ source,
155
+ width,
156
+ height,
157
+ state,
158
+ device: gpuDevice,
159
+ shader: PROGRESSIVE_PIXELATE_WEBGPU_SHADER,
160
+ uniformData: new Float32Array([
161
+ width,
162
+ height,
163
+ 1,
164
+ r.startBlockSize,
165
+ 0,
166
+ 0,
167
+ 0,
168
+ 0,
169
+ r.center[0],
170
+ r.center[1],
171
+ r.width,
172
+ r.height,
173
+ r.rotation,
174
+ r.start,
175
+ r.endBlockSize,
176
+ 0
177
+ ])
178
+ });
179
+ },
180
+ cleanup: cleanupWebGpuSinglePass
181
+ }),
182
+ webgl2: Internals.createEffectImplementation({
183
+ setup: setupProgressivePixelate,
184
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
185
+ const r = resolve(params);
186
+ prepareProgressivePixelate({
187
+ state,
188
+ source,
189
+ width,
190
+ height,
191
+ flipSourceY
192
+ });
193
+ const { gl, uniforms } = state;
194
+ if (uniforms.uMode)
195
+ gl.uniform1i(uniforms.uMode, 1);
196
+ if (uniforms.uCenter)
197
+ gl.uniform2f(uniforms.uCenter, r.center[0], r.center[1]);
198
+ if (uniforms.uWidth)
199
+ gl.uniform1f(uniforms.uWidth, r.width);
200
+ if (uniforms.uHeight)
201
+ gl.uniform1f(uniforms.uHeight, r.height);
202
+ if (uniforms.uRotation)
203
+ gl.uniform1f(uniforms.uRotation, r.rotation);
204
+ if (uniforms.uRadialStart)
205
+ gl.uniform1f(uniforms.uRadialStart, r.start);
206
+ if (uniforms.uStartBlockSize)
207
+ gl.uniform1f(uniforms.uStartBlockSize, r.startBlockSize);
208
+ if (uniforms.uEndBlockSize)
209
+ gl.uniform1f(uniforms.uEndBlockSize, r.endBlockSize);
210
+ drawProgressivePixelate(state);
211
+ },
212
+ cleanup: cleanupProgressivePixelate
213
+ })
214
+ },
215
+ schema: radialProgressivePixelateSchema,
216
+ validateParams
217
+ });
218
+ export {
219
+ radialProgressivePixelate
220
+ };
@@ -0,0 +1,224 @@
1
+ import {
2
+ setupSinglePass,
3
+ prepareSinglePassSource,
4
+ drawSinglePass,
5
+ cleanupSinglePass
6
+ } from "./index-8p04sssx.mjs";
7
+ import {
8
+ assertOptionalFiniteNumber,
9
+ validateUnitInterval,
10
+ validateNonNegative
11
+ } from "./index-wxhvgv2s.mjs";
12
+ import {
13
+ WEBGPU_SINGLE_PASS_VERTEX,
14
+ setupWebGpuSinglePass,
15
+ cleanupWebGpuSinglePass,
16
+ applyWebGpuSinglePass
17
+ } from "./index-tvfexb7s.mjs";
18
+ import {
19
+ assertEffectParamsObject,
20
+ assertRequiredFiniteNumber
21
+ } from "./index-4fvp93ps.mjs";
22
+
23
+ // src/radial-wipe.ts
24
+ import { Internals } from "remotion";
25
+ var DEFAULT_PROGRESS = 0;
26
+ var DEFAULT_START_ANGLE = 0;
27
+ var DEFAULT_CENTER = [0.5, 0.5];
28
+ var DEFAULT_DIRECTION = "clockwise";
29
+ var DEFAULT_FEATHER = 0;
30
+ var DIRECTIONS = ["clockwise", "counterclockwise", "both"];
31
+ var radialWipeSchema = {
32
+ progress: {
33
+ type: "number",
34
+ min: 0,
35
+ max: 1,
36
+ step: 0.01,
37
+ default: DEFAULT_PROGRESS,
38
+ description: "Progress",
39
+ hiddenFromList: false
40
+ },
41
+ startAngle: {
42
+ type: "rotation-degrees",
43
+ step: 1,
44
+ default: DEFAULT_START_ANGLE,
45
+ description: "Start angle"
46
+ },
47
+ center: {
48
+ type: "uv-coordinate",
49
+ min: 0,
50
+ max: 1,
51
+ step: 0.01,
52
+ default: DEFAULT_CENTER,
53
+ description: "Center"
54
+ },
55
+ direction: {
56
+ type: "enum",
57
+ variants: { clockwise: {}, counterclockwise: {}, both: {} },
58
+ default: DEFAULT_DIRECTION,
59
+ description: "Direction"
60
+ },
61
+ feather: {
62
+ type: "number",
63
+ min: 0,
64
+ max: 360,
65
+ step: 1,
66
+ default: DEFAULT_FEATHER,
67
+ description: "Feather",
68
+ hiddenFromList: false
69
+ }
70
+ };
71
+ var resolve = (p) => ({
72
+ progress: p.progress ?? DEFAULT_PROGRESS,
73
+ startAngle: p.startAngle ?? DEFAULT_START_ANGLE,
74
+ center: p.center ?? DEFAULT_CENTER,
75
+ direction: p.direction ?? DEFAULT_DIRECTION,
76
+ feather: p.feather ?? DEFAULT_FEATHER
77
+ });
78
+ var FRAGMENT_SHADER = `#version 300 es
79
+ precision highp float;
80
+ in vec2 vUv;
81
+ out vec4 fragColor;
82
+ uniform sampler2D uSource;
83
+ uniform vec2 uResolution;
84
+ uniform vec2 uCenter;
85
+ uniform float uStartAngle;
86
+ uniform float uProgress;
87
+ uniform float uFeather;
88
+ uniform int uDirection;
89
+
90
+ void main() {
91
+ vec4 source = texture(uSource, vUv);
92
+ if (uProgress <= 0.0) { fragColor = source; return; }
93
+ if (uProgress >= 1.0) { fragColor = vec4(0.0); return; }
94
+ vec2 delta = (vec2(vUv.x, 1.0 - vUv.y) - uCenter) * uResolution;
95
+ // atan(0, 0) is undefined; the center belongs to the erased sector.
96
+ if (dot(delta, delta) == 0.0) { fragColor = vec4(0.0); return; }
97
+ float angle = mod(degrees(atan(delta.x, -delta.y)) - uStartAngle, 360.0);
98
+ float sweep = 360.0;
99
+ if (uDirection == 1) angle = 360.0 - angle;
100
+ if (uDirection == 2) { angle = min(angle, 360.0 - angle); sweep = 180.0; }
101
+ float distance = angle - uProgress * sweep;
102
+ float mask = uFeather > 0.0 ? clamp(distance / uFeather + 0.5, 0.0, 1.0) : step(0.0, distance);
103
+ fragColor = source * mask;
104
+ }
105
+ `;
106
+ var WEBGPU_SHADER = `
107
+ ${WEBGPU_SINGLE_PASS_VERTEX}
108
+ struct Params { resolutionCenter: vec4f, controls: vec4f, }
109
+ @group(0) @binding(0) var source: texture_2d<f32>;
110
+ @group(0) @binding(1) var sourceSampler: sampler;
111
+ @group(0) @binding(2) var<uniform> params: Params;
112
+ @fragment fn fragment(input: VertexOutput) -> @location(0) vec4f {
113
+ let color = textureSampleLevel(source, sourceSampler, input.uv, 0);
114
+ let progress = params.controls.y;
115
+ if (progress <= 0.0) { return color; }
116
+ if (progress >= 1.0) { return vec4f(0); }
117
+ let delta = (input.uv - params.resolutionCenter.zw) * params.resolutionCenter.xy;
118
+ if (dot(delta, delta) == 0.0) { return vec4f(0); }
119
+ // Avoid the implementation-dependent atan2 result at a signed-zero X argument.
120
+ var polarAngle = atan2(delta.x, -delta.y);
121
+ if (delta.y == 0.0) { polarAngle = select(-1.5707963267948966, 1.5707963267948966, delta.x >= 0.0); }
122
+ let rawAngle = degrees(polarAngle) - params.controls.x;
123
+ var angle = rawAngle - 360.0 * floor(rawAngle / 360.0);
124
+ var sweep = 360.0;
125
+ if (params.controls.w == 1.0) { angle = 360.0 - angle; }
126
+ if (params.controls.w == 2.0) { angle = min(angle, 360.0 - angle); sweep = 180.0; }
127
+ let distance = angle - progress * sweep;
128
+ var mask = step(0.0, distance);
129
+ if (params.controls.z > 0.0) { mask = clamp(distance / params.controls.z + 0.5, 0.0, 1.0); }
130
+ return color * mask;
131
+ }
132
+ `;
133
+ var radialWipe = Internals.createEffect({
134
+ type: "remotion/radial-wipe",
135
+ label: "radialWipe()",
136
+ documentationLink: "https://www.remotion.dev/docs/effects/radial-wipe",
137
+ calculateKey: (params) => `radial-wipe-${JSON.stringify(resolve(params))}`,
138
+ implementations: {
139
+ webgpu: Internals.createEffectImplementation({
140
+ setup: (target) => setupWebGpuSinglePass(target, "radial-wipe"),
141
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
142
+ if (!gpuDevice) {
143
+ throw new Error("A WebGPU device is required for the radial-wipe effect");
144
+ }
145
+ const r = resolve(params);
146
+ applyWebGpuSinglePass({
147
+ source,
148
+ width,
149
+ height,
150
+ state,
151
+ device: gpuDevice,
152
+ shader: WEBGPU_SHADER,
153
+ uniformData: new Float32Array([
154
+ width,
155
+ height,
156
+ r.center[0],
157
+ r.center[1],
158
+ r.startAngle % 360,
159
+ r.progress,
160
+ r.feather,
161
+ DIRECTIONS.indexOf(r.direction)
162
+ ])
163
+ });
164
+ },
165
+ cleanup: cleanupWebGpuSinglePass
166
+ }),
167
+ webgl2: Internals.createEffectImplementation({
168
+ setup: (target) => setupSinglePass(target, FRAGMENT_SHADER, "radial wipe", [
169
+ "uResolution",
170
+ "uCenter",
171
+ "uStartAngle",
172
+ "uProgress",
173
+ "uFeather",
174
+ "uDirection"
175
+ ]),
176
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
177
+ const r = resolve(params);
178
+ const { gl, uniforms } = state;
179
+ prepareSinglePassSource({
180
+ state,
181
+ source,
182
+ width,
183
+ height,
184
+ flipSourceY
185
+ });
186
+ gl.uniform2f(uniforms.uResolution, width, height);
187
+ gl.uniform2f(uniforms.uCenter, r.center[0], r.center[1]);
188
+ gl.uniform1f(uniforms.uStartAngle, r.startAngle % 360);
189
+ gl.uniform1f(uniforms.uProgress, r.progress);
190
+ gl.uniform1f(uniforms.uFeather, r.feather);
191
+ gl.uniform1i(uniforms.uDirection, DIRECTIONS.indexOf(r.direction));
192
+ drawSinglePass(state);
193
+ },
194
+ cleanup: cleanupSinglePass
195
+ })
196
+ },
197
+ schema: radialWipeSchema,
198
+ validateParams: (params) => {
199
+ assertEffectParamsObject(params, "Radial wipe");
200
+ assertOptionalFiniteNumber(params.progress, "progress");
201
+ assertOptionalFiniteNumber(params.startAngle, "startAngle");
202
+ assertOptionalFiniteNumber(params.feather, "feather");
203
+ if (params.center !== undefined) {
204
+ if (!Array.isArray(params.center) || params.center.length !== 2) {
205
+ throw new TypeError('"center" must be a tuple of two finite numbers');
206
+ }
207
+ assertRequiredFiniteNumber(params.center[0], "center[0]");
208
+ assertRequiredFiniteNumber(params.center[1], "center[1]");
209
+ }
210
+ const r = resolve(params);
211
+ if (params.direction !== undefined && !DIRECTIONS.includes(params.direction)) {
212
+ throw new TypeError('"direction" must be "clockwise", "counterclockwise" or "both"');
213
+ }
214
+ validateUnitInterval(r.progress, "progress");
215
+ validateUnitInterval(r.center[0], "center[0]");
216
+ validateUnitInterval(r.center[1], "center[1]");
217
+ validateNonNegative(r.feather, "feather");
218
+ if (r.feather > 360)
219
+ throw new TypeError('"feather" must be at most 360');
220
+ }
221
+ });
222
+ export {
223
+ radialWipe
224
+ };
@@ -0,0 +1,114 @@
1
+ import {
2
+ COMMON_WEATHER_DEFAULTS,
3
+ createWeatherSchema,
4
+ resolveWeatherParams,
5
+ validateWeatherRange,
6
+ validateWeatherParams,
7
+ setupWeather,
8
+ drawWeather,
9
+ cleanupWeather,
10
+ setupWeatherWebGpu,
11
+ cleanupWeatherWebGpu,
12
+ drawWeatherWebGpu
13
+ } from "./index-rswpzmm5.mjs";
14
+
15
+ // src/rain-fall.ts
16
+ import { Internals } from "remotion";
17
+ var { createEffect } = Internals;
18
+ var DEFAULTS = {
19
+ ...COMMON_WEATHER_DEFAULTS,
20
+ size: 1,
21
+ speed: 4000,
22
+ wind: 0,
23
+ windVariation: 0,
24
+ color: "#cccccc",
25
+ opacity: 0.25,
26
+ transferMode: "lighten",
27
+ drops: 1e5,
28
+ appearance: "refracting"
29
+ };
30
+ var rainFallSchema = {
31
+ drops: {
32
+ type: "number",
33
+ min: 0,
34
+ max: 1e5,
35
+ step: 1,
36
+ integer: true,
37
+ default: DEFAULTS.drops,
38
+ description: "Drops",
39
+ hiddenFromList: false
40
+ },
41
+ ...createWeatherSchema(DEFAULTS, 20000, 1e4),
42
+ appearance: {
43
+ type: "enum",
44
+ variants: { refracting: {}, "soft-solid": {} },
45
+ default: DEFAULTS.appearance,
46
+ description: "Appearance"
47
+ }
48
+ };
49
+ var resolve = (params) => ({
50
+ ...resolveWeatherParams(params, DEFAULTS),
51
+ count: params.drops ?? DEFAULTS.drops,
52
+ sizeVariation: 0,
53
+ speedVariation: 0,
54
+ wiggleAmount: 0,
55
+ wiggleAmountVariation: 0,
56
+ wiggleFrequency: 0,
57
+ wiggleFrequencyVariation: 0,
58
+ appearance: params.appearance ?? DEFAULTS.appearance
59
+ });
60
+ var rainFall = createEffect({
61
+ type: "remotion/rain-fall",
62
+ label: "rainFall()",
63
+ documentationLink: "https://www.remotion.dev/docs/effects/rain-fall",
64
+ calculateKey: (params) => `rain-fall-${JSON.stringify(resolve(params))}`,
65
+ implementations: {
66
+ webgpu: Internals.createEffectImplementation({
67
+ setup: setupWeatherWebGpu,
68
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
69
+ if (!gpuDevice)
70
+ throw new Error("A WebGPU device is required for the rain fall effect");
71
+ drawWeatherWebGpu({
72
+ source,
73
+ width,
74
+ height,
75
+ params: resolve(params),
76
+ state,
77
+ device: gpuDevice,
78
+ type: "rain"
79
+ });
80
+ },
81
+ cleanup: cleanupWeatherWebGpu
82
+ }),
83
+ webgl2: Internals.createEffectImplementation({
84
+ setup: (target) => setupWeather(target, "rain fall"),
85
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
86
+ drawWeather({
87
+ state,
88
+ source,
89
+ width,
90
+ height,
91
+ flipSourceY,
92
+ params: resolve(params),
93
+ type: "rain"
94
+ });
95
+ },
96
+ cleanup: cleanupWeather
97
+ })
98
+ },
99
+ schema: rainFallSchema,
100
+ validateParams: (params) => {
101
+ validateWeatherParams(params, "Rain fall", 20000, 1e4);
102
+ validateWeatherRange(params.drops, "drops", 0, 1e5);
103
+ if (params.drops !== undefined && !Number.isInteger(params.drops)) {
104
+ throw new TypeError('"drops" must be an integer');
105
+ }
106
+ if (params.appearance !== undefined && params.appearance !== "refracting" && params.appearance !== "soft-solid") {
107
+ throw new TypeError('"appearance" must be "refracting" or "soft-solid"');
108
+ }
109
+ }
110
+ });
111
+ export {
112
+ rainFall,
113
+ rainFallSchema
114
+ };