shaders 2.5.97 → 2.5.98

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.
@@ -1 +1 @@
1
- {"version":3,"file":"createShader.d.ts","sourceRoot":"","sources":["../src/createShader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,cAAc,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAa5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,cAAc,CAAC,CAyOzB"}
1
+ {"version":3,"file":"createShader.d.ts","sourceRoot":"","sources":["../src/createShader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,cAAc,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAqB5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,cAAc,CAAC,CAuQzB"}
@@ -2,6 +2,11 @@ import { createUniformsMap, shaderRenderer } from "../core/index.js";
2
2
  import { getAllShaders } from "../core/registry.js";
3
3
  import { isExternalUser, startTelemetry } from "../core/telemetry/index.js";
4
4
  import { vec4 } from "three/tsl";
5
+ function isPropDriver(value) {
6
+ if (typeof value !== "object" || value === null || !("type" in value)) return false;
7
+ const maybe = value;
8
+ return maybe.type === "map" || maybe.type === "mouse" || maybe.type === "mouse-position" || maybe.type === "auto-animate";
9
+ }
5
10
  var METADATA_PROPS = new Set([
6
11
  "opacity",
7
12
  "blendMode",
@@ -41,7 +46,7 @@ async function createShader(canvas, preset, options) {
41
46
  if (isExternalUser()) {
42
47
  const checkRendering = () => {
43
48
  if (renderer.getPerformanceStats().fps > 0) {
44
- telemetryCollector = startTelemetry(renderer, "2.5.97", options?.disableTelemetry || false, false);
49
+ telemetryCollector = startTelemetry(renderer, "2.5.98", options?.disableTelemetry || false, false);
45
50
  if (telemetryCollector) telemetryCollector.start();
46
51
  telemetryStartTimeout = null;
47
52
  } else telemetryStartTimeout = setTimeout(checkRendering, 500);
@@ -55,13 +60,19 @@ async function createShader(canvas, preset, options) {
55
60
  return;
56
61
  }
57
62
  const nodeId = component.id || `${component.type}_${Date.now()}_${Math.random()}`;
58
- const uniforms = createUniformsMap(componentDef, Object.fromEntries(Object.entries(componentDef.props).map(([key, propConfig]) => [key, component.props?.[key] !== void 0 ? component.props[key] : propConfig.default])), nodeId);
63
+ const mapsFromProps = {};
64
+ for (const [key, val] of Object.entries(component.props || {})) if (!METADATA_PROPS.has(key) && Object.prototype.hasOwnProperty.call(componentDef.props, key) && isPropDriver(val)) mapsFromProps[key] = val;
65
+ const uniforms = createUniformsMap(componentDef, Object.fromEntries(Object.entries(componentDef.props).map(([key, propConfig]) => {
66
+ const val = component.props?.[key] !== void 0 ? component.props[key] : propConfig.default;
67
+ return [key, isPropDriver(val) ? propConfig.default : val];
68
+ })), nodeId);
59
69
  const metadata = {
60
70
  blendMode: component.props?.blendMode || "normal",
61
71
  opacity: component.props?.opacity,
62
72
  visible: component.props?.visible,
63
73
  renderOrder,
64
74
  id: component.id,
75
+ maps: Object.keys(mapsFromProps).length > 0 ? { ...mapsFromProps } : void 0,
65
76
  mask: component.props?.maskSource ? {
66
77
  source: component.props.maskSource,
67
78
  type: component.props.maskType || "alpha"
@@ -82,7 +93,8 @@ async function createShader(canvas, preset, options) {
82
93
  componentDef,
83
94
  uniforms,
84
95
  nodeId,
85
- component
96
+ component,
97
+ currentMaps: { ...mapsFromProps }
86
98
  });
87
99
  component.children?.forEach((child, index) => {
88
100
  registerComponent(child, nodeId, index);
@@ -101,7 +113,18 @@ async function createShader(canvas, preset, options) {
101
113
  else if (key === "maskType") continue;
102
114
  else if (key === "transform") renderer.updateNodeMetadata(entry.nodeId, { transform: value });
103
115
  else renderer.updateNodeMetadata(entry.nodeId, { [key]: value });
104
- else renderer.updateUniformValue(entry.nodeId, key, value);
116
+ else if (isPropDriver(value)) if (!Object.prototype.hasOwnProperty.call(entry.componentDef.props, key)) console.warn(`[createShader] Ignoring PropDriver for unknown prop "${key}" on ${entry.component.type}`);
117
+ else {
118
+ entry.currentMaps[key] = value;
119
+ renderer.updateNodeMetadata(entry.nodeId, { maps: { ...entry.currentMaps } });
120
+ }
121
+ else {
122
+ if (key in entry.currentMaps) {
123
+ delete entry.currentMaps[key];
124
+ renderer.updateNodeMetadata(entry.nodeId, { maps: Object.keys(entry.currentMaps).length > 0 ? { ...entry.currentMaps } : void 0 });
125
+ }
126
+ if (Object.prototype.hasOwnProperty.call(entry.componentDef.props, key)) renderer.updateUniformValue(entry.nodeId, key, value);
127
+ }
105
128
  }
106
129
  function resize(width, height) {
107
130
  const rect = canvas.getBoundingClientRect();
@@ -89,7 +89,7 @@ const Shader = ({ children, disableTelemetry = false, colorSpace = "p3-linear",
89
89
  return;
90
90
  }
91
91
  if (rendererRef.current.getPerformanceStats().fps > 0) {
92
- telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.97", disableTelemetry, isPreview);
92
+ telemetryCollectorRef.current = startTelemetry(rendererRef.current, "2.5.98", disableTelemetry, isPreview);
93
93
  if (telemetryCollectorRef.current) telemetryCollectorRef.current.start();
94
94
  telemetryStartTimeoutRef.current = null;
95
95
  } else telemetryStartTimeoutRef.current = window.setTimeout(checkRendering, 500);
@@ -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.97";
70
+ const version = "2.5.98";
71
71
  telemetryCollector = startTelemetry(rendererInstance, version, props.disableTelemetry, props.isPreview);
72
72
  if (telemetryCollector) {
73
73
  telemetryCollector.start();
@@ -20546,7 +20546,7 @@ function Shader($$anchor, $$props) {
20546
20546
  const checkRendering = () => {
20547
20547
  if (!rendererInstance) return;
20548
20548
  if (rendererInstance.getPerformanceStats().fps > 0) {
20549
- telemetryCollector = startTelemetry(rendererInstance, "2.5.97", disableTelemetry(), isPreview());
20549
+ telemetryCollector = startTelemetry(rendererInstance, "2.5.98", disableTelemetry(), isPreview());
20550
20550
  if (telemetryCollector) telemetryCollector.start();
20551
20551
  telemetryStartTimeout = null;
20552
20552
  } else telemetryStartTimeout = window.setTimeout(checkRendering, 500);
@@ -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.97", props.disableTelemetry, props.isPreview);
63
+ telemetryCollector = startTelemetry(rendererInstance.value, "2.5.98", props.disableTelemetry, props.isPreview);
64
64
  if (telemetryCollector) telemetryCollector.start();
65
65
  telemetryStartTimeout = null;
66
66
  } else telemetryStartTimeout = setTimeout(checkRendering, 500);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaders",
3
- "version": "2.5.97",
3
+ "version": "2.5.98",
4
4
  "description": "Shader magic for modern frontends",
5
5
  "author": "Shader Effects Inc.",
6
6
  "homepage": "https://shaders.com/",