@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,400 @@
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/levels.ts
16
+ import { Internals } from "remotion";
17
+ var { createEffect, createWebGL2ContextError } = Internals;
18
+ var DEFAULT_BLACK_POINT = 0;
19
+ var DEFAULT_WHITE_POINT = 1;
20
+ var DEFAULT_GAMMA = 1;
21
+ var DEFAULT_OUTPUT_BLACK = 0;
22
+ var DEFAULT_OUTPUT_WHITE = 1;
23
+ var DEFAULT_CHANNEL = "rgb";
24
+ var LEVELS_CHANNELS = ["rgb", "red", "green", "blue"];
25
+ var MIN_GAMMA = 0.01;
26
+ var MAX_GAMMA = 10;
27
+ var levelsSchema = {
28
+ channel: {
29
+ type: "enum",
30
+ variants: {
31
+ rgb: {},
32
+ red: {},
33
+ green: {},
34
+ blue: {}
35
+ },
36
+ default: DEFAULT_CHANNEL,
37
+ description: "Channel"
38
+ },
39
+ blackPoint: {
40
+ type: "number",
41
+ min: 0,
42
+ max: 1,
43
+ step: 0.01,
44
+ default: DEFAULT_BLACK_POINT,
45
+ description: "Input black",
46
+ hiddenFromList: false
47
+ },
48
+ whitePoint: {
49
+ type: "number",
50
+ min: 0,
51
+ max: 1,
52
+ step: 0.01,
53
+ default: DEFAULT_WHITE_POINT,
54
+ description: "Input white",
55
+ hiddenFromList: false
56
+ },
57
+ gamma: {
58
+ type: "number",
59
+ min: MIN_GAMMA,
60
+ max: MAX_GAMMA,
61
+ step: 0.01,
62
+ default: DEFAULT_GAMMA,
63
+ description: "Gamma",
64
+ hiddenFromList: false
65
+ },
66
+ outputBlack: {
67
+ type: "number",
68
+ min: 0,
69
+ max: 1,
70
+ step: 0.01,
71
+ default: DEFAULT_OUTPUT_BLACK,
72
+ description: "Output black",
73
+ hiddenFromList: false
74
+ },
75
+ outputWhite: {
76
+ type: "number",
77
+ min: 0,
78
+ max: 1,
79
+ step: 0.01,
80
+ default: DEFAULT_OUTPUT_WHITE,
81
+ description: "Output white",
82
+ hiddenFromList: false
83
+ }
84
+ };
85
+ var resolve = (params) => ({
86
+ channel: params.channel ?? DEFAULT_CHANNEL,
87
+ blackPoint: params.blackPoint ?? DEFAULT_BLACK_POINT,
88
+ whitePoint: params.whitePoint ?? DEFAULT_WHITE_POINT,
89
+ gamma: params.gamma ?? DEFAULT_GAMMA,
90
+ outputBlack: params.outputBlack ?? DEFAULT_OUTPUT_BLACK,
91
+ outputWhite: params.outputWhite ?? DEFAULT_OUTPUT_WHITE
92
+ });
93
+ var validateLevelsParams = (params) => {
94
+ assertEffectParamsObject(params, "Levels");
95
+ assertOptionalFiniteNumber(params.blackPoint, "blackPoint");
96
+ assertOptionalFiniteNumber(params.whitePoint, "whitePoint");
97
+ assertOptionalFiniteNumber(params.gamma, "gamma");
98
+ assertOptionalFiniteNumber(params.outputBlack, "outputBlack");
99
+ assertOptionalFiniteNumber(params.outputWhite, "outputWhite");
100
+ if (params.channel !== undefined && !LEVELS_CHANNELS.includes(params.channel)) {
101
+ throw new TypeError(`"channel" must be "rgb", "red", "green" or "blue", but got ${JSON.stringify(params.channel)}`);
102
+ }
103
+ const { blackPoint, whitePoint, gamma, outputBlack, outputWhite } = resolve(params);
104
+ validateUnitInterval(blackPoint, "blackPoint");
105
+ validateUnitInterval(whitePoint, "whitePoint");
106
+ validateUnitInterval(outputBlack, "outputBlack");
107
+ validateUnitInterval(outputWhite, "outputWhite");
108
+ if (blackPoint >= whitePoint) {
109
+ throw new TypeError(`"blackPoint" must be less than "whitePoint", but got ${JSON.stringify(blackPoint)} and ${JSON.stringify(whitePoint)}`);
110
+ }
111
+ if (gamma < MIN_GAMMA) {
112
+ throw new TypeError(`"gamma" must be >= ${MIN_GAMMA}, but got ${JSON.stringify(gamma)}`);
113
+ }
114
+ if (gamma > MAX_GAMMA) {
115
+ throw new TypeError(`"gamma" must be <= ${MAX_GAMMA}, but got ${JSON.stringify(gamma)}`);
116
+ }
117
+ };
118
+ var VERTEX_SHADER = `#version 300 es
119
+ in vec2 aPos;
120
+ in vec2 aUv;
121
+ out vec2 vUv;
122
+
123
+ void main() {
124
+ vUv = aUv;
125
+ gl_Position = vec4(aPos, 0.0, 1.0);
126
+ }
127
+ `;
128
+ var FRAGMENT_SHADER = `#version 300 es
129
+ precision highp float;
130
+
131
+ in vec2 vUv;
132
+ out vec4 fragColor;
133
+
134
+ uniform sampler2D uSource;
135
+ uniform float uBlackPoint;
136
+ uniform float uWhitePoint;
137
+ uniform float uGamma;
138
+ uniform float uOutputBlack;
139
+ uniform float uOutputWhite;
140
+ uniform int uChannel;
141
+
142
+ void main() {
143
+ vec4 sourceColor = texture(uSource, vUv);
144
+ float alpha = sourceColor.a;
145
+
146
+ if (alpha <= 0.0) {
147
+ fragColor = vec4(0.0);
148
+ return;
149
+ }
150
+
151
+ vec3 color = sourceColor.rgb / alpha;
152
+ vec3 normalized = clamp(
153
+ (color - vec3(uBlackPoint)) / (uWhitePoint - uBlackPoint),
154
+ 0.0,
155
+ 1.0
156
+ );
157
+ vec3 corrected = pow(normalized, vec3(1.0 / uGamma));
158
+ vec3 outputColor = mix(vec3(uOutputBlack), vec3(uOutputWhite), corrected);
159
+
160
+ if (uChannel == 1) {
161
+ color.r = outputColor.r;
162
+ } else if (uChannel == 2) {
163
+ color.g = outputColor.g;
164
+ } else if (uChannel == 3) {
165
+ color.b = outputColor.b;
166
+ } else {
167
+ color = outputColor;
168
+ }
169
+
170
+ fragColor = vec4(color * alpha, alpha);
171
+ }
172
+ `;
173
+ var WEBGPU_SHADER = `
174
+ ${WEBGPU_SINGLE_PASS_VERTEX}
175
+ struct Params {
176
+ blackPoint: f32,
177
+ whitePoint: f32,
178
+ gamma: f32,
179
+ outputBlack: f32,
180
+ outputWhite: f32,
181
+ channel: f32,
182
+ padding0: f32,
183
+ padding1: f32,
184
+ }
185
+ @group(0) @binding(0) var source: texture_2d<f32>;
186
+ @group(0) @binding(1) var sourceSampler: sampler;
187
+ @group(0) @binding(2) var<uniform> params: Params;
188
+
189
+ @fragment fn fragment(input: VertexOutput) -> @location(0) vec4f {
190
+ let sourceColor = textureSampleLevel(source, sourceSampler, input.uv, 0.0);
191
+ let alpha = sourceColor.a;
192
+ if (alpha <= 0.0) {
193
+ return vec4f(0.0);
194
+ }
195
+ var color = sourceColor.rgb / alpha;
196
+ let normalized = clamp((color - vec3f(params.blackPoint)) / (params.whitePoint - params.blackPoint), vec3f(0.0), vec3f(1.0));
197
+ let corrected = pow(normalized, vec3f(1.0 / params.gamma));
198
+ let outputColor = mix(vec3f(params.outputBlack), vec3f(params.outputWhite), corrected);
199
+ if (params.channel == 1.0) {
200
+ color.r = outputColor.r;
201
+ } else if (params.channel == 2.0) {
202
+ color.g = outputColor.g;
203
+ } else if (params.channel == 3.0) {
204
+ color.b = outputColor.b;
205
+ } else {
206
+ color = outputColor;
207
+ }
208
+ return vec4f(color * alpha, alpha);
209
+ }
210
+ `;
211
+ var compileShader = (gl, type, source) => {
212
+ const shader = gl.createShader(type);
213
+ if (!shader) {
214
+ throw new Error("Failed to create levels shader");
215
+ }
216
+ gl.shaderSource(shader, source);
217
+ gl.compileShader(shader);
218
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
219
+ const log = gl.getShaderInfoLog(shader);
220
+ gl.deleteShader(shader);
221
+ throw new Error(`Levels shader compile failed: ${log ?? "(no log)"}`);
222
+ }
223
+ return shader;
224
+ };
225
+ var createProgram = (gl) => {
226
+ const vertexShader = compileShader(gl, gl.VERTEX_SHADER, VERTEX_SHADER);
227
+ const fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, FRAGMENT_SHADER);
228
+ const program = gl.createProgram();
229
+ if (!program) {
230
+ throw new Error("Failed to create levels shader program");
231
+ }
232
+ gl.attachShader(program, vertexShader);
233
+ gl.attachShader(program, fragmentShader);
234
+ gl.linkProgram(program);
235
+ gl.deleteShader(vertexShader);
236
+ gl.deleteShader(fragmentShader);
237
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
238
+ const log = gl.getProgramInfoLog(program);
239
+ gl.deleteProgram(program);
240
+ throw new Error(`Levels shader link failed: ${log ?? "(no log)"}`);
241
+ }
242
+ return program;
243
+ };
244
+ var createTexture = (gl) => {
245
+ const texture = gl.createTexture();
246
+ if (!texture) {
247
+ throw new Error("Failed to create levels texture");
248
+ }
249
+ gl.bindTexture(gl.TEXTURE_2D, texture);
250
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
251
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
252
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
253
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
254
+ gl.bindTexture(gl.TEXTURE_2D, null);
255
+ return texture;
256
+ };
257
+ var setupLevels = (target) => {
258
+ const gl = target.getContext("webgl2", {
259
+ premultipliedAlpha: true,
260
+ alpha: true,
261
+ preserveDrawingBuffer: true
262
+ });
263
+ if (!gl) {
264
+ throw createWebGL2ContextError("levels effect");
265
+ }
266
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
267
+ const program = createProgram(gl);
268
+ const vao = gl.createVertexArray();
269
+ if (!vao) {
270
+ throw new Error("Failed to create levels vertex array");
271
+ }
272
+ const vbo = gl.createBuffer();
273
+ if (!vbo) {
274
+ throw new Error("Failed to create levels vertex buffer");
275
+ }
276
+ gl.bindVertexArray(vao);
277
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
278
+ 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);
279
+ const aPos = gl.getAttribLocation(program, "aPos");
280
+ const aUv = gl.getAttribLocation(program, "aUv");
281
+ gl.enableVertexAttribArray(aPos);
282
+ gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 16, 0);
283
+ gl.enableVertexAttribArray(aUv);
284
+ gl.vertexAttribPointer(aUv, 2, gl.FLOAT, false, 16, 8);
285
+ gl.bindVertexArray(null);
286
+ return {
287
+ gl,
288
+ program,
289
+ vao,
290
+ vbo,
291
+ textureSource: createTexture(gl),
292
+ uniforms: {
293
+ uSource: gl.getUniformLocation(program, "uSource"),
294
+ uBlackPoint: gl.getUniformLocation(program, "uBlackPoint"),
295
+ uWhitePoint: gl.getUniformLocation(program, "uWhitePoint"),
296
+ uGamma: gl.getUniformLocation(program, "uGamma"),
297
+ uOutputBlack: gl.getUniformLocation(program, "uOutputBlack"),
298
+ uOutputWhite: gl.getUniformLocation(program, "uOutputWhite"),
299
+ uChannel: gl.getUniformLocation(program, "uChannel")
300
+ }
301
+ };
302
+ };
303
+ var levels = createEffect({
304
+ type: "remotion/levels",
305
+ label: "levels()",
306
+ documentationLink: "https://www.remotion.dev/docs/effects/levels",
307
+ calculateKey: (params) => {
308
+ const { channel, blackPoint, whitePoint, gamma, outputBlack, outputWhite } = resolve(params);
309
+ return `levels-${channel}-${blackPoint}-${whitePoint}-${gamma}-${outputBlack}-${outputWhite}`;
310
+ },
311
+ implementations: {
312
+ webgpu: Internals.createEffectImplementation({
313
+ setup: (target) => setupWebGpuSinglePass(target, "levels"),
314
+ apply: ({ source, width, height, params, state, gpuDevice }) => {
315
+ if (!gpuDevice) {
316
+ throw new Error("A WebGPU device is required for the levels effect");
317
+ }
318
+ const r = resolve(params);
319
+ applyWebGpuSinglePass({
320
+ state,
321
+ source,
322
+ width,
323
+ height,
324
+ device: gpuDevice,
325
+ shader: WEBGPU_SHADER,
326
+ uniformData: new Float32Array([
327
+ r.blackPoint,
328
+ r.whitePoint,
329
+ r.gamma,
330
+ r.outputBlack,
331
+ r.outputWhite,
332
+ LEVELS_CHANNELS.indexOf(r.channel),
333
+ 0,
334
+ 0
335
+ ])
336
+ });
337
+ },
338
+ cleanup: cleanupWebGpuSinglePass
339
+ }),
340
+ webgl2: Internals.createEffectImplementation({
341
+ setup: setupLevels,
342
+ apply: ({ source, width, height, params, state, flipSourceY }) => {
343
+ const {
344
+ channel,
345
+ blackPoint,
346
+ whitePoint,
347
+ gamma,
348
+ outputBlack,
349
+ outputWhite
350
+ } = resolve(params);
351
+ const { gl, program, textureSource, uniforms, vao } = state;
352
+ gl.viewport(0, 0, width, height);
353
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
354
+ gl.clearColor(0, 0, 0, 0);
355
+ gl.clear(gl.COLOR_BUFFER_BIT);
356
+ gl.activeTexture(gl.TEXTURE0);
357
+ gl.bindTexture(gl.TEXTURE_2D, textureSource);
358
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipSourceY);
359
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
360
+ gl.useProgram(program);
361
+ if (uniforms.uSource)
362
+ gl.uniform1i(uniforms.uSource, 0);
363
+ if (uniforms.uBlackPoint) {
364
+ gl.uniform1f(uniforms.uBlackPoint, blackPoint);
365
+ }
366
+ if (uniforms.uWhitePoint) {
367
+ gl.uniform1f(uniforms.uWhitePoint, whitePoint);
368
+ }
369
+ if (uniforms.uGamma)
370
+ gl.uniform1f(uniforms.uGamma, gamma);
371
+ if (uniforms.uOutputBlack) {
372
+ gl.uniform1f(uniforms.uOutputBlack, outputBlack);
373
+ }
374
+ if (uniforms.uOutputWhite) {
375
+ gl.uniform1f(uniforms.uOutputWhite, outputWhite);
376
+ }
377
+ if (uniforms.uChannel) {
378
+ gl.uniform1i(uniforms.uChannel, LEVELS_CHANNELS.indexOf(channel));
379
+ }
380
+ gl.bindVertexArray(vao);
381
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
382
+ gl.bindVertexArray(null);
383
+ gl.bindTexture(gl.TEXTURE_2D, null);
384
+ gl.useProgram(null);
385
+ },
386
+ cleanup: ({ gl, program, vao, vbo, textureSource }) => {
387
+ gl.deleteTexture(textureSource);
388
+ gl.deleteBuffer(vbo);
389
+ gl.deleteProgram(program);
390
+ gl.deleteVertexArray(vao);
391
+ }
392
+ })
393
+ },
394
+ schema: levelsSchema,
395
+ validateParams: validateLevelsParams
396
+ });
397
+ export {
398
+ levels,
399
+ levelsSchema
400
+ };
@@ -0,0 +1,8 @@
1
+ import {
2
+ lightLeakEffectSchema2,
3
+ lightLeak2
4
+ } from "./index-wy95a41r.mjs";
5
+ export {
6
+ lightLeak2 as lightLeak,
7
+ lightLeakEffectSchema2 as lightLeakEffectSchema
8
+ };