@luma.gl/effects 9.2.6 → 9.3.0-alpha.10

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 (101) hide show
  1. package/dist/dist.dev.js +2686 -644
  2. package/dist/dist.min.js +10 -9
  3. package/dist/index.cjs +753 -302
  4. package/dist/index.cjs.map +3 -3
  5. package/dist/passes/postprocessing/fxaa/fxaa.d.ts +1 -0
  6. package/dist/passes/postprocessing/fxaa/fxaa.d.ts.map +1 -1
  7. package/dist/passes/postprocessing/fxaa/fxaa.js +287 -0
  8. package/dist/passes/postprocessing/fxaa/fxaa.js.map +1 -1
  9. package/dist/passes/postprocessing/image-adjust-filters/brightnesscontrast.d.ts +2 -2
  10. package/dist/passes/postprocessing/image-adjust-filters/brightnesscontrast.d.ts.map +1 -1
  11. package/dist/passes/postprocessing/image-adjust-filters/brightnesscontrast.js +6 -7
  12. package/dist/passes/postprocessing/image-adjust-filters/brightnesscontrast.js.map +1 -1
  13. package/dist/passes/postprocessing/image-adjust-filters/denoise.d.ts +2 -2
  14. package/dist/passes/postprocessing/image-adjust-filters/denoise.d.ts.map +1 -1
  15. package/dist/passes/postprocessing/image-adjust-filters/denoise.js +32 -24
  16. package/dist/passes/postprocessing/image-adjust-filters/denoise.js.map +1 -1
  17. package/dist/passes/postprocessing/image-adjust-filters/huesaturation.d.ts +2 -2
  18. package/dist/passes/postprocessing/image-adjust-filters/huesaturation.d.ts.map +1 -1
  19. package/dist/passes/postprocessing/image-adjust-filters/huesaturation.js +26 -33
  20. package/dist/passes/postprocessing/image-adjust-filters/huesaturation.js.map +1 -1
  21. package/dist/passes/postprocessing/image-adjust-filters/noise.d.ts +2 -2
  22. package/dist/passes/postprocessing/image-adjust-filters/noise.d.ts.map +1 -1
  23. package/dist/passes/postprocessing/image-adjust-filters/noise.js +10 -9
  24. package/dist/passes/postprocessing/image-adjust-filters/noise.js.map +1 -1
  25. package/dist/passes/postprocessing/image-adjust-filters/sepia.d.ts +2 -2
  26. package/dist/passes/postprocessing/image-adjust-filters/sepia.d.ts.map +1 -1
  27. package/dist/passes/postprocessing/image-adjust-filters/sepia.js +12 -11
  28. package/dist/passes/postprocessing/image-adjust-filters/sepia.js.map +1 -1
  29. package/dist/passes/postprocessing/image-adjust-filters/vibrance.d.ts +2 -2
  30. package/dist/passes/postprocessing/image-adjust-filters/vibrance.js +10 -10
  31. package/dist/passes/postprocessing/image-adjust-filters/vignette.d.ts +2 -2
  32. package/dist/passes/postprocessing/image-adjust-filters/vignette.d.ts.map +1 -1
  33. package/dist/passes/postprocessing/image-adjust-filters/vignette.js +11 -15
  34. package/dist/passes/postprocessing/image-adjust-filters/vignette.js.map +1 -1
  35. package/dist/passes/postprocessing/image-blur-filters/tiltshift.d.ts +3 -3
  36. package/dist/passes/postprocessing/image-blur-filters/tiltshift.d.ts.map +1 -1
  37. package/dist/passes/postprocessing/image-blur-filters/tiltshift.js +36 -18
  38. package/dist/passes/postprocessing/image-blur-filters/tiltshift.js.map +1 -1
  39. package/dist/passes/postprocessing/image-blur-filters/triangleblur.d.ts +3 -3
  40. package/dist/passes/postprocessing/image-blur-filters/triangleblur.d.ts.map +1 -1
  41. package/dist/passes/postprocessing/image-blur-filters/triangleblur.js +27 -18
  42. package/dist/passes/postprocessing/image-blur-filters/triangleblur.js.map +1 -1
  43. package/dist/passes/postprocessing/image-blur-filters/zoomblur.d.ts +3 -3
  44. package/dist/passes/postprocessing/image-blur-filters/zoomblur.d.ts.map +1 -1
  45. package/dist/passes/postprocessing/image-blur-filters/zoomblur.js +22 -13
  46. package/dist/passes/postprocessing/image-blur-filters/zoomblur.js.map +1 -1
  47. package/dist/passes/postprocessing/image-fun-filters/colorhalftone.d.ts +2 -2
  48. package/dist/passes/postprocessing/image-fun-filters/colorhalftone.d.ts.map +1 -1
  49. package/dist/passes/postprocessing/image-fun-filters/colorhalftone.js +20 -18
  50. package/dist/passes/postprocessing/image-fun-filters/colorhalftone.js.map +1 -1
  51. package/dist/passes/postprocessing/image-fun-filters/dotscreen.d.ts +2 -2
  52. package/dist/passes/postprocessing/image-fun-filters/dotscreen.js +12 -12
  53. package/dist/passes/postprocessing/image-fun-filters/edgework.d.ts +3 -3
  54. package/dist/passes/postprocessing/image-fun-filters/edgework.d.ts.map +1 -1
  55. package/dist/passes/postprocessing/image-fun-filters/edgework.js +85 -14
  56. package/dist/passes/postprocessing/image-fun-filters/edgework.js.map +1 -1
  57. package/dist/passes/postprocessing/image-fun-filters/hexagonalpixelate.d.ts +2 -2
  58. package/dist/passes/postprocessing/image-fun-filters/hexagonalpixelate.d.ts.map +1 -1
  59. package/dist/passes/postprocessing/image-fun-filters/hexagonalpixelate.js +35 -23
  60. package/dist/passes/postprocessing/image-fun-filters/hexagonalpixelate.js.map +1 -1
  61. package/dist/passes/postprocessing/image-fun-filters/ink.d.ts +2 -2
  62. package/dist/passes/postprocessing/image-fun-filters/ink.d.ts.map +1 -1
  63. package/dist/passes/postprocessing/image-fun-filters/ink.js +26 -17
  64. package/dist/passes/postprocessing/image-fun-filters/ink.js.map +1 -1
  65. package/dist/passes/postprocessing/image-fun-filters/magnify.d.ts +2 -2
  66. package/dist/passes/postprocessing/image-fun-filters/magnify.d.ts.map +1 -1
  67. package/dist/passes/postprocessing/image-fun-filters/magnify.js +23 -13
  68. package/dist/passes/postprocessing/image-fun-filters/magnify.js.map +1 -1
  69. package/dist/passes/postprocessing/image-warp-filters/bulgepinch.d.ts +3 -3
  70. package/dist/passes/postprocessing/image-warp-filters/bulgepinch.d.ts.map +1 -1
  71. package/dist/passes/postprocessing/image-warp-filters/bulgepinch.js +28 -14
  72. package/dist/passes/postprocessing/image-warp-filters/bulgepinch.js.map +1 -1
  73. package/dist/passes/postprocessing/image-warp-filters/swirl.d.ts +3 -3
  74. package/dist/passes/postprocessing/image-warp-filters/swirl.d.ts.map +1 -1
  75. package/dist/passes/postprocessing/image-warp-filters/swirl.js +21 -16
  76. package/dist/passes/postprocessing/image-warp-filters/swirl.js.map +1 -1
  77. package/dist/passes/postprocessing/image-warp-filters/warp.d.ts +1 -1
  78. package/dist/passes/postprocessing/image-warp-filters/warp.d.ts.map +1 -1
  79. package/dist/passes/postprocessing/image-warp-filters/warp.js +9 -4
  80. package/dist/passes/postprocessing/image-warp-filters/warp.js.map +1 -1
  81. package/package.json +4 -5
  82. package/src/passes/postprocessing/fxaa/fxaa.ts +288 -0
  83. package/src/passes/postprocessing/image-adjust-filters/brightnesscontrast.ts +6 -7
  84. package/src/passes/postprocessing/image-adjust-filters/denoise.ts +34 -26
  85. package/src/passes/postprocessing/image-adjust-filters/huesaturation.ts +28 -35
  86. package/src/passes/postprocessing/image-adjust-filters/noise.ts +10 -9
  87. package/src/passes/postprocessing/image-adjust-filters/sepia.ts +12 -11
  88. package/src/passes/postprocessing/image-adjust-filters/vibrance.ts +10 -10
  89. package/src/passes/postprocessing/image-adjust-filters/vignette.ts +11 -15
  90. package/src/passes/postprocessing/image-blur-filters/tiltshift.ts +38 -20
  91. package/src/passes/postprocessing/image-blur-filters/triangleblur.ts +27 -18
  92. package/src/passes/postprocessing/image-blur-filters/zoomblur.ts +23 -14
  93. package/src/passes/postprocessing/image-fun-filters/colorhalftone.ts +20 -18
  94. package/src/passes/postprocessing/image-fun-filters/dotscreen.ts +12 -12
  95. package/src/passes/postprocessing/image-fun-filters/edgework.ts +86 -15
  96. package/src/passes/postprocessing/image-fun-filters/hexagonalpixelate.ts +39 -27
  97. package/src/passes/postprocessing/image-fun-filters/ink.ts +26 -17
  98. package/src/passes/postprocessing/image-fun-filters/magnify.ts +23 -13
  99. package/src/passes/postprocessing/image-warp-filters/bulgepinch.ts +28 -14
  100. package/src/passes/postprocessing/image-warp-filters/swirl.ts +21 -16
  101. package/src/passes/postprocessing/image-warp-filters/warp.ts +9 -4
@@ -6,41 +6,55 @@ import type {ShaderPass} from '@luma.gl/shadertools';
6
6
  import {warp} from './warp';
7
7
 
8
8
  const source = /* wgsl */ `\
9
- uniform bulgePinchUniforms {
9
+ struct bulgePinchUniforms {
10
+ center: vec2f,
10
11
  radius: f32,
11
12
  strength: f32,
12
- center: vec2f,
13
13
  };
14
14
 
15
- @group(0) @binding(1) var<uniform> bulgePinch: bulgePinchUniforms;
15
+ @group(0) @binding(auto) var<uniform> bulgePinch: bulgePinchUniforms;
16
16
 
17
- fn bulgePinch_warp(vec2 coord, vec2 texCenter) -> vec2f {
18
- coord -= texCenter;
19
- float distance = length(coord);
17
+ fn bulgePinch_warp(coordIn: vec2f, texCenter: vec2f) -> vec2f {
18
+ var coord = coordIn - texCenter;
19
+ let distance = length(coord);
20
20
  if (distance < bulgePinch.radius) {
21
- float percent = distance / bulgePinch.radius;
21
+ let percent = distance / bulgePinch.radius;
22
+ let safeDistance = max(distance, 0.00001);
22
23
  if (bulgePinch.strength > 0.0) {
23
- coord *= mix(1.0, smoothstep(0.0, bulgePinch.radius / distance, percent), bulgePinch.strength * 0.75);
24
+ coord *= mix(
25
+ 1.0,
26
+ smoothstep(0.0, bulgePinch.radius / safeDistance, percent),
27
+ bulgePinch.strength * 0.75
28
+ );
24
29
  } else {
25
- coord *= mix(1.0, pow(percent, 1.0 + bulgePinch.strength * 0.75) * bulgePinch.radius / distance, 1.0 - percent);
30
+ coord *= mix(
31
+ 1.0,
32
+ pow(percent, 1.0 + bulgePinch.strength * 0.75) * bulgePinch.radius / safeDistance,
33
+ 1.0 - percent
34
+ );
26
35
  }
27
36
  }
28
37
  coord += texCenter;
29
38
  return coord;
30
39
  }
31
40
 
32
- fn bulgePinch_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) -> vec4f {
33
- vec2 coord = texCoord * texSize;
41
+ fn bulgePinch_sampleColor(
42
+ sourceTexture: texture_2d<f32>,
43
+ sourceTextureSampler: sampler,
44
+ texSize: vec2f,
45
+ texCoord: vec2f
46
+ ) -> vec4f {
47
+ var coord = texCoord * texSize;
34
48
  coord = bulgePinch_warp(coord, bulgePinch.center * texSize);
35
- return warp_sampleColor(source, texSize, coord);
49
+ return warp_sampleColor(sourceTexture, sourceTextureSampler, texSize, coord);
36
50
  }
37
51
  `;
38
52
 
39
53
  const fs = /* glsl */ `\
40
- uniform bulgePinchUniforms {
54
+ layout(std140) uniform bulgePinchUniforms {
55
+ vec2 center;
41
56
  float radius;
42
57
  float strength;
43
- vec2 center;
44
58
  } bulgePinch;
45
59
 
46
60
  vec2 bulgePinch_warp(vec2 coord, vec2 texCenter) {
@@ -6,23 +6,23 @@ import type {ShaderPass} from '@luma.gl/shadertools';
6
6
  import {warp} from './warp';
7
7
 
8
8
  const source = /* wgsl */ `\
9
- uniform swirlUniforms {
9
+ struct swirlUniforms {
10
+ center: vec2f,
10
11
  radius: f32,
11
12
  angle: f32,
12
- center: vec2f,
13
13
  };
14
14
 
15
- @group(0) @binding(1) swirl: swirlUniforms;
15
+ @group(0) @binding(auto) var<uniform> swirl: swirlUniforms;
16
16
 
17
- fn swirl_warp(vec2 coord, vec2 texCenter) -> vec2f {
18
- coord -= texCenter;
19
- float distance = length(coord);
17
+ fn swirl_warp(coordIn: vec2f, texCenter: vec2f) -> vec2f {
18
+ var coord = coordIn - texCenter;
19
+ let distance = length(coord);
20
20
  if (distance < swirl.radius) {
21
- float percent = (swirl.radius - distance) / swirl.radius;
22
- float theta = percent * percent * swirl.angle;
23
- float s = sin(theta);
24
- float c = cos(theta);
25
- coord = vec2(
21
+ let percent = (swirl.radius - distance) / swirl.radius;
22
+ let theta = percent * percent * swirl.angle;
23
+ let s = sin(theta);
24
+ let c = cos(theta);
25
+ coord = vec2f(
26
26
  coord.x * c - coord.y * s,
27
27
  coord.x * s + coord.y * c
28
28
  );
@@ -31,18 +31,23 @@ fn swirl_warp(vec2 coord, vec2 texCenter) -> vec2f {
31
31
  return coord;
32
32
  }
33
33
 
34
- fn swirl_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) -> vec4f {
35
- vec2 coord = texCoord * texSize;
34
+ fn swirl_sampleColor(
35
+ sourceTexture: texture_2d<f32>,
36
+ sourceTextureSampler: sampler,
37
+ texSize: vec2f,
38
+ texCoord: vec2f
39
+ ) -> vec4f {
40
+ var coord = texCoord * texSize;
36
41
  coord = swirl_warp(coord, swirl.center * texSize);
37
- return warp_sampleColor(source, texSize, coord);
42
+ return warp_sampleColor(sourceTexture, sourceTextureSampler, texSize, coord);
38
43
  }
39
44
  `;
40
45
 
41
46
  const fs = /* glsl */ `\
42
- uniform swirlUniforms {
47
+ layout(std140) uniform swirlUniforms {
48
+ vec2 center;
43
49
  float radius;
44
50
  float angle;
45
- vec2 center;
46
51
  } swirl;
47
52
 
48
53
  vec2 swirl_warp(vec2 coord, vec2 texCenter) {
@@ -5,10 +5,15 @@
5
5
  import type {ShaderPass} from '@luma.gl/shadertools';
6
6
 
7
7
  const source = /* wgsl */ `\
8
- vec4 warp_sampleColor(sampler2D source, vec2 texSize, vec2 coord) {
9
- vec4 color = texture(source, coord / texSize);
10
- vec2 clampedCoord = clamp(coord, vec2(0.0), texSize);
11
- if (coord != clampedCoord) {
8
+ fn warp_sampleColor(
9
+ sourceTexture: texture_2d<f32>,
10
+ sourceTextureSampler: sampler,
11
+ texSize: vec2f,
12
+ coord: vec2f
13
+ ) -> vec4f {
14
+ var color = textureSample(sourceTexture, sourceTextureSampler, coord / texSize);
15
+ let clampedCoord = clamp(coord, vec2f(0.0), texSize);
16
+ if (any(coord != clampedCoord)) {
12
17
  /* fade to transparent if we are outside the image */
13
18
  color.a *= max(0.0, 1.0 - length(coord - clampedCoord));
14
19
  }