@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,516 @@
1
+ import {
2
+ setupWebGpuMultipass,
3
+ cleanupWebGpuMultipass,
4
+ applyWebGpuMultipass
5
+ } from "./index-kkvzt8b7.mjs";
6
+ import {
7
+ GAUSSIAN_BLUR_WEBGPU_SHADER
8
+ } from "./index-618ky75w.mjs";
9
+ import {
10
+ assertOptionalFiniteNumber
11
+ } from "./index-wxhvgv2s.mjs";
12
+ import {
13
+ assertEffectParamsObject
14
+ } from "./index-4fvp93ps.mjs";
15
+
16
+ // src/linear-progressive-blur/index.ts
17
+ import { Internals as Internals2 } from "remotion";
18
+
19
+ // src/linear-progressive-blur/linear-progressive-blur-runtime.ts
20
+ import { Internals } from "remotion";
21
+
22
+ // src/linear-progressive-blur/linear-progressive-blur-shaders.ts
23
+ var LINEAR_PROGRESSIVE_BLUR_VS = `#version 300 es
24
+ layout(location = 0) in vec2 aPos;
25
+ layout(location = 1) in vec2 aUv;
26
+ out vec2 vUv;
27
+ void main() {
28
+ vUv = aUv;
29
+ gl_Position = vec4(aPos, 0.0, 1.0);
30
+ }
31
+ `;
32
+ var buildLinearProgressiveBlurFs = (direction) => {
33
+ const dirVec = direction === "horizontal" ? "vec2(1.0, 0.0)" : "vec2(0.0, 1.0)";
34
+ return `#version 300 es
35
+ precision highp float;
36
+
37
+ in vec2 vUv;
38
+ out vec4 fragColor;
39
+
40
+ uniform sampler2D uSource;
41
+ uniform vec2 uTexelSize;
42
+ uniform vec2 uStart;
43
+ uniform vec2 uEnd;
44
+ uniform float uStartBlur;
45
+ uniform float uEndBlur;
46
+
47
+ const int MIN_KERNEL_HALF = 4;
48
+ const int MAX_KERNEL_HALF = 32;
49
+ const float TARGET_SAMPLE_DISTANCE_PX = 2.0;
50
+ const vec2 DIRECTION = ${dirVec};
51
+
52
+ float progressiveRadius(vec2 uv) {
53
+ vec2 gradient = uEnd - uStart;
54
+ float gradientLengthSq = dot(gradient, gradient);
55
+ if (gradientLengthSq <= 0.0000001) {
56
+ return max(0.0, uStartBlur);
57
+ }
58
+
59
+ float progress = dot(uv - uStart, gradient) / gradientLengthSq;
60
+ return max(0.0, mix(uStartBlur, uEndBlur, clamp(progress, 0.0, 1.0)));
61
+ }
62
+
63
+ void main() {
64
+ // Public UV coordinates use top-left origin, matching canvas/CSS coordinates.
65
+ float radius = progressiveRadius(vec2(vUv.x, 1.0 - vUv.y));
66
+ if (radius <= 0.0) {
67
+ fragColor = texture(uSource, vUv);
68
+ return;
69
+ }
70
+
71
+ int kernelHalf = int(
72
+ min(
73
+ float(MAX_KERNEL_HALF),
74
+ max(float(MIN_KERNEL_HALF), ceil(radius / TARGET_SAMPLE_DISTANCE_PX))
75
+ )
76
+ );
77
+ float pixelStride = radius / float(kernelHalf);
78
+ float sigma = max(radius / 3.0, 0.0001);
79
+ float twoSigmaSq = 2.0 * sigma * sigma;
80
+
81
+ vec4 sum = vec4(0.0);
82
+ float weightSum = 0.0;
83
+
84
+ for (int i = -MAX_KERNEL_HALF; i <= MAX_KERNEL_HALF; ++i) {
85
+ if (abs(i) > kernelHalf) {
86
+ continue;
87
+ }
88
+
89
+ float offsetPx = float(i) * pixelStride;
90
+ float w = exp(-(offsetPx * offsetPx) / twoSigmaSq);
91
+ vec2 uv = vUv + DIRECTION * uTexelSize * offsetPx;
92
+ sum += texture(uSource, uv) * w;
93
+ weightSum += w;
94
+ }
95
+
96
+ fragColor = sum / weightSum;
97
+ }
98
+ `;
99
+ };
100
+
101
+ // src/linear-progressive-blur/linear-progressive-blur-runtime.ts
102
+ var { createWebGL2ContextError } = Internals;
103
+ var compileShader = (gl, type, source) => {
104
+ const shader = gl.createShader(type);
105
+ if (!shader) {
106
+ throw new Error("Failed to create WebGL shader");
107
+ }
108
+ gl.shaderSource(shader, source);
109
+ gl.compileShader(shader);
110
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
111
+ const log = gl.getShaderInfoLog(shader);
112
+ gl.deleteShader(shader);
113
+ throw new Error(`Linear progressive blur shader compile failed: ${log ?? "(no log)"}`);
114
+ }
115
+ return shader;
116
+ };
117
+ var linkProgram = (gl, vs, fs) => {
118
+ const program = gl.createProgram();
119
+ if (!program) {
120
+ throw new Error("Failed to create WebGL program");
121
+ }
122
+ gl.attachShader(program, vs);
123
+ gl.attachShader(program, fs);
124
+ gl.linkProgram(program);
125
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
126
+ const log = gl.getProgramInfoLog(program);
127
+ gl.deleteProgram(program);
128
+ throw new Error(`Linear progressive blur program link failed: ${log ?? "(no log)"}`);
129
+ }
130
+ return program;
131
+ };
132
+ var createProgram = (gl, vertexSource, fragmentSource) => {
133
+ const vs = compileShader(gl, gl.VERTEX_SHADER, vertexSource);
134
+ const fs = compileShader(gl, gl.FRAGMENT_SHADER, fragmentSource);
135
+ const program = linkProgram(gl, vs, fs);
136
+ gl.deleteShader(vs);
137
+ gl.deleteShader(fs);
138
+ return program;
139
+ };
140
+ var getUniforms = (gl, program) => ({
141
+ uSource: gl.getUniformLocation(program, "uSource"),
142
+ uTexelSize: gl.getUniformLocation(program, "uTexelSize"),
143
+ uStart: gl.getUniformLocation(program, "uStart"),
144
+ uEnd: gl.getUniformLocation(program, "uEnd"),
145
+ uStartBlur: gl.getUniformLocation(program, "uStartBlur"),
146
+ uEndBlur: gl.getUniformLocation(program, "uEndBlur")
147
+ });
148
+ var createRgbaTexture = (gl) => {
149
+ const texture = gl.createTexture();
150
+ if (!texture) {
151
+ throw new Error("Failed to create WebGL texture");
152
+ }
153
+ gl.bindTexture(gl.TEXTURE_2D, texture);
154
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
155
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
156
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
157
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
158
+ gl.bindTexture(gl.TEXTURE_2D, null);
159
+ return texture;
160
+ };
161
+ var setupLinearProgressiveBlur = (target) => {
162
+ const gl = target.getContext("webgl2", {
163
+ premultipliedAlpha: true,
164
+ alpha: true,
165
+ preserveDrawingBuffer: true
166
+ });
167
+ if (!gl) {
168
+ throw createWebGL2ContextError("linear progressive blur effect");
169
+ }
170
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
171
+ const programHorizontal = createProgram(gl, LINEAR_PROGRESSIVE_BLUR_VS, buildLinearProgressiveBlurFs("horizontal"));
172
+ const programVertical = createProgram(gl, LINEAR_PROGRESSIVE_BLUR_VS, buildLinearProgressiveBlurFs("vertical"));
173
+ const vao = gl.createVertexArray();
174
+ if (!vao) {
175
+ throw new Error("Failed to create WebGL vertex array");
176
+ }
177
+ gl.bindVertexArray(vao);
178
+ const data = new Float32Array([
179
+ -1,
180
+ -1,
181
+ 0,
182
+ 0,
183
+ 1,
184
+ -1,
185
+ 1,
186
+ 0,
187
+ -1,
188
+ 1,
189
+ 0,
190
+ 1,
191
+ 1,
192
+ 1,
193
+ 1,
194
+ 1
195
+ ]);
196
+ const vbo = gl.createBuffer();
197
+ if (!vbo) {
198
+ throw new Error("Failed to create WebGL buffer");
199
+ }
200
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
201
+ gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
202
+ gl.enableVertexAttribArray(0);
203
+ gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 16, 0);
204
+ gl.enableVertexAttribArray(1);
205
+ gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 16, 8);
206
+ gl.bindVertexArray(null);
207
+ const textureSource = createRgbaTexture(gl);
208
+ const textureIntermediate = createRgbaTexture(gl);
209
+ const framebuffer = gl.createFramebuffer();
210
+ if (!framebuffer) {
211
+ throw new Error("Failed to create WebGL framebuffer");
212
+ }
213
+ const w = Math.max(1, target.width);
214
+ const h = Math.max(1, target.height);
215
+ gl.bindTexture(gl.TEXTURE_2D, textureIntermediate);
216
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
217
+ gl.bindTexture(gl.TEXTURE_2D, null);
218
+ gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
219
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, textureIntermediate, 0);
220
+ const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
221
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
222
+ if (status !== gl.FRAMEBUFFER_COMPLETE) {
223
+ throw new Error(`Linear progressive blur framebuffer incomplete: 0x${status.toString(16)}`);
224
+ }
225
+ return {
226
+ gl,
227
+ programHorizontal,
228
+ programVertical,
229
+ vao,
230
+ vbo,
231
+ textureSource,
232
+ textureIntermediate,
233
+ framebuffer,
234
+ horizontal: getUniforms(gl, programHorizontal),
235
+ vertical: getUniforms(gl, programVertical)
236
+ };
237
+ };
238
+ var cleanupLinearProgressiveBlur = (state) => {
239
+ const {
240
+ gl,
241
+ programHorizontal,
242
+ programVertical,
243
+ vao,
244
+ vbo,
245
+ textureSource,
246
+ textureIntermediate,
247
+ framebuffer
248
+ } = state;
249
+ gl.deleteFramebuffer(framebuffer);
250
+ gl.deleteTexture(textureSource);
251
+ gl.deleteTexture(textureIntermediate);
252
+ gl.deleteBuffer(vbo);
253
+ gl.deleteProgram(programHorizontal);
254
+ gl.deleteProgram(programVertical);
255
+ gl.deleteVertexArray(vao);
256
+ };
257
+ var uploadSource = ({
258
+ gl,
259
+ textureSource,
260
+ textureIntermediate,
261
+ source,
262
+ width,
263
+ height,
264
+ flipSourceY
265
+ }) => {
266
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);
267
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
268
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
269
+ gl.bindTexture(gl.TEXTURE_2D, textureIntermediate);
270
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
271
+ gl.bindTexture(gl.TEXTURE_2D, null);
272
+ };
273
+ var setUniforms = ({
274
+ gl,
275
+ uniforms,
276
+ width,
277
+ height,
278
+ params
279
+ }) => {
280
+ if (uniforms.uSource)
281
+ gl.uniform1i(uniforms.uSource, 0);
282
+ if (uniforms.uTexelSize)
283
+ gl.uniform2f(uniforms.uTexelSize, 1 / width, 1 / height);
284
+ if (uniforms.uStart)
285
+ gl.uniform2f(uniforms.uStart, params.start[0], params.start[1]);
286
+ if (uniforms.uEnd)
287
+ gl.uniform2f(uniforms.uEnd, params.end[0], params.end[1]);
288
+ if (uniforms.uStartBlur)
289
+ gl.uniform1f(uniforms.uStartBlur, params.startBlur);
290
+ if (uniforms.uEndBlur)
291
+ gl.uniform1f(uniforms.uEndBlur, params.endBlur);
292
+ };
293
+ var drawFullscreenQuad = (state) => {
294
+ const { gl, vao } = state;
295
+ gl.bindVertexArray(vao);
296
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
297
+ gl.bindVertexArray(null);
298
+ };
299
+ var applyLinearProgressiveBlur = ({
300
+ state,
301
+ source,
302
+ width,
303
+ height,
304
+ params,
305
+ flipSourceY
306
+ }) => {
307
+ const {
308
+ gl,
309
+ programHorizontal,
310
+ programVertical,
311
+ textureSource,
312
+ textureIntermediate,
313
+ framebuffer
314
+ } = state;
315
+ gl.viewport(0, 0, width, height);
316
+ uploadSource({
317
+ gl,
318
+ textureSource,
319
+ textureIntermediate,
320
+ source,
321
+ width,
322
+ height,
323
+ flipSourceY
324
+ });
325
+ gl.clearColor(0, 0, 0, 0);
326
+ gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
327
+ gl.clear(gl.COLOR_BUFFER_BIT);
328
+ gl.activeTexture(gl.TEXTURE0);
329
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
330
+ gl.useProgram(programHorizontal);
331
+ setUniforms({
332
+ gl,
333
+ uniforms: state.horizontal,
334
+ width,
335
+ height,
336
+ params
337
+ });
338
+ drawFullscreenQuad(state);
339
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
340
+ gl.clear(gl.COLOR_BUFFER_BIT);
341
+ gl.bindTexture(gl.TEXTURE_2D, textureIntermediate);
342
+ gl.useProgram(programVertical);
343
+ setUniforms({
344
+ gl,
345
+ uniforms: state.vertical,
346
+ width,
347
+ height,
348
+ params
349
+ });
350
+ drawFullscreenQuad(state);
351
+ gl.bindTexture(gl.TEXTURE_2D, null);
352
+ gl.useProgram(null);
353
+ };
354
+
355
+ // src/linear-progressive-blur/index.ts
356
+ var { createEffect } = Internals2;
357
+ var DEFAULT_START = [0, 0.5];
358
+ var DEFAULT_END = [1, 0.5];
359
+ var DEFAULT_START_BLUR = 0;
360
+ var DEFAULT_END_BLUR = 50;
361
+ var linearProgressiveBlurSchema = {
362
+ start: {
363
+ type: "uv-coordinate",
364
+ min: -1,
365
+ max: 2,
366
+ step: 0.01,
367
+ default: DEFAULT_START,
368
+ description: "Start",
369
+ visual: {
370
+ type: "line",
371
+ to: "end"
372
+ }
373
+ },
374
+ end: {
375
+ type: "uv-coordinate",
376
+ min: -1,
377
+ max: 2,
378
+ step: 0.01,
379
+ default: DEFAULT_END,
380
+ description: "End"
381
+ },
382
+ startBlur: {
383
+ type: "number",
384
+ min: 0,
385
+ max: 200,
386
+ step: 1,
387
+ default: DEFAULT_START_BLUR,
388
+ description: "Start blur",
389
+ hiddenFromList: false
390
+ },
391
+ endBlur: {
392
+ type: "number",
393
+ min: 0,
394
+ max: 200,
395
+ step: 1,
396
+ default: DEFAULT_END_BLUR,
397
+ description: "End blur",
398
+ hiddenFromList: false
399
+ }
400
+ };
401
+ var clampBlur = (value) => Math.max(0, value);
402
+ var resolveLinearProgressiveBlurParams = (params) => ({
403
+ start: [
404
+ ...params.start ?? DEFAULT_START
405
+ ],
406
+ end: [...params.end ?? DEFAULT_END],
407
+ startBlur: clampBlur(params.startBlur ?? DEFAULT_START_BLUR),
408
+ endBlur: clampBlur(params.endBlur ?? DEFAULT_END_BLUR)
409
+ });
410
+ var assertOptionalUvCoordinate = (value, name) => {
411
+ if (value === undefined) {
412
+ return;
413
+ }
414
+ if (!Array.isArray(value) || value.length !== 2 || value.some((item) => typeof item !== "number" || !Number.isFinite(item))) {
415
+ throw new TypeError(`"${name}" must be a [number, number] tuple`);
416
+ }
417
+ };
418
+ var validateLinearProgressiveBlurParams = (params) => {
419
+ assertEffectParamsObject(params, "Linear progressive blur");
420
+ assertOptionalUvCoordinate(params.start, "start");
421
+ assertOptionalUvCoordinate(params.end, "end");
422
+ assertOptionalFiniteNumber(params.startBlur, "startBlur");
423
+ assertOptionalFiniteNumber(params.endBlur, "endBlur");
424
+ };
425
+ var linearProgressiveBlur = createEffect({
426
+ type: "dev.remotion.effects.linearProgressiveBlur",
427
+ label: "linearProgressiveBlur()",
428
+ documentationLink: "https://www.remotion.dev/docs/effects/linear-progressive-blur",
429
+ calculateKey: (params) => {
430
+ const r = resolveLinearProgressiveBlurParams(params);
431
+ return `linear-progressive-blur-${r.start.join(":")}-${r.end.join(":")}-${r.startBlur}-${r.endBlur}`;
432
+ },
433
+ implementations: {
434
+ webgpu: Internals2.createEffectImplementation({
435
+ setup: (target) => setupWebGpuMultipass(target, "linear-progressive-blur"),
436
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
437
+ if (!gpuDevice)
438
+ throw new Error("A WebGPU device is required for this effect");
439
+ const r = resolveLinearProgressiveBlurParams(params);
440
+ applyWebGpuMultipass({
441
+ auxiliarySource: null,
442
+ state,
443
+ source,
444
+ width,
445
+ height,
446
+ device: gpuDevice,
447
+ passes: [
448
+ {
449
+ shader: GAUSSIAN_BLUR_WEBGPU_SHADER,
450
+ uniforms: new Float32Array([
451
+ width,
452
+ height,
453
+ 1,
454
+ 0,
455
+ 0,
456
+ 1,
457
+ r.startBlur,
458
+ r.endBlur,
459
+ ...r.start,
460
+ ...r.end,
461
+ 0,
462
+ 0,
463
+ 0,
464
+ 0
465
+ ]),
466
+ source: -1,
467
+ secondary: -1
468
+ },
469
+ {
470
+ shader: GAUSSIAN_BLUR_WEBGPU_SHADER,
471
+ uniforms: new Float32Array([
472
+ width,
473
+ height,
474
+ 0,
475
+ 1,
476
+ 0,
477
+ 1,
478
+ r.startBlur,
479
+ r.endBlur,
480
+ ...r.start,
481
+ ...r.end,
482
+ 0,
483
+ 0,
484
+ 0,
485
+ 0
486
+ ]),
487
+ source: 0,
488
+ secondary: -1
489
+ }
490
+ ]
491
+ });
492
+ },
493
+ cleanup: cleanupWebGpuMultipass
494
+ }),
495
+ webgl2: Internals2.createEffectImplementation({
496
+ setup: (target) => setupLinearProgressiveBlur(target),
497
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
498
+ const r = resolveLinearProgressiveBlurParams(params);
499
+ applyLinearProgressiveBlur({
500
+ state,
501
+ source,
502
+ width,
503
+ height,
504
+ params: r,
505
+ flipSourceY
506
+ });
507
+ },
508
+ cleanup: (state) => cleanupLinearProgressiveBlur(state)
509
+ })
510
+ },
511
+ schema: linearProgressiveBlurSchema,
512
+ validateParams: validateLinearProgressiveBlurParams
513
+ });
514
+ export {
515
+ linearProgressiveBlur
516
+ };
@@ -0,0 +1,176 @@
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
+ } from "./index-wxhvgv2s.mjs";
11
+ import {
12
+ setupWebGpuSinglePass,
13
+ cleanupWebGpuSinglePass,
14
+ applyWebGpuSinglePass
15
+ } from "./index-tvfexb7s.mjs";
16
+ import {
17
+ assertEffectParamsObject
18
+ } from "./index-4fvp93ps.mjs";
19
+
20
+ // src/linear-progressive-pixelate/index.ts
21
+ import { Internals } from "remotion";
22
+ var { createEffect } = Internals;
23
+ var DEFAULT_START = [0, 0.5];
24
+ var DEFAULT_END = [1, 0.5];
25
+ var DEFAULT_START_BLOCK_SIZE = 1;
26
+ var DEFAULT_END_BLOCK_SIZE = 40;
27
+ var linearProgressivePixelateSchema = {
28
+ start: {
29
+ type: "uv-coordinate",
30
+ min: -1,
31
+ max: 2,
32
+ step: 0.01,
33
+ default: DEFAULT_START,
34
+ description: "Start",
35
+ visual: {
36
+ type: "line",
37
+ to: "end"
38
+ }
39
+ },
40
+ end: {
41
+ type: "uv-coordinate",
42
+ min: -1,
43
+ max: 2,
44
+ step: 0.01,
45
+ default: DEFAULT_END,
46
+ description: "End"
47
+ },
48
+ startBlockSize: {
49
+ type: "number",
50
+ min: 1,
51
+ max: 200,
52
+ step: 1,
53
+ default: DEFAULT_START_BLOCK_SIZE,
54
+ description: "Start block size",
55
+ hiddenFromList: false
56
+ },
57
+ endBlockSize: {
58
+ type: "number",
59
+ min: 1,
60
+ max: 200,
61
+ step: 1,
62
+ default: DEFAULT_END_BLOCK_SIZE,
63
+ description: "End block size",
64
+ hiddenFromList: false
65
+ }
66
+ };
67
+ var resolve = (params) => ({
68
+ start: [
69
+ ...params.start ?? DEFAULT_START
70
+ ],
71
+ end: [
72
+ ...params.end ?? DEFAULT_END
73
+ ],
74
+ startBlockSize: params.startBlockSize ?? DEFAULT_START_BLOCK_SIZE,
75
+ endBlockSize: params.endBlockSize ?? DEFAULT_END_BLOCK_SIZE
76
+ });
77
+ var assertOptionalUvCoordinate = (value, name) => {
78
+ if (value === undefined) {
79
+ return;
80
+ }
81
+ if (!Array.isArray(value) || value.length !== 2 || value.some((item) => typeof item !== "number" || !Number.isFinite(item))) {
82
+ throw new TypeError(`"${name}" must be a [number, number] tuple`);
83
+ }
84
+ };
85
+ var validateBlockSize = (value, name) => {
86
+ if (value < 1) {
87
+ throw new TypeError(`"${name}" must be >= 1`);
88
+ }
89
+ };
90
+ var validateParams = (params) => {
91
+ assertEffectParamsObject(params, "Linear progressive pixelate");
92
+ assertOptionalUvCoordinate(params.start, "start");
93
+ assertOptionalUvCoordinate(params.end, "end");
94
+ assertOptionalFiniteNumber(params.startBlockSize, "startBlockSize");
95
+ assertOptionalFiniteNumber(params.endBlockSize, "endBlockSize");
96
+ validateBlockSize(params.startBlockSize ?? DEFAULT_START_BLOCK_SIZE, "startBlockSize");
97
+ validateBlockSize(params.endBlockSize ?? DEFAULT_END_BLOCK_SIZE, "endBlockSize");
98
+ };
99
+ var linearProgressivePixelate = createEffect({
100
+ type: "dev.remotion.effects.linearProgressivePixelate",
101
+ label: "linearProgressivePixelate()",
102
+ documentationLink: "https://www.remotion.dev/docs/effects/linear-progressive-pixelate",
103
+ calculateKey: (params) => {
104
+ const r = resolve(params);
105
+ return `linear-progressive-pixelate-${r.start.join(":")}-${r.end.join(":")}-${r.startBlockSize}-${r.endBlockSize}`;
106
+ },
107
+ implementations: {
108
+ webgpu: Internals.createEffectImplementation({
109
+ setup: (target) => setupWebGpuSinglePass(target, "linear-progressive-pixelate"),
110
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
111
+ if (!gpuDevice) {
112
+ throw new Error("A WebGPU device is required for the linear-progressive-pixelate effect");
113
+ }
114
+ const r = resolve(params);
115
+ applyWebGpuSinglePass({
116
+ source,
117
+ width,
118
+ height,
119
+ state,
120
+ device: gpuDevice,
121
+ shader: PROGRESSIVE_PIXELATE_WEBGPU_SHADER,
122
+ uniformData: new Float32Array([
123
+ width,
124
+ height,
125
+ 0,
126
+ r.startBlockSize,
127
+ r.start[0],
128
+ r.start[1],
129
+ r.end[0],
130
+ r.end[1],
131
+ 0,
132
+ 0,
133
+ 0,
134
+ 0,
135
+ 0,
136
+ 0,
137
+ r.endBlockSize,
138
+ 0
139
+ ])
140
+ });
141
+ },
142
+ cleanup: cleanupWebGpuSinglePass
143
+ }),
144
+ webgl2: Internals.createEffectImplementation({
145
+ setup: setupProgressivePixelate,
146
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
147
+ const r = resolve(params);
148
+ prepareProgressivePixelate({
149
+ state,
150
+ source,
151
+ width,
152
+ height,
153
+ flipSourceY
154
+ });
155
+ const { gl, uniforms } = state;
156
+ if (uniforms.uMode)
157
+ gl.uniform1i(uniforms.uMode, 0);
158
+ if (uniforms.uStart)
159
+ gl.uniform2f(uniforms.uStart, r.start[0], r.start[1]);
160
+ if (uniforms.uEnd)
161
+ gl.uniform2f(uniforms.uEnd, r.end[0], r.end[1]);
162
+ if (uniforms.uStartBlockSize)
163
+ gl.uniform1f(uniforms.uStartBlockSize, r.startBlockSize);
164
+ if (uniforms.uEndBlockSize)
165
+ gl.uniform1f(uniforms.uEndBlockSize, r.endBlockSize);
166
+ drawProgressivePixelate(state);
167
+ },
168
+ cleanup: cleanupProgressivePixelate
169
+ })
170
+ },
171
+ schema: linearProgressivePixelateSchema,
172
+ validateParams
173
+ });
174
+ export {
175
+ linearProgressivePixelate
176
+ };