shaders 2.5.131 → 2.5.133

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.
@@ -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.131";
70
+ const version = "2.5.133";
71
71
  telemetryCollector = startTelemetry(rendererInstance, version, props.disableTelemetry, props.isPreview);
72
72
  if (telemetryCollector) {
73
73
  telemetryCollector.start();
@@ -23730,7 +23730,7 @@ function Shader($$anchor, $$props) {
23730
23730
  const checkRendering = () => {
23731
23731
  if (!rendererInstance) return;
23732
23732
  if (rendererInstance.getPerformanceStats().fps > 0) {
23733
- telemetryCollector = startTelemetry(rendererInstance, "2.5.131", disableTelemetry(), isPreview());
23733
+ telemetryCollector = startTelemetry(rendererInstance, "2.5.133", disableTelemetry(), isPreview());
23734
23734
  if (telemetryCollector) telemetryCollector.start();
23735
23735
  telemetryStartTimeout = null;
23736
23736
  } else telemetryStartTimeout = window.setTimeout(checkRendering, 500);
@@ -62,7 +62,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
62
62
  const startTelemetryWhenReady = () => {
63
63
  const checkRendering = () => {
64
64
  if (rendererInstance.value.getPerformanceStats().fps > 0) {
65
- telemetryCollector = startTelemetry(rendererInstance.value, "2.5.131", props.disableTelemetry, props.isPreview);
65
+ telemetryCollector = startTelemetry(rendererInstance.value, "2.5.133", props.disableTelemetry, props.isPreview);
66
66
  if (telemetryCollector) telemetryCollector.start();
67
67
  telemetryStartTimeout = null;
68
68
  } else telemetryStartTimeout = setTimeout(checkRendering, 500);
@@ -187,30 +187,57 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
187
187
  const getPerformanceStats = () => {
188
188
  return rendererInstance.value.getPerformanceStats();
189
189
  };
190
+ const evenify = (n) => {
191
+ const rounded = Math.round(n);
192
+ return rounded % 2 === 0 ? rounded : rounded + 1;
193
+ };
190
194
  const beginRecordingResolution = async (pixelRatio) => {
191
195
  const internal = rendererInstance.value.getInternalRenderer();
192
196
  if (!internal || !canvasRef.value) return async () => {};
193
197
  const previousRatio = typeof internal.getPixelRatio === "function" ? internal.getPixelRatio() : Math.min(window.devicePixelRatio, 2);
194
198
  const cssWidth = canvasRef.value.clientWidth;
195
199
  const cssHeight = canvasRef.value.clientHeight;
196
- const applyRatio = async (ratio) => {
200
+ const applyRatio = async (ratio, forExport) => {
197
201
  internal.setPixelRatio(ratio);
198
- if (typeof internal.setSize === "function") internal.setSize(cssWidth, cssHeight, false);
202
+ if (typeof internal.setSize === "function") {
203
+ const width = forExport ? evenify(cssWidth) : cssWidth;
204
+ const height = forExport ? evenify(cssHeight) : cssHeight;
205
+ internal.setSize(width, height, false);
206
+ }
199
207
  await renderForCapture();
208
+ if (forExport) await renderForCapture();
200
209
  };
201
210
  const previousForce = rendererInstance.value.setForceFullFrameRate?.(true) ?? false;
202
- await applyRatio(pixelRatio);
211
+ await applyRatio(pixelRatio, true);
203
212
  return async () => {
204
- await applyRatio(previousRatio);
213
+ await applyRatio(previousRatio, false);
205
214
  rendererInstance.value.setForceFullFrameRate?.(previousForce);
206
215
  };
207
216
  };
217
+ const renderSyntheticFrame = async (deltaSeconds) => {
218
+ await rendererInstance.value.renderSyntheticFrame(deltaSeconds);
219
+ };
220
+ const captureFrameBitmap = async (quality = .92) => {
221
+ if (!canvasRef.value) throw new Error("Canvas not available");
222
+ const source = canvasRef.value;
223
+ const blob = await new Promise((resolve, reject) => {
224
+ source.toBlob((blob$1) => {
225
+ if (blob$1) resolve(blob$1);
226
+ else reject(/* @__PURE__ */ new Error("Failed to read source canvas"));
227
+ }, "image/jpeg", quality);
228
+ });
229
+ return await createImageBitmap(blob);
230
+ };
208
231
  __expose({
209
232
  captureImage,
210
233
  captureScreenshot,
211
234
  getPerformanceStats,
212
235
  beginRecordingResolution,
213
- getCanvas: () => canvasRef.value
236
+ getCanvas: () => canvasRef.value,
237
+ renderSyntheticFrame,
238
+ captureFrameBitmap,
239
+ startAnimation: () => rendererInstance.value.startAnimation(),
240
+ stopAnimation: () => rendererInstance.value.stopAnimation()
214
241
  });
215
242
  onBeforeUnmount(() => {
216
243
  if (telemetryCollector) {
@@ -27,6 +27,10 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
27
27
  getPerformanceStats: () => import('../../core').PerformanceStats;
28
28
  beginRecordingResolution: (pixelRatio: number) => Promise<() => Promise<void>>;
29
29
  getCanvas: () => HTMLCanvasElement | null;
30
+ renderSyntheticFrame: (deltaSeconds: number) => Promise<void>;
31
+ captureFrameBitmap: (quality?: number) => Promise<ImageBitmap>;
32
+ startAnimation: () => void;
33
+ stopAnimation: () => void;
30
34
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
31
35
  ready: () => void;
32
36
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
@@ -1 +1 @@
1
- {"version":3,"file":"Shader.vue.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.vue"],"names":[],"mappings":"AAYA,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IACjC,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IAChG,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAkOD,KAAK,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAE5C,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA6MD,iBAAS,cAAc;qBAkDO,GAAG;EAKhC;AAWD,QAAA,MAAM,eAAe;;;;;;;6BA1MgB,mBAAmB,KAAQ,OAAO,CAAC,IAAI,CAAC;8CAsB1B,OAAO,CAAC,IAAI,CAAC;;2CAkCZ,MAAM,KAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;;;;;;;;;;;;;gBAzW1E,WAAW,GAAG,MAAM;sBAFd,OAAO;+BACE,OAAO;iBAErB,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ;eACpF,OAAO;4EAigBnB,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":"Shader.vue.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.vue"],"names":[],"mappings":"AAYA,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IACjC,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IAChG,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAkOD,KAAK,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAE5C,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAsQD,iBAAS,cAAc;qBAkDO,GAAG;EAKhC;AAWD,QAAA,MAAM,eAAe;;;;;;;6BAnQgB,mBAAmB,KAAQ,OAAO,CAAC,IAAI,CAAC;8CAsB1B,OAAO,CAAC,IAAI,CAAC;;2CAyCZ,MAAM,KAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;;yCA4CvC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;8CAgBrB,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;;;;;gBA5axD,WAAW,GAAG,MAAM;sBAFd,OAAO;+BACE,OAAO;iBAErB,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ;eACpF,OAAO;4EA0jBnB,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaders",
3
- "version": "2.5.131",
3
+ "version": "2.5.133",
4
4
  "description": "Shader magic for modern frontends",
5
5
  "author": "Shader Effects Inc.",
6
6
  "homepage": "https://shaders.com/",
@@ -814,6 +814,66 @@
814
814
  "types": "./dist/core/shaders/ThinFilm/index.d.ts",
815
815
  "import": "./dist/core/shaders/ThinFilm/index.js",
816
816
  "require": "./dist/core/shaders/ThinFilm/index.js"
817
+ },
818
+ "./core/BrushedMetal": {
819
+ "types": "./dist/core/shaders/BrushedMetal/index.d.ts",
820
+ "import": "./dist/core/shaders/BrushedMetal/index.js",
821
+ "require": "./dist/core/shaders/BrushedMetal/index.js"
822
+ },
823
+ "./core/CarbonFiber": {
824
+ "types": "./dist/core/shaders/CarbonFiber/index.d.ts",
825
+ "import": "./dist/core/shaders/CarbonFiber/index.js",
826
+ "require": "./dist/core/shaders/CarbonFiber/index.js"
827
+ },
828
+ "./core/Frost": {
829
+ "types": "./dist/core/shaders/Frost/index.d.ts",
830
+ "import": "./dist/core/shaders/Frost/index.js",
831
+ "require": "./dist/core/shaders/Frost/index.js"
832
+ },
833
+ "./core/Goo": {
834
+ "types": "./dist/core/shaders/Goo/index.d.ts",
835
+ "import": "./dist/core/shaders/Goo/index.js",
836
+ "require": "./dist/core/shaders/Goo/index.js"
837
+ },
838
+ "./core/Hologram": {
839
+ "types": "./dist/core/shaders/Hologram/index.d.ts",
840
+ "import": "./dist/core/shaders/Hologram/index.js",
841
+ "require": "./dist/core/shaders/Hologram/index.js"
842
+ },
843
+ "./core/Holographic": {
844
+ "types": "./dist/core/shaders/Holographic/index.d.ts",
845
+ "import": "./dist/core/shaders/Holographic/index.js",
846
+ "require": "./dist/core/shaders/Holographic/index.js"
847
+ },
848
+ "./core/LiquidMetal": {
849
+ "types": "./dist/core/shaders/LiquidMetal/index.d.ts",
850
+ "import": "./dist/core/shaders/LiquidMetal/index.js",
851
+ "require": "./dist/core/shaders/LiquidMetal/index.js"
852
+ },
853
+ "./core/Plastic": {
854
+ "types": "./dist/core/shaders/Plastic/index.d.ts",
855
+ "import": "./dist/core/shaders/Plastic/index.js",
856
+ "require": "./dist/core/shaders/Plastic/index.js"
857
+ },
858
+ "./core/Prism": {
859
+ "types": "./dist/core/shaders/Prism/index.d.ts",
860
+ "import": "./dist/core/shaders/Prism/index.js",
861
+ "require": "./dist/core/shaders/Prism/index.js"
862
+ },
863
+ "./core/Repeater": {
864
+ "types": "./dist/core/shaders/Repeater/index.d.ts",
865
+ "import": "./dist/core/shaders/Repeater/index.js",
866
+ "require": "./dist/core/shaders/Repeater/index.js"
867
+ },
868
+ "./core/Surface3D": {
869
+ "types": "./dist/core/shaders/Surface3D/index.d.ts",
870
+ "import": "./dist/core/shaders/Surface3D/index.js",
871
+ "require": "./dist/core/shaders/Surface3D/index.js"
872
+ },
873
+ "./core/Text": {
874
+ "types": "./dist/core/shaders/Text/index.d.ts",
875
+ "import": "./dist/core/shaders/Text/index.js",
876
+ "require": "./dist/core/shaders/Text/index.js"
817
877
  }
818
878
  },
819
879
  "typesVersions": {
@@ -1265,7 +1325,7 @@
1265
1325
  }
1266
1326
  },
1267
1327
  "dependencies": {
1268
- "three": "^0.184.0"
1328
+ "three": "^0.185.0"
1269
1329
  },
1270
1330
  "devDependencies": {
1271
1331
  "@types/fs-extra": "^11.0.4",