shaders 2.5.108 → 2.5.110

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 (118) hide show
  1. package/dist/core/{Aurora-BPHeGEZ_.js → Aurora-KcUDr49P.js} +21 -14
  2. package/dist/core/{Blur-Cxx3ZuHi.js → Blur-DG7lJKPo.js} +29 -13
  3. package/dist/core/{ChannelBlur-Cth0biwG.js → ChannelBlur-BhcCkwcO.js} +7 -3
  4. package/dist/core/{ContourLines-KTHC32hd.js → ContourLines-tDBvQOvb.js} +8 -7
  5. package/dist/core/{CursorTrail-R4IBB4eu.js → CursorTrail-CgRMXbTG.js} +5 -5
  6. package/dist/core/{DropShadow-jMhnYPXZ.js → DropShadow-B7FzTp4H.js} +14 -8
  7. package/dist/core/{Duotone-Bl02WcA2.js → Duotone-CqQ0NMxS.js} +4 -11
  8. package/dist/core/{FloatingParticles-BtwGRl_d.js → FloatingParticles-DpYA0_TE.js} +6 -2
  9. package/dist/core/{Form3D-DaPbLGUi.js → Form3D-Bufw6tZb.js} +14 -2
  10. package/dist/core/{Glass-TRSXbuE6.js → Glass-Bz9IKI2q.js} +7 -3
  11. package/dist/core/{Glow-8bKkyehK.js → Glow-CUv1yHLZ.js} +68 -55
  12. package/dist/core/{GridDistortion-CpSiGEGV.js → GridDistortion-SRyevgsp.js} +4 -4
  13. package/dist/core/{HueShift-BtGVMu7q.js → HueShift-ctEX5vfo.js} +2 -0
  14. package/dist/core/{ImageTexture-CrX_9-f0.js → ImageTexture-uxj4LpF7.js} +30 -17
  15. package/dist/core/{Liquify-D9YIfbfB.js → Liquify-p-_qcb1f.js} +5 -5
  16. package/dist/core/{ProgressiveBlur-B_z0pZ1V.js → ProgressiveBlur-NbvxFfRa.js} +33 -20
  17. package/dist/core/{Saturation-CB19kOXg.js → Saturation-DCFAIUvZ.js} +2 -0
  18. package/dist/core/{Sharpness-CQOboeqy.js → Sharpness-DSpEoCSL.js} +2 -0
  19. package/dist/core/{Shatter-SHNbU2KC.js → Shatter-ByKkCYTR.js} +28 -24
  20. package/dist/core/{SimplexNoise-BcSgytjc.js → SimplexNoise-CMuU8n27.js} +14 -2
  21. package/dist/core/Swirl-B_KxdaX2.js +105 -0
  22. package/dist/core/{TiltShift-GqDjHvmk.js → TiltShift-BSAyR0Me.js} +47 -21
  23. package/dist/core/{Tint-DaTx2HII.js → Tint-DdvnpzEJ.js} +11 -6
  24. package/dist/core/{Tritone-C9Yx69Tw.js → Tritone-Ckb6hTkI.js} +4 -11
  25. package/dist/core/{VideoTexture-SWLe5c3m.js → VideoTexture-BMSdfLf_.js} +30 -17
  26. package/dist/core/{WebcamTexture-cXPyEumA.js → WebcamTexture-Ds9IrtRn.js} +30 -17
  27. package/dist/core/computeBlur-DCRhuYEi.js +209 -0
  28. package/dist/core/index.js +28 -62
  29. package/dist/core/registry.js +28 -28
  30. package/dist/core/renderer.d.ts.map +1 -1
  31. package/dist/core/{shaderRegistry-fwljIrjT.js → shaderRegistry-DFzzFEKX.js} +26 -26
  32. package/dist/core/shaders/Aurora/index.d.ts.map +1 -1
  33. package/dist/core/shaders/Aurora/index.js +1 -1
  34. package/dist/core/shaders/Blur/index.d.ts.map +1 -1
  35. package/dist/core/shaders/Blur/index.js +2 -2
  36. package/dist/core/shaders/ChannelBlur/index.d.ts.map +1 -1
  37. package/dist/core/shaders/ChannelBlur/index.js +2 -2
  38. package/dist/core/shaders/ContourLines/index.d.ts.map +1 -1
  39. package/dist/core/shaders/ContourLines/index.js +1 -1
  40. package/dist/core/shaders/CursorTrail/index.d.ts.map +1 -1
  41. package/dist/core/shaders/CursorTrail/index.js +1 -1
  42. package/dist/core/shaders/DropShadow/index.d.ts.map +1 -1
  43. package/dist/core/shaders/DropShadow/index.js +1 -1
  44. package/dist/core/shaders/Duotone/index.d.ts.map +1 -1
  45. package/dist/core/shaders/Duotone/index.js +1 -2
  46. package/dist/core/shaders/FloatingParticles/index.d.ts.map +1 -1
  47. package/dist/core/shaders/FloatingParticles/index.js +1 -1
  48. package/dist/core/shaders/Form3D/index.d.ts.map +1 -1
  49. package/dist/core/shaders/Form3D/index.js +1 -1
  50. package/dist/core/shaders/Glass/index.d.ts.map +1 -1
  51. package/dist/core/shaders/Glass/index.js +2 -2
  52. package/dist/core/shaders/Glow/index.d.ts +2 -2
  53. package/dist/core/shaders/Glow/index.d.ts.map +1 -1
  54. package/dist/core/shaders/Glow/index.js +2 -2
  55. package/dist/core/shaders/GridDistortion/index.d.ts.map +1 -1
  56. package/dist/core/shaders/GridDistortion/index.js +1 -1
  57. package/dist/core/shaders/HueShift/index.d.ts.map +1 -1
  58. package/dist/core/shaders/HueShift/index.js +1 -1
  59. package/dist/core/shaders/ImageTexture/index.d.ts.map +1 -1
  60. package/dist/core/shaders/ImageTexture/index.js +1 -1
  61. package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
  62. package/dist/core/shaders/Liquify/index.js +1 -1
  63. package/dist/core/shaders/ProgressiveBlur/index.d.ts.map +1 -1
  64. package/dist/core/shaders/ProgressiveBlur/index.js +2 -2
  65. package/dist/core/shaders/Saturation/index.d.ts.map +1 -1
  66. package/dist/core/shaders/Saturation/index.js +1 -1
  67. package/dist/core/shaders/Sharpness/index.d.ts.map +1 -1
  68. package/dist/core/shaders/Sharpness/index.js +1 -1
  69. package/dist/core/shaders/Shatter/index.d.ts.map +1 -1
  70. package/dist/core/shaders/Shatter/index.js +1 -1
  71. package/dist/core/shaders/SimplexNoise/index.d.ts +7 -0
  72. package/dist/core/shaders/SimplexNoise/index.d.ts.map +1 -1
  73. package/dist/core/shaders/SimplexNoise/index.js +1 -1
  74. package/dist/core/shaders/Swirl/index.d.ts.map +1 -1
  75. package/dist/core/shaders/Swirl/index.js +1 -1
  76. package/dist/core/shaders/TiltShift/index.d.ts.map +1 -1
  77. package/dist/core/shaders/TiltShift/index.js +2 -2
  78. package/dist/core/shaders/Tint/index.d.ts.map +1 -1
  79. package/dist/core/shaders/Tint/index.js +1 -1
  80. package/dist/core/shaders/Tritone/index.d.ts.map +1 -1
  81. package/dist/core/shaders/Tritone/index.js +1 -2
  82. package/dist/core/shaders/VideoTexture/index.d.ts.map +1 -1
  83. package/dist/core/shaders/VideoTexture/index.js +1 -1
  84. package/dist/core/shaders/WebcamTexture/index.d.ts.map +1 -1
  85. package/dist/core/shaders/WebcamTexture/index.js +1 -1
  86. package/dist/core/utilities/computeBlur.d.ts +29 -31
  87. package/dist/core/utilities/computeBlur.d.ts.map +1 -1
  88. package/dist/js/createShader.d.ts.map +1 -1
  89. package/dist/js/createShader.js +3 -2
  90. package/dist/js/createSharedDevice.d.ts +36 -0
  91. package/dist/js/createSharedDevice.d.ts.map +1 -0
  92. package/dist/js/createSharedDevice.js +15 -0
  93. package/dist/js/index.d.ts +1 -0
  94. package/dist/js/index.d.ts.map +1 -1
  95. package/dist/js/index.js +2 -1
  96. package/dist/js/types.d.ts +10 -0
  97. package/dist/js/types.d.ts.map +1 -1
  98. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  99. package/dist/js/utils/generatePresetCode.js +2 -1
  100. package/dist/partner/index.d.ts +6 -2
  101. package/dist/partner/index.d.ts.map +1 -1
  102. package/dist/react/Shader.js +1 -1
  103. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  104. package/dist/react/utils/generatePresetCode.js +2 -1
  105. package/dist/registry.js +95 -18
  106. package/dist/solid/engine/Shader.js +1 -1
  107. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  108. package/dist/solid/utils/generatePresetCode.js +2 -1
  109. package/dist/svelte/{generatePresetCode-DR_OAIL7.js → generatePresetCode-jdOx6mhw.js} +2 -1
  110. package/dist/svelte/index.js +2 -2
  111. package/dist/svelte/utils/generatePresetCode.js +1 -1
  112. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  113. package/dist/vue/SimplexNoise.vue_vue_type_script_setup_true_lang.js +1 -0
  114. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  115. package/dist/vue/utils/generatePresetCode.js +2 -1
  116. package/package.json +1 -1
  117. package/dist/core/Swirl-By5FadQK.js +0 -103
  118. package/dist/core/computeBlur-DeXZ99YL.js +0 -150
@@ -67,7 +67,7 @@ function Shader(allProps) {
67
67
  const checkRendering = () => {
68
68
  const stats = rendererInstance.getPerformanceStats();
69
69
  if (stats.fps > 0) {
70
- const version = "2.5.108";
70
+ const version = "2.5.110";
71
71
  telemetryCollector = startTelemetry(rendererInstance, version, props.disableTelemetry, props.isPreview);
72
72
  if (telemetryCollector) {
73
73
  telemetryCollector.start();
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAw9CD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAiFlG;AAGD,eAAO,MAAM,mBAAmB,UA6G/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAy9CD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAiFlG;AAGD,eAAO,MAAM,mBAAmB,UA6G/B,CAAA"}
@@ -552,7 +552,7 @@ const shaderMetadata = {
552
552
  "blendMode": "normal",
553
553
  "intensity": 1,
554
554
  "threshold": 0.5,
555
- "size": 10
555
+ "size": 25
556
556
  },
557
557
  "Godrays": {
558
558
  "opacity": 1,
@@ -963,6 +963,7 @@ const shaderMetadata = {
963
963
  "blendMode": "normal",
964
964
  "colorA": "#ffffff",
965
965
  "colorB": "#000000",
966
+ "colorSpace": "linear",
966
967
  "scale": 2,
967
968
  "balance": 0,
968
969
  "contrast": 0,
@@ -550,7 +550,7 @@ var shaderMetadata = {
550
550
  "blendMode": "normal",
551
551
  "intensity": 1,
552
552
  "threshold": .5,
553
- "size": 10
553
+ "size": 25
554
554
  },
555
555
  "Godrays": {
556
556
  "opacity": 1,
@@ -961,6 +961,7 @@ var shaderMetadata = {
961
961
  "blendMode": "normal",
962
962
  "colorA": "#ffffff",
963
963
  "colorB": "#000000",
964
+ "colorSpace": "linear",
964
965
  "scale": 2,
965
966
  "balance": 0,
966
967
  "contrast": 0,
@@ -1,4 +1,4 @@
1
- import { n as generatePresetCode } from "./generatePresetCode-DR_OAIL7.js";
1
+ import { n as generatePresetCode } from "./generatePresetCode-jdOx6mhw.js";
2
2
  import "svelte/internal/disclose-version";
3
3
  import * as $ from "svelte/internal/client";
4
4
  import { getContext, onDestroy, onMount, setContext } from "svelte";
@@ -21342,7 +21342,7 @@ function Shader($$anchor, $$props) {
21342
21342
  const checkRendering = () => {
21343
21343
  if (!rendererInstance) return;
21344
21344
  if (rendererInstance.getPerformanceStats().fps > 0) {
21345
- telemetryCollector = startTelemetry(rendererInstance, "2.5.108", disableTelemetry(), isPreview());
21345
+ telemetryCollector = startTelemetry(rendererInstance, "2.5.110", disableTelemetry(), isPreview());
21346
21346
  if (telemetryCollector) telemetryCollector.start();
21347
21347
  telemetryStartTimeout = null;
21348
21348
  } else telemetryStartTimeout = window.setTimeout(checkRendering, 500);
@@ -1,2 +1,2 @@
1
- import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-DR_OAIL7.js";
1
+ import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-jdOx6mhw.js";
2
2
  export { availableComponents, generatePresetCode };
@@ -60,7 +60,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
60
60
  const startTelemetryWhenReady = () => {
61
61
  const checkRendering = () => {
62
62
  if (rendererInstance.value.getPerformanceStats().fps > 0) {
63
- telemetryCollector = startTelemetry(rendererInstance.value, "2.5.108", props.disableTelemetry, props.isPreview);
63
+ telemetryCollector = startTelemetry(rendererInstance.value, "2.5.110", props.disableTelemetry, props.isPreview);
64
64
  if (telemetryCollector) telemetryCollector.start();
65
65
  telemetryStartTimeout = null;
66
66
  } else telemetryStartTimeout = setTimeout(checkRendering, 500);
@@ -19,6 +19,7 @@ var SimplexNoise_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
19
19
  transform: {},
20
20
  colorA: {},
21
21
  colorB: {},
22
+ colorSpace: {},
22
23
  scale: {},
23
24
  seed: {},
24
25
  speed: {}
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAu9CD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4FlG;AAGD,eAAO,MAAM,mBAAmB,UA6G/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,eAAe,EAAE,CAAA;CAC9B;AAw9CD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4FlG;AAGD,eAAO,MAAM,mBAAmB,UA6G/B,CAAA"}
@@ -548,7 +548,7 @@ var shaderMetadata = {
548
548
  "blendMode": "normal",
549
549
  "intensity": 1,
550
550
  "threshold": .5,
551
- "size": 10
551
+ "size": 25
552
552
  },
553
553
  "Godrays": {
554
554
  "opacity": 1,
@@ -959,6 +959,7 @@ var shaderMetadata = {
959
959
  "blendMode": "normal",
960
960
  "colorA": "#ffffff",
961
961
  "colorB": "#000000",
962
+ "colorSpace": "linear",
962
963
  "scale": 2,
963
964
  "balance": 0,
964
965
  "contrast": 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaders",
3
- "version": "2.5.108",
3
+ "version": "2.5.110",
4
4
  "description": "Shader magic for modern frontends",
5
5
  "author": "Shader Effects Inc.",
6
6
  "homepage": "https://shaders.com/",
@@ -1,103 +0,0 @@
1
- import { a as transformColor, o as transformColorSpace, t as colorSpaceOptions } from "./transformations-B5lM6fYX.js";
2
- import { t as mixColors } from "./colorMixing-BPpDnR5I.js";
3
- import { t as createAnimatedTime } from "./time-DUqSFWvT.js";
4
- import { cos, screenUV, sin, smoothstep, vec2, vec4 } from "three/tsl";
5
- const componentDefinition = {
6
- name: "Swirl",
7
- category: "Textures",
8
- description: "Flowing swirl pattern with multi-layered noise",
9
- props: {
10
- colorA: {
11
- default: "#1275d8",
12
- description: "Primary gradient color",
13
- transform: transformColor,
14
- ui: {
15
- type: "color",
16
- label: "Color A",
17
- group: "Colors"
18
- }
19
- },
20
- colorB: {
21
- default: "#e19136",
22
- description: "Secondary gradient color",
23
- transform: transformColor,
24
- ui: {
25
- type: "color",
26
- label: "Color B",
27
- group: "Colors"
28
- }
29
- },
30
- speed: {
31
- default: 1,
32
- description: "Flow animation speed",
33
- ui: {
34
- type: "range",
35
- min: 0,
36
- max: 5,
37
- step: .1,
38
- label: "Speed",
39
- group: "Animation"
40
- }
41
- },
42
- detail: {
43
- default: 1,
44
- description: "Level of detail and intricacy in the swirl patterns",
45
- ui: {
46
- type: ["range", "map"],
47
- min: 0,
48
- max: 5,
49
- step: .1,
50
- label: "Detail",
51
- group: "Effect"
52
- }
53
- },
54
- blend: {
55
- default: 50,
56
- description: "Skew color balance toward A (lower values) or B (higher values)",
57
- ui: {
58
- type: ["range", "map"],
59
- min: 0,
60
- max: 100,
61
- step: 1,
62
- label: "Blend",
63
- group: "Effect"
64
- }
65
- },
66
- colorSpace: {
67
- default: "linear",
68
- transform: transformColorSpace,
69
- compileTime: true,
70
- description: "Color space for color interpolation",
71
- ui: {
72
- type: "select",
73
- options: colorSpaceOptions,
74
- label: "Color Space",
75
- group: "Colors"
76
- }
77
- }
78
- },
79
- fragmentNode: (params) => {
80
- const { uniforms } = params;
81
- const uvCoords = screenUV;
82
- const t = createAnimatedTime(params, uniforms.speed);
83
- const detail = uniforms.detail.uniform;
84
- const freq1 = detail;
85
- const distort1 = vec2(uvCoords.x.add(sin(uvCoords.y.mul(freq1.mul(1.7)).add(t.mul(.8))).mul(.12).add(cos(uvCoords.x.mul(freq1.mul(.9)).sub(t.mul(.5))).mul(.05))), uvCoords.y.add(cos(uvCoords.x.mul(freq1.mul(1.3)).sub(t.mul(.6))).mul(.12).add(sin(uvCoords.y.mul(freq1.mul(1.1)).add(t.mul(.7))).mul(.05))));
86
- const pattern1 = sin(distort1.x.mul(freq1.mul(2.1)).add(distort1.y.mul(freq1.mul(1.8))).add(t.mul(.4)));
87
- const freq2 = detail.mul(2.1);
88
- const distort2 = vec2(distort1.x.add(cos(distort1.y.mul(freq2.mul(2.7)).sub(t.mul(.45))).mul(.07).add(sin(distort1.x.mul(freq2.mul(1.9)).add(t.mul(.6))).mul(.04))), distort1.y.add(sin(distort1.x.mul(freq2.mul(2.3)).add(t.mul(.65))).mul(.07).add(cos(distort1.y.mul(freq2.mul(1.6)).sub(t.mul(.4))).mul(.04))));
89
- const pattern2 = cos(distort2.x.mul(freq2.mul(1.4)).sub(distort2.y.mul(freq2.mul(1.9))).add(t.mul(.35)));
90
- const freq3 = detail.mul(3.7);
91
- const distort3 = vec2(distort2.x.add(sin(distort2.y.mul(freq3.mul(1.8)).add(t.mul(.85))).mul(.04).add(cos(distort2.x.mul(freq3.mul(1.3)).sub(t.mul(.55))).mul(.025)).add(sin(distort2.x.add(distort2.y).mul(freq3.mul(.7)).add(t.mul(.9))).mul(.02))), distort2.y.add(cos(distort2.x.mul(freq3.mul(1.6)).sub(t.mul(.75))).mul(.04).add(sin(distort2.y.mul(freq3.mul(1.1)).add(t.mul(.5))).mul(.025)).add(cos(distort2.x.add(distort2.y).mul(freq3.mul(.8)).sub(t.mul(.95))).mul(.02))));
92
- const pattern3 = sin(distort3.x.mul(freq3.mul(1.1)).add(distort3.y.mul(freq3.mul(1.5))).sub(t.mul(.55)));
93
- const combinedPattern = pattern1.mul(.45).add(pattern2.mul(.35)).add(pattern3.mul(.2));
94
- const blendBias = uniforms.blend.uniform.sub(50).mul(.006);
95
- const blendFactor = smoothstep(.3, .7, combinedPattern.mul(.5).add(.5).add(blendBias));
96
- const colorMix = mixColors(uniforms.colorA.uniform, uniforms.colorB.uniform, blendFactor, uniforms.colorSpace.uniform.value);
97
- const shimmer = sin(t.mul(2.5).add(combinedPattern.mul(8))).mul(.015).add(1);
98
- const finalColor = colorMix.mul(shimmer);
99
- return vec4(finalColor.rgb, finalColor.a);
100
- }
101
- };
102
- var Swirl_default = componentDefinition;
103
- export { componentDefinition as n, Swirl_default as t };
@@ -1,150 +0,0 @@
1
- import { StorageTexture } from "three/webgpu";
2
- import { FloatType } from "three";
3
- import { Fn, If, float, instanceIndex, int, storageTexture, textureLoad, textureStore, uint, uniformArray, uvec2, vec4 } from "three/tsl";
4
- var HALF_KERNEL = 24;
5
- var KERNEL_SIZE = HALF_KERNEL * 2 + 1;
6
- var VAR_SIGMA = HALF_KERNEL / 3;
7
- var FIXED_WEIGHTS = [];
8
- var fixedWeightSum = 0;
9
- for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
10
- const w = Math.exp(-(i * i) / (2 * VAR_SIGMA * VAR_SIGMA));
11
- FIXED_WEIGHTS.push(w);
12
- fixedWeightSum += w;
13
- }
14
- for (let i = 0; i < KERNEL_SIZE; i++) FIXED_WEIGHTS[i] /= fixedWeightSum;
15
- function createGaussianBlurCompute(inputTexture, width, height, onCleanup, outputScale = 1) {
16
- if (outputScale !== 1 && outputScale !== .5) {
17
- console.warn(`[computeBlur] unsupported outputScale ${outputScale} — falling back to 1`);
18
- outputScale = 1;
19
- }
20
- const outWidth = Math.round(width * outputScale);
21
- const outHeight = Math.round(height * outputScale);
22
- const coordScale = Math.round(1 / outputScale);
23
- const intermediateTex = new StorageTexture(outWidth, outHeight);
24
- intermediateTex.type = FloatType;
25
- const outputTex = new StorageTexture(outWidth, outHeight);
26
- outputTex.type = FloatType;
27
- onCleanup(() => {
28
- intermediateTex.dispose();
29
- outputTex.dispose();
30
- });
31
- const intermediateWriteNode = storageTexture(intermediateTex);
32
- const intermediateReadNode = storageTexture(intermediateTex).toReadOnly();
33
- const outputNode = storageTexture(outputTex);
34
- const weights = uniformArray(new Array(KERNEL_SIZE).fill(0), "float");
35
- let lastRadius = -1;
36
- const ow = uint(outWidth);
37
- const oh = uint(outHeight);
38
- const inputWm1 = int(width - 1);
39
- const inputHm1 = int(height - 1);
40
- const outHm1 = int(outHeight - 1);
41
- const horizontalPass = Fn(() => {
42
- const idx = instanceIndex;
43
- const x = idx.mod(ow);
44
- const y = idx.div(ow);
45
- If(y.lessThan(oh), () => {
46
- const sum = vec4(0).toVar();
47
- const xi = x.toInt().mul(int(coordScale));
48
- const yi = y.toInt().mul(int(coordScale)).clamp(int(0), inputHm1);
49
- for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
50
- const texel = textureLoad(inputTexture, uvec2(xi.add(int(i)).clamp(int(0), inputWm1).toUint(), yi.toUint()), int(0));
51
- sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
52
- }
53
- textureStore(intermediateWriteNode, uvec2(x, y), sum).toWriteOnly();
54
- });
55
- })().compute(outWidth * outHeight, [256]);
56
- const verticalPass = Fn(() => {
57
- const idx = instanceIndex;
58
- const x = idx.mod(ow);
59
- const y = idx.div(ow);
60
- If(y.lessThan(oh), () => {
61
- const sum = vec4(0).toVar();
62
- for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
63
- const texel = textureLoad(intermediateReadNode, uvec2(x, y.toInt().add(int(i)).clamp(int(0), outHm1).toUint()), int(0));
64
- sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
65
- }
66
- textureStore(outputNode, uvec2(x, y), sum).toWriteOnly();
67
- });
68
- })().compute(outWidth * outHeight, [256]);
69
- function updateRadius(pixelRadius) {
70
- if (Math.abs(pixelRadius - lastRadius) < .01) return;
71
- lastRadius = pixelRadius;
72
- const sigma = Math.max(pixelRadius * .5, .001);
73
- const newWeights = new Array(KERNEL_SIZE);
74
- let total = 0;
75
- for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
76
- const w = Math.exp(-(i * i) / (2 * sigma * sigma));
77
- newWeights[i + HALF_KERNEL] = w;
78
- total += w;
79
- }
80
- for (let i = 0; i < KERNEL_SIZE; i++) newWeights[i] /= total;
81
- weights.array = newWeights;
82
- }
83
- updateRadius(4);
84
- return {
85
- computeNodes: [horizontalPass, verticalPass],
86
- outputTexture: outputTex,
87
- updateRadius
88
- };
89
- }
90
- function createVariableGaussianBlurCompute(inputTexture, width, height, onCleanup) {
91
- const blurMapTex = new StorageTexture(width, height);
92
- blurMapTex.type = FloatType;
93
- const blurMapWriteNode = storageTexture(blurMapTex);
94
- const blurMapReadNode = storageTexture(blurMapTex).toReadOnly();
95
- const intermediateTex = new StorageTexture(width, height);
96
- intermediateTex.type = FloatType;
97
- const outputTex = new StorageTexture(width, height);
98
- outputTex.type = FloatType;
99
- onCleanup(() => {
100
- blurMapTex.dispose();
101
- intermediateTex.dispose();
102
- outputTex.dispose();
103
- });
104
- const intermediateWriteNode = storageTexture(intermediateTex);
105
- const intermediateReadNode = storageTexture(intermediateTex).toReadOnly();
106
- const outputNode = storageTexture(outputTex);
107
- const weights = uniformArray(FIXED_WEIGHTS, "float");
108
- const w = uint(width);
109
- const h = uint(height);
110
- const wm1 = int(width - 1);
111
- const hm1 = int(height - 1);
112
- const invHalf = float(1 / HALF_KERNEL);
113
- return {
114
- computeNodes: [Fn(() => {
115
- const idx = instanceIndex;
116
- const x = idx.mod(w);
117
- const y = idx.div(w);
118
- If(y.lessThan(h), () => {
119
- const blurRadius = textureLoad(blurMapReadNode, uvec2(x, y), int(0)).r;
120
- const sum = vec4(0).toVar();
121
- const xi = x.toInt();
122
- for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
123
- const offset = float(i).mul(invHalf).mul(blurRadius);
124
- const texel = textureLoad(inputTexture, uvec2(xi.add(offset.round().toInt()).clamp(int(0), wm1).toUint(), y), int(0));
125
- sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
126
- }
127
- textureStore(intermediateWriteNode, uvec2(x, y), sum).toWriteOnly();
128
- });
129
- })().compute(width * height, [256]), Fn(() => {
130
- const idx = instanceIndex;
131
- const x = idx.mod(w);
132
- const y = idx.div(w);
133
- If(y.lessThan(h), () => {
134
- const blurRadius = textureLoad(blurMapReadNode, uvec2(x, y), int(0)).r;
135
- const sum = vec4(0).toVar();
136
- const yi = y.toInt();
137
- for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
138
- const offset = float(i).mul(invHalf).mul(blurRadius);
139
- const texel = textureLoad(intermediateReadNode, uvec2(x, yi.add(offset.round().toInt()).clamp(int(0), hm1).toUint()), int(0));
140
- sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
141
- }
142
- textureStore(outputNode, uvec2(x, y), sum).toWriteOnly();
143
- });
144
- })().compute(width * height, [256])],
145
- outputTexture: outputTex,
146
- blurMapTexture: blurMapTex,
147
- blurMapWriteNode
148
- };
149
- }
150
- export { createVariableGaussianBlurCompute as n, createGaussianBlurCompute as t };