@remotion/effects 4.0.541 → 4.0.543

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,318 @@
1
+ import {
2
+ assertOptionalFiniteNumber,
3
+ validateUnitInterval
4
+ } from "./index-wxhvgv2s.mjs";
5
+ import {
6
+ WEBGPU_SINGLE_PASS_VERTEX,
7
+ setupWebGpuSinglePass,
8
+ cleanupWebGpuSinglePass,
9
+ applyWebGpuSinglePass
10
+ } from "./index-tvfexb7s.mjs";
11
+ import {
12
+ assertEffectParamsObject
13
+ } from "./index-4fvp93ps.mjs";
14
+
15
+ // src/noise.ts
16
+ import { Internals } from "remotion";
17
+
18
+ // src/noise-webgpu-shader.ts
19
+ var NOISE_WEBGPU_SHADER = `
20
+ ${WEBGPU_SINGLE_PASS_VERTEX}
21
+ @group(0) @binding(0) var source: texture_2d<f32>;
22
+ @group(0) @binding(1) var sourceSampler: sampler;
23
+ @group(0) @binding(2) var<uniform> params: Params;
24
+
25
+ struct Params { size: vec2f, amount: f32, seed: f32, premultiply: f32, }
26
+ fn random(co: vec2f) -> f32 {
27
+ var p3 = fract(co.xyx * 0.1031 + vec3f(params.seed * 0.0973));
28
+ p3 += vec3f(dot(p3, p3.yzx + vec3f(33.33)));
29
+ return fract((p3.x + p3.y) * p3.z);
30
+ }
31
+ @fragment fn fragment(input: VertexOutput) -> @location(0) vec4f {
32
+ let color = textureSampleLevel(source, sourceSampler, input.uv, 0);
33
+ if (color.a <= 0.001) { return vec4f(0); }
34
+ let noise = random(vec2f(input.position.x, params.size.y - input.position.y)) - 0.5;
35
+ let rgb = color.rgb / color.a;
36
+ let layer = select(vec3f(noise), rgb * noise, params.premultiply != 0.0);
37
+ return vec4f(clamp(rgb + layer * params.amount, vec3f(0), vec3f(1)) * color.a, color.a);
38
+ }
39
+
40
+ `;
41
+
42
+ // src/noise.ts
43
+ var { createEffect, createWebGL2ContextError } = Internals;
44
+ var DEFAULT_AMOUNT = 0.15;
45
+ var DEFAULT_SEED = 0;
46
+ var DEFAULT_PREMULTIPLY = false;
47
+ var noiseSchema = {
48
+ amount: {
49
+ type: "number",
50
+ min: 0,
51
+ max: 1,
52
+ step: 0.01,
53
+ default: DEFAULT_AMOUNT,
54
+ description: "Amount",
55
+ hiddenFromList: false
56
+ },
57
+ seed: {
58
+ type: "number",
59
+ step: 1,
60
+ default: DEFAULT_SEED,
61
+ description: "Seed",
62
+ hiddenFromList: false
63
+ },
64
+ premultiply: {
65
+ type: "boolean",
66
+ default: DEFAULT_PREMULTIPLY,
67
+ description: "Premultiply"
68
+ }
69
+ };
70
+ var resolve = (p) => ({
71
+ amount: p.amount ?? DEFAULT_AMOUNT,
72
+ seed: p.seed ?? DEFAULT_SEED,
73
+ premultiply: p.premultiply ?? DEFAULT_PREMULTIPLY
74
+ });
75
+ var assertOptionalBoolean = (value, name) => {
76
+ if (value === undefined) {
77
+ return;
78
+ }
79
+ if (typeof value !== "boolean") {
80
+ throw new TypeError(`"${name}" must be a boolean, but got ${JSON.stringify(value)}`);
81
+ }
82
+ };
83
+ var validateNoiseParams = (params) => {
84
+ assertEffectParamsObject(params, "Noise");
85
+ assertOptionalFiniteNumber(params.amount, "amount");
86
+ assertOptionalFiniteNumber(params.seed, "seed");
87
+ assertOptionalBoolean(params.premultiply, "premultiply");
88
+ const r = resolve(params);
89
+ validateUnitInterval(r.amount, "amount");
90
+ };
91
+ var NOISE_VS = `#version 300 es
92
+ in vec2 aPos;
93
+ in vec2 aUv;
94
+ out vec2 vUv;
95
+
96
+ void main() {
97
+ vUv = aUv;
98
+ gl_Position = vec4(aPos, 0.0, 1.0);
99
+ }
100
+ `;
101
+ var NOISE_FS = `#version 300 es
102
+ precision highp float;
103
+
104
+ in vec2 vUv;
105
+ out vec4 fragColor;
106
+
107
+ uniform sampler2D uSource;
108
+ uniform vec2 uResolution;
109
+ uniform float uAmount;
110
+ uniform float uSeed;
111
+ uniform bool uPremultiply;
112
+
113
+ float random(vec2 co) {
114
+ vec3 p3 = fract(vec3(co.xyx) * 0.1031 + uSeed * 0.0973);
115
+ p3 += dot(p3, p3.yzx + 33.33);
116
+ return fract((p3.x + p3.y) * p3.z);
117
+ }
118
+
119
+ void main() {
120
+ vec4 texColor = texture(uSource, vUv);
121
+ float alpha = texColor.a;
122
+
123
+ if (alpha <= 0.001) {
124
+ fragColor = vec4(0.0);
125
+ return;
126
+ }
127
+
128
+ float noise = random(gl_FragCoord.xy) - 0.5;
129
+ vec3 rgb = texColor.rgb / alpha;
130
+ vec3 noiseLayer = uPremultiply ? rgb * noise : vec3(noise);
131
+ rgb = clamp(rgb + noiseLayer * uAmount, 0.0, 1.0);
132
+ fragColor = vec4(rgb * alpha, alpha);
133
+ }
134
+ `;
135
+ var compileShader = (gl, type, source) => {
136
+ const shader = gl.createShader(type);
137
+ if (!shader) {
138
+ throw new Error("Failed to create WebGL shader");
139
+ }
140
+ gl.shaderSource(shader, source);
141
+ gl.compileShader(shader);
142
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
143
+ const log = gl.getShaderInfoLog(shader);
144
+ gl.deleteShader(shader);
145
+ throw new Error(`Noise shader compile failed: ${log ?? "(no log)"}`);
146
+ }
147
+ return shader;
148
+ };
149
+ var linkProgram = (gl, vs, fs) => {
150
+ const program = gl.createProgram();
151
+ if (!program) {
152
+ throw new Error("Failed to create WebGL program");
153
+ }
154
+ gl.attachShader(program, vs);
155
+ gl.attachShader(program, fs);
156
+ gl.linkProgram(program);
157
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
158
+ const log = gl.getProgramInfoLog(program);
159
+ gl.deleteProgram(program);
160
+ throw new Error(`Noise program link failed: ${log ?? "(no log)"}`);
161
+ }
162
+ return program;
163
+ };
164
+ var setupNoise = (target) => {
165
+ const gl = target.getContext("webgl2", {
166
+ premultipliedAlpha: true,
167
+ alpha: true,
168
+ preserveDrawingBuffer: true
169
+ });
170
+ if (!gl) {
171
+ throw createWebGL2ContextError("noise effect");
172
+ }
173
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
174
+ const vs = compileShader(gl, gl.VERTEX_SHADER, NOISE_VS);
175
+ const fs = compileShader(gl, gl.FRAGMENT_SHADER, NOISE_FS);
176
+ const program = linkProgram(gl, vs, fs);
177
+ gl.deleteShader(vs);
178
+ gl.deleteShader(fs);
179
+ const vao = gl.createVertexArray();
180
+ if (!vao) {
181
+ throw new Error("Failed to create WebGL vertex array");
182
+ }
183
+ gl.bindVertexArray(vao);
184
+ const data = new Float32Array([
185
+ -1,
186
+ -1,
187
+ 0,
188
+ 0,
189
+ 1,
190
+ -1,
191
+ 1,
192
+ 0,
193
+ -1,
194
+ 1,
195
+ 0,
196
+ 1,
197
+ 1,
198
+ 1,
199
+ 1,
200
+ 1
201
+ ]);
202
+ const vbo = gl.createBuffer();
203
+ if (!vbo) {
204
+ throw new Error("Failed to create WebGL buffer");
205
+ }
206
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
207
+ gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
208
+ const aPos = gl.getAttribLocation(program, "aPos");
209
+ const aUv = gl.getAttribLocation(program, "aUv");
210
+ gl.enableVertexAttribArray(aPos);
211
+ gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 16, 0);
212
+ gl.enableVertexAttribArray(aUv);
213
+ gl.vertexAttribPointer(aUv, 2, gl.FLOAT, false, 16, 8);
214
+ gl.bindVertexArray(null);
215
+ const texture = gl.createTexture();
216
+ if (!texture) {
217
+ throw new Error("Failed to create WebGL texture");
218
+ }
219
+ gl.bindTexture(gl.TEXTURE_2D, texture);
220
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
221
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
222
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
223
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
224
+ gl.bindTexture(gl.TEXTURE_2D, null);
225
+ return {
226
+ gl,
227
+ program,
228
+ vao,
229
+ vbo,
230
+ texture,
231
+ uSource: gl.getUniformLocation(program, "uSource"),
232
+ uResolution: gl.getUniformLocation(program, "uResolution"),
233
+ uAmount: gl.getUniformLocation(program, "uAmount"),
234
+ uSeed: gl.getUniformLocation(program, "uSeed"),
235
+ uPremultiply: gl.getUniformLocation(program, "uPremultiply")
236
+ };
237
+ };
238
+ var noise = createEffect({
239
+ type: "dev.remotion.effects.noise",
240
+ label: "noise()",
241
+ documentationLink: "https://www.remotion.dev/docs/effects/noise",
242
+ calculateKey: (params) => {
243
+ const r = resolve(params);
244
+ return `noise-${r.amount}-${r.seed}-${r.premultiply ? 1 : 0}`;
245
+ },
246
+ implementations: {
247
+ webgpu: Internals.createEffectImplementation({
248
+ setup: (target) => setupWebGpuSinglePass(target, "noise"),
249
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
250
+ if (!gpuDevice)
251
+ throw new Error("A WebGPU device is required for the noise effect");
252
+ const r = resolve(params);
253
+ const uniformData = new Float32Array([
254
+ width,
255
+ height,
256
+ r.amount,
257
+ r.seed,
258
+ r.premultiply ? 1 : 0,
259
+ 0,
260
+ 0,
261
+ 0
262
+ ]);
263
+ applyWebGpuSinglePass({
264
+ state,
265
+ source,
266
+ width,
267
+ height,
268
+ device: gpuDevice,
269
+ shader: NOISE_WEBGPU_SHADER,
270
+ uniformData
271
+ });
272
+ },
273
+ cleanup: cleanupWebGpuSinglePass
274
+ }),
275
+ webgl2: Internals.createEffectImplementation({
276
+ setup: (target) => setupNoise(target),
277
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
278
+ const r = resolve(params);
279
+ const { gl, program, texture, vao } = state;
280
+ gl.viewport(0, 0, width, height);
281
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
282
+ gl.clearColor(0, 0, 0, 0);
283
+ gl.clear(gl.COLOR_BUFFER_BIT);
284
+ gl.activeTexture(gl.TEXTURE0);
285
+ gl.bindTexture(gl.TEXTURE_2D, texture);
286
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);
287
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
288
+ gl.useProgram(program);
289
+ if (state.uSource)
290
+ gl.uniform1i(state.uSource, 0);
291
+ if (state.uResolution)
292
+ gl.uniform2f(state.uResolution, width, height);
293
+ if (state.uAmount)
294
+ gl.uniform1f(state.uAmount, r.amount);
295
+ if (state.uSeed)
296
+ gl.uniform1f(state.uSeed, r.seed);
297
+ if (state.uPremultiply)
298
+ gl.uniform1i(state.uPremultiply, r.premultiply ? 1 : 0);
299
+ gl.bindVertexArray(vao);
300
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
301
+ gl.bindVertexArray(null);
302
+ gl.bindTexture(gl.TEXTURE_2D, null);
303
+ gl.useProgram(null);
304
+ },
305
+ cleanup: ({ gl, program, vao, vbo, texture }) => {
306
+ gl.deleteTexture(texture);
307
+ gl.deleteBuffer(vbo);
308
+ gl.deleteProgram(program);
309
+ gl.deleteVertexArray(vao);
310
+ }
311
+ })
312
+ },
313
+ schema: noiseSchema,
314
+ validateParams: validateNoiseParams
315
+ });
316
+ export {
317
+ noise
318
+ };