react-native-effects 0.0.1 → 0.1.0

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 (100) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +251 -0
  3. package/lib/module/components/Aurora.js +184 -0
  4. package/lib/module/components/Aurora.js.map +1 -0
  5. package/lib/module/components/CalicoSwirl.js +155 -0
  6. package/lib/module/components/CalicoSwirl.js.map +1 -0
  7. package/lib/module/components/Campfire.js +225 -0
  8. package/lib/module/components/Campfire.js.map +1 -0
  9. package/lib/module/components/CircularGradient.js +52 -0
  10. package/lib/module/components/CircularGradient.js.map +1 -0
  11. package/lib/module/components/Iridescence.js +57 -0
  12. package/lib/module/components/Iridescence.js.map +1 -0
  13. package/lib/module/components/LinearGradient.js +48 -0
  14. package/lib/module/components/LinearGradient.js.map +1 -0
  15. package/lib/module/components/LiquidChrome.js +75 -0
  16. package/lib/module/components/LiquidChrome.js.map +1 -0
  17. package/lib/module/components/ShaderView/index.js +224 -0
  18. package/lib/module/components/ShaderView/index.js.map +1 -0
  19. package/lib/module/components/ShaderView/types.js +4 -0
  20. package/lib/module/components/ShaderView/types.js.map +1 -0
  21. package/lib/module/components/Silk.js +83 -0
  22. package/lib/module/components/Silk.js.map +1 -0
  23. package/lib/module/consts.js +154 -0
  24. package/lib/module/consts.js.map +1 -0
  25. package/lib/module/hooks/useClock.js +15 -0
  26. package/lib/module/hooks/useClock.js.map +1 -0
  27. package/lib/module/hooks/useWGPUSetup.js +54 -0
  28. package/lib/module/hooks/useWGPUSetup.js.map +1 -0
  29. package/lib/module/index.js +13 -0
  30. package/lib/module/index.js.map +1 -0
  31. package/lib/module/package.json +1 -0
  32. package/lib/module/shaders/TRIANGLE_VERTEX_SHADER.js +20 -0
  33. package/lib/module/shaders/TRIANGLE_VERTEX_SHADER.js.map +1 -0
  34. package/lib/module/shaders/uniforms.js +20 -0
  35. package/lib/module/shaders/uniforms.js.map +1 -0
  36. package/lib/module/utils/backgroundRuntime.js +12 -0
  37. package/lib/module/utils/backgroundRuntime.js.map +1 -0
  38. package/lib/module/utils/colors.js +94 -0
  39. package/lib/module/utils/colors.js.map +1 -0
  40. package/lib/module/utils/initWebGPU.js +40 -0
  41. package/lib/module/utils/initWebGPU.js.map +1 -0
  42. package/lib/typescript/package.json +1 -0
  43. package/lib/typescript/src/components/Aurora.d.ts +17 -0
  44. package/lib/typescript/src/components/Aurora.d.ts.map +1 -0
  45. package/lib/typescript/src/components/CalicoSwirl.d.ts +13 -0
  46. package/lib/typescript/src/components/CalicoSwirl.d.ts.map +1 -0
  47. package/lib/typescript/src/components/Campfire.d.ts +17 -0
  48. package/lib/typescript/src/components/Campfire.d.ts.map +1 -0
  49. package/lib/typescript/src/components/CircularGradient.d.ts +19 -0
  50. package/lib/typescript/src/components/CircularGradient.d.ts.map +1 -0
  51. package/lib/typescript/src/components/Iridescence.d.ts +11 -0
  52. package/lib/typescript/src/components/Iridescence.d.ts.map +1 -0
  53. package/lib/typescript/src/components/LinearGradient.d.ts +15 -0
  54. package/lib/typescript/src/components/LinearGradient.d.ts.map +1 -0
  55. package/lib/typescript/src/components/LiquidChrome.d.ts +17 -0
  56. package/lib/typescript/src/components/LiquidChrome.d.ts.map +1 -0
  57. package/lib/typescript/src/components/ShaderView/index.d.ts +3 -0
  58. package/lib/typescript/src/components/ShaderView/index.d.ts.map +1 -0
  59. package/lib/typescript/src/components/ShaderView/types.d.ts +15 -0
  60. package/lib/typescript/src/components/ShaderView/types.d.ts.map +1 -0
  61. package/lib/typescript/src/components/Silk.d.ts +17 -0
  62. package/lib/typescript/src/components/Silk.d.ts.map +1 -0
  63. package/lib/typescript/src/consts.d.ts +2 -0
  64. package/lib/typescript/src/consts.d.ts.map +1 -0
  65. package/lib/typescript/src/hooks/useClock.d.ts +3 -0
  66. package/lib/typescript/src/hooks/useClock.d.ts.map +1 -0
  67. package/lib/typescript/src/hooks/useWGPUSetup.d.ts +15 -0
  68. package/lib/typescript/src/hooks/useWGPUSetup.d.ts.map +1 -0
  69. package/lib/typescript/src/index.d.ts +12 -0
  70. package/lib/typescript/src/index.d.ts.map +1 -0
  71. package/lib/typescript/src/shaders/TRIANGLE_VERTEX_SHADER.d.ts +2 -0
  72. package/lib/typescript/src/shaders/TRIANGLE_VERTEX_SHADER.d.ts.map +1 -0
  73. package/lib/typescript/src/shaders/uniforms.d.ts +6 -0
  74. package/lib/typescript/src/shaders/uniforms.d.ts.map +1 -0
  75. package/lib/typescript/src/utils/backgroundRuntime.d.ts +3 -0
  76. package/lib/typescript/src/utils/backgroundRuntime.d.ts.map +1 -0
  77. package/lib/typescript/src/utils/colors.d.ts +22 -0
  78. package/lib/typescript/src/utils/colors.d.ts.map +1 -0
  79. package/lib/typescript/src/utils/initWebGPU.d.ts +23 -0
  80. package/lib/typescript/src/utils/initWebGPU.d.ts.map +1 -0
  81. package/package.json +174 -7
  82. package/src/components/Aurora.tsx +203 -0
  83. package/src/components/CalicoSwirl.tsx +167 -0
  84. package/src/components/Campfire.tsx +244 -0
  85. package/src/components/CircularGradient.tsx +76 -0
  86. package/src/components/Iridescence.tsx +67 -0
  87. package/src/components/LinearGradient.tsx +62 -0
  88. package/src/components/LiquidChrome.tsx +94 -0
  89. package/src/components/ShaderView/index.tsx +225 -0
  90. package/src/components/ShaderView/types.ts +15 -0
  91. package/src/components/Silk.tsx +102 -0
  92. package/src/consts.ts +152 -0
  93. package/src/hooks/useClock.ts +20 -0
  94. package/src/hooks/useWGPUSetup.tsx +73 -0
  95. package/src/index.tsx +23 -0
  96. package/src/shaders/TRIANGLE_VERTEX_SHADER.ts +17 -0
  97. package/src/shaders/uniforms.ts +17 -0
  98. package/src/utils/backgroundRuntime.ts +10 -0
  99. package/src/utils/colors.ts +117 -0
  100. package/src/utils/initWebGPU.ts +47 -0
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import ShaderView from "./ShaderView/index.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export default function Campfire({
7
+ color = '#ffffff',
8
+ speed = 1.0,
9
+ sparkSize = 1.0,
10
+ fireIntensity = 1.0,
11
+ smokeIntensity = 1.0,
12
+ ...viewProps
13
+ }) {
14
+ const colors = useMemo(() => [color], [color]);
15
+ const params = useMemo(() => [sparkSize, fireIntensity, smokeIntensity], [sparkSize, fireIntensity, smokeIntensity]);
16
+ return /*#__PURE__*/_jsx(ShaderView, {
17
+ fragmentShader: CAMPFIRE_SHADER,
18
+ colors: colors,
19
+ params: params,
20
+ speed: speed,
21
+ isStatic: false,
22
+ ...viewProps
23
+ });
24
+ }
25
+ const CAMPFIRE_SHADER = /* wgsl */`
26
+ struct Uniforms {
27
+ resolution: vec4<f32>,
28
+ time: vec4<f32>,
29
+ color0: vec4<f32>,
30
+ color1: vec4<f32>,
31
+ params0: vec4<f32>,
32
+ params1: vec4<f32>,
33
+ };
34
+ @group(0) @binding(0) var<uniform> u: Uniforms;
35
+
36
+ fn mod289_3(x: vec3<f32>) -> vec3<f32> {
37
+ return x - floor(x * (1.0 / 289.0)) * 289.0;
38
+ }
39
+
40
+ fn mod289_4(x: vec4<f32>) -> vec4<f32> {
41
+ return x - floor(x * (1.0 / 289.0)) * 289.0;
42
+ }
43
+
44
+ fn permute(x: vec4<f32>) -> vec4<f32> {
45
+ return mod289_4(((x * 34.0) + 1.0) * x);
46
+ }
47
+
48
+ fn taylorInvSqrt(r: vec4<f32>) -> vec4<f32> {
49
+ return 1.79284291400159 - 0.85373472095314 * r;
50
+ }
51
+
52
+ fn snoise(v: vec3<f32>) -> f32 {
53
+ let C = vec2<f32>(1.0 / 6.0, 1.0 / 3.0);
54
+ let D = vec4<f32>(0.0, 0.5, 1.0, 2.0);
55
+
56
+ var i = floor(v + dot(v, vec3<f32>(C.y, C.y, C.y)));
57
+ let x0 = v - i + dot(i, vec3<f32>(C.x, C.x, C.x));
58
+
59
+ let g = step(vec3<f32>(x0.y, x0.z, x0.x), x0);
60
+ let l = 1.0 - g;
61
+ let i1 = min(g, vec3<f32>(l.z, l.x, l.y));
62
+ let i2 = max(g, vec3<f32>(l.z, l.x, l.y));
63
+
64
+ let x1 = x0 - i1 + vec3<f32>(C.x, C.x, C.x);
65
+ let x2 = x0 - i2 + vec3<f32>(C.y, C.y, C.y);
66
+ let x3 = x0 - vec3<f32>(D.y, D.y, D.y);
67
+
68
+ i = mod289_3(i);
69
+ let p = permute(permute(permute(
70
+ i.z + vec4<f32>(0.0, i1.z, i2.z, 1.0))
71
+ + i.y + vec4<f32>(0.0, i1.y, i2.y, 1.0))
72
+ + i.x + vec4<f32>(0.0, i1.x, i2.x, 1.0));
73
+
74
+ let n_ = 0.142857142857;
75
+ let ns = n_ * vec3<f32>(D.w, D.y, D.z) - vec3<f32>(D.x, D.z, D.x);
76
+
77
+ let j = p - 49.0 * floor(p * ns.z * ns.z);
78
+
79
+ let x_ = floor(j * ns.z);
80
+ let y_ = floor(j - 7.0 * x_);
81
+
82
+ let x = x_ * ns.x + vec4<f32>(ns.y, ns.y, ns.y, ns.y);
83
+ let y = y_ * ns.x + vec4<f32>(ns.y, ns.y, ns.y, ns.y);
84
+ let h = 1.0 - abs(x) - abs(y);
85
+
86
+ let b0 = vec4<f32>(x.x, x.y, y.x, y.y);
87
+ let b1 = vec4<f32>(x.z, x.w, y.z, y.w);
88
+
89
+ let s0 = floor(b0) * 2.0 + 1.0;
90
+ let s1 = floor(b1) * 2.0 + 1.0;
91
+ let sh = -step(h, vec4<f32>(0.0));
92
+
93
+ let a0 = vec4<f32>(b0.x, b0.z, b0.y, b0.w) + vec4<f32>(s0.x, s0.z, s0.y, s0.w) * vec4<f32>(sh.x, sh.x, sh.y, sh.y);
94
+ let a1 = vec4<f32>(b1.x, b1.z, b1.y, b1.w) + vec4<f32>(s1.x, s1.z, s1.y, s1.w) * vec4<f32>(sh.z, sh.z, sh.w, sh.w);
95
+
96
+ let p0 = vec3<f32>(a0.x, a0.y, h.x);
97
+ let p1 = vec3<f32>(a0.z, a0.w, h.y);
98
+ let p2 = vec3<f32>(a1.x, a1.y, h.z);
99
+ let p3 = vec3<f32>(a1.z, a1.w, h.w);
100
+
101
+ let norm = inverseSqrt(vec4<f32>(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));
102
+ let p0n = p0 * norm.x;
103
+ let p1n = p1 * norm.y;
104
+ let p2n = p2 * norm.z;
105
+ let p3n = p3 * norm.w;
106
+
107
+ var m = max(0.6 - vec4<f32>(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), vec4<f32>(0.0));
108
+ m = m * m;
109
+ return 42.0 * dot(m * m, vec4<f32>(dot(p0n, x0), dot(p1n, x1), dot(p2n, x2), dot(p3n, x3)));
110
+ }
111
+
112
+ fn prng(seed: vec2<f32>) -> f32 {
113
+ var s = fract(seed * vec2<f32>(5.3983, 5.4427));
114
+ s = s + dot(vec2<f32>(s.y, s.x), s + vec2<f32>(21.5351, 14.3137));
115
+ return fract(s.x * s.y * 95.4337);
116
+ }
117
+
118
+ const PI = 3.1415926535897932384626433832795;
119
+
120
+ fn noiseStack(pos: vec3<f32>, octaves: i32, falloff: f32) -> f32 {
121
+ var noise = snoise(pos);
122
+ var off = 1.0;
123
+ var p = pos;
124
+
125
+ if (octaves > 1) {
126
+ p = p * 2.0;
127
+ off = off * falloff;
128
+ noise = (1.0 - off) * noise + off * snoise(p);
129
+ }
130
+ if (octaves > 2) {
131
+ p = p * 2.0;
132
+ off = off * falloff;
133
+ noise = (1.0 - off) * noise + off * snoise(p);
134
+ }
135
+ if (octaves > 3) {
136
+ p = p * 2.0;
137
+ off = off * falloff;
138
+ noise = (1.0 - off) * noise + off * snoise(p);
139
+ }
140
+ return (1.0 + noise) / 2.0;
141
+ }
142
+
143
+ fn noiseStackUV(pos: vec3<f32>, octaves: i32, falloff: f32) -> vec2<f32> {
144
+ let displaceA = noiseStack(pos, octaves, falloff);
145
+ let displaceB = noiseStack(pos + vec3<f32>(3984.293, 423.21, 5235.19), octaves, falloff);
146
+ return vec2<f32>(displaceA, displaceB);
147
+ }
148
+
149
+ @fragment
150
+ fn main(@location(0) ndc: vec2<f32>) -> @location(0) vec4<f32> {
151
+ let time = u.time.x;
152
+ let sparkSize = u.params0.x;
153
+ let fireIntensity = u.params0.y;
154
+ let smokeIntensity = u.params0.z;
155
+
156
+ let resolution = u.resolution.xy;
157
+ let vUv = ndc * 0.5 + vec2<f32>(0.5, 0.5);
158
+ let fragCoord = vUv * resolution;
159
+
160
+ let xpart = fragCoord.x / resolution.x;
161
+ let ypart = fragCoord.y / resolution.y;
162
+
163
+ let clip = 210.0;
164
+ let ypartClip = fragCoord.y / clip;
165
+ let ypartClippedFalloff = clamp(2.0 - ypartClip, 0.0, 1.0);
166
+ let ypartClipped = min(ypartClip, 1.0);
167
+ let ypartClippedn = 1.0 - ypartClipped;
168
+
169
+ let xfuel = 1.0 - abs(2.0 * xpart - 1.0);
170
+
171
+ let timeSpeed = 0.5;
172
+ let realTime = timeSpeed * time;
173
+
174
+ let coordScaled = 0.01 * fragCoord;
175
+ let position = vec3<f32>(coordScaled, 0.0) + vec3<f32>(1223.0, 6434.0, 8425.0);
176
+ let flow = vec3<f32>(4.1 * (0.5 - xpart) * pow(ypartClippedn, 4.0), -2.0 * xfuel * pow(ypartClippedn, 64.0), 0.0);
177
+ let timing = realTime * vec3<f32>(0.0, -1.7, 1.1) + flow;
178
+
179
+ let displacePos = vec3<f32>(1.0, 0.5, 1.0) * 2.4 * position + realTime * vec3<f32>(0.01, -0.7, 1.3);
180
+ let displace3 = vec3<f32>(noiseStackUV(displacePos, 2, 0.4), 0.0);
181
+
182
+ let noiseCoord = (vec3<f32>(2.0, 1.0, 1.0) * position + timing + 0.4 * displace3) / 1.0;
183
+ let noise = noiseStack(noiseCoord, 3, 0.4);
184
+
185
+ let flames = pow(ypartClipped, 0.3 * xfuel) * pow(noise, 0.3 * xfuel);
186
+
187
+ let f = ypartClippedFalloff * pow(1.0 - flames * flames * flames, 8.0);
188
+ let fff = f * f * f;
189
+ var fire = 1.5 * vec3<f32>(f, fff, fff * fff) * fireIntensity;
190
+
191
+ let smokeNoise = 0.5 + snoise(0.4 * position + timing * vec3<f32>(1.0, 1.0, 0.2)) / 2.0;
192
+ let smoke = vec3<f32>(0.3 * pow(xfuel, 3.0) * pow(ypart, 2.0) * (smokeNoise + 0.4 * (1.0 - noise))) * smokeIntensity;
193
+
194
+ let sparkGridSize = 30.0;
195
+ var sparkCoord = fragCoord - vec2<f32>(0.0, 190.0 * realTime);
196
+ sparkCoord = sparkCoord - 30.0 * noiseStackUV(0.01 * vec3<f32>(sparkCoord, 30.0 * time), 1, 0.4);
197
+ sparkCoord = sparkCoord + 100.0 * flow.xy;
198
+
199
+ if (sparkCoord.y / sparkGridSize % 2.0 < 1.0) {
200
+ sparkCoord.x = sparkCoord.x + 0.5 * sparkGridSize;
201
+ }
202
+
203
+ let sparkGridIndex = vec2<f32>(floor(sparkCoord / sparkGridSize));
204
+ let sparkRandom = prng(sparkGridIndex);
205
+ let sparkLife = min(10.0 * (1.0 - min((sparkGridIndex.y + (190.0 * realTime / sparkGridSize)) / (24.0 - 20.0 * sparkRandom), 1.0)), 1.0);
206
+
207
+ var sparks = vec3<f32>(0.0);
208
+ if (sparkLife > 0.0) {
209
+ let sparkSizeScaled = xfuel * xfuel * sparkRandom * 0.08 * sparkSize;
210
+ let sparkRadians = 999.0 * sparkRandom * 2.0 * PI + 2.0 * time;
211
+ let sparkCircular = vec2<f32>(sin(sparkRadians), cos(sparkRadians));
212
+ let sparkOffset = (0.5 - sparkSizeScaled) * sparkGridSize * sparkCircular;
213
+ let sparkModulus = (sparkCoord + sparkOffset) % sparkGridSize - 0.5 * vec2<f32>(sparkGridSize);
214
+ let sparkLength = length(sparkModulus);
215
+ let sparksGray = max(0.0, 1.0 - sparkLength / (sparkSizeScaled * sparkGridSize));
216
+ sparks = sparkLife * sparksGray * vec3<f32>(1.0, 0.3, 0.0);
217
+ }
218
+
219
+ fire = fire * u.color0.rgb;
220
+
221
+ let finalColor = max(fire, sparks) + smoke;
222
+ return vec4<f32>(clamp(finalColor, vec3<f32>(0.0), vec3<f32>(1.0)), u.color0.a);
223
+ }
224
+ `;
225
+ //# sourceMappingURL=Campfire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","ShaderView","jsx","_jsx","Campfire","color","speed","sparkSize","fireIntensity","smokeIntensity","viewProps","colors","params","fragmentShader","CAMPFIRE_SHADER","isStatic"],"sourceRoot":"../../../src","sources":["components/Campfire.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAG/B,OAAOC,UAAU,MAAM,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAetC,eAAe,SAASC,QAAQA,CAAC;EAC/BC,KAAK,GAAG,SAAS;EACjBC,KAAK,GAAG,GAAG;EACXC,SAAS,GAAG,GAAG;EACfC,aAAa,GAAG,GAAG;EACnBC,cAAc,GAAG,GAAG;EACpB,GAAGC;AACE,CAAC,EAAE;EACR,MAAMC,MAAM,GAAGX,OAAO,CAAC,MAAM,CAACK,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAC9C,MAAMO,MAAM,GAAGZ,OAAO,CACpB,MAAM,CAACO,SAAS,EAAEC,aAAa,EAAEC,cAAc,CAAC,EAChD,CAACF,SAAS,EAAEC,aAAa,EAAEC,cAAc,CAC3C,CAAC;EAED,oBACEN,IAAA,CAACF,UAAU;IACTY,cAAc,EAAEC,eAAgB;IAChCH,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEA,MAAO;IACfN,KAAK,EAAEA,KAAM;IACbS,QAAQ,EAAE,KAAM;IAAA,GACZL;EAAS,CACd,CAAC;AAEN;AAEA,MAAMI,eAAe,GAAG,UAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import ShaderView from "./ShaderView/index.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export default function CircularGradient({
7
+ centerColor,
8
+ edgeColor = 'rgba(0,0,0,0)',
9
+ centerX = 0.5,
10
+ centerY = 0.5,
11
+ sizeX = 0.5,
12
+ sizeY = 0.5,
13
+ ...viewProps
14
+ }) {
15
+ const colors = useMemo(() => [centerColor, edgeColor], [centerColor, edgeColor]);
16
+ const params = useMemo(() => [centerX, centerY, sizeX, sizeY], [centerX, centerY, sizeX, sizeY]);
17
+ return /*#__PURE__*/_jsx(ShaderView, {
18
+ fragmentShader: CIRCULAR_GRADIENT_SHADER,
19
+ colors: colors,
20
+ params: params,
21
+ isStatic: true,
22
+ ...viewProps
23
+ });
24
+ }
25
+ const CIRCULAR_GRADIENT_SHADER = /* wgsl */`
26
+ struct Uniforms {
27
+ resolution: vec4<f32>,
28
+ time: vec4<f32>,
29
+ color0: vec4<f32>,
30
+ color1: vec4<f32>,
31
+ params0: vec4<f32>,
32
+ params1: vec4<f32>,
33
+ };
34
+ @group(0) @binding(0) var<uniform> u: Uniforms;
35
+
36
+ @fragment
37
+ fn main(@location(0) ndc: vec2<f32>) -> @location(0) vec4<f32> {
38
+ let uv = (ndc * 0.5) + vec2<f32>(0.5, 0.5);
39
+
40
+ let center = u.params0.xy;
41
+ let size = u.params0.zw;
42
+
43
+ let diff = uv - center;
44
+ let normalizedDiff = diff / size;
45
+ let dist = length(normalizedDiff);
46
+
47
+ let t = smoothstep(0.0, 1.0, dist);
48
+ let color = mix(u.color0, u.color1, t);
49
+ return color;
50
+ }
51
+ `;
52
+ //# sourceMappingURL=CircularGradient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","ShaderView","jsx","_jsx","CircularGradient","centerColor","edgeColor","centerX","centerY","sizeX","sizeY","viewProps","colors","params","fragmentShader","CIRCULAR_GRADIENT_SHADER","isStatic"],"sourceRoot":"../../../src","sources":["components/CircularGradient.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAG/B,OAAOC,UAAU,MAAM,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiBtC,eAAe,SAASC,gBAAgBA,CAAC;EACvCC,WAAW;EACXC,SAAS,GAAG,eAAe;EAC3BC,OAAO,GAAG,GAAG;EACbC,OAAO,GAAG,GAAG;EACbC,KAAK,GAAG,GAAG;EACXC,KAAK,GAAG,GAAG;EACX,GAAGC;AACE,CAAC,EAAE;EACR,MAAMC,MAAM,GAAGZ,OAAO,CACpB,MAAM,CAACK,WAAW,EAAEC,SAAS,CAAC,EAC9B,CAACD,WAAW,EAAEC,SAAS,CACzB,CAAC;EACD,MAAMO,MAAM,GAAGb,OAAO,CACpB,MAAM,CAACO,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAEC,KAAK,CAAC,EACtC,CAACH,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAEC,KAAK,CACjC,CAAC;EAED,oBACEP,IAAA,CAACF,UAAU;IACTa,cAAc,EAAEC,wBAAyB;IACzCH,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEA,MAAO;IACfG,QAAQ,EAAE,IAAK;IAAA,GACXL;EAAS,CACd,CAAC;AAEN;AAEA,MAAMI,wBAAwB,GAAG,UAAW;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import ShaderView from "./ShaderView/index.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export default function Iridescence({
7
+ color = '#ffffff',
8
+ speed = 1.0,
9
+ ...viewProps
10
+ }) {
11
+ const colors = useMemo(() => [color], [color]);
12
+ return /*#__PURE__*/_jsx(ShaderView, {
13
+ fragmentShader: IRIDESCENCE_SHADER,
14
+ colors: colors,
15
+ params: [],
16
+ speed: speed,
17
+ isStatic: false,
18
+ ...viewProps
19
+ });
20
+ }
21
+ const IRIDESCENCE_SHADER = /* wgsl */`
22
+ struct Uniforms {
23
+ resolution: vec4<f32>,
24
+ time: vec4<f32>,
25
+ color0: vec4<f32>,
26
+ color1: vec4<f32>,
27
+ params0: vec4<f32>,
28
+ params1: vec4<f32>,
29
+ };
30
+ @group(0) @binding(0) var<uniform> u: Uniforms;
31
+
32
+ @fragment
33
+ fn main(@location(0) ndc: vec2<f32>) -> @location(0) vec4<f32> {
34
+ let time = u.time.x;
35
+
36
+ let vUv = ndc * 0.5 + vec2<f32>(0.5, 0.5);
37
+ let mr = min(u.resolution.x, u.resolution.y);
38
+ var uv = (vUv * 2.0 - vec2<f32>(1.0, 1.0)) * (u.resolution.xy / mr);
39
+
40
+ var d = -time * 0.5;
41
+ var a = 0.0;
42
+ for (var i: f32 = 0.0; i < 8.0; i = i + 1.0) {
43
+ a = a + cos(i - d - a * uv.x);
44
+ d = d + sin(uv.y * i + a);
45
+ }
46
+ d = d + time * 0.5;
47
+
48
+ let c1 = cos(uv * vec2<f32>(d, a)) * 0.6 + 0.4;
49
+ let c2 = cos(a + d) * 0.5 + 0.5;
50
+ let col = vec3<f32>(c1.x, c1.y, c2);
51
+
52
+ let finalCol = cos(col * cos(vec3<f32>(d, a, 2.5)) * 0.5 + 0.5);
53
+ let coloredCol = finalCol * u.color0.rgb;
54
+ return vec4<f32>(clamp(coloredCol, vec3<f32>(0.0), vec3<f32>(1.0)), u.color0.a);
55
+ }
56
+ `;
57
+ //# sourceMappingURL=Iridescence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","ShaderView","jsx","_jsx","Iridescence","color","speed","viewProps","colors","fragmentShader","IRIDESCENCE_SHADER","params","isStatic"],"sourceRoot":"../../../src","sources":["components/Iridescence.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAG/B,OAAOC,UAAU,MAAM,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAStC,eAAe,SAASC,WAAWA,CAAC;EAClCC,KAAK,GAAG,SAAS;EACjBC,KAAK,GAAG,GAAG;EACX,GAAGC;AACE,CAAC,EAAE;EACR,MAAMC,MAAM,GAAGR,OAAO,CAAC,MAAM,CAACK,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAE9C,oBACEF,IAAA,CAACF,UAAU;IACTQ,cAAc,EAAEC,kBAAmB;IACnCF,MAAM,EAAEA,MAAO;IACfG,MAAM,EAAE,EAAG;IACXL,KAAK,EAAEA,KAAM;IACbM,QAAQ,EAAE,KAAM;IAAA,GACZL;EAAS,CACd,CAAC;AAEN;AAEA,MAAMG,kBAAkB,GAAG,UAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import ShaderView from "./ShaderView/index.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export default function LinearGradient({
7
+ startColor,
8
+ endColor,
9
+ angle,
10
+ speed = 0,
11
+ ...viewProps
12
+ }) {
13
+ const colors = useMemo(() => [startColor, endColor], [startColor, endColor]);
14
+ const params = useMemo(() => [angle, speed], [angle, speed]);
15
+ return /*#__PURE__*/_jsx(ShaderView, {
16
+ fragmentShader: LINEAR_GRADIENT_SHADER,
17
+ colors: colors,
18
+ params: params,
19
+ speed: speed === 0 ? 0 : 1,
20
+ isStatic: speed === 0,
21
+ ...viewProps
22
+ });
23
+ }
24
+ const LINEAR_GRADIENT_SHADER = /* wgsl */`
25
+ struct Uniforms {
26
+ resolution: vec4<f32>,
27
+ time: vec4<f32>,
28
+ color0: vec4<f32>,
29
+ color1: vec4<f32>,
30
+ params0: vec4<f32>,
31
+ params1: vec4<f32>,
32
+ };
33
+ @group(0) @binding(0) var<uniform> u: Uniforms;
34
+
35
+ @fragment
36
+ fn main(@location(0) ndc: vec2<f32>) -> @location(0) vec4<f32> {
37
+ let uv = ndc * 0.5 + vec2<f32>(0.5, 0.5);
38
+ let baseAngle = u.params0.x;
39
+ let rotationSpeed = u.params0.y;
40
+ let angle = (baseAngle + u.time.x * rotationSpeed) * 3.14159265359 / 180.0;
41
+ let dir = vec2<f32>(cos(angle), sin(angle));
42
+ let fromCenter = uv - vec2<f32>(0.5, 0.5);
43
+ let corrected = vec2<f32>(fromCenter.x * u.resolution.z, fromCenter.y);
44
+ let t = clamp(dot(corrected, dir) + 0.5, 0.0, 1.0);
45
+ return mix(u.color0, u.color1, t);
46
+ }
47
+ `;
48
+ //# sourceMappingURL=LinearGradient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","ShaderView","jsx","_jsx","LinearGradient","startColor","endColor","angle","speed","viewProps","colors","params","fragmentShader","LINEAR_GRADIENT_SHADER","isStatic"],"sourceRoot":"../../../src","sources":["components/LinearGradient.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAG/B,OAAOC,UAAU,MAAM,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAatC,eAAe,SAASC,cAAcA,CAAC;EACrCC,UAAU;EACVC,QAAQ;EACRC,KAAK;EACLC,KAAK,GAAG,CAAC;EACT,GAAGC;AACE,CAAC,EAAE;EACR,MAAMC,MAAM,GAAGV,OAAO,CAAC,MAAM,CAACK,UAAU,EAAEC,QAAQ,CAAC,EAAE,CAACD,UAAU,EAAEC,QAAQ,CAAC,CAAC;EAC5E,MAAMK,MAAM,GAAGX,OAAO,CAAC,MAAM,CAACO,KAAK,EAAEC,KAAK,CAAC,EAAE,CAACD,KAAK,EAAEC,KAAK,CAAC,CAAC;EAE5D,oBACEL,IAAA,CAACF,UAAU;IACTW,cAAc,EAAEC,sBAAuB;IACvCH,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEA,MAAO;IACfH,KAAK,EAAEA,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE;IAC3BM,QAAQ,EAAEN,KAAK,KAAK,CAAE;IAAA,GAClBC;EAAS,CACd,CAAC;AAEN;AAEA,MAAMI,sBAAsB,GAAG,UAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import ShaderView from "./ShaderView/index.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ export default function LiquidChrome({
7
+ color = '#1a1a1a',
8
+ speed = 0.2,
9
+ amplitude = 0.3,
10
+ frequencyX = 3,
11
+ frequencyY = 3,
12
+ ...viewProps
13
+ }) {
14
+ const colors = useMemo(() => [color], [color]);
15
+ const params = useMemo(() => [amplitude, frequencyX, frequencyY], [amplitude, frequencyX, frequencyY]);
16
+ return /*#__PURE__*/_jsx(ShaderView, {
17
+ fragmentShader: LIQUID_CHROME_SHADER,
18
+ colors: colors,
19
+ params: params,
20
+ speed: speed,
21
+ isStatic: false,
22
+ ...viewProps
23
+ });
24
+ }
25
+ const LIQUID_CHROME_SHADER = /* wgsl */`
26
+ struct Uniforms {
27
+ resolution: vec4<f32>,
28
+ time: vec4<f32>,
29
+ color0: vec4<f32>,
30
+ color1: vec4<f32>,
31
+ params0: vec4<f32>,
32
+ params1: vec4<f32>,
33
+ };
34
+ @group(0) @binding(0) var<uniform> u: Uniforms;
35
+
36
+ fn renderImage(uvCoord: vec2<f32>) -> vec4<f32> {
37
+ let resolution2D = u.resolution.xy;
38
+ let time = u.time.x;
39
+ let amplitude = u.params0.x;
40
+ let frequencyX = u.params0.y;
41
+ let frequencyY = u.params0.z;
42
+
43
+ let fragCoord = uvCoord * resolution2D;
44
+ var uv = (2.0 * fragCoord - resolution2D) / min(u.resolution.x, u.resolution.y);
45
+
46
+ for (var i: f32 = 1.0; i < 10.0; i = i + 1.0) {
47
+ uv.x = uv.x + amplitude / i * cos(i * frequencyX * uv.y + time);
48
+ uv.y = uv.y + amplitude / i * cos(i * frequencyY * uv.x + time);
49
+ }
50
+
51
+ let baseColor = u.color0;
52
+ let color = baseColor.rgb / abs(sin(time - uv.y - uv.x));
53
+ return vec4<f32>(color, baseColor.a);
54
+ }
55
+
56
+ @fragment
57
+ fn main(@location(0) ndc: vec2<f32>) -> @location(0) vec4<f32> {
58
+ let vUv = ndc * 0.5 + vec2<f32>(0.5, 0.5);
59
+ let resolution2D = u.resolution.xy;
60
+
61
+ var col = vec4<f32>(0.0);
62
+ var samples = 0;
63
+
64
+ for (var i: i32 = -1; i <= 1; i = i + 1) {
65
+ for (var j: i32 = -1; j <= 1; j = j + 1) {
66
+ let offset = vec2<f32>(f32(i), f32(j)) * (1.0 / min(resolution2D.x, resolution2D.y));
67
+ col = col + renderImage(vUv + offset);
68
+ samples = samples + 1;
69
+ }
70
+ }
71
+
72
+ return col / f32(samples);
73
+ }
74
+ `;
75
+ //# sourceMappingURL=LiquidChrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","ShaderView","jsx","_jsx","LiquidChrome","color","speed","amplitude","frequencyX","frequencyY","viewProps","colors","params","fragmentShader","LIQUID_CHROME_SHADER","isStatic"],"sourceRoot":"../../../src","sources":["components/LiquidChrome.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAG/B,OAAOC,UAAU,MAAM,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAetC,eAAe,SAASC,YAAYA,CAAC;EACnCC,KAAK,GAAG,SAAS;EACjBC,KAAK,GAAG,GAAG;EACXC,SAAS,GAAG,GAAG;EACfC,UAAU,GAAG,CAAC;EACdC,UAAU,GAAG,CAAC;EACd,GAAGC;AACE,CAAC,EAAE;EACR,MAAMC,MAAM,GAAGX,OAAO,CAAC,MAAM,CAACK,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAC9C,MAAMO,MAAM,GAAGZ,OAAO,CACpB,MAAM,CAACO,SAAS,EAAEC,UAAU,EAAEC,UAAU,CAAC,EACzC,CAACF,SAAS,EAAEC,UAAU,EAAEC,UAAU,CACpC,CAAC;EAED,oBACEN,IAAA,CAACF,UAAU;IACTY,cAAc,EAAEC,oBAAqB;IACrCH,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEA,MAAO;IACfN,KAAK,EAAEA,KAAM;IACbS,QAAQ,EAAE,KAAM;IAAA,GACZL;EAAS,CACd,CAAC;AAEN;AAEA,MAAMI,oBAAoB,GAAG,UAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}