@remotion/effects 4.0.540 → 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,300 @@
1
+ import {
2
+ publicUvToShaderUv
3
+ } from "./index-gnsce796.mjs";
4
+ import {
5
+ assertOptionalFiniteNumber
6
+ } from "./index-wxhvgv2s.mjs";
7
+ import {
8
+ WEBGPU_SINGLE_PASS_VERTEX,
9
+ setupWebGpuSinglePass,
10
+ cleanupWebGpuSinglePass,
11
+ applyWebGpuSinglePass
12
+ } from "./index-tvfexb7s.mjs";
13
+ import {
14
+ assertEffectParamsObject
15
+ } from "./index-4fvp93ps.mjs";
16
+
17
+ // src/skew.ts
18
+ import { Internals } from "remotion";
19
+
20
+ // src/skew-webgpu-shader.ts
21
+ var SKEW_WEBGPU_SHADER = `
22
+ ${WEBGPU_SINGLE_PASS_VERTEX}
23
+ struct Params { resolution: vec2f, skew: vec2f, origin: vec2f, padding: vec2f }
24
+ @group(0) @binding(0) var source: texture_2d<f32>;
25
+ @group(0) @binding(1) var sourceSampler: sampler;
26
+ @group(0) @binding(2) var<uniform> params: Params;
27
+
28
+ @fragment fn fragment(input: VertexOutput) -> @location(0) vec4f {
29
+ let uv = vec2f(input.uv.x, 1.0 - input.uv.y);
30
+ let destination = (uv - params.origin) * params.resolution;
31
+ let sourceY = destination.y - params.skew.y * destination.x;
32
+ let sourceX = destination.x - params.skew.x * sourceY;
33
+ let sourceUv = vec2f(sourceX, sourceY) / params.resolution + params.origin;
34
+ if (any(sourceUv < vec2f(0.0)) || any(sourceUv > vec2f(1.0))) { return vec4f(0.0); }
35
+ return textureSampleLevel(source, sourceSampler, vec2f(sourceUv.x, 1.0 - sourceUv.y), 0.0);
36
+ }
37
+ `;
38
+
39
+ // src/skew.ts
40
+ var { createEffect, createWebGL2ContextError } = Internals;
41
+ var DEFAULT_X = 20;
42
+ var DEFAULT_Y = 0;
43
+ var DEFAULT_ORIGIN = [0.5, 0.5];
44
+ var MAX_ABSOLUTE_ANGLE = 89;
45
+ var skewSchema = {
46
+ x: {
47
+ type: "rotation-degrees",
48
+ min: -80,
49
+ max: 80,
50
+ step: 1,
51
+ default: DEFAULT_X,
52
+ description: "X angle"
53
+ },
54
+ y: {
55
+ type: "rotation-degrees",
56
+ min: -80,
57
+ max: 80,
58
+ step: 1,
59
+ default: DEFAULT_Y,
60
+ description: "Y angle"
61
+ },
62
+ origin: {
63
+ type: "uv-coordinate",
64
+ min: 0,
65
+ max: 1,
66
+ step: 0.01,
67
+ default: DEFAULT_ORIGIN,
68
+ description: "Origin"
69
+ }
70
+ };
71
+ var resolve = (params) => ({
72
+ x: params.x ?? DEFAULT_X,
73
+ y: params.y ?? DEFAULT_Y,
74
+ origin: [...params.origin ?? DEFAULT_ORIGIN]
75
+ });
76
+ var assertOptionalUvCoordinate = (value, name) => {
77
+ if (value === undefined) {
78
+ return;
79
+ }
80
+ if (!Array.isArray(value) || value.length !== 2 || value.some((item) => typeof item !== "number" || !Number.isFinite(item))) {
81
+ throw new TypeError(`"${name}" must be a [number, number] tuple`);
82
+ }
83
+ };
84
+ var validateUvCoordinate = (value, name) => {
85
+ if (value < 0 || value > 1) {
86
+ throw new TypeError(`"${name}" must be between 0 and 1, but got ${JSON.stringify(value)}`);
87
+ }
88
+ };
89
+ var validateAngle = (value, name) => {
90
+ if (Math.abs(value) >= MAX_ABSOLUTE_ANGLE) {
91
+ throw new TypeError(`"${name}" must be greater than -${MAX_ABSOLUTE_ANGLE} and less than ${MAX_ABSOLUTE_ANGLE}, but got ${JSON.stringify(value)}`);
92
+ }
93
+ };
94
+ var validateSkewParams = (params) => {
95
+ assertEffectParamsObject(params, "Skew");
96
+ assertOptionalFiniteNumber(params.x, "x");
97
+ assertOptionalFiniteNumber(params.y, "y");
98
+ assertOptionalUvCoordinate(params.origin, "origin");
99
+ const resolved = resolve(params);
100
+ validateAngle(resolved.x, "x");
101
+ validateAngle(resolved.y, "y");
102
+ validateUvCoordinate(resolved.origin[0], "origin[0]");
103
+ validateUvCoordinate(resolved.origin[1], "origin[1]");
104
+ };
105
+ var SKEW_VS = `#version 300 es
106
+ in vec2 aPos;
107
+ in vec2 aUv;
108
+ out vec2 vUv;
109
+
110
+ void main() {
111
+ vUv = aUv;
112
+ gl_Position = vec4(aPos, 0.0, 1.0);
113
+ }
114
+ `;
115
+ var SKEW_FS = `#version 300 es
116
+ precision highp float;
117
+
118
+ in vec2 vUv;
119
+ out vec4 fragColor;
120
+
121
+ uniform sampler2D uSource;
122
+ uniform vec2 uResolution;
123
+ uniform vec2 uSkew;
124
+ uniform vec2 uOrigin;
125
+
126
+ void main() {
127
+ vec2 destination = (vUv - uOrigin) * uResolution;
128
+
129
+ // Invert a horizontal skew followed by a vertical skew.
130
+ float sourceY = destination.y - uSkew.y * destination.x;
131
+ float sourceX = destination.x - uSkew.x * sourceY;
132
+ vec2 sourceUv = vec2(sourceX, sourceY) / uResolution + uOrigin;
133
+
134
+ if (any(lessThan(sourceUv, vec2(0.0))) || any(greaterThan(sourceUv, vec2(1.0)))) {
135
+ fragColor = vec4(0.0);
136
+ return;
137
+ }
138
+
139
+ fragColor = texture(uSource, sourceUv);
140
+ }
141
+ `;
142
+ var compileShader = (gl, type, source) => {
143
+ const shader = gl.createShader(type);
144
+ if (!shader) {
145
+ throw new Error("Failed to create WebGL shader");
146
+ }
147
+ gl.shaderSource(shader, source);
148
+ gl.compileShader(shader);
149
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
150
+ const log = gl.getShaderInfoLog(shader);
151
+ gl.deleteShader(shader);
152
+ throw new Error(`Skew shader compile failed: ${log ?? "(no log)"}`);
153
+ }
154
+ return shader;
155
+ };
156
+ var setupSkew = (target) => {
157
+ const gl = target.getContext("webgl2", {
158
+ premultipliedAlpha: true,
159
+ alpha: true,
160
+ preserveDrawingBuffer: true
161
+ });
162
+ if (!gl) {
163
+ throw createWebGL2ContextError("skew effect");
164
+ }
165
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
166
+ const vertexShader = compileShader(gl, gl.VERTEX_SHADER, SKEW_VS);
167
+ const fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, SKEW_FS);
168
+ const program = gl.createProgram();
169
+ if (!program) {
170
+ throw new Error("Failed to create WebGL program");
171
+ }
172
+ gl.attachShader(program, vertexShader);
173
+ gl.attachShader(program, fragmentShader);
174
+ gl.linkProgram(program);
175
+ gl.deleteShader(vertexShader);
176
+ gl.deleteShader(fragmentShader);
177
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
178
+ const log = gl.getProgramInfoLog(program);
179
+ gl.deleteProgram(program);
180
+ throw new Error(`Skew program link failed: ${log ?? "(no log)"}`);
181
+ }
182
+ const vao = gl.createVertexArray();
183
+ const vbo = gl.createBuffer();
184
+ if (!vao || !vbo) {
185
+ throw new Error("Failed to create WebGL geometry");
186
+ }
187
+ gl.bindVertexArray(vao);
188
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
189
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 0, 0, 1, -1, 1, 0, -1, 1, 0, 1, 1, 1, 1, 1]), gl.STATIC_DRAW);
190
+ const aPos = gl.getAttribLocation(program, "aPos");
191
+ const aUv = gl.getAttribLocation(program, "aUv");
192
+ gl.enableVertexAttribArray(aPos);
193
+ gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 16, 0);
194
+ gl.enableVertexAttribArray(aUv);
195
+ gl.vertexAttribPointer(aUv, 2, gl.FLOAT, false, 16, 8);
196
+ gl.bindVertexArray(null);
197
+ const texture = gl.createTexture();
198
+ if (!texture) {
199
+ throw new Error("Failed to create WebGL texture");
200
+ }
201
+ gl.bindTexture(gl.TEXTURE_2D, texture);
202
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
203
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
204
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
205
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
206
+ gl.bindTexture(gl.TEXTURE_2D, null);
207
+ return {
208
+ gl,
209
+ program,
210
+ vao,
211
+ vbo,
212
+ texture,
213
+ uSource: gl.getUniformLocation(program, "uSource"),
214
+ uResolution: gl.getUniformLocation(program, "uResolution"),
215
+ uSkew: gl.getUniformLocation(program, "uSkew"),
216
+ uOrigin: gl.getUniformLocation(program, "uOrigin")
217
+ };
218
+ };
219
+ var skew = createEffect({
220
+ type: "dev.remotion.effects.skew",
221
+ label: "skew()",
222
+ documentationLink: "https://www.remotion.dev/docs/effects/skew",
223
+ calculateKey: (params) => {
224
+ const resolved = resolve(params);
225
+ return `skew-${resolved.x}-${resolved.y}-${resolved.origin[0]}-${resolved.origin[1]}`;
226
+ },
227
+ implementations: {
228
+ webgl2: Internals.createEffectImplementation({
229
+ setup: setupSkew,
230
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
231
+ const resolved = resolve(params);
232
+ const radians = Math.PI / 180;
233
+ const { gl } = state;
234
+ gl.viewport(0, 0, width, height);
235
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
236
+ gl.clearColor(0, 0, 0, 0);
237
+ gl.clear(gl.COLOR_BUFFER_BIT);
238
+ gl.useProgram(state.program);
239
+ gl.bindVertexArray(state.vao);
240
+ gl.activeTexture(gl.TEXTURE0);
241
+ gl.bindTexture(gl.TEXTURE_2D, state.texture);
242
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);
243
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
244
+ if (state.uSource)
245
+ gl.uniform1i(state.uSource, 0);
246
+ if (state.uResolution)
247
+ gl.uniform2f(state.uResolution, width, height);
248
+ if (state.uSkew) {
249
+ gl.uniform2f(state.uSkew, Math.tan(resolved.x * radians), Math.tan(resolved.y * radians));
250
+ }
251
+ if (state.uOrigin) {
252
+ const [originX, originY] = publicUvToShaderUv(resolved.origin);
253
+ gl.uniform2f(state.uOrigin, originX, originY);
254
+ }
255
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
256
+ gl.bindVertexArray(null);
257
+ gl.bindTexture(gl.TEXTURE_2D, null);
258
+ gl.useProgram(null);
259
+ },
260
+ cleanup: ({ gl, program, vao, vbo, texture }) => {
261
+ gl.deleteTexture(texture);
262
+ gl.deleteBuffer(vbo);
263
+ gl.deleteProgram(program);
264
+ gl.deleteVertexArray(vao);
265
+ }
266
+ }),
267
+ webgpu: Internals.createEffectImplementation({
268
+ setup: (target) => setupWebGpuSinglePass(target, "skew"),
269
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
270
+ if (!gpuDevice) {
271
+ throw new Error("A WebGPU device is required for the skew effect");
272
+ }
273
+ const r = resolve(params);
274
+ applyWebGpuSinglePass({
275
+ state,
276
+ source,
277
+ width,
278
+ height,
279
+ device: gpuDevice,
280
+ shader: SKEW_WEBGPU_SHADER,
281
+ uniformData: new Float32Array([
282
+ width,
283
+ height,
284
+ Math.tan(r.x * Math.PI / 180),
285
+ Math.tan(r.y * Math.PI / 180),
286
+ ...publicUvToShaderUv(r.origin),
287
+ 0,
288
+ 0
289
+ ])
290
+ });
291
+ },
292
+ cleanup: cleanupWebGpuSinglePass
293
+ })
294
+ },
295
+ schema: skewSchema,
296
+ validateParams: validateSkewParams
297
+ });
298
+ export {
299
+ skew
300
+ };
@@ -0,0 +1,170 @@
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/snow-fall.ts
16
+ import { Internals } from "remotion";
17
+ var { createEffect } = Internals;
18
+ var DEFAULTS = {
19
+ ...COMMON_WEATHER_DEFAULTS,
20
+ size: 3,
21
+ speed: 100,
22
+ wind: 25,
23
+ windVariation: 0.5,
24
+ color: "#ffffff",
25
+ opacity: 1,
26
+ transferMode: "composite",
27
+ flakes: 1e4,
28
+ sizeVariation: 0.5,
29
+ speedVariation: 0.5,
30
+ wiggleAmount: 2,
31
+ wiggleAmountVariation: 0.5,
32
+ wiggleFrequency: 1,
33
+ wiggleFrequencyVariation: 0.5
34
+ };
35
+ var snowFallSchema = {
36
+ flakes: {
37
+ type: "number",
38
+ min: 0,
39
+ max: 200000,
40
+ step: 1,
41
+ integer: true,
42
+ default: DEFAULTS.flakes,
43
+ description: "Flakes",
44
+ hiddenFromList: false
45
+ },
46
+ sizeVariation: {
47
+ type: "number",
48
+ min: 0,
49
+ max: 1,
50
+ step: 0.01,
51
+ default: DEFAULTS.sizeVariation,
52
+ description: "Size variation",
53
+ hiddenFromList: false
54
+ },
55
+ speedVariation: {
56
+ type: "number",
57
+ min: 0,
58
+ max: 1,
59
+ step: 0.01,
60
+ default: DEFAULTS.speedVariation,
61
+ description: "Speed variation",
62
+ hiddenFromList: false
63
+ },
64
+ wiggleAmount: {
65
+ type: "number",
66
+ min: 0,
67
+ max: 100,
68
+ step: 0.01,
69
+ default: DEFAULTS.wiggleAmount,
70
+ description: "Wiggle amount",
71
+ hiddenFromList: false
72
+ },
73
+ wiggleAmountVariation: {
74
+ type: "number",
75
+ min: 0,
76
+ max: 1,
77
+ step: 0.01,
78
+ default: DEFAULTS.wiggleAmountVariation,
79
+ description: "Wiggle amount variation",
80
+ hiddenFromList: false
81
+ },
82
+ wiggleFrequency: {
83
+ type: "number",
84
+ min: 0,
85
+ max: 20,
86
+ step: 0.01,
87
+ default: DEFAULTS.wiggleFrequency,
88
+ description: "Wiggle frequency",
89
+ hiddenFromList: false
90
+ },
91
+ wiggleFrequencyVariation: {
92
+ type: "number",
93
+ min: 0,
94
+ max: 1,
95
+ step: 0.01,
96
+ default: DEFAULTS.wiggleFrequencyVariation,
97
+ description: "Wiggle frequency variation",
98
+ hiddenFromList: false
99
+ },
100
+ ...createWeatherSchema(DEFAULTS, 5000, 5000)
101
+ };
102
+ var resolve = (params) => ({
103
+ ...resolveWeatherParams(params, DEFAULTS),
104
+ count: params.flakes ?? DEFAULTS.flakes,
105
+ sizeVariation: params.sizeVariation ?? DEFAULTS.sizeVariation,
106
+ speedVariation: params.speedVariation ?? DEFAULTS.speedVariation,
107
+ wiggleAmount: params.wiggleAmount ?? DEFAULTS.wiggleAmount,
108
+ wiggleAmountVariation: params.wiggleAmountVariation ?? DEFAULTS.wiggleAmountVariation,
109
+ wiggleFrequency: params.wiggleFrequency ?? DEFAULTS.wiggleFrequency,
110
+ wiggleFrequencyVariation: params.wiggleFrequencyVariation ?? DEFAULTS.wiggleFrequencyVariation,
111
+ appearance: "soft-solid"
112
+ });
113
+ var snowFall = createEffect({
114
+ type: "remotion/snow-fall",
115
+ label: "snowFall()",
116
+ documentationLink: "https://www.remotion.dev/docs/effects/snow-fall",
117
+ calculateKey: (params) => `snow-fall-${JSON.stringify(resolve(params))}`,
118
+ implementations: {
119
+ webgpu: Internals.createEffectImplementation({
120
+ setup: setupWeatherWebGpu,
121
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
122
+ if (!gpuDevice)
123
+ throw new Error("A WebGPU device is required for the snow fall effect");
124
+ drawWeatherWebGpu({
125
+ source,
126
+ width,
127
+ height,
128
+ params: resolve(params),
129
+ state,
130
+ device: gpuDevice,
131
+ type: "snow"
132
+ });
133
+ },
134
+ cleanup: cleanupWeatherWebGpu
135
+ }),
136
+ webgl2: Internals.createEffectImplementation({
137
+ setup: (target) => setupWeather(target, "snow fall"),
138
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
139
+ drawWeather({
140
+ state,
141
+ source,
142
+ width,
143
+ height,
144
+ flipSourceY,
145
+ params: resolve(params),
146
+ type: "snow"
147
+ });
148
+ },
149
+ cleanup: cleanupWeather
150
+ })
151
+ },
152
+ schema: snowFallSchema,
153
+ validateParams: (params) => {
154
+ validateWeatherParams(params, "Snow fall", 5000, 5000);
155
+ validateWeatherRange(params.flakes, "flakes", 0, 200000);
156
+ validateWeatherRange(params.sizeVariation, "sizeVariation", 0, 1);
157
+ validateWeatherRange(params.speedVariation, "speedVariation", 0, 1);
158
+ validateWeatherRange(params.wiggleAmount, "wiggleAmount", 0, 100);
159
+ validateWeatherRange(params.wiggleAmountVariation, "wiggleAmountVariation", 0, 1);
160
+ validateWeatherRange(params.wiggleFrequency, "wiggleFrequency", 0, 20);
161
+ validateWeatherRange(params.wiggleFrequencyVariation, "wiggleFrequencyVariation", 0, 1);
162
+ if (params.flakes !== undefined && !Number.isInteger(params.flakes)) {
163
+ throw new TypeError('"flakes" must be an integer');
164
+ }
165
+ }
166
+ });
167
+ export {
168
+ snowFall,
169
+ snowFallSchema
170
+ };