shaders 2.3.57 → 2.3.60

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 (154) hide show
  1. package/dist/core/{AngularBlur-BNL2_pBD.js → AngularBlur-m_DWR-a1.js} +1 -1
  2. package/dist/core/{Aurora-DtnRdRC-.js → Aurora-CYCPE1wp.js} +2 -2
  3. package/dist/core/{Beam-qJlv6CVV.js → Beam-COjEb2JI.js} +2 -2
  4. package/dist/core/{Blob-DGRz-vGs.js → Blob-jHnoxt2N.js} +2 -2
  5. package/dist/core/{Bulge-54fwrqfj.js → Bulge-CsNj4Jew.js} +1 -1
  6. package/dist/core/{Checkerboard-DwFfxCnj.js → Checkerboard-DwiW08iJ.js} +2 -2
  7. package/dist/core/{ChromaFlow-EXxrLXaR.js → ChromaFlow-DfP9ZDg0.js} +1 -1
  8. package/dist/core/{ChromaticAberration-CNR09GFf.js → ChromaticAberration-VL5tfOeo.js} +1 -1
  9. package/dist/core/{Circle-zhbK6F5c.js → Circle-CUYMdgd5.js} +2 -2
  10. package/dist/core/{ConcentricSpin-CDjyEIxy.js → ConcentricSpin-DBqXmCjg.js} +1 -1
  11. package/dist/core/{ContourLines-zyy6CCUx.js → ContourLines-D2KRIOBw.js} +1 -1
  12. package/dist/core/{CursorRipples-CmE0GhQh.js → CursorRipples-JWrDL_dU.js} +1 -1
  13. package/dist/core/{CursorTrail--yjKF5x6.js → CursorTrail-D2_14ZEz.js} +2 -2
  14. package/dist/core/{DiffuseBlur-CfZ3V94k.js → DiffuseBlur-siJmc-84.js} +1 -1
  15. package/dist/core/{Dither-Cro5_SzL.js → Dither-GoyNQ4_v.js} +1 -1
  16. package/dist/core/{DotGrid-BOS1G6mL.js → DotGrid-B8bSufr6.js} +1 -1
  17. package/dist/core/{Duotone-bPh-N4wz.js → Duotone-CRiDL3YN.js} +2 -2
  18. package/dist/core/{FloatingParticles-DzTtE8CB.js → FloatingParticles-CtrWM2rw.js} +1 -1
  19. package/dist/core/{FlowField-Cuy2JAYR.js → FlowField-B-sNApu9.js} +1 -1
  20. package/dist/core/{Godrays-CbslvOsk.js → Godrays-BV94FCDI.js} +1 -1
  21. package/dist/core/{Grid-CGHXquxS.js → Grid-Czxa6-My.js} +1 -1
  22. package/dist/core/{GridDistortion-B3b17eue.js → GridDistortion-CKhOZRpM.js} +1 -1
  23. package/dist/core/{Halftone-iU8wtr1b.js → Halftone-YTJAc3Ie.js} +1 -1
  24. package/dist/core/{Kaleidoscope-BL6E3BVU.js → Kaleidoscope-BDTIWTFC.js} +1 -1
  25. package/dist/core/{LensFlare-B-SuRYrs.js → LensFlare-CxyJBEvr.js} +1 -1
  26. package/dist/core/{LinearBlur-C022H2bm.js → LinearBlur-BtsleV0J.js} +1 -1
  27. package/dist/core/{LinearGradient-Bw4cgU2M.js → LinearGradient-BP91wtXm.js} +2 -2
  28. package/dist/core/{Liquify-C6s_nyRi.js → Liquify-2u2lkBhB.js} +1 -1
  29. package/dist/core/{Mirror-uDxrbYeY.js → Mirror-BonA1elw.js} +1 -1
  30. package/dist/core/{Perspective-C2l3C8d0.js → Perspective-Cwpv4683.js} +1 -1
  31. package/dist/core/{Plasma-B4lUXy1l.js → Plasma-BU4ujuLB.js} +2 -2
  32. package/dist/core/{PolarCoordinates-CxxFpdz2.js → PolarCoordinates-6BZYZFoj.js} +1 -1
  33. package/dist/core/{ProgressiveBlur-BnWdDciO.js → ProgressiveBlur-Y8YqC7HM.js} +1 -1
  34. package/dist/core/{RadialGradient-RBdy6zz7.js → RadialGradient-DauSwpwY.js} +2 -2
  35. package/dist/core/{RectangularCoordinates-CuKEfncN.js → RectangularCoordinates-C5585uvf.js} +1 -1
  36. package/dist/core/{Ripples-DPp17BSt.js → Ripples-QWGujQgy.js} +2 -2
  37. package/dist/core/{Shatter-CABbAt_A.js → Shatter-DRSn9uGZ.js} +1 -1
  38. package/dist/core/{SimplexNoise-B6NBzB1e.js → SimplexNoise-W0fx_Y5Q.js} +2 -2
  39. package/dist/core/{SineWave-6gxiNlvQ.js → SineWave-C-r5bVGK.js} +1 -1
  40. package/dist/core/{SolidColor-DEXByN1S.js → SolidColor-BY2tBGcO.js} +1 -1
  41. package/dist/core/{Spherize-DRGaSHzl.js → Spherize-DF4iTTzb.js} +1 -1
  42. package/dist/core/{Spiral-DT16M2Ky.js → Spiral-DWBdkW7Y.js} +2 -2
  43. package/dist/core/{Strands-CQBNeiNL.js → Strands-BFVI3C04.js} +1 -1
  44. package/dist/core/{Stretch-DFVmX2dB.js → Stretch-CB92XLiC.js} +1 -1
  45. package/dist/core/{Stripes-80nKu5P2.js → Stripes-CTmvjI0U.js} +2 -2
  46. package/dist/core/{StudioBackground-81057m29.js → StudioBackground-DXHPEKcb.js} +1 -1
  47. package/dist/core/{Swirl-C0caKRGI.js → Swirl-DVaTB8HY.js} +2 -2
  48. package/dist/core/{TiltShift-CNn3Yo34.js → TiltShift-CMTVpEBO.js} +1 -1
  49. package/dist/core/{Tint-CfVQjPxR.js → Tint-COD37j4D.js} +1 -1
  50. package/dist/core/{Tritone-CM5ZgDQ5.js → Tritone-BETUi-og.js} +2 -2
  51. package/dist/core/{Twirl-Bc95ho0B.js → Twirl-BUlMUymT.js} +1 -1
  52. package/dist/core/{WaveDistortion-w4LX_3ES.js → WaveDistortion-DzwdX6Wj.js} +1 -1
  53. package/dist/core/{ZoomBlur-D2DwyQKZ.js → ZoomBlur-BE1vT38D.js} +1 -1
  54. package/dist/core/colorMixing-D_wMclqL.js +196 -0
  55. package/dist/core/index.js +4 -3
  56. package/dist/core/registry.js +55 -55
  57. package/dist/core/renderer.d.ts +2 -1
  58. package/dist/core/renderer.d.ts.map +1 -1
  59. package/dist/core/shaders/AngularBlur/index.js +2 -2
  60. package/dist/core/shaders/Aurora/index.js +3 -3
  61. package/dist/core/shaders/Beam/index.js +3 -3
  62. package/dist/core/shaders/Blob/index.js +3 -3
  63. package/dist/core/shaders/Bulge/index.js +2 -2
  64. package/dist/core/shaders/Checkerboard/index.js +3 -3
  65. package/dist/core/shaders/ChromaFlow/index.js +2 -2
  66. package/dist/core/shaders/ChromaticAberration/index.js +2 -2
  67. package/dist/core/shaders/Circle/index.js +3 -3
  68. package/dist/core/shaders/ConcentricSpin/index.js +2 -2
  69. package/dist/core/shaders/ContourLines/index.js +2 -2
  70. package/dist/core/shaders/CursorRipples/index.js +2 -2
  71. package/dist/core/shaders/CursorTrail/index.js +3 -3
  72. package/dist/core/shaders/DiffuseBlur/index.js +2 -2
  73. package/dist/core/shaders/Dither/index.js +2 -2
  74. package/dist/core/shaders/DotGrid/index.js +2 -2
  75. package/dist/core/shaders/Duotone/index.js +3 -3
  76. package/dist/core/shaders/FloatingParticles/index.js +2 -2
  77. package/dist/core/shaders/FlowField/index.js +2 -2
  78. package/dist/core/shaders/Godrays/index.js +2 -2
  79. package/dist/core/shaders/Grid/index.js +2 -2
  80. package/dist/core/shaders/GridDistortion/index.js +2 -2
  81. package/dist/core/shaders/Halftone/index.js +2 -2
  82. package/dist/core/shaders/Kaleidoscope/index.js +2 -2
  83. package/dist/core/shaders/LensFlare/index.js +2 -2
  84. package/dist/core/shaders/LinearBlur/index.js +2 -2
  85. package/dist/core/shaders/LinearGradient/index.js +3 -3
  86. package/dist/core/shaders/Liquify/index.js +2 -2
  87. package/dist/core/shaders/Mirror/index.js +2 -2
  88. package/dist/core/shaders/Perspective/index.js +2 -2
  89. package/dist/core/shaders/Plasma/index.js +3 -3
  90. package/dist/core/shaders/PolarCoordinates/index.js +2 -2
  91. package/dist/core/shaders/ProgressiveBlur/index.js +2 -2
  92. package/dist/core/shaders/RadialGradient/index.js +3 -3
  93. package/dist/core/shaders/RectangularCoordinates/index.js +2 -2
  94. package/dist/core/shaders/Ripples/index.js +3 -3
  95. package/dist/core/shaders/Shatter/index.js +2 -2
  96. package/dist/core/shaders/SimplexNoise/index.js +3 -3
  97. package/dist/core/shaders/SineWave/index.js +2 -2
  98. package/dist/core/shaders/SolidColor/index.js +2 -2
  99. package/dist/core/shaders/Spherize/index.js +2 -2
  100. package/dist/core/shaders/Spiral/index.js +3 -3
  101. package/dist/core/shaders/Strands/index.js +2 -2
  102. package/dist/core/shaders/Stretch/index.js +2 -2
  103. package/dist/core/shaders/Stripes/index.js +3 -3
  104. package/dist/core/shaders/StudioBackground/index.js +2 -2
  105. package/dist/core/shaders/Swirl/index.js +3 -3
  106. package/dist/core/shaders/TiltShift/index.js +2 -2
  107. package/dist/core/shaders/Tint/index.js +2 -2
  108. package/dist/core/shaders/Tritone/index.js +3 -3
  109. package/dist/core/shaders/Twirl/index.js +2 -2
  110. package/dist/core/shaders/WaveDistortion/index.js +2 -2
  111. package/dist/core/shaders/ZoomBlur/index.js +2 -2
  112. package/dist/core/telemetry/collector.d.ts.map +1 -1
  113. package/dist/core/telemetry/index.js +1 -0
  114. package/dist/core/telemetry/types.d.ts +1 -0
  115. package/dist/core/telemetry/types.d.ts.map +1 -1
  116. package/dist/core/{transformations-CC_c-QAT.js → transformations-B5lM6fYX.js} +26 -4
  117. package/dist/core/utilities/colorMixing.d.ts +2 -1
  118. package/dist/core/utilities/colorMixing.d.ts.map +1 -1
  119. package/dist/core/utilities/transformations/index.js +2 -0
  120. package/dist/core/utilities/transformations.d.ts +5 -2
  121. package/dist/core/utilities/transformations.d.ts.map +1 -1
  122. package/dist/react/Shader.js +27 -4
  123. package/dist/react/engine/Shader.d.ts +1 -0
  124. package/dist/react/engine/Shader.d.ts.map +1 -1
  125. package/dist/react/utils/generatePresetCode.d.ts +1 -1
  126. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  127. package/dist/react/utils/generatePresetCode.js +3 -2
  128. package/dist/react/utils/generatePresetCode.template.d.ts +1 -1
  129. package/dist/react/utils/generatePresetCode.template.d.ts.map +1 -1
  130. package/dist/registry.js +336 -0
  131. package/dist/solid/engine/Shader.d.ts +1 -0
  132. package/dist/solid/engine/Shader.d.ts.map +1 -1
  133. package/dist/solid/engine/Shader.js +25 -5
  134. package/dist/solid/utils/generatePresetCode.d.ts +1 -1
  135. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  136. package/dist/solid/utils/generatePresetCode.js +3 -2
  137. package/dist/solid/utils/generatePresetCode.template.d.ts +1 -1
  138. package/dist/solid/utils/generatePresetCode.template.d.ts.map +1 -1
  139. package/dist/svelte/engine/Shader.svelte.d.ts +1 -0
  140. package/dist/svelte/{generatePresetCode-CO9fAymD.js → generatePresetCode-EA1bmNOJ.js} +3 -2
  141. package/dist/svelte/index.js +25 -5
  142. package/dist/svelte/utils/generatePresetCode.d.ts +1 -1
  143. package/dist/svelte/utils/generatePresetCode.js +1 -1
  144. package/dist/svelte/utils/generatePresetCode.template.d.ts +1 -1
  145. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +23 -6
  146. package/dist/vue/engine/Shader.vue.d.ts +4 -0
  147. package/dist/vue/engine/Shader.vue.d.ts.map +1 -1
  148. package/dist/vue/utils/generatePresetCode.d.ts +1 -1
  149. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  150. package/dist/vue/utils/generatePresetCode.js +3 -2
  151. package/dist/vue/utils/generatePresetCode.template.d.ts +1 -1
  152. package/dist/vue/utils/generatePresetCode.template.d.ts.map +1 -1
  153. package/package.json +1 -1
  154. package/dist/core/colorMixing-DZpckBhm.js +0 -68
@@ -1,4 +1,4 @@
1
- import { n as generatePresetCode } from "./generatePresetCode-CO9fAymD.js";
1
+ import { n as generatePresetCode } from "./generatePresetCode-EA1bmNOJ.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";
@@ -79,6 +79,7 @@ import { componentDefinition as componentDefinition$72 } from "../core/shaders/W
79
79
  import { componentDefinition as componentDefinition$73 } from "../core/shaders/ZoomBlur/index.js";
80
80
  import { vec4 } from "three/tsl";
81
81
  import { TelemetryCollector, isExternalUser, shouldCollectTelemetry } from "../core/telemetry/index.js";
82
+ import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
82
83
  var root$74 = $.from_html(`<span style="display:contents"><!></span>`);
83
84
  function AngularBlur($$anchor, $$props) {
84
85
  $.push($$props, true);
@@ -9629,11 +9630,12 @@ var root_1 = $.from_html(`<canvas data-renderer="shaders" style="width: 100%; he
9629
9630
  var root = $.from_html(`<div><!></div>`);
9630
9631
  function Shader($$anchor, $$props) {
9631
9632
  $.push($$props, true);
9632
- const disableTelemetry = $.prop($$props, "disableTelemetry", 3, false), rest = $.rest_props($$props, [
9633
+ const disableTelemetry = $.prop($$props, "disableTelemetry", 3, false), colorSpace = $.prop($$props, "colorSpace", 3, "p3-linear"), rest = $.rest_props($$props, [
9633
9634
  "$$slots",
9634
9635
  "$$events",
9635
9636
  "$$legacy",
9636
9637
  "disableTelemetry",
9638
+ "colorSpace",
9637
9639
  "children"
9638
9640
  ]);
9639
9641
  let containerRef;
@@ -9643,6 +9645,7 @@ function Shader($$anchor, $$props) {
9643
9645
  let rendererInstance = null;
9644
9646
  let telemetryCollector = null;
9645
9647
  let telemetryStartTimeout = null;
9648
+ let shouldSendTelemetry = null;
9646
9649
  setContext("shaderParentId", rootId);
9647
9650
  setContext("shaderNodeRegister", (id, fragmentNodeFunc, parentId, metadata, uniforms = null) => {
9648
9651
  if (!rendererInstance) return;
@@ -9673,9 +9676,13 @@ function Shader($$anchor, $$props) {
9673
9676
  const initializeRenderer = async () => {
9674
9677
  if (!canvasRef || !rendererInstance) return;
9675
9678
  try {
9676
- if (!rendererInstance.isInitialized()) await rendererInstance.initialize({ canvas: canvasRef });
9679
+ if (!rendererInstance.isInitialized()) await rendererInstance.initialize({
9680
+ canvas: canvasRef,
9681
+ colorSpace: colorSpace()
9682
+ });
9677
9683
  rendererInstance.registerNode(rootId, ({ childNode }) => childNode || vec4(0, 0, 0, 0), null, null, {});
9678
- if (isExternalUser() && shouldCollectTelemetry(disableTelemetry()) && !telemetryCollector) startTelemetryWhenReady();
9684
+ if (shouldSendTelemetry === null) shouldSendTelemetry = isExternalUser() && shouldCollectTelemetry(disableTelemetry());
9685
+ if (shouldSendTelemetry && !telemetryCollector) startTelemetryWhenReady();
9679
9686
  } catch (err) {
9680
9687
  console.error("[Shader] Initialization failed:", err);
9681
9688
  throw err;
@@ -9691,7 +9698,7 @@ function Shader($$anchor, $$props) {
9691
9698
  if (isCurrentlyVisible && !wasVisible) {
9692
9699
  if (rendererInstance?.isInitialized()) {
9693
9700
  rendererInstance.startAnimation();
9694
- if (isExternalUser() && shouldCollectTelemetry(disableTelemetry()) && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
9701
+ if (shouldSendTelemetry && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
9695
9702
  } else initializeRenderer().catch(console.error);
9696
9703
  wasVisible = true;
9697
9704
  } else if (!isCurrentlyVisible && wasVisible) {
@@ -9735,6 +9742,19 @@ function Shader($$anchor, $$props) {
9735
9742
  console.warn("[Shader] Error during cleanup:", err);
9736
9743
  }
9737
9744
  });
9745
+ let isFirstEffect = true;
9746
+ $.user_effect(() => {
9747
+ const currentColorSpace = colorSpace();
9748
+ if (isFirstEffect) {
9749
+ isFirstEffect = false;
9750
+ return;
9751
+ }
9752
+ if (rendererInstance?.isInitialized()) {
9753
+ setColorSpaceMode(currentColorSpace);
9754
+ rendererInstance.cleanup();
9755
+ initializeRenderer().catch(console.error);
9756
+ }
9757
+ });
9738
9758
  var div = root();
9739
9759
  $.attribute_effect(div, () => ({
9740
9760
  class: "shader",
@@ -7,6 +7,6 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: string[];
12
12
  export {};
@@ -1,2 +1,2 @@
1
- import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-CO9fAymD.js";
1
+ import { n as generatePresetCode, t as availableComponents } from "../generatePresetCode-EA1bmNOJ.js";
2
2
  export { availableComponents, generatePresetCode };
@@ -7,6 +7,6 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: any[];
12
12
  export {};
@@ -1,7 +1,8 @@
1
- import { createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, shallowRef } from "vue";
1
+ import { createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, shallowRef, watch } from "vue";
2
2
  import { shaderRenderer } from "../core/index.js";
3
3
  import { vec4 } from "three/tsl";
4
4
  import { TelemetryCollector, isExternalUser, shouldCollectTelemetry } from "../core/telemetry/index.js";
5
+ import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
5
6
  var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
7
  __name: "Shader",
7
8
  props: {
@@ -11,11 +12,13 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
11
12
  },
12
13
  enablePerformanceTracking: {
13
14
  type: Boolean,
14
- default: false
15
- }
15
+ default: true
16
+ },
17
+ colorSpace: { default: "p3-linear" }
16
18
  },
17
19
  setup(__props, { expose: __expose }) {
18
20
  const props = __props;
21
+ setColorSpaceMode(props.colorSpace);
19
22
  const containerRef = ref(null);
20
23
  const canvasRef = ref(null);
21
24
  const rootId = ref("shader-root-" + Math.random().toString(36).substring(7));
@@ -23,6 +26,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
23
26
  const rendererResetSignal = ref(0);
24
27
  let telemetryCollector = null;
25
28
  let telemetryStartTimeout = null;
29
+ let shouldSendTelemetry = null;
26
30
  provide("shaderParentId", rootId.value);
27
31
  provide("shaderRendererResetSignal", rendererResetSignal);
28
32
  provide("shaderNodeRegister", (id, fragmentNodeFunc, parentId, metadata, uniforms = null, componentDefinition = null) => {
@@ -39,10 +43,12 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
39
43
  if (!canvasRef.value) return;
40
44
  if (!rendererInstance.value.isInitialized()) await rendererInstance.value.initialize({
41
45
  canvas: canvasRef.value,
42
- enablePerformanceTracking: props.enablePerformanceTracking
46
+ enablePerformanceTracking: props.enablePerformanceTracking,
47
+ colorSpace: props.colorSpace
43
48
  });
44
49
  rendererInstance.value.registerNode(rootId.value, ({ childNode }) => childNode || vec4(0, 0, 0, 0), null, null, {}, void 0);
45
- if (isExternalUser() && shouldCollectTelemetry(props.disableTelemetry) && !telemetryCollector) startTelemetryWhenReady();
50
+ if (shouldSendTelemetry === null) shouldSendTelemetry = isExternalUser() && shouldCollectTelemetry(props.disableTelemetry);
51
+ if (shouldSendTelemetry && !telemetryCollector) startTelemetryWhenReady();
46
52
  };
47
53
  const startTelemetryWhenReady = () => {
48
54
  const checkRendering = () => {
@@ -65,7 +71,7 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
65
71
  if (isCurrentlyVisible && !wasVisible) {
66
72
  if (rendererInstance.value.isInitialized()) {
67
73
  rendererInstance.value.startAnimation();
68
- if (isExternalUser() && shouldCollectTelemetry(props.disableTelemetry) && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
74
+ if (shouldSendTelemetry && !telemetryCollector && !telemetryStartTimeout) startTelemetryWhenReady();
69
75
  } else initializeRenderer().then(() => {
70
76
  rendererResetSignal.value++;
71
77
  }).catch(console.error);
@@ -88,6 +94,17 @@ var Shader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
88
94
  setupVisibilityObserver();
89
95
  }
90
96
  });
97
+ let isFirstRun = true;
98
+ watch(() => props.colorSpace, (newColorSpace) => {
99
+ if (isFirstRun) {
100
+ isFirstRun = false;
101
+ return;
102
+ }
103
+ if (rendererInstance.value.isInitialized()) {
104
+ setColorSpaceMode(newColorSpace);
105
+ rendererResetSignal.value++;
106
+ }
107
+ });
91
108
  const captureScreenshot = async (maxWidth = 1200) => {
92
109
  if (!canvasRef.value) throw new Error("Canvas not available");
93
110
  try {
@@ -1,6 +1,7 @@
1
1
  interface Props {
2
2
  disableTelemetry?: boolean;
3
3
  enablePerformanceTracking?: boolean;
4
+ colorSpace?: 'p3-linear' | 'srgb';
4
5
  }
5
6
  declare function __VLS_template(): {
6
7
  default?(_: {}): any;
@@ -8,13 +9,16 @@ declare function __VLS_template(): {
8
9
  declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
9
10
  disableTelemetry: boolean;
10
11
  enablePerformanceTracking: boolean;
12
+ colorSpace: string;
11
13
  }>>, {
12
14
  captureScreenshot: (maxWidth?: number) => Promise<Blob>;
13
15
  getPerformanceStats: () => import('../../core').PerformanceStats;
14
16
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
15
17
  disableTelemetry: boolean;
16
18
  enablePerformanceTracking: boolean;
19
+ colorSpace: string;
17
20
  }>>> & Readonly<{}>, {
21
+ colorSpace: "p3-linear" | "srgb";
18
22
  disableTelemetry: boolean;
19
23
  enablePerformanceTracking: boolean;
20
24
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"Shader.vue.d.ts","sourceRoot":"","sources":["../../src/engine/Shader.vue"],"names":[],"mappings":"AASA,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACpC;AAiRD,iBAAS,cAAc;qBAkDO,GAAG;EAKhC;AAUD,QAAA,MAAM,eAAe;;;;8CA/K8B,OAAO,CAAC,IAAI,CAAC;;;;;;sBArK3C,OAAO;+BACE,OAAO;4EA0VnC,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":"AAUA,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;CAClC;AA+SD,iBAAS,cAAc;qBAkDO,GAAG;EAKhC;AAUD,QAAA,MAAM,eAAe;;;;;8CAhL8B,OAAO,CAAC,IAAI,CAAC;;;;;;;gBAjMjD,WAAW,GAAG,MAAM;sBAFd,OAAO;+BACE,OAAO;4EAyXnC,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"}
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: string[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.d.ts.map
@@ -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;AAs4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,UA4E/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;AAs4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,UA4E/B,CAAA"}
@@ -840,7 +840,7 @@ function isIdUsedAsMaskSource(id, allComponents) {
840
840
  flattenComponents(allComponents);
841
841
  return flatComponents.some((component) => component.props?.maskSource === id);
842
842
  }
843
- function generatePresetCode(preset) {
843
+ function generatePresetCode(preset, colorSpace) {
844
844
  const generateComponentString = (config, indent = " ") => {
845
845
  const propString = config.props ? generatePropString(config.props, config.type, indent) : "";
846
846
  let idString = "";
@@ -855,7 +855,8 @@ function generatePresetCode(preset) {
855
855
  } else if (attributes) return `${indent}<${config.type}\n${indent} ${attributes}/>`;
856
856
  else return `${indent}<${config.type}/>`;
857
857
  };
858
- return `<Shader>\n${preset.components.map((config) => generateComponentString(config)).join("\n")}\n</Shader>`;
858
+ const componentStrings = preset.components.map((config) => generateComponentString(config)).join("\n");
859
+ return `<Shader${colorSpace && colorSpace !== "p3-linear" ? ` color-space="${colorSpace}"` : ""}>\n${componentStrings}\n</Shader>`;
859
860
  }
860
861
  const availableComponents = [
861
862
  "AngularBlur",
@@ -7,7 +7,7 @@ interface ComponentConfig {
7
7
  interface PresetConfig {
8
8
  components: ComponentConfig[];
9
9
  }
10
- export declare function generatePresetCode(preset: PresetConfig): string;
10
+ export declare function generatePresetCode(preset: PresetConfig, colorSpace?: 'p3-linear' | 'srgb'): string;
11
11
  export declare const availableComponents: any[];
12
12
  export {};
13
13
  //# sourceMappingURL=generatePresetCode.template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.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;AAyHD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyC/D;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
1
+ {"version":3,"file":"generatePresetCode.template.d.ts","sourceRoot":"","sources":["../../src/utils/generatePresetCode.template.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;AAyHD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CA4ClG;AAGD,eAAO,MAAM,mBAAmB,OAG/B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaders",
3
- "version": "2.3.57",
3
+ "version": "2.3.60",
4
4
  "description": "Shader magic for modern frontends",
5
5
  "author": "Shader Effects Inc.",
6
6
  "homepage": "https://shaders.com/",
@@ -1,68 +0,0 @@
1
- import { abs, atan, cos, float, max, pow, sign, sin, sqrt, vec3, vec4 } from "three/tsl";
2
- var p3ToSRGB = (p3) => {
3
- return vec3(p3.x.mul(1.2249401).sub(p3.y.mul(.2249404)).sub(p3.z.mul(0)), p3.x.mul(-.0420569).add(p3.y.mul(1.0420571)).add(p3.z.mul(0)), p3.x.mul(-.0196376).sub(p3.y.mul(.0786361)).add(p3.z.mul(1.0982735)));
4
- };
5
- var sRGBToP3 = (srgb) => {
6
- return vec3(srgb.x.mul(.8224621).add(srgb.y.mul(.177538)).add(srgb.z.mul(0)), srgb.x.mul(.0331941).add(srgb.y.mul(.9668058)).add(srgb.z.mul(0)), srgb.x.mul(.0170826).add(srgb.y.mul(.0723974)).add(srgb.z.mul(.9105199)));
7
- };
8
- var rgbToOklab = (rgb) => {
9
- const r = rgb.x;
10
- const g = rgb.y;
11
- const b = rgb.z;
12
- const l = r.mul(.4122214708).add(g.mul(.5363325363)).add(b.mul(.0514459929));
13
- const m = r.mul(.2119034982).add(g.mul(.6806995451).add(b.mul(.1073969566)));
14
- const s = r.mul(.0883024619).add(g.mul(.2817188376)).add(b.mul(.6299787005));
15
- const l_ = sign(l).mul(pow(abs(l), float(1 / 3)));
16
- const m_ = sign(m).mul(pow(abs(m), float(1 / 3)));
17
- const s_ = sign(s).mul(pow(abs(s), float(1 / 3)));
18
- return vec3(l_.mul(.2104542553).add(m_.mul(.793617785)).sub(s_.mul(.0040720468)), l_.mul(1.9779984951).sub(m_.mul(2.428592205)).add(s_.mul(.4505937099)), l_.mul(.0259040371).add(m_.mul(.7827717662)).sub(s_.mul(.808675766)));
19
- };
20
- var oklabToRgb = (lab) => {
21
- const L = lab.x;
22
- const a = lab.y;
23
- const b = lab.z;
24
- const l_ = L.add(a.mul(.3963377774)).add(b.mul(.2158037573));
25
- const m_ = L.sub(a.mul(.1055613458)).sub(b.mul(.0638541728));
26
- const s_ = L.sub(a.mul(.0894841775)).sub(b.mul(1.291485548));
27
- const l = pow(l_, float(3));
28
- const m = pow(m_, float(3));
29
- const s = pow(s_, float(3));
30
- return vec3(l.mul(4.0767416621).sub(m.mul(3.3077115913)).add(s.mul(.2309699292)), l.mul(-1.2684380046).add(m.mul(2.6097574011)).sub(s.mul(.3413193965)), l.mul(-.0041960863).sub(m.mul(.7034186147)).add(s.mul(1.707614701)));
31
- };
32
- var oklabToOklch = (lab) => {
33
- const L = lab.x;
34
- const a = lab.y;
35
- const b = lab.z;
36
- return vec3(L, sqrt(a.mul(a).add(b.mul(b))), atan(b, a));
37
- };
38
- var oklchToOklab = (lch) => {
39
- const L = lch.x;
40
- const C = lch.y;
41
- const h = lch.z;
42
- return vec3(L, C.mul(cos(h)), C.mul(sin(h)));
43
- };
44
- const mixColors = (colorA, colorB, t, colorSpaceMode) => {
45
- const p3A = vec3(colorA.x, colorA.y, colorA.z);
46
- const p3B = vec3(colorB.x, colorB.y, colorB.z);
47
- const alphaA = colorA.w;
48
- const alphaB = colorB.w;
49
- const weightA = alphaA.mul(float(1).sub(t));
50
- const weightB = alphaB.mul(t);
51
- const totalWeight = weightA.add(weightB);
52
- const safeWeight = max(totalWeight, float(.001));
53
- const alphaWeightedMix = (rgbA, rgbB) => {
54
- return rgbA.mul(weightA).add(rgbB.mul(weightB)).div(safeWeight);
55
- };
56
- const linearMix = alphaWeightedMix(p3A, p3B);
57
- const srgbA = p3ToSRGB(p3A);
58
- const srgbB = p3ToSRGB(p3B);
59
- const oklabA = rgbToOklab(srgbA);
60
- const oklabB = rgbToOklab(srgbB);
61
- const oklchResult = sRGBToP3(oklabToRgb(oklchToOklab(alphaWeightedMix(oklabToOklch(oklabA), oklabToOklch(oklabB)))));
62
- const oklabResult = sRGBToP3(oklabToRgb(alphaWeightedMix(oklabA, oklabB)));
63
- const isMode1OrHigher = colorSpaceMode.greaterThanEqual(float(.5));
64
- const rgb = colorSpaceMode.greaterThanEqual(float(1.5)).select(oklabResult, isMode1OrHigher.select(oklchResult, linearMix));
65
- const alpha = totalWeight;
66
- return vec4(rgb.x, rgb.y, rgb.z, alpha);
67
- };
68
- export { mixColors as t };