shaders 2.2.42 → 2.2.43

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 (38) hide show
  1. package/dist/core/WebcamTexture-D4Uv7Plz.js +168 -0
  2. package/dist/core/index.js +11 -9
  3. package/dist/core/shaderRegistry.d.ts.map +1 -1
  4. package/dist/core/shaders/WebcamTexture/index.d.ts +21 -0
  5. package/dist/core/shaders/WebcamTexture/index.d.ts.map +1 -0
  6. package/dist/core/shaders/WebcamTexture/index.js +2 -0
  7. package/dist/core/shaders/ZoomBlur/index.js +1 -1
  8. package/dist/react/components/WebcamTexture.d.ts +31 -0
  9. package/dist/react/components/WebcamTexture.d.ts.map +1 -0
  10. package/dist/react/{generatePresetCode-BrkW1bEe.js → generatePresetCode-D0yiVxb4.js} +7 -0
  11. package/dist/react/index.d.ts +1 -0
  12. package/dist/react/index.d.ts.map +1 -1
  13. package/dist/react/index.js +570 -431
  14. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  15. package/dist/react/utils/generatePresetCode.js +1 -1
  16. package/dist/registry.js +91 -0
  17. package/dist/solid/components/WebcamTexture.d.ts +28 -0
  18. package/dist/solid/components/WebcamTexture.d.ts.map +1 -0
  19. package/dist/solid/index.d.ts +1 -0
  20. package/dist/solid/index.d.ts.map +1 -1
  21. package/dist/solid/index.js +508 -366
  22. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  23. package/dist/solid/utils/generatePresetCode.js +7 -0
  24. package/dist/svelte/components/WebcamTexture.svelte.d.ts +19 -0
  25. package/dist/svelte/{generatePresetCode-bx7z5wvC.js → generatePresetCode-DUGaV_ym.js} +7 -0
  26. package/dist/svelte/index.d.ts +1 -0
  27. package/dist/svelte/index.js +115 -4
  28. package/dist/svelte/utils/generatePresetCode.js +1 -1
  29. package/dist/vue/components/WebcamTexture.vue.d.ts +57 -0
  30. package/dist/vue/components/WebcamTexture.vue.d.ts.map +1 -0
  31. package/dist/vue/{generatePresetCode-_7ZzqQPH.js → generatePresetCode-CShQ8TLw.js} +7 -0
  32. package/dist/vue/index.d.ts +1 -0
  33. package/dist/vue/index.d.ts.map +1 -1
  34. package/dist/vue/index.js +131 -9
  35. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  36. package/dist/vue/utils/generatePresetCode.js +1 -1
  37. package/package.json +9 -1
  38. /package/dist/core/{ZoomBlur-CTrw7HxX.js → ZoomBlur-CIkkDBIo.js} +0 -0
@@ -0,0 +1,168 @@
1
+ import { SRGBColorSpace, VideoTexture } from "three/webgpu";
2
+ import { float, max, min, or, screenUV, select, step, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
3
+ const componentDefinition = {
4
+ name: "WebcamTexture",
5
+ category: "Base Layers",
6
+ description: "Display a live webcam feed with customizable object-fit modes",
7
+ props: {
8
+ objectFit: {
9
+ default: "cover",
10
+ description: "How the webcam feed should be sized within the viewport",
11
+ transform: (value) => {
12
+ return {
13
+ "cover": 0,
14
+ "contain": 1,
15
+ "fill": 2,
16
+ "scale-down": 3,
17
+ "none": 4
18
+ }[value] ?? 0;
19
+ },
20
+ ui: {
21
+ type: "select",
22
+ options: [
23
+ {
24
+ label: "Cover",
25
+ value: "cover"
26
+ },
27
+ {
28
+ label: "Contain",
29
+ value: "contain"
30
+ },
31
+ {
32
+ label: "Fill",
33
+ value: "fill"
34
+ },
35
+ {
36
+ label: "Scale Down",
37
+ value: "scale-down"
38
+ },
39
+ {
40
+ label: "None",
41
+ value: "none"
42
+ }
43
+ ],
44
+ label: "Object Fit"
45
+ }
46
+ },
47
+ mirror: {
48
+ default: true,
49
+ description: "Mirror the webcam feed horizontally (selfie mode)",
50
+ ui: {
51
+ type: "checkbox",
52
+ label: "Mirror"
53
+ }
54
+ }
55
+ },
56
+ fragmentNode: ({ uniforms, onCleanup }) => {
57
+ const baseUV = screenUV;
58
+ let mediaStream = null;
59
+ let videoElement = null;
60
+ let videoTexture = null;
61
+ let isInitialized = false;
62
+ let isDisposed = false;
63
+ const videoAspectUniform = uniform(1);
64
+ const videoWidthUniform = uniform(640);
65
+ const videoHeightUniform = uniform(480);
66
+ const placeholderVideo = document.createElement("video");
67
+ placeholderVideo.playsInline = true;
68
+ placeholderVideo.muted = true;
69
+ videoTexture = new VideoTexture(placeholderVideo);
70
+ videoTexture.colorSpace = SRGBColorSpace;
71
+ const textureNode = texture(videoTexture);
72
+ const startWebcam = async () => {
73
+ if (isInitialized || isDisposed) return;
74
+ try {
75
+ mediaStream = await navigator.mediaDevices.getUserMedia({
76
+ video: {
77
+ width: { ideal: 1280 },
78
+ height: { ideal: 720 },
79
+ facingMode: "user"
80
+ },
81
+ audio: false
82
+ });
83
+ if (isDisposed) {
84
+ mediaStream.getTracks().forEach((track) => track.stop());
85
+ mediaStream = null;
86
+ return;
87
+ }
88
+ videoElement = document.createElement("video");
89
+ videoElement.srcObject = mediaStream;
90
+ videoElement.playsInline = true;
91
+ videoElement.muted = true;
92
+ await new Promise((resolve, reject) => {
93
+ if (!videoElement) return reject(/* @__PURE__ */ new Error("Video element not created"));
94
+ videoElement.onloadedmetadata = () => {
95
+ resolve();
96
+ };
97
+ videoElement.onerror = () => {
98
+ reject(/* @__PURE__ */ new Error("Failed to load video metadata"));
99
+ };
100
+ });
101
+ if (isDisposed) return;
102
+ await videoElement.play();
103
+ if (isDisposed) return;
104
+ const width = videoElement.videoWidth || 640;
105
+ const height = videoElement.videoHeight || 480;
106
+ videoAspectUniform.value = width / height;
107
+ videoWidthUniform.value = width;
108
+ videoHeightUniform.value = height;
109
+ if (videoTexture) videoTexture.dispose();
110
+ videoTexture = new VideoTexture(videoElement);
111
+ videoTexture.colorSpace = SRGBColorSpace;
112
+ textureNode.value = videoTexture;
113
+ isInitialized = true;
114
+ console.log(`[WebcamTexture] Webcam started: ${width}x${height}`);
115
+ } catch (error) {
116
+ if (error instanceof DOMException) if (error.name === "NotAllowedError") console.error("[WebcamTexture] Camera permission denied by user");
117
+ else if (error.name === "NotFoundError") console.error("[WebcamTexture] No camera found on this device");
118
+ else if (error.name === "NotReadableError") console.error("[WebcamTexture] Camera is already in use by another application");
119
+ else console.error("[WebcamTexture] Camera error:", error.message);
120
+ else console.error("[WebcamTexture] Failed to start webcam:", error);
121
+ }
122
+ };
123
+ startWebcam();
124
+ onCleanup(() => {
125
+ isDisposed = true;
126
+ if (mediaStream) {
127
+ mediaStream.getTracks().forEach((track) => track.stop());
128
+ mediaStream = null;
129
+ }
130
+ if (videoTexture) {
131
+ videoTexture.dispose();
132
+ videoTexture = null;
133
+ }
134
+ if (videoElement) {
135
+ videoElement.srcObject = null;
136
+ videoElement = null;
137
+ }
138
+ placeholderVideo.srcObject = null;
139
+ isInitialized = false;
140
+ });
141
+ const uv$1 = baseUV;
142
+ const viewportAspect = viewportSize.x.div(viewportSize.y);
143
+ const objectFitMode = uniforms.objectFit.uniform;
144
+ const coverScale = max(viewportAspect.div(videoAspectUniform), float(1));
145
+ const coverUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
146
+ const containScale = min(viewportAspect.div(videoAspectUniform), float(1));
147
+ const containUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(containScale), containScale);
148
+ const fillUVScale = vec2(1, 1);
149
+ const scaleDownScale = min(min(viewportAspect.div(videoAspectUniform), float(1)), min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform)));
150
+ const scaleDownUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
151
+ const noneScale = min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform));
152
+ const noneUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
153
+ const isCover = step(objectFitMode, float(.5));
154
+ const isContain = step(float(.5), objectFitMode).mul(step(objectFitMode, float(1.5)));
155
+ const isFill = step(float(1.5), objectFitMode).mul(step(objectFitMode, float(2.5)));
156
+ const isScaleDown = step(float(2.5), objectFitMode).mul(step(objectFitMode, float(3.5)));
157
+ const isNone = step(float(3.5), objectFitMode);
158
+ const uvScale = vec2(0).add(coverUVScale.mul(isCover)).add(containUVScale.mul(isContain)).add(fillUVScale.mul(isFill)).add(scaleDownUVScale.mul(isScaleDown)).add(noneUVScale.mul(isNone));
159
+ const adjustedUV = uv$1.sub(vec2(.5)).div(uvScale).add(vec2(.5));
160
+ const mirrorMode = uniforms.mirror.uniform;
161
+ const finalUV = vec2(select(mirrorMode, float(1).sub(adjustedUV.x), adjustedUV.x), float(1).sub(adjustedUV.y));
162
+ const sampledColor = textureNode.sample(finalUV);
163
+ const isOutOfBounds = or(or(finalUV.x.lessThan(0), finalUV.x.greaterThan(1)), or(finalUV.y.lessThan(0), finalUV.y.greaterThan(1)));
164
+ return vec4(sampledColor.rgb, select(isOutOfBounds, float(0), sampledColor.a));
165
+ }
166
+ };
167
+ var WebcamTexture_default = componentDefinition;
168
+ export { componentDefinition as n, WebcamTexture_default as t };
@@ -62,7 +62,8 @@ import { n as componentDefinition$56 } from "./Tritone-DzvSKVfR.js";
62
62
  import { n as componentDefinition$57 } from "./Twirl-BXH4uAd6.js";
63
63
  import { n as componentDefinition$58 } from "./Vibrance-ByN9bRgU.js";
64
64
  import { n as componentDefinition$59 } from "./WaveDistortion-BA1PyqYH.js";
65
- import { n as componentDefinition$60 } from "./ZoomBlur-CTrw7HxX.js";
65
+ import { n as componentDefinition$60 } from "./WebcamTexture-D4Uv7Plz.js";
66
+ import { n as componentDefinition$61 } from "./ZoomBlur-CIkkDBIo.js";
66
67
  import { Material, Mesh, MeshBasicNodeMaterial, OrthographicCamera, PlaneGeometry, SRGBColorSpace, Scene, WebGPURenderer } from "three/webgpu";
67
68
  import { WebGLRenderer } from "three";
68
69
  import { PI, abs, add, atan, convertToTexture, cos, div, dot, float, fract, max, min, mix, mul, pow, screenUV, sin, smoothstep, sqrt, step, sub, time, uniform, uv, vec2, vec3, vec4 } from "three/tsl";
@@ -1089,7 +1090,7 @@ function shaderRenderer() {
1089
1090
  }
1090
1091
  }
1091
1092
  };
1092
- const registerNode = (id, fragmentNodeFunc, parentId, metadata, uniforms = {}, componentDefinition$61) => {
1093
+ const registerNode = (id, fragmentNodeFunc, parentId, metadata, uniforms = {}, componentDefinition$62) => {
1093
1094
  if (fragmentNodeFunc === null) {
1094
1095
  const queueIndex = pendingRegistrationQueue.findIndex((item) => item.id === id);
1095
1096
  if (queueIndex !== -1) {
@@ -1107,7 +1108,7 @@ function shaderRenderer() {
1107
1108
  parentId,
1108
1109
  metadata,
1109
1110
  uniforms,
1110
- componentDefinition: componentDefinition$61
1111
+ componentDefinition: componentDefinition$62
1111
1112
  };
1112
1113
  else pendingRegistrationQueue.push({
1113
1114
  id,
@@ -1115,7 +1116,7 @@ function shaderRenderer() {
1115
1116
  parentId,
1116
1117
  metadata,
1117
1118
  uniforms,
1118
- componentDefinition: componentDefinition$61
1119
+ componentDefinition: componentDefinition$62
1119
1120
  });
1120
1121
  return;
1121
1122
  }
@@ -1148,11 +1149,11 @@ function shaderRenderer() {
1148
1149
  }
1149
1150
  const nodeInfo = {
1150
1151
  id,
1151
- componentName: componentDefinition$61?.name || "Unknown",
1152
+ componentName: componentDefinition$62?.name || "Unknown",
1152
1153
  fragmentNodeFunc,
1153
1154
  parentId,
1154
- requiresRTT: componentDefinition$61?.requiresRTT || false,
1155
- requiresChild: componentDefinition$61?.requiresChild || false,
1155
+ requiresRTT: componentDefinition$62?.requiresRTT || false,
1156
+ requiresChild: componentDefinition$62?.requiresChild || false,
1156
1157
  opacityUniform,
1157
1158
  metadata: {
1158
1159
  blendMode: metadata?.blendMode || "normal",
@@ -1468,7 +1469,7 @@ function shaderRenderer() {
1468
1469
  if (pendingRegistrationQueue.length === 0) return;
1469
1470
  const queue = [...pendingRegistrationQueue];
1470
1471
  pendingRegistrationQueue = [];
1471
- for (const { id, fragmentNodeFunc, parentId, metadata, uniforms, componentDefinition: componentDefinition$61 } of queue) if (fragmentNodeFunc) registerNode(id, fragmentNodeFunc, parentId, metadata, uniforms, componentDefinition$61);
1472
+ for (const { id, fragmentNodeFunc, parentId, metadata, uniforms, componentDefinition: componentDefinition$62 } of queue) if (fragmentNodeFunc) registerNode(id, fragmentNodeFunc, parentId, metadata, uniforms, componentDefinition$62);
1472
1473
  };
1473
1474
  const initialize = async ({ canvas, enablePerformanceTracking: enableTracking = false }) => {
1474
1475
  if (isInitialized || isInitializing) return;
@@ -1823,7 +1824,8 @@ var createShaderRegistry = () => {
1823
1824
  Twirl: componentDefinition$57,
1824
1825
  Vibrance: componentDefinition$58,
1825
1826
  WaveDistortion: componentDefinition$59,
1826
- ZoomBlur: componentDefinition$60
1827
+ WebcamTexture: componentDefinition$60,
1828
+ ZoomBlur: componentDefinition$61
1827
1829
  };
1828
1830
  Object.entries(shaderDefinitions).forEach(([fileName, def]) => {
1829
1831
  const propsMetadata = {};
@@ -1 +1 @@
1
- {"version":3,"file":"shaderRegistry.d.ts","sourceRoot":"","sources":["../src/shaderRegistry.ts"],"names":[],"mappings":"AAgEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAElD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAC5B,EAAE,CAAC,EAAE,GAAG,CAAA;QACR,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;CACH;AAiGD,eAAO,MAAM,cAAc,qCAAyB,CAAA;AAGpD,wBAAgB,aAAa,IAAI,mBAAmB,EAAE,CAErD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE7E;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAE5E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAG9C"}
1
+ {"version":3,"file":"shaderRegistry.d.ts","sourceRoot":"","sources":["../src/shaderRegistry.ts"],"names":[],"mappings":"AAiEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAElD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAC5B,EAAE,CAAC,EAAE,GAAG,CAAA;QACR,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;CACH;AAkGD,eAAO,MAAM,cAAc,qCAAyB,CAAA;AAGpD,wBAAgB,aAAa,IAAI,mBAAmB,EAAE,CAErD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE7E;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAE5E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAG9C"}
@@ -0,0 +1,21 @@
1
+ import { ComponentDefinition } from '../../types';
2
+
3
+ export interface ComponentProps {
4
+ /**
5
+ * How the webcam feed should be sized within the viewport
6
+ *
7
+ * Accepts one of: `"cover"`, `"contain"`, `"fill"`, `"scale-down"`, `"none"`.
8
+ * @default "cover"
9
+ */
10
+ objectFit: string;
11
+ /**
12
+ * Mirror the webcam feed horizontally (selfie mode)
13
+ *
14
+ * Accepts a boolean value (`true` or `false`).
15
+ * @default true
16
+ */
17
+ mirror: boolean;
18
+ }
19
+ export declare const componentDefinition: ComponentDefinition<ComponentProps>;
20
+ export default componentDefinition;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shaders/WebcamTexture/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAqB,MAAM,iBAAiB,CAAA;AAMvE,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,CAAC,cAAc,CAsRnE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { n as componentDefinition, t as WebcamTexture_default } from "../../WebcamTexture-D4Uv7Plz.js";
2
+ export { componentDefinition, WebcamTexture_default as default };
@@ -1,3 +1,3 @@
1
1
  import "../../transformations-YbhRK-rd.js";
2
- import { n as componentDefinition, t as ZoomBlur_default } from "../../ZoomBlur-CTrw7HxX.js";
2
+ import { n as componentDefinition, t as ZoomBlur_default } from "../../ZoomBlur-CIkkDBIo.js";
3
3
  export { componentDefinition, ZoomBlur_default as default };
@@ -0,0 +1,31 @@
1
+ import { default as React } from 'react';
2
+ import { BlendMode, TransformConfig } from '../../core';
3
+ import { ComponentProps } from '../../core/shaders/WebcamTexture';
4
+
5
+ export type { ComponentProps };
6
+ /**
7
+ * Base props that all shader components have
8
+ */
9
+ interface BaseShaderProps {
10
+ children?: React.ReactNode;
11
+ blendMode?: BlendMode;
12
+ opacity?: number;
13
+ visible?: boolean;
14
+ id?: string;
15
+ maskSource?: string;
16
+ maskType?: string;
17
+ renderOrder?: number;
18
+ transform?: Partial<TransformConfig>;
19
+ ref?: React.Ref<any>;
20
+ }
21
+ /**
22
+ * Component-specific props that merge base props with shader-specific props
23
+ * Note: ComponentProps are made optional since they have defaults from the shader definition
24
+ */
25
+ type ShaderComponentProps = BaseShaderProps & Partial<ComponentProps>;
26
+ /**
27
+ * The main React wrapper component for Shader shader nodes
28
+ */
29
+ export declare const OmbreComponent: React.FC<ShaderComponentProps>;
30
+ export default OmbreComponent;
31
+ //# sourceMappingURL=WebcamTexture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebcamTexture.d.ts","sourceRoot":"","sources":["../../src/components/WebcamTexture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGtF,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;AAED;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAsDtE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAwJzD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -601,6 +601,12 @@ var shaderMetadata = {
601
601
  "waveType": "sine",
602
602
  "edges": "stretch"
603
603
  },
604
+ "WebcamTexture": {
605
+ "opacity": 1,
606
+ "blendMode": "normal",
607
+ "objectFit": "cover",
608
+ "mirror": true
609
+ },
604
610
  "ZoomBlur": {
605
611
  "opacity": 1,
606
612
  "blendMode": "normal",
@@ -736,6 +742,7 @@ const availableComponents = [
736
742
  "Twirl",
737
743
  "Vibrance",
738
744
  "WaveDistortion",
745
+ "WebcamTexture",
739
746
  "ZoomBlur"
740
747
  ];
741
748
  export { generatePresetCode as n, availableComponents as t };
@@ -58,6 +58,7 @@ export { default as Tritone } from './components/Tritone';
58
58
  export { default as Twirl } from './components/Twirl';
59
59
  export { default as Vibrance } from './components/Vibrance';
60
60
  export { default as WaveDistortion } from './components/WaveDistortion';
61
+ export { default as WebcamTexture } from './components/WebcamTexture';
61
62
  export { default as ZoomBlur } from './components/ZoomBlur';
62
63
  export { default as Shader } from './engine/Shader';
63
64
  export { generatePresetCode } from './utils/generatePresetCode';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}