@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,435 @@
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
+ BLUR_VS,
11
+ BLUR_FS_HORIZONTAL,
12
+ BLUR_FS_VERTICAL
13
+ } from "./index-b86qstcs.mjs";
14
+ import {
15
+ assertEffectParamsObject,
16
+ assertRequiredFiniteNumber
17
+ } from "./index-4fvp93ps.mjs";
18
+
19
+ // src/blur/index.ts
20
+ import { Internals as Internals2 } from "remotion";
21
+
22
+ // src/blur/blur-runtime.ts
23
+ import { Internals } from "remotion";
24
+ var { createWebGL2ContextError } = Internals;
25
+ var compileShader = (gl, type, source) => {
26
+ const shader = gl.createShader(type);
27
+ if (!shader) {
28
+ throw new Error("Failed to create WebGL shader");
29
+ }
30
+ gl.shaderSource(shader, source);
31
+ gl.compileShader(shader);
32
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
33
+ const log = gl.getShaderInfoLog(shader);
34
+ gl.deleteShader(shader);
35
+ throw new Error(`Shader compile failed: ${log ?? "(no log)"}`);
36
+ }
37
+ return shader;
38
+ };
39
+ var linkProgram = (gl, vs, fs) => {
40
+ const program = gl.createProgram();
41
+ if (!program) {
42
+ throw new Error("Failed to create WebGL program");
43
+ }
44
+ gl.attachShader(program, vs);
45
+ gl.attachShader(program, fs);
46
+ gl.linkProgram(program);
47
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
48
+ const log = gl.getProgramInfoLog(program);
49
+ gl.deleteProgram(program);
50
+ throw new Error(`Program link failed: ${log ?? "(no log)"}`);
51
+ }
52
+ return program;
53
+ };
54
+ var createProgram = (gl, vertexSource, fragmentSource) => {
55
+ const vs = compileShader(gl, gl.VERTEX_SHADER, vertexSource);
56
+ const fs = compileShader(gl, gl.FRAGMENT_SHADER, fragmentSource);
57
+ const program = linkProgram(gl, vs, fs);
58
+ gl.deleteShader(vs);
59
+ gl.deleteShader(fs);
60
+ return program;
61
+ };
62
+ var getBlurUniforms = (gl, program) => ({
63
+ uRadius: gl.getUniformLocation(program, "uRadius"),
64
+ uTexelSize: gl.getUniformLocation(program, "uTexelSize"),
65
+ uSource: gl.getUniformLocation(program, "uSource")
66
+ });
67
+ var createRgbaTexture = (gl) => {
68
+ const texture = gl.createTexture();
69
+ if (!texture) {
70
+ throw new Error("Failed to create WebGL texture");
71
+ }
72
+ gl.bindTexture(gl.TEXTURE_2D, texture);
73
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
74
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
75
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
76
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
77
+ gl.bindTexture(gl.TEXTURE_2D, null);
78
+ return texture;
79
+ };
80
+ var setupBlur = (target) => {
81
+ const gl = target.getContext("webgl2", {
82
+ premultipliedAlpha: true,
83
+ alpha: true,
84
+ preserveDrawingBuffer: true
85
+ });
86
+ if (!gl) {
87
+ throw createWebGL2ContextError("blur effect");
88
+ }
89
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
90
+ const programHorizontal = createProgram(gl, BLUR_VS, BLUR_FS_HORIZONTAL);
91
+ const programVertical = createProgram(gl, BLUR_VS, BLUR_FS_VERTICAL);
92
+ const vao = gl.createVertexArray();
93
+ if (!vao) {
94
+ throw new Error("Failed to create WebGL vertex array");
95
+ }
96
+ gl.bindVertexArray(vao);
97
+ const data = new Float32Array([
98
+ -1,
99
+ -1,
100
+ 0,
101
+ 0,
102
+ 1,
103
+ -1,
104
+ 1,
105
+ 0,
106
+ -1,
107
+ 1,
108
+ 0,
109
+ 1,
110
+ 1,
111
+ 1,
112
+ 1,
113
+ 1
114
+ ]);
115
+ const vbo = gl.createBuffer();
116
+ if (!vbo) {
117
+ throw new Error("Failed to create WebGL buffer");
118
+ }
119
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
120
+ gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
121
+ gl.enableVertexAttribArray(0);
122
+ gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 16, 0);
123
+ gl.enableVertexAttribArray(1);
124
+ gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 16, 8);
125
+ gl.bindVertexArray(null);
126
+ const textureSource = createRgbaTexture(gl);
127
+ const textureIntermediate = createRgbaTexture(gl);
128
+ const framebuffer = gl.createFramebuffer();
129
+ if (!framebuffer) {
130
+ throw new Error("Failed to create WebGL framebuffer");
131
+ }
132
+ const w = Math.max(1, target.width);
133
+ const h = Math.max(1, target.height);
134
+ gl.bindTexture(gl.TEXTURE_2D, textureIntermediate);
135
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
136
+ gl.bindTexture(gl.TEXTURE_2D, null);
137
+ gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
138
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, textureIntermediate, 0);
139
+ const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
140
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
141
+ if (status !== gl.FRAMEBUFFER_COMPLETE) {
142
+ throw new Error(`Blur framebuffer incomplete: 0x${status.toString(16)}`);
143
+ }
144
+ return {
145
+ gl,
146
+ programHorizontal,
147
+ programVertical,
148
+ vao,
149
+ vbo,
150
+ textureSource,
151
+ textureIntermediate,
152
+ framebuffer,
153
+ horizontal: getBlurUniforms(gl, programHorizontal),
154
+ vertical: getBlurUniforms(gl, programVertical)
155
+ };
156
+ };
157
+ var cleanupBlur = (state) => {
158
+ const {
159
+ gl,
160
+ programHorizontal,
161
+ programVertical,
162
+ vao,
163
+ vbo,
164
+ textureSource,
165
+ textureIntermediate,
166
+ framebuffer
167
+ } = state;
168
+ gl.deleteFramebuffer(framebuffer);
169
+ gl.deleteTexture(textureSource);
170
+ gl.deleteTexture(textureIntermediate);
171
+ gl.deleteBuffer(vbo);
172
+ gl.deleteProgram(programHorizontal);
173
+ gl.deleteProgram(programVertical);
174
+ gl.deleteVertexArray(vao);
175
+ };
176
+ var setBlurUniforms = ({
177
+ gl,
178
+ uniforms,
179
+ radius,
180
+ width,
181
+ height
182
+ }) => {
183
+ if (uniforms.uSource)
184
+ gl.uniform1i(uniforms.uSource, 0);
185
+ if (uniforms.uRadius)
186
+ gl.uniform1f(uniforms.uRadius, radius);
187
+ if (uniforms.uTexelSize)
188
+ gl.uniform2f(uniforms.uTexelSize, 1 / width, 1 / height);
189
+ };
190
+ var drawFullscreenQuad = (state) => {
191
+ const { gl, vao } = state;
192
+ gl.bindVertexArray(vao);
193
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
194
+ gl.bindVertexArray(null);
195
+ };
196
+ var uploadBlurSource = ({
197
+ gl,
198
+ textureSource,
199
+ source,
200
+ textureIntermediate,
201
+ width,
202
+ height,
203
+ flipSourceY
204
+ }) => {
205
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);
206
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
207
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
208
+ gl.bindTexture(gl.TEXTURE_2D, textureIntermediate);
209
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
210
+ gl.bindTexture(gl.TEXTURE_2D, null);
211
+ };
212
+ var applyBlur = ({
213
+ state,
214
+ source,
215
+ width,
216
+ height,
217
+ radius,
218
+ horizontal,
219
+ vertical,
220
+ flipSourceY
221
+ }) => {
222
+ const {
223
+ gl,
224
+ programHorizontal,
225
+ programVertical,
226
+ textureSource,
227
+ textureIntermediate,
228
+ framebuffer
229
+ } = state;
230
+ gl.viewport(0, 0, width, height);
231
+ uploadBlurSource({
232
+ gl,
233
+ textureSource,
234
+ source,
235
+ textureIntermediate,
236
+ width,
237
+ height,
238
+ flipSourceY
239
+ });
240
+ gl.clearColor(0, 0, 0, 0);
241
+ if (!horizontal && !vertical) {
242
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
243
+ gl.clear(gl.COLOR_BUFFER_BIT);
244
+ gl.activeTexture(gl.TEXTURE0);
245
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
246
+ gl.useProgram(programVertical);
247
+ setBlurUniforms({
248
+ gl,
249
+ uniforms: state.vertical,
250
+ radius: 0,
251
+ width,
252
+ height
253
+ });
254
+ drawFullscreenQuad(state);
255
+ gl.bindTexture(gl.TEXTURE_2D, null);
256
+ gl.useProgram(null);
257
+ return;
258
+ }
259
+ if (horizontal && vertical) {
260
+ gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
261
+ gl.clear(gl.COLOR_BUFFER_BIT);
262
+ gl.activeTexture(gl.TEXTURE0);
263
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
264
+ gl.useProgram(programHorizontal);
265
+ setBlurUniforms({
266
+ gl,
267
+ uniforms: state.horizontal,
268
+ radius,
269
+ width,
270
+ height
271
+ });
272
+ drawFullscreenQuad(state);
273
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
274
+ gl.clear(gl.COLOR_BUFFER_BIT);
275
+ gl.bindTexture(gl.TEXTURE_2D, textureIntermediate);
276
+ gl.useProgram(programVertical);
277
+ setBlurUniforms({
278
+ gl,
279
+ uniforms: state.vertical,
280
+ radius,
281
+ width,
282
+ height
283
+ });
284
+ drawFullscreenQuad(state);
285
+ gl.bindTexture(gl.TEXTURE_2D, null);
286
+ gl.useProgram(null);
287
+ return;
288
+ }
289
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
290
+ gl.clear(gl.COLOR_BUFFER_BIT);
291
+ gl.activeTexture(gl.TEXTURE0);
292
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
293
+ gl.useProgram(horizontal ? programHorizontal : programVertical);
294
+ setBlurUniforms({
295
+ gl,
296
+ uniforms: horizontal ? state.horizontal : state.vertical,
297
+ radius,
298
+ width,
299
+ height
300
+ });
301
+ drawFullscreenQuad(state);
302
+ gl.bindTexture(gl.TEXTURE_2D, null);
303
+ gl.useProgram(null);
304
+ };
305
+
306
+ // src/blur/index.ts
307
+ var { createEffect } = Internals2;
308
+ var resolveBlurParams = (params) => ({
309
+ radius: params.radius,
310
+ horizontal: params.horizontal ?? true,
311
+ vertical: params.vertical ?? true
312
+ });
313
+ var blurSchema = {
314
+ radius: {
315
+ type: "number",
316
+ min: 0,
317
+ max: 100,
318
+ step: 1,
319
+ default: 40,
320
+ description: "Radius",
321
+ hiddenFromList: false
322
+ },
323
+ horizontal: {
324
+ type: "boolean",
325
+ default: true,
326
+ description: "Horizontal"
327
+ },
328
+ vertical: {
329
+ type: "boolean",
330
+ default: true,
331
+ description: "Vertical"
332
+ }
333
+ };
334
+ var validateBlurParams = (params) => {
335
+ assertEffectParamsObject(params, "Blur");
336
+ assertRequiredFiniteNumber(params.radius, "radius");
337
+ };
338
+ var blur = createEffect({
339
+ type: "dev.remotion.effects.blur",
340
+ label: "blur()",
341
+ documentationLink: "https://www.remotion.dev/docs/effects/blur",
342
+ calculateKey: (params) => {
343
+ const r = resolveBlurParams(params);
344
+ return `${r.radius}-${r.horizontal ? 1 : 0}-${r.vertical ? 1 : 0}`;
345
+ },
346
+ implementations: {
347
+ webgpu: Internals2.createEffectImplementation({
348
+ setup: (target) => setupWebGpuMultipass(target, "blur"),
349
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
350
+ if (!gpuDevice)
351
+ throw new Error("A WebGPU device is required for this effect");
352
+ const r = resolveBlurParams(params);
353
+ applyWebGpuMultipass({
354
+ auxiliarySource: null,
355
+ state,
356
+ source,
357
+ width,
358
+ height,
359
+ device: gpuDevice,
360
+ passes: [
361
+ {
362
+ shader: GAUSSIAN_BLUR_WEBGPU_SHADER,
363
+ uniforms: new Float32Array([
364
+ width,
365
+ height,
366
+ 1,
367
+ 0,
368
+ r.horizontal ? r.radius : 0,
369
+ 0,
370
+ 0,
371
+ 0,
372
+ 0,
373
+ 0,
374
+ 0,
375
+ 0,
376
+ 0,
377
+ 0,
378
+ 0,
379
+ 0
380
+ ]),
381
+ source: -1,
382
+ secondary: -1
383
+ },
384
+ {
385
+ shader: GAUSSIAN_BLUR_WEBGPU_SHADER,
386
+ uniforms: new Float32Array([
387
+ width,
388
+ height,
389
+ 0,
390
+ 1,
391
+ r.vertical ? r.radius : 0,
392
+ 0,
393
+ 0,
394
+ 0,
395
+ 0,
396
+ 0,
397
+ 0,
398
+ 0,
399
+ 0,
400
+ 0,
401
+ 0,
402
+ 0
403
+ ]),
404
+ source: 0,
405
+ secondary: -1
406
+ }
407
+ ]
408
+ });
409
+ },
410
+ cleanup: cleanupWebGpuMultipass
411
+ }),
412
+ webgl2: Internals2.createEffectImplementation({
413
+ setup: (target) => setupBlur(target),
414
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
415
+ const r = resolveBlurParams(params);
416
+ applyBlur({
417
+ state,
418
+ source,
419
+ width,
420
+ height,
421
+ radius: r.radius,
422
+ horizontal: r.horizontal,
423
+ vertical: r.vertical,
424
+ flipSourceY
425
+ });
426
+ },
427
+ cleanup: (state) => cleanupBlur(state)
428
+ })
429
+ },
430
+ schema: blurSchema,
431
+ validateParams: validateBlurParams
432
+ });
433
+ export {
434
+ blur
435
+ };
@@ -0,0 +1,95 @@
1
+ import"./index-8p04sssx.mjs";
2
+ import {
3
+ createColorMatrixImplementations
4
+ } from "./index-cdp7tr8x.mjs";
5
+ import {
6
+ DEFAULT_BRIGHTNESS_AMOUNT,
7
+ brightnessAmountSchema,
8
+ assertOptionalFiniteNumber,
9
+ validateSignedUnitInterval,
10
+ clampColorChannel
11
+ } from "./index-wxhvgv2s.mjs";
12
+ import {
13
+ assertEffectParamsObject
14
+ } from "./index-4fvp93ps.mjs";
15
+
16
+ // src/brightness.ts
17
+ import { Internals } from "remotion";
18
+ var { createEffect } = Internals;
19
+ var brightnessSchema = {
20
+ amount: brightnessAmountSchema
21
+ };
22
+ var resolve = (p) => ({
23
+ amount: p.amount ?? DEFAULT_BRIGHTNESS_AMOUNT
24
+ });
25
+ var validateBrightnessParams = (params) => {
26
+ assertEffectParamsObject(params, "Brightness");
27
+ assertOptionalFiniteNumber(params.amount, "amount");
28
+ const { amount } = resolve(params);
29
+ validateSignedUnitInterval(amount, "amount");
30
+ };
31
+ var brightness = createEffect({
32
+ type: "dev.remotion.effects.brightness",
33
+ label: "brightness()",
34
+ documentationLink: "https://www.remotion.dev/docs/effects/brightness",
35
+ calculateKey: (params) => {
36
+ const r = resolve(params);
37
+ return `brightness-${r.amount}`;
38
+ },
39
+ implementations: {
40
+ ...createColorMatrixImplementations("brightness", (params) => {
41
+ const { amount } = resolve(params);
42
+ const offset = Math.round(amount * 255);
43
+ return new Float32Array([
44
+ 1,
45
+ 0,
46
+ 0,
47
+ offset,
48
+ 0,
49
+ 1,
50
+ 0,
51
+ offset,
52
+ 0,
53
+ 0,
54
+ 1,
55
+ offset,
56
+ 1,
57
+ 1,
58
+ amount === 0 ? 1 : 0,
59
+ 0
60
+ ]);
61
+ }),
62
+ "2d": Internals.createEffectImplementation({
63
+ setup: () => null,
64
+ apply: ({ source, target, width, height, params }) => {
65
+ const ctx = target.getContext("2d");
66
+ if (!ctx) {
67
+ throw new Error("Failed to acquire 2D context for brightness effect. The canvas may have been assigned a different context type.");
68
+ }
69
+ const r = resolve(params);
70
+ ctx.clearRect(0, 0, width, height);
71
+ ctx.drawImage(source, 0, 0, width, height);
72
+ if (r.amount === 0) {
73
+ return;
74
+ }
75
+ const imageData = ctx.getImageData(0, 0, width, height);
76
+ const delta = Math.round(r.amount * 255);
77
+ const { data } = imageData;
78
+ for (let i = 0;i < data.length; i += 4) {
79
+ data[i] = clampColorChannel(data[i] + delta);
80
+ data[i + 1] = clampColorChannel(data[i + 1] + delta);
81
+ data[i + 2] = clampColorChannel(data[i + 2] + delta);
82
+ }
83
+ ctx.putImageData(imageData, 0, 0);
84
+ },
85
+ cleanup: () => {
86
+ return;
87
+ }
88
+ })
89
+ },
90
+ schema: brightnessSchema,
91
+ validateParams: validateBrightnessParams
92
+ });
93
+ export {
94
+ brightness
95
+ };