@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,280 @@
1
+ import {
2
+ COLOR_SPACE_GLSL,
3
+ WHITE_BALANCE_GLSL,
4
+ COLOR_SPACE_WGSL,
5
+ WHITE_BALANCE_WGSL
6
+ } from "./index-6jkps947.mjs";
7
+ import {
8
+ assertOptionalFiniteNumber,
9
+ validateSignedUnitInterval
10
+ } from "./index-wxhvgv2s.mjs";
11
+ import {
12
+ WEBGPU_SINGLE_PASS_VERTEX,
13
+ setupWebGpuSinglePass,
14
+ cleanupWebGpuSinglePass,
15
+ applyWebGpuSinglePass
16
+ } from "./index-tvfexb7s.mjs";
17
+ import {
18
+ assertEffectParamsObject
19
+ } from "./index-4fvp93ps.mjs";
20
+
21
+ // src/white-balance.ts
22
+ import { Internals } from "remotion";
23
+ var { createEffect, createWebGL2ContextError } = Internals;
24
+ var DEFAULT_TEMPERATURE = 0;
25
+ var DEFAULT_TINT = 0;
26
+ var whiteBalanceSchema = {
27
+ temperature: {
28
+ type: "number",
29
+ min: -1,
30
+ max: 1,
31
+ step: 0.01,
32
+ default: DEFAULT_TEMPERATURE,
33
+ description: "Temperature",
34
+ hiddenFromList: false
35
+ },
36
+ tint: {
37
+ type: "number",
38
+ min: -1,
39
+ max: 1,
40
+ step: 0.01,
41
+ default: DEFAULT_TINT,
42
+ description: "Tint",
43
+ hiddenFromList: false
44
+ }
45
+ };
46
+ var resolve = (params) => ({
47
+ temperature: params.temperature ?? DEFAULT_TEMPERATURE,
48
+ tint: params.tint ?? DEFAULT_TINT
49
+ });
50
+ var validateWhiteBalanceParams = (params) => {
51
+ assertEffectParamsObject(params, "White balance");
52
+ assertOptionalFiniteNumber(params.temperature, "temperature");
53
+ assertOptionalFiniteNumber(params.tint, "tint");
54
+ const { temperature, tint } = resolve(params);
55
+ validateSignedUnitInterval(temperature, "temperature");
56
+ validateSignedUnitInterval(tint, "tint");
57
+ };
58
+ var VERTEX_SHADER = `#version 300 es
59
+ in vec2 aPos;
60
+ in vec2 aUv;
61
+ out vec2 vUv;
62
+
63
+ void main() {
64
+ vUv = aUv;
65
+ gl_Position = vec4(aPos, 0.0, 1.0);
66
+ }
67
+ `;
68
+ var FRAGMENT_SHADER = `#version 300 es
69
+ precision highp float;
70
+
71
+ in vec2 vUv;
72
+ out vec4 fragColor;
73
+
74
+ uniform sampler2D uSource;
75
+ uniform float uTemperature;
76
+ uniform float uTint;
77
+
78
+ ${COLOR_SPACE_GLSL}
79
+ ${WHITE_BALANCE_GLSL}
80
+
81
+ void main() {
82
+ vec4 sourceColor = texture(uSource, vUv);
83
+ float alpha = sourceColor.a;
84
+
85
+ if (alpha <= 0.0) {
86
+ fragColor = vec4(0.0);
87
+ return;
88
+ }
89
+
90
+ vec3 unpremultiplied = sourceColor.rgb / alpha;
91
+ vec3 linear = srgbToLinear(unpremultiplied);
92
+ vec3 balanced = applyWhiteBalanceLinear(linear, uTemperature, uTint);
93
+ vec3 corrected = linearToSrgb(balanced);
94
+
95
+ fragColor = vec4(corrected * alpha, alpha);
96
+ }
97
+ `;
98
+ var WEBGPU_SHADER = `
99
+ ${WEBGPU_SINGLE_PASS_VERTEX}
100
+ struct Params {
101
+ temperature: f32,
102
+ tint: f32,
103
+ padding0: f32,
104
+ padding1: f32,
105
+ }
106
+ @group(0) @binding(0) var source: texture_2d<f32>;
107
+ @group(0) @binding(1) var sourceSampler: sampler;
108
+ @group(0) @binding(2) var<uniform> params: Params;
109
+ ${COLOR_SPACE_WGSL}
110
+ ${WHITE_BALANCE_WGSL}
111
+
112
+ @fragment fn fragment(input: VertexOutput) -> @location(0) vec4f {
113
+ let sourceColor = textureSampleLevel(source, sourceSampler, input.uv, 0.0);
114
+ let alpha = sourceColor.a;
115
+ if (alpha <= 0.0) {
116
+ return vec4f(0.0);
117
+ }
118
+ let linear = srgbToLinear(sourceColor.rgb / alpha);
119
+ let balanced = applyWhiteBalanceLinear(linear, params.temperature, params.tint);
120
+ let corrected = linearToSrgb(balanced);
121
+ return vec4f(corrected * alpha, alpha);
122
+ }
123
+ `;
124
+ var compileShader = (gl, type, source) => {
125
+ const shader = gl.createShader(type);
126
+ if (!shader) {
127
+ throw new Error("Failed to create white balance shader");
128
+ }
129
+ gl.shaderSource(shader, source);
130
+ gl.compileShader(shader);
131
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
132
+ const log = gl.getShaderInfoLog(shader);
133
+ gl.deleteShader(shader);
134
+ throw new Error(`White balance shader compile failed: ${log ?? "(no log)"}`);
135
+ }
136
+ return shader;
137
+ };
138
+ var createProgram = (gl) => {
139
+ const vertexShader = compileShader(gl, gl.VERTEX_SHADER, VERTEX_SHADER);
140
+ const fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, FRAGMENT_SHADER);
141
+ const program = gl.createProgram();
142
+ if (!program) {
143
+ throw new Error("Failed to create white balance shader program");
144
+ }
145
+ gl.attachShader(program, vertexShader);
146
+ gl.attachShader(program, fragmentShader);
147
+ gl.linkProgram(program);
148
+ gl.deleteShader(vertexShader);
149
+ gl.deleteShader(fragmentShader);
150
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
151
+ const log = gl.getProgramInfoLog(program);
152
+ gl.deleteProgram(program);
153
+ throw new Error(`White balance shader link failed: ${log ?? "(no log)"}`);
154
+ }
155
+ return program;
156
+ };
157
+ var createTexture = (gl) => {
158
+ const texture = gl.createTexture();
159
+ if (!texture) {
160
+ throw new Error("Failed to create white balance texture");
161
+ }
162
+ gl.bindTexture(gl.TEXTURE_2D, texture);
163
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
164
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
165
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
166
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
167
+ gl.bindTexture(gl.TEXTURE_2D, null);
168
+ return texture;
169
+ };
170
+ var setupWhiteBalance = (target) => {
171
+ const gl = target.getContext("webgl2", {
172
+ premultipliedAlpha: true,
173
+ alpha: true,
174
+ preserveDrawingBuffer: true
175
+ });
176
+ if (!gl) {
177
+ throw createWebGL2ContextError("white balance effect");
178
+ }
179
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
180
+ const program = createProgram(gl);
181
+ const vao = gl.createVertexArray();
182
+ if (!vao) {
183
+ throw new Error("Failed to create white balance vertex array");
184
+ }
185
+ const vbo = gl.createBuffer();
186
+ if (!vbo) {
187
+ throw new Error("Failed to create white balance vertex buffer");
188
+ }
189
+ gl.bindVertexArray(vao);
190
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
191
+ 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);
192
+ const aPos = gl.getAttribLocation(program, "aPos");
193
+ const aUv = gl.getAttribLocation(program, "aUv");
194
+ gl.enableVertexAttribArray(aPos);
195
+ gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 16, 0);
196
+ gl.enableVertexAttribArray(aUv);
197
+ gl.vertexAttribPointer(aUv, 2, gl.FLOAT, false, 16, 8);
198
+ gl.bindVertexArray(null);
199
+ return {
200
+ gl,
201
+ program,
202
+ vao,
203
+ vbo,
204
+ textureSource: createTexture(gl),
205
+ uniforms: {
206
+ uSource: gl.getUniformLocation(program, "uSource"),
207
+ uTemperature: gl.getUniformLocation(program, "uTemperature"),
208
+ uTint: gl.getUniformLocation(program, "uTint")
209
+ }
210
+ };
211
+ };
212
+ var whiteBalance = createEffect({
213
+ type: "remotion/white-balance",
214
+ label: "whiteBalance()",
215
+ documentationLink: "https://www.remotion.dev/docs/effects/white-balance",
216
+ calculateKey: (params) => {
217
+ const { temperature, tint } = resolve(params);
218
+ return `white-balance-${temperature}-${tint}`;
219
+ },
220
+ implementations: {
221
+ webgpu: Internals.createEffectImplementation({
222
+ setup: (target) => setupWebGpuSinglePass(target, "white balance"),
223
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
224
+ if (!gpuDevice) {
225
+ throw new Error("A WebGPU device is required for the white balance effect");
226
+ }
227
+ const r = resolve(params);
228
+ applyWebGpuSinglePass({
229
+ state,
230
+ source,
231
+ width,
232
+ height,
233
+ device: gpuDevice,
234
+ shader: WEBGPU_SHADER,
235
+ uniformData: new Float32Array([r.temperature, r.tint, 0, 0])
236
+ });
237
+ },
238
+ cleanup: cleanupWebGpuSinglePass
239
+ }),
240
+ webgl2: Internals.createEffectImplementation({
241
+ setup: setupWhiteBalance,
242
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
243
+ const { temperature, tint } = resolve(params);
244
+ const { gl, program, textureSource, uniforms, vao } = state;
245
+ gl.viewport(0, 0, width, height);
246
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
247
+ gl.clearColor(0, 0, 0, 0);
248
+ gl.clear(gl.COLOR_BUFFER_BIT);
249
+ gl.activeTexture(gl.TEXTURE0);
250
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
251
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);
252
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
253
+ gl.useProgram(program);
254
+ if (uniforms.uSource)
255
+ gl.uniform1i(uniforms.uSource, 0);
256
+ if (uniforms.uTemperature) {
257
+ gl.uniform1f(uniforms.uTemperature, temperature);
258
+ }
259
+ if (uniforms.uTint)
260
+ gl.uniform1f(uniforms.uTint, tint);
261
+ gl.bindVertexArray(vao);
262
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
263
+ gl.bindVertexArray(null);
264
+ gl.bindTexture(gl.TEXTURE_2D, null);
265
+ gl.useProgram(null);
266
+ },
267
+ cleanup: ({ gl, program, vao, vbo, textureSource }) => {
268
+ gl.deleteTexture(textureSource);
269
+ gl.deleteBuffer(vbo);
270
+ gl.deleteProgram(program);
271
+ gl.deleteVertexArray(vao);
272
+ }
273
+ })
274
+ },
275
+ schema: whiteBalanceSchema,
276
+ validateParams: validateWhiteBalanceParams
277
+ });
278
+ export {
279
+ whiteBalance
280
+ };
@@ -0,0 +1,244 @@
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/white-noise.ts
16
+ import { Internals } from "remotion";
17
+
18
+ // src/white-noise-webgpu-shader.ts
19
+ var WHITE_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, }
26
+ fn random(co: vec2f) -> f32 {
27
+ return fract(sin(dot(co, vec2f(12.9898, 78.233)) + params.seed * 37.719) * 43758.5453);
28
+ }
29
+ @fragment fn fragment(input: VertexOutput) -> @location(0) vec4f {
30
+ let color = textureSampleLevel(source, sourceSampler, input.uv, 0);
31
+ let noise = random(vec2f(input.position.x, params.size.y - input.position.y));
32
+ var rgb = vec3f(0);
33
+ if (color.a != 0.0) { rgb = color.rgb / color.a; }
34
+ return vec4f(mix(rgb, vec3f(noise), params.amount) * color.a, color.a);
35
+ }
36
+
37
+ `;
38
+
39
+ // src/white-noise.ts
40
+ var { createEffect, createWebGL2ContextError } = Internals;
41
+ var DEFAULT_AMOUNT = 1;
42
+ var DEFAULT_SEED = 0;
43
+ var whiteNoiseSchema = {
44
+ amount: {
45
+ type: "number",
46
+ min: 0,
47
+ max: 1,
48
+ step: 0.01,
49
+ default: DEFAULT_AMOUNT,
50
+ description: "Amount",
51
+ hiddenFromList: false
52
+ },
53
+ seed: {
54
+ type: "number",
55
+ step: 1,
56
+ default: DEFAULT_SEED,
57
+ description: "Seed",
58
+ hiddenFromList: false
59
+ }
60
+ };
61
+ var resolve = (params) => ({
62
+ amount: params.amount ?? DEFAULT_AMOUNT,
63
+ seed: params.seed ?? DEFAULT_SEED
64
+ });
65
+ var validateWhiteNoiseParams = (params) => {
66
+ assertEffectParamsObject(params, "White noise");
67
+ assertOptionalFiniteNumber(params.amount, "amount");
68
+ assertOptionalFiniteNumber(params.seed, "seed");
69
+ validateUnitInterval(params.amount ?? DEFAULT_AMOUNT, "amount");
70
+ };
71
+ var VERTEX_SHADER = `#version 300 es
72
+ in vec2 aPos;
73
+ in vec2 aUv;
74
+ out vec2 vUv;
75
+
76
+ void main() {
77
+ vUv = aUv;
78
+ gl_Position = vec4(aPos, 0.0, 1.0);
79
+ }
80
+ `;
81
+ var FRAGMENT_SHADER = `#version 300 es
82
+ precision highp float;
83
+
84
+ in vec2 vUv;
85
+ out vec4 fragColor;
86
+
87
+ uniform sampler2D uSource;
88
+ uniform float uAmount;
89
+ uniform float uSeed;
90
+
91
+ float random(vec2 co) {
92
+ return fract(sin(dot(co, vec2(12.9898, 78.233)) + uSeed * 37.719) * 43758.5453);
93
+ }
94
+
95
+ void main() {
96
+ vec4 color = texture(uSource, vUv);
97
+ float noise = random(gl_FragCoord.xy);
98
+ vec3 unpremultiplied = color.a == 0.0 ? vec3(0.0) : color.rgb / color.a;
99
+ vec3 mixed = mix(unpremultiplied, vec3(noise), uAmount);
100
+ fragColor = vec4(mixed * color.a, color.a);
101
+ }
102
+ `;
103
+ var compileShader = (gl, type, source) => {
104
+ const shader = gl.createShader(type);
105
+ if (!shader) {
106
+ throw new Error("Failed to create shader");
107
+ }
108
+ gl.shaderSource(shader, source);
109
+ gl.compileShader(shader);
110
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
111
+ const info = gl.getShaderInfoLog(shader) ?? "Unknown shader compile error";
112
+ gl.deleteShader(shader);
113
+ throw new Error(info);
114
+ }
115
+ return shader;
116
+ };
117
+ var createProgram = (gl, vertexSource, fragmentSource) => {
118
+ const vertex = compileShader(gl, gl.VERTEX_SHADER, vertexSource);
119
+ const fragment = compileShader(gl, gl.FRAGMENT_SHADER, fragmentSource);
120
+ const program = gl.createProgram();
121
+ if (!program) {
122
+ throw new Error("Failed to create program");
123
+ }
124
+ gl.attachShader(program, vertex);
125
+ gl.attachShader(program, fragment);
126
+ gl.linkProgram(program);
127
+ gl.deleteShader(vertex);
128
+ gl.deleteShader(fragment);
129
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
130
+ const info = gl.getProgramInfoLog(program) ?? "Unknown program link error";
131
+ gl.deleteProgram(program);
132
+ throw new Error(info);
133
+ }
134
+ return program;
135
+ };
136
+ var createWhiteNoiseState = (gl, vertexSource, fragmentSource) => {
137
+ const program = createProgram(gl, vertexSource, fragmentSource);
138
+ const vao = gl.createVertexArray();
139
+ const vbo = gl.createBuffer();
140
+ const texture = gl.createTexture();
141
+ if (!vao || !vbo || !texture) {
142
+ throw new Error("Failed to create WebGL resources");
143
+ }
144
+ gl.bindVertexArray(vao);
145
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
146
+ 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);
147
+ const aPos = gl.getAttribLocation(program, "aPos");
148
+ const aUv = gl.getAttribLocation(program, "aUv");
149
+ gl.enableVertexAttribArray(aPos);
150
+ gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 16, 0);
151
+ gl.enableVertexAttribArray(aUv);
152
+ gl.vertexAttribPointer(aUv, 2, gl.FLOAT, false, 16, 8);
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
+ return {
159
+ gl,
160
+ program,
161
+ vao,
162
+ vbo,
163
+ texture,
164
+ uSource: gl.getUniformLocation(program, "uSource"),
165
+ uAmount: gl.getUniformLocation(program, "uAmount"),
166
+ uSeed: gl.getUniformLocation(program, "uSeed")
167
+ };
168
+ };
169
+ var whiteNoise = createEffect({
170
+ type: "dev.remotion.effects.whiteNoise",
171
+ label: "whiteNoise()",
172
+ documentationLink: "https://www.remotion.dev/docs/effects/white-noise",
173
+ calculateKey: (params) => {
174
+ const resolved = resolve(params);
175
+ return `white-noise-${resolved.amount}-${resolved.seed}`;
176
+ },
177
+ implementations: {
178
+ webgpu: Internals.createEffectImplementation({
179
+ setup: (target) => setupWebGpuSinglePass(target, "white-noise"),
180
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
181
+ if (!gpuDevice)
182
+ throw new Error("A WebGPU device is required for the white-noise effect");
183
+ const r = resolve(params);
184
+ const uniformData = new Float32Array([width, height, r.amount, r.seed]);
185
+ applyWebGpuSinglePass({
186
+ state,
187
+ source,
188
+ width,
189
+ height,
190
+ device: gpuDevice,
191
+ shader: WHITE_NOISE_WEBGPU_SHADER,
192
+ uniformData
193
+ });
194
+ },
195
+ cleanup: cleanupWebGpuSinglePass
196
+ }),
197
+ webgl2: Internals.createEffectImplementation({
198
+ setup: (target) => {
199
+ const gl = target.getContext("webgl2", {
200
+ premultipliedAlpha: true,
201
+ alpha: true,
202
+ preserveDrawingBuffer: true
203
+ });
204
+ if (!gl) {
205
+ throw createWebGL2ContextError("white noise effect");
206
+ }
207
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
208
+ return createWhiteNoiseState(gl, VERTEX_SHADER, FRAGMENT_SHADER);
209
+ },
210
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
211
+ const resolved = resolve(params);
212
+ state.gl.viewport(0, 0, width, height);
213
+ state.gl.bindFramebuffer(state.gl.FRAMEBUFFER, null);
214
+ state.gl.activeTexture(state.gl.TEXTURE0);
215
+ state.gl.bindTexture(state.gl.TEXTURE_2D, state.texture);
216
+ state.gl.pixelStorei(state.gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);
217
+ state.gl.texImage2D(state.gl.TEXTURE_2D, 0, state.gl.RGBA, state.gl.RGBA, state.gl.UNSIGNED_BYTE, source);
218
+ state.gl.useProgram(state.program);
219
+ if (state.uSource) {
220
+ state.gl.uniform1i(state.uSource, 0);
221
+ }
222
+ if (state.uAmount) {
223
+ state.gl.uniform1f(state.uAmount, resolved.amount);
224
+ }
225
+ if (state.uSeed) {
226
+ state.gl.uniform1f(state.uSeed, resolved.seed);
227
+ }
228
+ state.gl.bindVertexArray(state.vao);
229
+ state.gl.drawArrays(state.gl.TRIANGLE_STRIP, 0, 4);
230
+ },
231
+ cleanup: ({ gl, program, vao, vbo, texture }) => {
232
+ gl.deleteTexture(texture);
233
+ gl.deleteBuffer(vbo);
234
+ gl.deleteProgram(program);
235
+ gl.deleteVertexArray(vao);
236
+ }
237
+ })
238
+ },
239
+ schema: whiteNoiseSchema,
240
+ validateParams: validateWhiteNoiseParams
241
+ });
242
+ export {
243
+ whiteNoise
244
+ };
@@ -0,0 +1,8 @@
1
+ import {
2
+ zigzagSchema2,
3
+ zigzag2
4
+ } from "./index-afdtmrh2.mjs";
5
+ export {
6
+ zigzag2 as zigzag,
7
+ zigzagSchema2 as zigzagSchema
8
+ };