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.
- package/LICENSE +20 -0
- package/README.md +251 -0
- package/lib/module/components/Aurora.js +184 -0
- package/lib/module/components/Aurora.js.map +1 -0
- package/lib/module/components/CalicoSwirl.js +155 -0
- package/lib/module/components/CalicoSwirl.js.map +1 -0
- package/lib/module/components/Campfire.js +225 -0
- package/lib/module/components/Campfire.js.map +1 -0
- package/lib/module/components/CircularGradient.js +52 -0
- package/lib/module/components/CircularGradient.js.map +1 -0
- package/lib/module/components/Iridescence.js +57 -0
- package/lib/module/components/Iridescence.js.map +1 -0
- package/lib/module/components/LinearGradient.js +48 -0
- package/lib/module/components/LinearGradient.js.map +1 -0
- package/lib/module/components/LiquidChrome.js +75 -0
- package/lib/module/components/LiquidChrome.js.map +1 -0
- package/lib/module/components/ShaderView/index.js +224 -0
- package/lib/module/components/ShaderView/index.js.map +1 -0
- package/lib/module/components/ShaderView/types.js +4 -0
- package/lib/module/components/ShaderView/types.js.map +1 -0
- package/lib/module/components/Silk.js +83 -0
- package/lib/module/components/Silk.js.map +1 -0
- package/lib/module/consts.js +154 -0
- package/lib/module/consts.js.map +1 -0
- package/lib/module/hooks/useClock.js +15 -0
- package/lib/module/hooks/useClock.js.map +1 -0
- package/lib/module/hooks/useWGPUSetup.js +54 -0
- package/lib/module/hooks/useWGPUSetup.js.map +1 -0
- package/lib/module/index.js +13 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/shaders/TRIANGLE_VERTEX_SHADER.js +20 -0
- package/lib/module/shaders/TRIANGLE_VERTEX_SHADER.js.map +1 -0
- package/lib/module/shaders/uniforms.js +20 -0
- package/lib/module/shaders/uniforms.js.map +1 -0
- package/lib/module/utils/backgroundRuntime.js +12 -0
- package/lib/module/utils/backgroundRuntime.js.map +1 -0
- package/lib/module/utils/colors.js +94 -0
- package/lib/module/utils/colors.js.map +1 -0
- package/lib/module/utils/initWebGPU.js +40 -0
- package/lib/module/utils/initWebGPU.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/components/Aurora.d.ts +17 -0
- package/lib/typescript/src/components/Aurora.d.ts.map +1 -0
- package/lib/typescript/src/components/CalicoSwirl.d.ts +13 -0
- package/lib/typescript/src/components/CalicoSwirl.d.ts.map +1 -0
- package/lib/typescript/src/components/Campfire.d.ts +17 -0
- package/lib/typescript/src/components/Campfire.d.ts.map +1 -0
- package/lib/typescript/src/components/CircularGradient.d.ts +19 -0
- package/lib/typescript/src/components/CircularGradient.d.ts.map +1 -0
- package/lib/typescript/src/components/Iridescence.d.ts +11 -0
- package/lib/typescript/src/components/Iridescence.d.ts.map +1 -0
- package/lib/typescript/src/components/LinearGradient.d.ts +15 -0
- package/lib/typescript/src/components/LinearGradient.d.ts.map +1 -0
- package/lib/typescript/src/components/LiquidChrome.d.ts +17 -0
- package/lib/typescript/src/components/LiquidChrome.d.ts.map +1 -0
- package/lib/typescript/src/components/ShaderView/index.d.ts +3 -0
- package/lib/typescript/src/components/ShaderView/index.d.ts.map +1 -0
- package/lib/typescript/src/components/ShaderView/types.d.ts +15 -0
- package/lib/typescript/src/components/ShaderView/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Silk.d.ts +17 -0
- package/lib/typescript/src/components/Silk.d.ts.map +1 -0
- package/lib/typescript/src/consts.d.ts +2 -0
- package/lib/typescript/src/consts.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useClock.d.ts +3 -0
- package/lib/typescript/src/hooks/useClock.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useWGPUSetup.d.ts +15 -0
- package/lib/typescript/src/hooks/useWGPUSetup.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +12 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/shaders/TRIANGLE_VERTEX_SHADER.d.ts +2 -0
- package/lib/typescript/src/shaders/TRIANGLE_VERTEX_SHADER.d.ts.map +1 -0
- package/lib/typescript/src/shaders/uniforms.d.ts +6 -0
- package/lib/typescript/src/shaders/uniforms.d.ts.map +1 -0
- package/lib/typescript/src/utils/backgroundRuntime.d.ts +3 -0
- package/lib/typescript/src/utils/backgroundRuntime.d.ts.map +1 -0
- package/lib/typescript/src/utils/colors.d.ts +22 -0
- package/lib/typescript/src/utils/colors.d.ts.map +1 -0
- package/lib/typescript/src/utils/initWebGPU.d.ts +23 -0
- package/lib/typescript/src/utils/initWebGPU.d.ts.map +1 -0
- package/package.json +174 -7
- package/src/components/Aurora.tsx +203 -0
- package/src/components/CalicoSwirl.tsx +167 -0
- package/src/components/Campfire.tsx +244 -0
- package/src/components/CircularGradient.tsx +76 -0
- package/src/components/Iridescence.tsx +67 -0
- package/src/components/LinearGradient.tsx +62 -0
- package/src/components/LiquidChrome.tsx +94 -0
- package/src/components/ShaderView/index.tsx +225 -0
- package/src/components/ShaderView/types.ts +15 -0
- package/src/components/Silk.tsx +102 -0
- package/src/consts.ts +152 -0
- package/src/hooks/useClock.ts +20 -0
- package/src/hooks/useWGPUSetup.tsx +73 -0
- package/src/index.tsx +23 -0
- package/src/shaders/TRIANGLE_VERTEX_SHADER.ts +17 -0
- package/src/shaders/uniforms.ts +17 -0
- package/src/utils/backgroundRuntime.ts +10 -0
- package/src/utils/colors.ts +117 -0
- 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":[]}
|