@paper-design/shaders 0.0.32 → 0.0.34

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 (77) hide show
  1. package/dist/get-shader-color-from-string.js +93 -0
  2. package/dist/get-shader-color-from-string.js.map +7 -0
  3. package/dist/get-shader-noise-texture.js +23 -0
  4. package/dist/get-shader-noise-texture.js.map +7 -0
  5. package/dist/index.d.ts +25 -23
  6. package/dist/index.js +118 -0
  7. package/dist/index.js.map +7 -0
  8. package/dist/shader-color-spaces.js +96 -0
  9. package/dist/shader-color-spaces.js.map +7 -0
  10. package/dist/shader-mount.d.ts +3 -0
  11. package/dist/shader-mount.js +593 -0
  12. package/dist/shader-mount.js.map +7 -0
  13. package/dist/shader-sizing.js +193 -0
  14. package/dist/shader-sizing.js.map +7 -0
  15. package/dist/shader-utils.d.ts +1 -0
  16. package/dist/shader-utils.js +74 -0
  17. package/dist/shader-utils.js.map +7 -0
  18. package/dist/shaders/color-panels.d.ts +47 -0
  19. package/dist/shaders/color-panels.js +210 -0
  20. package/dist/shaders/color-panels.js.map +7 -0
  21. package/dist/shaders/dithering.d.ts +24 -29
  22. package/dist/shaders/dithering.js +221 -0
  23. package/dist/shaders/dithering.js.map +7 -0
  24. package/dist/shaders/dot-grid.d.ts +16 -14
  25. package/dist/shaders/dot-grid.js +108 -0
  26. package/dist/shaders/dot-grid.js.map +7 -0
  27. package/dist/shaders/dot-orbit.d.ts +14 -13
  28. package/dist/shaders/dot-orbit.js +124 -0
  29. package/dist/shaders/dot-orbit.js.map +7 -0
  30. package/dist/shaders/god-rays.d.ts +18 -19
  31. package/dist/shaders/god-rays.js +118 -0
  32. package/dist/shaders/god-rays.js.map +7 -0
  33. package/dist/shaders/grain-gradient.d.ts +24 -4
  34. package/dist/shaders/grain-gradient.js +226 -0
  35. package/dist/shaders/grain-gradient.js.map +7 -0
  36. package/dist/shaders/liquid-metal.d.ts +44 -12
  37. package/dist/shaders/liquid-metal.js +221 -0
  38. package/dist/shaders/liquid-metal.js.map +7 -0
  39. package/dist/shaders/mesh-gradient.d.ts +10 -10
  40. package/dist/shaders/mesh-gradient.js +97 -0
  41. package/dist/shaders/mesh-gradient.js.map +7 -0
  42. package/dist/shaders/metaballs.d.ts +13 -10
  43. package/dist/shaders/metaballs.js +110 -0
  44. package/dist/shaders/metaballs.js.map +7 -0
  45. package/dist/shaders/neuro-noise.d.ts +13 -9
  46. package/dist/shaders/neuro-noise.js +81 -0
  47. package/dist/shaders/neuro-noise.js.map +7 -0
  48. package/dist/shaders/perlin-noise.d.ts +15 -19
  49. package/dist/shaders/perlin-noise.js +201 -0
  50. package/dist/shaders/perlin-noise.js.map +7 -0
  51. package/dist/shaders/pulsing-border.d.ts +17 -18
  52. package/dist/shaders/pulsing-border.js +211 -0
  53. package/dist/shaders/pulsing-border.js.map +7 -0
  54. package/dist/shaders/simplex-noise.d.ts +10 -12
  55. package/dist/shaders/simplex-noise.js +103 -0
  56. package/dist/shaders/simplex-noise.js.map +7 -0
  57. package/dist/shaders/smoke-ring.d.ts +11 -14
  58. package/dist/shaders/smoke-ring.js +124 -0
  59. package/dist/shaders/smoke-ring.js.map +7 -0
  60. package/dist/shaders/spiral.d.ts +16 -22
  61. package/dist/shaders/spiral.js +84 -0
  62. package/dist/shaders/spiral.js.map +7 -0
  63. package/dist/shaders/swirl.d.ts +15 -3
  64. package/dist/shaders/swirl.js +89 -0
  65. package/dist/shaders/swirl.js.map +7 -0
  66. package/dist/shaders/voronoi.d.ts +20 -20
  67. package/dist/shaders/voronoi.js +143 -0
  68. package/dist/shaders/voronoi.js.map +7 -0
  69. package/dist/shaders/warp.d.ts +15 -17
  70. package/dist/shaders/warp.js +108 -0
  71. package/dist/shaders/warp.js.map +7 -0
  72. package/dist/shaders/waves.d.ts +18 -21
  73. package/dist/shaders/waves.js +68 -0
  74. package/dist/shaders/waves.js.map +7 -0
  75. package/dist/types.js +6 -0
  76. package/dist/types.js.map +7 -0
  77. package/package.json +2 -2
@@ -0,0 +1,96 @@
1
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
+ * Paper Shaders *
3
+ * https://github.com/paper-design/shaders *
4
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5
+
6
+ const ShaderColorSpaces = {
7
+ rgb: 0,
8
+ oklch: 1
9
+ };
10
+ const declareOklchTransforms = `
11
+
12
+ // magic numbers (and magic could be better tbh)
13
+ #define OKLCH_CHROMA_THRESHOLD .001
14
+ #define OKLCH_HUE_NEUTRALIZER - 2.
15
+
16
+ vec3 srgbToLinear(vec3 srgb) {
17
+ return pow(srgb, vec3(2.2));
18
+ }
19
+
20
+ vec3 linearToSrgb(vec3 linear) {
21
+ return pow(linear, vec3(1.0 / 2.2));
22
+ }
23
+
24
+ vec3 LrgbToOklab(vec3 rgb) {
25
+ float L = pow(0.4122214708 * rgb.r + 0.5363325363 * rgb.g + 0.0514459929 * rgb.b, 1.0 / 3.0);
26
+ float M = pow(0.2119034982 * rgb.r + 0.6806995451 * rgb.g + 0.1073969566 * rgb.b, 1.0 / 3.0);
27
+ float S = pow(0.0883024619 * rgb.r + 0.2817188376 * rgb.g + 0.6299787005 * rgb.b, 1.0 / 3.0);
28
+ return vec3(
29
+ 0.2104542553 * L + 0.793617785 * M - 0.0040720468 * S,
30
+ 1.9779984951 * L - 2.428592205 * M + 0.4505937099 * S,
31
+ 0.0259040371 * L + 0.7827717662 * M - 0.808675766 * S
32
+ );
33
+ }
34
+
35
+ vec3 OklabToLrgb(vec3 oklab) {
36
+ float L = oklab.x;
37
+ float a = oklab.y;
38
+ float b = oklab.z;
39
+
40
+ float l_ = L + 0.3963377774 * a + 0.2158037573 * b;
41
+ float m_ = L - 0.1055613458 * a - 0.0638541728 * b;
42
+ float s_ = L - 0.0894841775 * a - 1.291485548 * b;
43
+
44
+ float l = l_ * l_ * l_;
45
+ float m = m_ * m_ * m_;
46
+ float s = s_ * s_ * s_;
47
+
48
+ return vec3(
49
+ 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
50
+ -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
51
+ -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s
52
+ );
53
+ }
54
+
55
+ vec3 oklabToOklch(vec3 oklab) {
56
+ float C = length(oklab.yz);
57
+ float H = atan(oklab.z, oklab.y);
58
+ if (C < OKLCH_CHROMA_THRESHOLD) {
59
+ H = OKLCH_HUE_NEUTRALIZER;
60
+ }
61
+ return vec3(oklab.x, C, H);
62
+ }
63
+
64
+ vec3 oklchToOklab(vec3 oklch) {
65
+ float a = oklch.y * cos(oklch.z);
66
+ float b = oklch.y * sin(oklch.z);
67
+ return vec3(oklch.x, a, b);
68
+ }
69
+
70
+ float mixHue(float h1, float h2, float mixer) {
71
+ float delta = mod(h2 - h1 + PI, TWO_PI) - PI;
72
+ return h1 + mixer * delta;
73
+ }
74
+
75
+ vec3 srgbToOklab(vec3 rgb) {
76
+ return oklabToOklch(LrgbToOklab(srgbToLinear(rgb)));
77
+ }
78
+
79
+ vec3 oklabToSrgb(vec3 oklab) {
80
+ return linearToSrgb(OklabToLrgb(oklchToOklab(oklab)));
81
+ }
82
+
83
+ vec3 mixOklabVector(vec3 color1, vec3 color2, float mixer) {
84
+ color1.x = mix(color1.x, color2.x, mixer);
85
+ color1.y = mix(color1.y, color2.y, mixer);
86
+ if (color1.y > OKLCH_CHROMA_THRESHOLD && color2.y > OKLCH_CHROMA_THRESHOLD) {
87
+ color1.z = mixHue(color1.z, color2.z, mixer);
88
+ }
89
+ return color1;
90
+ }
91
+ `;
92
+ export {
93
+ ShaderColorSpaces,
94
+ declareOklchTransforms
95
+ };
96
+ //# sourceMappingURL=shader-color-spaces.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/shader-color-spaces.ts"],
4
+ "sourcesContent": ["export const ShaderColorSpaces = {\n rgb: 0,\n oklch: 1,\n} as const;\n\nexport type ShaderColorSpace = keyof typeof ShaderColorSpaces;\n\nexport const declareOklchTransforms = `\n\n// magic numbers (and magic could be better tbh)\n#define OKLCH_CHROMA_THRESHOLD .001\n#define OKLCH_HUE_NEUTRALIZER - 2.\n\nvec3 srgbToLinear(vec3 srgb) {\n return pow(srgb, vec3(2.2));\n}\n\nvec3 linearToSrgb(vec3 linear) {\n return pow(linear, vec3(1.0 / 2.2));\n}\n\nvec3 LrgbToOklab(vec3 rgb) {\n float L = pow(0.4122214708 * rgb.r + 0.5363325363 * rgb.g + 0.0514459929 * rgb.b, 1.0 / 3.0);\n float M = pow(0.2119034982 * rgb.r + 0.6806995451 * rgb.g + 0.1073969566 * rgb.b, 1.0 / 3.0);\n float S = pow(0.0883024619 * rgb.r + 0.2817188376 * rgb.g + 0.6299787005 * rgb.b, 1.0 / 3.0);\n return vec3(\n 0.2104542553 * L + 0.793617785 * M - 0.0040720468 * S,\n 1.9779984951 * L - 2.428592205 * M + 0.4505937099 * S,\n 0.0259040371 * L + 0.7827717662 * M - 0.808675766 * S\n );\n}\n\nvec3 OklabToLrgb(vec3 oklab) {\n float L = oklab.x;\n float a = oklab.y;\n float b = oklab.z;\n\n float l_ = L + 0.3963377774 * a + 0.2158037573 * b;\n float m_ = L - 0.1055613458 * a - 0.0638541728 * b;\n float s_ = L - 0.0894841775 * a - 1.291485548 * b;\n\n float l = l_ * l_ * l_;\n float m = m_ * m_ * m_;\n float s = s_ * s_ * s_;\n\n return vec3(\n 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s\n );\n}\n\nvec3 oklabToOklch(vec3 oklab) {\n float C = length(oklab.yz);\n float H = atan(oklab.z, oklab.y);\n if (C < OKLCH_CHROMA_THRESHOLD) {\n H = OKLCH_HUE_NEUTRALIZER;\n }\n return vec3(oklab.x, C, H);\n}\n\nvec3 oklchToOklab(vec3 oklch) {\n float a = oklch.y * cos(oklch.z);\n float b = oklch.y * sin(oklch.z);\n return vec3(oklch.x, a, b);\n}\n\nfloat mixHue(float h1, float h2, float mixer) {\n float delta = mod(h2 - h1 + PI, TWO_PI) - PI;\n return h1 + mixer * delta;\n}\n\nvec3 srgbToOklab(vec3 rgb) {\n return oklabToOklch(LrgbToOklab(srgbToLinear(rgb)));\n}\n\nvec3 oklabToSrgb(vec3 oklab) {\n return linearToSrgb(OklabToLrgb(oklchToOklab(oklab)));\n}\n\nvec3 mixOklabVector(vec3 color1, vec3 color2, float mixer) {\n color1.x = mix(color1.x, color2.x, mixer);\n color1.y = mix(color1.y, color2.y, mixer);\n if (color1.y > OKLCH_CHROMA_THRESHOLD && color2.y > OKLCH_CHROMA_THRESHOLD) {\n color1.z = mixHue(color1.z, color2.z, mixer);\n }\n return color1;\n}\n`;\n"],
5
+ "mappings": ";;;;;AAAO,MAAM,oBAAoB;AAAA,EAC/B,KAAK;AAAA,EACL,OAAO;AACT;AAIO,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -25,6 +25,7 @@ export declare class ShaderMount {
25
25
  private minPixelRatio;
26
26
  private maxPixelCount;
27
27
  private isSafari;
28
+ private uniformCache;
28
29
  constructor(
29
30
  /** The div you'd like to mount the shader to. The shader will match its size. */
30
31
  parentElement: HTMLElement, fragmentShader: string, uniforms: ShaderMountUniforms, webGlContextAttributes?: WebGLContextAttributes,
@@ -67,6 +68,8 @@ export declare class ShaderMount {
67
68
  private requestRender;
68
69
  /** Creates a texture from an image and sets it into a uniform value */
69
70
  private setTextureUniform;
71
+ /** Utility: recursive equality test for all the uniforms */
72
+ private areUniformValuesEqual;
70
73
  /** Sets the provided uniform values into the WebGL program, can be a partial list of uniforms that have changed */
71
74
  private setUniformValues;
72
75
  /** Gets the current total animation time from 0ms */