shaders 2.5.80 → 2.5.81

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 (34) hide show
  1. package/dist/core/Liquify-Cr-1qPxN.js +228 -0
  2. package/dist/core/index.js +2 -2
  3. package/dist/core/registry.js +2 -2
  4. package/dist/core/{shaderRegistry-9huRXSRI.js → shaderRegistry-DnmRD6xy.js} +1 -1
  5. package/dist/core/shaders/Liquify/index.d.ts +13 -7
  6. package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
  7. package/dist/core/shaders/Liquify/index.js +1 -1
  8. package/dist/js/createShader.js +1 -1
  9. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  10. package/dist/js/utils/generatePresetCode.js +3 -2
  11. package/dist/react/Shader.js +1 -1
  12. package/dist/react/components/Liquify.d.ts +4 -2
  13. package/dist/react/components/Liquify.d.ts.map +1 -1
  14. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  15. package/dist/react/utils/generatePresetCode.js +3 -2
  16. package/dist/registry.js +50 -20
  17. package/dist/solid/components/Liquify.d.ts +4 -2
  18. package/dist/solid/components/Liquify.d.ts.map +1 -1
  19. package/dist/solid/engine/Shader.js +1 -1
  20. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  21. package/dist/solid/utils/generatePresetCode.js +3 -2
  22. package/dist/svelte/components/Liquify.svelte.d.ts +2 -1
  23. package/dist/svelte/{generatePresetCode-BN1puRG_.js → generatePresetCode-6ecNqXs9.js} +3 -2
  24. package/dist/svelte/index.js +2 -2
  25. package/dist/svelte/source/components/Liquify.svelte +1 -0
  26. package/dist/svelte/utils/generatePresetCode.js +1 -1
  27. package/dist/vue/Liquify.vue_vue_type_script_setup_true_lang.js +3 -2
  28. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  29. package/dist/vue/components/Liquify.vue.d.ts +2 -1
  30. package/dist/vue/components/Liquify.vue.d.ts.map +1 -1
  31. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  32. package/dist/vue/utils/generatePresetCode.js +3 -2
  33. package/package.json +1 -1
  34. package/dist/core/Liquify-Cy6ck3_k.js +0 -157
@@ -0,0 +1,228 @@
1
+ import { t as applyEdgeHandling } from "./edges-CfGcQniB.js";
2
+ import { c as transformEdges } from "./transformations-B5lM6fYX.js";
3
+ import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
4
+ import { DataTexture, FloatType, LinearFilter, RGFormat } from "three";
5
+ import { convertToTexture, float, screenUV, texture, vec2, vec4 } from "three/tsl";
6
+ var GRID_SIZE = 64;
7
+ const componentDefinition = {
8
+ name: "Liquify",
9
+ category: "Interactive",
10
+ description: "Liquid-like interactive deformation effect",
11
+ requiresRTT: true,
12
+ requiresChild: true,
13
+ props: {
14
+ intensity: {
15
+ default: 10,
16
+ description: "Scale of the fabric displacement effect",
17
+ ui: {
18
+ type: ["range", "map"],
19
+ min: 0,
20
+ max: 20,
21
+ step: .1,
22
+ label: "Intensity",
23
+ group: "Effect"
24
+ }
25
+ },
26
+ stiffness: {
27
+ default: 3,
28
+ description: "Fabric rigidity (higher = stiffer canvas, lower = stretchy silk)",
29
+ ui: {
30
+ type: "range",
31
+ min: 1,
32
+ max: 30,
33
+ step: .5,
34
+ label: "Stiffness",
35
+ group: "Effect"
36
+ }
37
+ },
38
+ damping: {
39
+ default: 3,
40
+ description: "How quickly fabric motion settles",
41
+ ui: {
42
+ type: "range",
43
+ min: 0,
44
+ max: 10,
45
+ step: .1,
46
+ label: "Damping",
47
+ group: "Effect"
48
+ }
49
+ },
50
+ radius: {
51
+ default: 1,
52
+ description: "Cursor influence area",
53
+ ui: {
54
+ type: "range",
55
+ min: .1,
56
+ max: 1.5,
57
+ step: .1,
58
+ label: "Radius",
59
+ group: "Effect"
60
+ }
61
+ },
62
+ edges: {
63
+ default: "stretch",
64
+ description: "How to handle edges when distortion pushes content out of bounds",
65
+ transform: transformEdges,
66
+ compileTime: true,
67
+ ui: {
68
+ type: "select",
69
+ options: [
70
+ {
71
+ label: "Stretch",
72
+ value: "stretch"
73
+ },
74
+ {
75
+ label: "Transparent",
76
+ value: "transparent"
77
+ },
78
+ {
79
+ label: "Mirror",
80
+ value: "mirror"
81
+ },
82
+ {
83
+ label: "Wrap",
84
+ value: "wrap"
85
+ }
86
+ ],
87
+ label: "Edges",
88
+ group: "Effect"
89
+ }
90
+ }
91
+ },
92
+ fragmentNode: ({ uniforms, onBeforeRender, childNode, onCleanup, dimensions }) => {
93
+ const displacementX = new Float32Array(GRID_SIZE * GRID_SIZE);
94
+ const displacementY = new Float32Array(GRID_SIZE * GRID_SIZE);
95
+ const velocityX = new Float32Array(GRID_SIZE * GRID_SIZE);
96
+ const velocityY = new Float32Array(GRID_SIZE * GRID_SIZE);
97
+ const tempVelocityX = new Float32Array(GRID_SIZE * GRID_SIZE);
98
+ const tempVelocityY = new Float32Array(GRID_SIZE * GRID_SIZE);
99
+ const tempDisplacementX = new Float32Array(GRID_SIZE * GRID_SIZE);
100
+ const tempDisplacementY = new Float32Array(GRID_SIZE * GRID_SIZE);
101
+ const displacementData = new Float32Array(GRID_SIZE * GRID_SIZE * 2);
102
+ const displacementTexture = new DataTexture(displacementData, GRID_SIZE, GRID_SIZE, RGFormat, FloatType);
103
+ displacementTexture.magFilter = LinearFilter;
104
+ displacementTexture.minFilter = LinearFilter;
105
+ displacementTexture.needsUpdate = true;
106
+ const displacementField = texture(displacementTexture);
107
+ let prevX = .5;
108
+ let prevY = .5;
109
+ let lastTime = Date.now();
110
+ const SUBSTEPS = 2;
111
+ onBeforeRender(({ pointer }) => {
112
+ const currentTime = Date.now();
113
+ const dt = Math.min((currentTime - lastTime) / 1e3, .016);
114
+ lastTime = currentTime;
115
+ if (dt <= 0) return;
116
+ const aspect = dimensions.width / dimensions.height;
117
+ const stiffness = uniforms.stiffness.uniform.value;
118
+ const damping = uniforms.damping.uniform.value;
119
+ const radius = uniforms.radius.uniform.value * .08;
120
+ const rawVelX = (pointer.x - prevX) / dt;
121
+ const rawVelY = (pointer.y - prevY) / dt;
122
+ const speed = Math.sqrt(rawVelX * rawVelX + rawVelY * rawVelY);
123
+ const clampedSpeed = Math.min(speed, 3);
124
+ let dirX = 0;
125
+ let dirY = 0;
126
+ if (speed > .01) {
127
+ dirX = rawVelX / speed;
128
+ dirY = rawVelY / speed;
129
+ }
130
+ const subDt = dt / SUBSTEPS;
131
+ for (let s = 0; s < SUBSTEPS; s++) {
132
+ if (s === 0 && clampedSpeed > .01) {
133
+ const influenceRadius = radius * 3;
134
+ const minI = Math.max(1, Math.floor((pointer.y - influenceRadius) * GRID_SIZE));
135
+ const maxI = Math.min(GRID_SIZE - 2, Math.ceil((pointer.y + influenceRadius) * GRID_SIZE));
136
+ const minJ = Math.max(1, Math.floor((pointer.x - influenceRadius) * GRID_SIZE));
137
+ const maxJ = Math.min(GRID_SIZE - 2, Math.ceil((pointer.x + influenceRadius) * GRID_SIZE));
138
+ for (let i = minI; i <= maxI; i++) for (let j = minJ; j <= maxJ; j++) {
139
+ const idx = i * GRID_SIZE + j;
140
+ const cellX = (j + .5) / GRID_SIZE;
141
+ const cellY = (i + .5) / GRID_SIZE;
142
+ const ddx = aspect >= 1 ? (cellX - pointer.x) * aspect : cellX - pointer.x;
143
+ const ddy = aspect >= 1 ? cellY - pointer.y : (cellY - pointer.y) / aspect;
144
+ const dist = Math.sqrt(ddx * ddx + ddy * ddy);
145
+ if (dist < influenceRadius) {
146
+ const forceMag = Math.exp(-dist * dist / (radius * radius)) * clampedSpeed * dt * 2;
147
+ velocityX[idx] += dirX * forceMag;
148
+ velocityY[idx] += dirY * forceMag;
149
+ }
150
+ }
151
+ }
152
+ const dampFactor = Math.max(0, Math.min(1, 1 - damping * subDt));
153
+ const shearK = stiffness * .35;
154
+ tempVelocityX.set(velocityX);
155
+ tempVelocityY.set(velocityY);
156
+ tempDisplacementX.set(displacementX);
157
+ tempDisplacementY.set(displacementY);
158
+ for (let i = 1; i < GRID_SIZE - 1; i++) for (let j = 1; j < GRID_SIZE - 1; j++) {
159
+ const idx = i * GRID_SIZE + j;
160
+ let fx = 0;
161
+ let fy = 0;
162
+ const idxL = idx - 1;
163
+ const idxR = idx + 1;
164
+ const idxU = idx - GRID_SIZE;
165
+ const idxD = idx + GRID_SIZE;
166
+ fx += stiffness * (displacementX[idxL] - displacementX[idx]);
167
+ fx += stiffness * (displacementX[idxR] - displacementX[idx]);
168
+ fx += stiffness * (displacementX[idxU] - displacementX[idx]);
169
+ fx += stiffness * (displacementX[idxD] - displacementX[idx]);
170
+ fy += stiffness * (displacementY[idxL] - displacementY[idx]);
171
+ fy += stiffness * (displacementY[idxR] - displacementY[idx]);
172
+ fy += stiffness * (displacementY[idxU] - displacementY[idx]);
173
+ fy += stiffness * (displacementY[idxD] - displacementY[idx]);
174
+ const idxUL = idx - GRID_SIZE - 1;
175
+ const idxUR = idx - GRID_SIZE + 1;
176
+ const idxDL = idx + GRID_SIZE - 1;
177
+ const idxDR = idx + GRID_SIZE + 1;
178
+ fx += shearK * (displacementX[idxUL] - displacementX[idx]);
179
+ fx += shearK * (displacementX[idxUR] - displacementX[idx]);
180
+ fx += shearK * (displacementX[idxDL] - displacementX[idx]);
181
+ fx += shearK * (displacementX[idxDR] - displacementX[idx]);
182
+ fy += shearK * (displacementY[idxUL] - displacementY[idx]);
183
+ fy += shearK * (displacementY[idxUR] - displacementY[idx]);
184
+ fy += shearK * (displacementY[idxDL] - displacementY[idx]);
185
+ fy += shearK * (displacementY[idxDR] - displacementY[idx]);
186
+ fx -= stiffness * .1 * displacementX[idx];
187
+ fy -= stiffness * .1 * displacementY[idx];
188
+ tempVelocityX[idx] = velocityX[idx] * dampFactor + fx * subDt;
189
+ tempVelocityY[idx] = velocityY[idx] * dampFactor + fy * subDt;
190
+ tempDisplacementX[idx] = displacementX[idx] + tempVelocityX[idx] * subDt;
191
+ tempDisplacementY[idx] = displacementY[idx] + tempVelocityY[idx] * subDt;
192
+ tempDisplacementX[idx] = Math.max(-.5, Math.min(.5, tempDisplacementX[idx]));
193
+ tempDisplacementY[idx] = Math.max(-.5, Math.min(.5, tempDisplacementY[idx]));
194
+ }
195
+ velocityX.set(tempVelocityX);
196
+ velocityY.set(tempVelocityY);
197
+ displacementX.set(tempDisplacementX);
198
+ displacementY.set(tempDisplacementY);
199
+ }
200
+ for (let i = 0; i < GRID_SIZE; i++) for (let j = 0; j < GRID_SIZE; j++) {
201
+ const idx = i * GRID_SIZE + j;
202
+ const dIdx = idx * 2;
203
+ displacementData[dIdx] = displacementX[idx];
204
+ displacementData[dIdx + 1] = displacementY[idx];
205
+ }
206
+ displacementTexture.needsUpdate = true;
207
+ prevX = pointer.x;
208
+ prevY = pointer.y;
209
+ });
210
+ onCleanup(() => {
211
+ displacementTexture.dispose();
212
+ });
213
+ if (!childNode) return vec4(0, 0, 0, 0);
214
+ const childTexture = convertToTexture(childNode);
215
+ onCleanup(() => {
216
+ if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
217
+ });
218
+ const displacement = displacementField.sample(screenUV).xy;
219
+ const intensityScale = uniforms.intensity.uniform.mul(.1);
220
+ const scaledDisplacement = displacement.mul(intensityScale);
221
+ const maxDisp = float(.15);
222
+ const clampedDisplacement = scaledDisplacement.clamp(vec2(maxDisp.negate(), maxDisp.negate()), vec2(maxDisp, maxDisp));
223
+ const distortedUV = screenUV.sub(clampedDisplacement);
224
+ return unpremultiplyAlpha(applyEdgeHandling(distortedUV, childTexture.sample(distortedUV), childTexture, uniforms.edges.uniform.value));
225
+ }
226
+ };
227
+ var Liquify_default = componentDefinition;
228
+ export { componentDefinition as n, Liquify_default as t };
@@ -53,7 +53,7 @@ import "./Kaleidoscope-B0McCEhc.js";
53
53
  import "./LensFlare-DXgpPyJK.js";
54
54
  import "./LinearBlur-CBl0B23J.js";
55
55
  import "./LinearGradient-C0FT7-Lc.js";
56
- import "./Liquify-Cy6ck3_k.js";
56
+ import "./Liquify-Cr-1qPxN.js";
57
57
  import "./Mirror-DfZBEOUf.js";
58
58
  import "./Neon-E8whPM6C.js";
59
59
  import "./Paper-DJwBbPxA.js";
@@ -95,7 +95,7 @@ import "./VideoTexture-DDnc6aVv.js";
95
95
  import "./WaveDistortion-Caj3cQz7.js";
96
96
  import "./WebcamTexture-rb0dLKSc.js";
97
97
  import "./ZoomBlur-DUrSxwl0.js";
98
- import { t as getAllShaders } from "./shaderRegistry-9huRXSRI.js";
98
+ import { t as getAllShaders } from "./shaderRegistry-DnmRD6xy.js";
99
99
  import { Material, Mesh, MeshBasicNodeMaterial, OrthographicCamera, PlaneGeometry, SRGBColorSpace, Scene, Vector2, WebGPURenderer } from "three/webgpu";
100
100
  import { WebGLRenderer } from "three";
101
101
  import { PI, abs, add, atan, clamp, convertToTexture, cos, div, dot, float, fract, max, min, mix, mul, pow, screenUV, sign, sin, smoothstep, sqrt, step, sub, time, uniform, uv, vec2, vec3, vec4 } from "three/tsl";
@@ -53,7 +53,7 @@ import "./Kaleidoscope-B0McCEhc.js";
53
53
  import "./LensFlare-DXgpPyJK.js";
54
54
  import "./LinearBlur-CBl0B23J.js";
55
55
  import "./LinearGradient-C0FT7-Lc.js";
56
- import "./Liquify-Cy6ck3_k.js";
56
+ import "./Liquify-Cr-1qPxN.js";
57
57
  import "./Mirror-DfZBEOUf.js";
58
58
  import "./Neon-E8whPM6C.js";
59
59
  import "./Paper-DJwBbPxA.js";
@@ -95,5 +95,5 @@ import "./VideoTexture-DDnc6aVv.js";
95
95
  import "./WaveDistortion-Caj3cQz7.js";
96
96
  import "./WebcamTexture-rb0dLKSc.js";
97
97
  import "./ZoomBlur-DUrSxwl0.js";
98
- import { a as shaderRegistry, i as getShadersByCategory, n as getShaderByName, r as getShaderCategories, t as getAllShaders } from "./shaderRegistry-9huRXSRI.js";
98
+ import { a as shaderRegistry, i as getShadersByCategory, n as getShaderByName, r as getShaderCategories, t as getAllShaders } from "./shaderRegistry-DnmRD6xy.js";
99
99
  export { getAllShaders, getShaderByName, getShaderCategories, getShadersByCategory, shaderRegistry };
@@ -47,7 +47,7 @@ import { n as componentDefinition$45 } from "./Kaleidoscope-B0McCEhc.js";
47
47
  import { n as componentDefinition$46 } from "./LensFlare-DXgpPyJK.js";
48
48
  import { n as componentDefinition$47 } from "./LinearBlur-CBl0B23J.js";
49
49
  import { n as componentDefinition$48 } from "./LinearGradient-C0FT7-Lc.js";
50
- import { n as componentDefinition$49 } from "./Liquify-Cy6ck3_k.js";
50
+ import { n as componentDefinition$49 } from "./Liquify-Cr-1qPxN.js";
51
51
  import { n as componentDefinition$50 } from "./Mirror-DfZBEOUf.js";
52
52
  import { n as componentDefinition$51 } from "./Neon-E8whPM6C.js";
53
53
  import { n as componentDefinition$52 } from "./Paper-DJwBbPxA.js";
@@ -2,23 +2,29 @@ import { ComponentDefinition } from '../../types';
2
2
 
3
3
  export interface ComponentProps {
4
4
  /**
5
- * Strength of the distortion effect
5
+ * Scale of the fabric displacement effect
6
6
  *
7
- * Accepts a number between 0 and 5.
8
- * @default 1
7
+ * @default 10
9
8
  */
10
9
  intensity: number;
11
10
  /**
12
- * Rate of distortion decay (higher = faster)
11
+ * Fabric rigidity (higher = stiffer canvas, lower = stretchy silk)
12
+ *
13
+ * Accepts a number between 1 and 30.
14
+ * @default 3
15
+ */
16
+ stiffness: number;
17
+ /**
18
+ * How quickly fabric motion settles
13
19
  *
14
20
  * Accepts a number between 0 and 10.
15
21
  * @default 3
16
22
  */
17
- decay: number;
23
+ damping: number;
18
24
  /**
19
- * Radius of the distortion effect
25
+ * Cursor influence area
20
26
  *
21
- * Accepts a number between 0 and 3.
27
+ * Accepts a number between 0.1 and 1.5.
22
28
  * @default 1
23
29
  */
24
30
  radius: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shaders/Liquify/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAqB,MAAM,iBAAiB,CAAA;AASvE,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CAChB;AAuCD,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,CAAC,cAAc,CAgKnE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shaders/Liquify/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAqB,MAAM,iBAAiB,CAAA;AASvE,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,CAAC,cAAc,CAsQnE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import "../../edges-CfGcQniB.js";
2
2
  import "../../transformations-B5lM6fYX.js";
3
3
  import "../../alpha-C4ptedXe.js";
4
- import { n as componentDefinition, t as Liquify_default } from "../../Liquify-Cy6ck3_k.js";
4
+ import { n as componentDefinition, t as Liquify_default } from "../../Liquify-Cr-1qPxN.js";
5
5
  export { componentDefinition, Liquify_default as default };
@@ -40,7 +40,7 @@ async function createShader(canvas, preset, options) {
40
40
  if (isExternalUser() && shouldCollectTelemetry(options?.disableTelemetry || false, options?.isPreview || false)) {
41
41
  const checkRendering = () => {
42
42
  if (renderer.getPerformanceStats().fps > 0) {
43
- telemetryCollector = startTelemetry(renderer, "2.5.80", options?.disableTelemetry || false, false);
43
+ telemetryCollector = startTelemetry(renderer, "2.5.81", options?.disableTelemetry || false, false);
44
44
  if (telemetryCollector) telemetryCollector.start();
45
45
  telemetryStartTimeout = null;
46
46
  } else telemetryStartTimeout = setTimeout(checkRendering, 500);
@@ -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;AA2sCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAoBlG;AAGD,eAAO,MAAM,mBAAmB,UA4F/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;AA4sCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAoBlG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
@@ -572,8 +572,9 @@ var shaderMetadata = {
572
572
  "Liquify": {
573
573
  "opacity": 1,
574
574
  "blendMode": "normal",
575
- "intensity": 1,
576
- "decay": 3,
575
+ "intensity": 10,
576
+ "stiffness": 3,
577
+ "damping": 3,
577
578
  "radius": 1,
578
579
  "edges": "stretch"
579
580
  },
@@ -80,7 +80,7 @@ const Shader = ({ children, disableTelemetry = false, colorSpace = "p3-linear",
80
80
  return;
81
81
  }
82
82
  if (rendererRef.current.getPerformanceStats().fps > 0) {
83
- telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.80", disableTelemetry, isPreview);
83
+ telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.81", disableTelemetry, isPreview);
84
84
  if (telemetryCollectorRef.current) telemetryCollectorRef.current.start();
85
85
  telemetryStartTimeoutRef.current = null;
86
86
  } else telemetryStartTimeoutRef.current = window.setTimeout(checkRendering, 500);
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { BlendMode, TransformConfig } from '../../core';
2
+ import { BlendMode, PropDriver, TransformConfig } from '../../core';
3
3
  import { ComponentProps } from '../../core/shaders/Liquify';
4
4
 
5
5
  export type { ComponentProps };
@@ -22,7 +22,9 @@ interface BaseShaderProps {
22
22
  * Component-specific props that merge base props with shader-specific props
23
23
  * Note: ComponentProps are made optional since they have defaults from the shader definition
24
24
  */
25
- type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, never>> & {};
25
+ type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, 'intensity'>> & {
26
+ intensity?: ComponentProps['intensity'] | PropDriver;
27
+ };
26
28
  /**
27
29
  * The main React wrapper component for Shader shader nodes
28
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAGH,KAAK,SAAS,EAKd,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACxB;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,GAAG,EACpF,CAAC;AAwDF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmM1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,UAAU,EACf,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACxB;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,GAAG;IACzF,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;CACtD,CAAC;AAwDF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmM1D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -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;AA8tCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,UA4F/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;AA+tCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
@@ -584,8 +584,9 @@ var shaderMetadata = {
584
584
  "Liquify": {
585
585
  "opacity": 1,
586
586
  "blendMode": "normal",
587
- "intensity": 1,
588
- "decay": 3,
587
+ "intensity": 10,
588
+ "stiffness": 3,
589
+ "damping": 3,
589
590
  "radius": 1,
590
591
  "edges": "stretch"
591
592
  },
package/dist/registry.js CHANGED
@@ -9830,36 +9830,51 @@ export const shaderRegistry = [
9830
9830
  "requiresChild": true,
9831
9831
  "props": {
9832
9832
  "intensity": {
9833
- "default": 1,
9834
- "description": "Strength of the distortion effect",
9833
+ "default": 10,
9834
+ "description": "Scale of the fabric displacement effect",
9835
9835
  "ui": {
9836
- "type": "range",
9836
+ "type": [
9837
+ "range",
9838
+ "map"
9839
+ ],
9837
9840
  "min": 0,
9838
- "max": 5,
9841
+ "max": 20,
9839
9842
  "step": 0.1,
9840
9843
  "label": "Intensity",
9841
9844
  "group": "Effect"
9842
9845
  }
9843
9846
  },
9844
- "decay": {
9847
+ "stiffness": {
9845
9848
  "default": 3,
9846
- "description": "Rate of distortion decay (higher = faster)",
9849
+ "description": "Fabric rigidity (higher = stiffer canvas, lower = stretchy silk)",
9850
+ "ui": {
9851
+ "type": "range",
9852
+ "min": 1,
9853
+ "max": 30,
9854
+ "step": 0.5,
9855
+ "label": "Stiffness",
9856
+ "group": "Effect"
9857
+ }
9858
+ },
9859
+ "damping": {
9860
+ "default": 3,
9861
+ "description": "How quickly fabric motion settles",
9847
9862
  "ui": {
9848
9863
  "type": "range",
9849
9864
  "min": 0,
9850
9865
  "max": 10,
9851
9866
  "step": 0.1,
9852
- "label": "Decay",
9867
+ "label": "Damping",
9853
9868
  "group": "Effect"
9854
9869
  }
9855
9870
  },
9856
9871
  "radius": {
9857
9872
  "default": 1,
9858
- "description": "Radius of the distortion effect",
9873
+ "description": "Cursor influence area",
9859
9874
  "ui": {
9860
9875
  "type": "range",
9861
- "min": 0,
9862
- "max": 3,
9876
+ "min": 0.1,
9877
+ "max": 1.5,
9863
9878
  "step": 0.1,
9864
9879
  "label": "Radius",
9865
9880
  "group": "Effect"
@@ -9898,39 +9913,54 @@ export const shaderRegistry = [
9898
9913
  "propsMetadata": {
9899
9914
  "intensity": {
9900
9915
  "ui": {
9901
- "type": "range",
9916
+ "type": [
9917
+ "range",
9918
+ "map"
9919
+ ],
9902
9920
  "min": 0,
9903
- "max": 5,
9921
+ "max": 20,
9904
9922
  "step": 0.1,
9905
9923
  "label": "Intensity",
9906
9924
  "group": "Effect"
9907
9925
  },
9908
- "default": 1,
9909
- "description": "Strength of the distortion effect"
9926
+ "default": 10,
9927
+ "description": "Scale of the fabric displacement effect"
9910
9928
  },
9911
- "decay": {
9929
+ "stiffness": {
9930
+ "ui": {
9931
+ "type": "range",
9932
+ "min": 1,
9933
+ "max": 30,
9934
+ "step": 0.5,
9935
+ "label": "Stiffness",
9936
+ "group": "Effect"
9937
+ },
9938
+ "default": 3,
9939
+ "description": "Fabric rigidity (higher = stiffer canvas, lower = stretchy silk)"
9940
+ },
9941
+ "damping": {
9912
9942
  "ui": {
9913
9943
  "type": "range",
9914
9944
  "min": 0,
9915
9945
  "max": 10,
9916
9946
  "step": 0.1,
9917
- "label": "Decay",
9947
+ "label": "Damping",
9918
9948
  "group": "Effect"
9919
9949
  },
9920
9950
  "default": 3,
9921
- "description": "Rate of distortion decay (higher = faster)"
9951
+ "description": "How quickly fabric motion settles"
9922
9952
  },
9923
9953
  "radius": {
9924
9954
  "ui": {
9925
9955
  "type": "range",
9926
- "min": 0,
9927
- "max": 3,
9956
+ "min": 0.1,
9957
+ "max": 1.5,
9928
9958
  "step": 0.1,
9929
9959
  "label": "Radius",
9930
9960
  "group": "Effect"
9931
9961
  },
9932
9962
  "default": 1,
9933
- "description": "Radius of the distortion effect"
9963
+ "description": "Cursor influence area"
9934
9964
  },
9935
9965
  "edges": {
9936
9966
  "ui": {
@@ -1,5 +1,5 @@
1
1
  import { JSX } from 'solid-js';
2
- import { BlendMode, TransformConfig } from '../../core';
2
+ import { BlendMode, PropDriver, TransformConfig } from '../../core';
3
3
  import { ComponentProps } from '../../core/shaders/Liquify';
4
4
  export type { ComponentProps };
5
5
  /**
@@ -20,7 +20,9 @@ interface BaseShaderProps {
20
20
  * Component-specific props that merge base props with shader-specific props
21
21
  * Note: ComponentProps are made optional since they have defaults from the shader definition
22
22
  */
23
- type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, never>> & {};
23
+ type ShaderComponentProps = BaseShaderProps & Partial<Omit<ComponentProps, 'intensity'>> & {
24
+ intensity?: ComponentProps['intensity'] | PropDriver;
25
+ };
24
26
  /**
25
27
  * The main Solid wrapper component for Shader shader nodes
26
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAGH,KAAK,SAAS,EAKd,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACxC;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,GAAG,EACpF,CAAC;AAmCF;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA+LlE"}
1
+ {"version":3,"file":"Liquify.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,UAAU,EACf,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACxC;AAOD;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,GAAG;IACzF,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;CACtD,CAAC;AAmCF;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA+LlE"}
@@ -63,7 +63,7 @@ function Shader(allProps) {
63
63
  const checkRendering = () => {
64
64
  const stats = rendererInstance.getPerformanceStats();
65
65
  if (stats.fps > 0) {
66
- const version = "2.5.80";
66
+ const version = "2.5.81";
67
67
  telemetryCollector = startTelemetry(rendererInstance, version, props.disableTelemetry, props.isPreview);
68
68
  if (telemetryCollector) {
69
69
  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;AAqtCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,UA4F/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;AAstCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAsElG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
@@ -579,8 +579,9 @@ const shaderMetadata = {
579
579
  "Liquify": {
580
580
  "opacity": 1,
581
581
  "blendMode": "normal",
582
- "intensity": 1,
583
- "decay": 3,
582
+ "intensity": 10,
583
+ "stiffness": 3,
584
+ "damping": 3,
584
585
  "radius": 1,
585
586
  "edges": "stretch"
586
587
  },
@@ -1,9 +1,10 @@
1
- import { type BlendMode, type TransformConfig } from '../../core';
1
+ import { type BlendMode, type PropDriver, type TransformConfig } from '../../core';
2
2
  import { type ComponentProps } from '../../core/shaders/Liquify';
3
3
  /**
4
4
  * Define component props including blend mode, opacity, visibility, masking, and transformation
5
5
  */
6
6
  interface ExtendedComponentProps extends Partial<ComponentProps> {
7
+ intensity?: ComponentProps['intensity'] | PropDriver;
7
8
  blendMode?: BlendMode;
8
9
  opacity?: number;
9
10
  visible?: boolean;
@@ -577,8 +577,9 @@ var shaderMetadata = {
577
577
  "Liquify": {
578
578
  "opacity": 1,
579
579
  "blendMode": "normal",
580
- "intensity": 1,
581
- "decay": 3,
580
+ "intensity": 10,
581
+ "stiffness": 3,
582
+ "damping": 3,
582
583
  "radius": 1,
583
584
  "edges": "stretch"
584
585
  },
@@ -1,4 +1,4 @@
1
- import { n as generatePresetCode } from "./generatePresetCode-BN1puRG_.js";
1
+ import { n as generatePresetCode } from "./generatePresetCode-6ecNqXs9.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";
@@ -13188,7 +13188,7 @@ function Shader($$anchor, $$props) {
13188
13188
  const checkRendering = () => {
13189
13189
  if (!rendererInstance) return;
13190
13190
  if (rendererInstance.getPerformanceStats().fps > 0) {
13191
- telemetryCollector = startTelemetry(rendererInstance, "2.5.80", disableTelemetry(), isPreview());
13191
+ telemetryCollector = startTelemetry(rendererInstance, "2.5.81", disableTelemetry(), isPreview());
13192
13192
  if (telemetryCollector) telemetryCollector.start();
13193
13193
  telemetryStartTimeout = null;
13194
13194
  } else telemetryStartTimeout = window.setTimeout(checkRendering, 500);
@@ -19,6 +19,7 @@
19
19
  * Define component props including blend mode, opacity, visibility, masking, and transformation
20
20
  */
21
21
  interface ExtendedComponentProps extends Partial<ComponentProps> {
22
+ intensity?: ComponentProps['intensity'] | PropDriver;
22
23
  blendMode?: BlendMode;
23
24
  opacity?: number;
24
25
  visible?: boolean;
@@ -1,2 +1,2 @@
1
- import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-BN1puRG_.js";
1
+ import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-6ecNqXs9.js";
2
2
  export { availableComponents, generatePresetCode };
@@ -6,6 +6,7 @@ var _hoisted_1 = ["data-shader-id"];
6
6
  var Liquify_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
7
  __name: "Liquify",
8
8
  props: /* @__PURE__ */ mergeDefaults({
9
+ intensity: {},
9
10
  blendMode: {},
10
11
  opacity: {},
11
12
  visible: { type: Boolean },
@@ -14,8 +15,8 @@ var Liquify_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
14
15
  maskType: {},
15
16
  renderOrder: {},
16
17
  transform: {},
17
- intensity: {},
18
- decay: {},
18
+ stiffness: {},
19
+ damping: {},
19
20
  radius: {},
20
21
  edges: {}
21
22
  }, {
@@ -57,7 +57,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
57
57
  const startTelemetryWhenReady = () => {
58
58
  const checkRendering = () => {
59
59
  if (rendererInstance.value.getPerformanceStats().fps > 0) {
60
- telemetryCollector = startTelemetry(rendererInstance.value, "2.5.80", props.disableTelemetry, props.isPreview);
60
+ telemetryCollector = startTelemetry(rendererInstance.value, "2.5.81", props.disableTelemetry, props.isPreview);
61
61
  if (telemetryCollector) telemetryCollector.start();
62
62
  telemetryStartTimeout = null;
63
63
  } else telemetryStartTimeout = setTimeout(checkRendering, 500);
@@ -1,10 +1,11 @@
1
- import { BlendMode, TransformConfig } from '../../core';
1
+ import { BlendMode, PropDriver, TransformConfig } from '../../core';
2
2
  import { ComponentProps } from '../../core/shaders/Liquify';
3
3
 
4
4
  /**
5
5
  * Define component props including blend mode, opacity, visibility, masking, and transformation
6
6
  */
7
7
  interface ExtendedComponentProps extends Partial<ComponentProps> {
8
+ intensity?: ComponentProps['intensity'] | PropDriver;
8
9
  blendMode?: BlendMode;
9
10
  opacity?: number;
10
11
  visible?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Liquify.vue.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.vue"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,SAAS,EAKd,KAAK,eAAe,EACrB,MAAM,cAAc,CAAA;AAIrB,OAAO,EAAsB,KAAK,cAAc,EAAC,MAAM,sBAAsB,CAAA;AAI7E;;GAEG;AACH,UAAU,sBAAuB,SAAQ,OAAO,CAAC,cAAc,CAAC;IAC9D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACtC;AA0RD,iBAAS,cAAc;qBAsCM,GAAG;EAK/B;AAUD,QAAA,MAAM,eAAe;;;;;;;eAvVP,SAAS;aAEX,OAAO;4EA2VjB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"Liquify.vue.d.ts","sourceRoot":"","sources":["../../src/components/Liquify.vue"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,SAAS,EAId,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,cAAc,CAAA;AAIrB,OAAO,EAAsB,KAAK,cAAc,EAAC,MAAM,sBAAsB,CAAA;AAI7E;;GAEG;AACH,UAAU,sBAAuB,SAAQ,OAAO,CAAC,cAAc,CAAC;IAC9D,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACtC;AA0RD,iBAAS,cAAc;qBAsCM,GAAG;EAK/B;AAUD,QAAA,MAAM,eAAe;;;;;;;eAvVP,SAAS;aAEX,OAAO;4EA2VjB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
@@ -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;AAotCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAiFlG;AAGD,eAAO,MAAM,mBAAmB,UA4F/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;AAqtCD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAiFlG;AAGD,eAAO,MAAM,mBAAmB,UA4F/B,CAAA"}
@@ -575,8 +575,9 @@ var shaderMetadata = {
575
575
  "Liquify": {
576
576
  "opacity": 1,
577
577
  "blendMode": "normal",
578
- "intensity": 1,
579
- "decay": 3,
578
+ "intensity": 10,
579
+ "stiffness": 3,
580
+ "damping": 3,
580
581
  "radius": 1,
581
582
  "edges": "stretch"
582
583
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaders",
3
- "version": "2.5.80",
3
+ "version": "2.5.81",
4
4
  "description": "Shader magic for modern frontends",
5
5
  "author": "Shader Effects Inc.",
6
6
  "homepage": "https://shaders.com/",
@@ -1,157 +0,0 @@
1
- import { t as applyEdgeHandling } from "./edges-CfGcQniB.js";
2
- import { c as transformEdges } from "./transformations-B5lM6fYX.js";
3
- import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
4
- import { DataTexture, FloatType, LinearFilter, RGFormat } from "three";
5
- import { convertToTexture, float, screenUV, texture, uniform, vec2, vec4 } from "three/tsl";
6
- var GRID_SIZE = 32;
7
- var displacementStateCache = /* @__PURE__ */ new WeakMap();
8
- var getOrCreateDisplacementState = (uniforms) => {
9
- let state = displacementStateCache.get(uniforms);
10
- if (!state) {
11
- const data = new Float32Array(GRID_SIZE * GRID_SIZE * 2);
12
- const dataTexture = new DataTexture(data, GRID_SIZE, GRID_SIZE, RGFormat, FloatType);
13
- dataTexture.magFilter = LinearFilter;
14
- dataTexture.minFilter = LinearFilter;
15
- dataTexture.needsUpdate = true;
16
- state = {
17
- dataTexture,
18
- data,
19
- tslNode: texture(dataTexture),
20
- initialized: false
21
- };
22
- displacementStateCache.set(uniforms, state);
23
- }
24
- return state;
25
- };
26
- const componentDefinition = {
27
- name: "Liquify",
28
- category: "Interactive",
29
- description: "Liquid-like interactive deformation effect",
30
- requiresRTT: true,
31
- requiresChild: true,
32
- props: {
33
- intensity: {
34
- default: 1,
35
- description: "Strength of the distortion effect",
36
- ui: {
37
- type: "range",
38
- min: 0,
39
- max: 5,
40
- step: .1,
41
- label: "Intensity",
42
- group: "Effect"
43
- }
44
- },
45
- decay: {
46
- default: 3,
47
- description: "Rate of distortion decay (higher = faster)",
48
- ui: {
49
- type: "range",
50
- min: 0,
51
- max: 10,
52
- step: .1,
53
- label: "Decay",
54
- group: "Effect"
55
- }
56
- },
57
- radius: {
58
- default: 1,
59
- description: "Radius of the distortion effect",
60
- ui: {
61
- type: "range",
62
- min: 0,
63
- max: 3,
64
- step: .1,
65
- label: "Radius",
66
- group: "Effect"
67
- }
68
- },
69
- edges: {
70
- default: "stretch",
71
- description: "How to handle edges when distortion pushes content out of bounds",
72
- transform: transformEdges,
73
- compileTime: true,
74
- ui: {
75
- type: "select",
76
- options: [
77
- {
78
- label: "Stretch",
79
- value: "stretch"
80
- },
81
- {
82
- label: "Transparent",
83
- value: "transparent"
84
- },
85
- {
86
- label: "Mirror",
87
- value: "mirror"
88
- },
89
- {
90
- label: "Wrap",
91
- value: "wrap"
92
- }
93
- ],
94
- label: "Edges",
95
- group: "Effect"
96
- }
97
- }
98
- },
99
- fragmentNode: ({ uniforms, onBeforeRender, childNode, onCleanup }) => {
100
- const { dataTexture: displacementTexture, data: displacementData, tslNode: displacementField } = getOrCreateDisplacementState(uniforms);
101
- const mouseVelX = uniform(0);
102
- const mouseVelY = uniform(0);
103
- let prevX = .5;
104
- let prevY = .5;
105
- let lastTime = Date.now();
106
- onBeforeRender(({ pointer, dimensions }) => {
107
- const currentTime = Date.now();
108
- const dt = Math.min((currentTime - lastTime) / 1e3, .016);
109
- lastTime = currentTime;
110
- const aspect = dimensions.width / dimensions.height;
111
- const velX = dt > 0 ? (pointer.x - prevX) / dt : 0;
112
- const velY = dt > 0 ? (pointer.y - prevY) / dt : 0;
113
- mouseVelX.value = mouseVelX.value * .85 + velX * .15;
114
- mouseVelY.value = mouseVelY.value * .85 + velY * .15;
115
- const decay = uniforms.decay.uniform.value;
116
- const intensity = uniforms.intensity.uniform.value;
117
- const radius = uniforms.radius.uniform.value * .05;
118
- for (let i = 0; i < GRID_SIZE; i++) for (let j = 0; j < GRID_SIZE; j++) {
119
- const idx = (i * GRID_SIZE + j) * 2;
120
- displacementData[idx] *= 1 - decay * dt;
121
- displacementData[idx + 1] *= 1 - decay * dt;
122
- const cellX = (j + .5) / GRID_SIZE;
123
- const cellY = (i + .5) / GRID_SIZE;
124
- const dx = aspect >= 1 ? (cellX - pointer.x) * aspect : cellX - pointer.x;
125
- const dy = aspect >= 1 ? cellY - pointer.y : (cellY - pointer.y) / aspect;
126
- const dist = Math.sqrt(dx * dx + dy * dy);
127
- if (dist < radius * 2 && Math.abs(velX) + Math.abs(velY) > .01) {
128
- const influence = Math.exp(-dist * dist / (radius * radius));
129
- displacementData[idx] += mouseVelX.value * influence * intensity * dt * .5;
130
- displacementData[idx + 1] += mouseVelY.value * influence * intensity * dt * .5;
131
- }
132
- displacementData[idx] = Math.max(-1, Math.min(1, displacementData[idx]));
133
- displacementData[idx + 1] = Math.max(-1, Math.min(1, displacementData[idx + 1]));
134
- }
135
- displacementTexture.needsUpdate = true;
136
- prevX = pointer.x;
137
- prevY = pointer.y;
138
- });
139
- onCleanup(() => {
140
- displacementTexture.dispose();
141
- displacementStateCache.delete(uniforms);
142
- });
143
- if (!childNode) return vec4(0, 0, 0, 0);
144
- const childTexture = convertToTexture(childNode);
145
- onCleanup(() => {
146
- if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
147
- });
148
- const displacement = displacementField.sample(screenUV).xy;
149
- const maxDisplacement = float(.2);
150
- const negMaxDisplacement = float(-.2);
151
- const clampedDisplacement = displacement.clamp(vec2(negMaxDisplacement, negMaxDisplacement), vec2(maxDisplacement, maxDisplacement));
152
- const distortedUV = screenUV.sub(clampedDisplacement);
153
- return unpremultiplyAlpha(applyEdgeHandling(distortedUV, childTexture.sample(distortedUV), childTexture, uniforms.edges.uniform.value));
154
- }
155
- };
156
- var Liquify_default = componentDefinition;
157
- export { componentDefinition as n, Liquify_default as t };