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,224 @@
1
+ "use strict";
2
+
3
+ import { PixelRatio, StyleSheet } from 'react-native';
4
+ import { Canvas } from 'react-native-wgpu';
5
+ import { useEffect, useRef } from 'react';
6
+ import { createSynchronizable, scheduleOnRuntime } from 'react-native-worklets';
7
+ import { colorToVec4 } from "../../utils/colors.js";
8
+ import { useWGPUSetup } from "../../hooks/useWGPUSetup.js";
9
+ import { TRIANGLE_VERTEX_SHADER } from "../../shaders/TRIANGLE_VERTEX_SHADER.js";
10
+ import { UNIFORM_BUFFER_SIZE, UNIFORM_FLOAT_COUNT } from "../../shaders/uniforms.js";
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ // Synchronizable layout: [c0r,c0g,c0b,c0a, c1r,c1g,c1b,c1a, speed, p0..p7, alive]
13
+ // Total: 4 + 4 + 1 + 8 + 1 = 18 floats
14
+ const SYNC_SIZE = 18;
15
+ const IDX_SPEED = 8;
16
+ const IDX_PARAMS = 9; // 9..16
17
+ const IDX_ALIVE = 17;
18
+ export default function ShaderView({
19
+ fragmentShader,
20
+ colors = [],
21
+ speed = 1.0,
22
+ params = [],
23
+ isStatic = false,
24
+ style,
25
+ ...viewProps
26
+ }) {
27
+ const {
28
+ canvasRef,
29
+ runtime,
30
+ resources
31
+ } = useWGPUSetup();
32
+ const propsSync = useRef(createSynchronizable(new Float64Array(SYNC_SIZE))).current;
33
+
34
+ // Convert props to flat floats and push to synchronizable
35
+ useEffect(() => {
36
+ const data = new Float64Array(SYNC_SIZE);
37
+
38
+ // color0 (indices 0-3)
39
+ if (colors[0] !== undefined) {
40
+ const c0 = colorToVec4(colors[0]);
41
+ data[0] = c0.r;
42
+ data[1] = c0.g;
43
+ data[2] = c0.b;
44
+ data[3] = c0.a;
45
+ }
46
+
47
+ // color1 (indices 4-7)
48
+ if (colors[1] !== undefined) {
49
+ const c1 = colorToVec4(colors[1]);
50
+ data[4] = c1.r;
51
+ data[5] = c1.g;
52
+ data[6] = c1.b;
53
+ data[7] = c1.a;
54
+ }
55
+
56
+ // speed
57
+ data[IDX_SPEED] = speed;
58
+
59
+ // params (indices 9-16)
60
+ for (let i = 0; i < 8; i++) {
61
+ data[IDX_PARAMS + i] = params[i] ?? 0;
62
+ }
63
+
64
+ // alive
65
+ data[IDX_ALIVE] = 1;
66
+ propsSync.setBlocking(() => data);
67
+ }, [colors, speed, params, propsSync]);
68
+
69
+ // Signal cleanup on unmount
70
+ useEffect(() => {
71
+ return () => {
72
+ propsSync.setBlocking(prev => {
73
+ prev[IDX_ALIVE] = 0;
74
+ return prev;
75
+ });
76
+ };
77
+ }, [propsSync]);
78
+
79
+ // Start render loop when GPU resources are ready
80
+ useEffect(() => {
81
+ if (!resources) {
82
+ return;
83
+ }
84
+ const {
85
+ device,
86
+ context,
87
+ presentationFormat
88
+ } = resources;
89
+ const dpr = PixelRatio.get();
90
+ scheduleOnRuntime(runtime, () => {
91
+ 'worklet';
92
+
93
+ // Create pipeline once
94
+ const pipeline = device.createRenderPipeline({
95
+ layout: 'auto',
96
+ vertex: {
97
+ module: device.createShaderModule({
98
+ code: TRIANGLE_VERTEX_SHADER
99
+ }),
100
+ entryPoint: 'main'
101
+ },
102
+ fragment: {
103
+ module: device.createShaderModule({
104
+ code: fragmentShader
105
+ }),
106
+ entryPoint: 'main',
107
+ targets: [{
108
+ format: presentationFormat
109
+ }]
110
+ },
111
+ primitive: {
112
+ topology: 'triangle-list'
113
+ }
114
+ });
115
+
116
+ // Create uniform buffer + bind group once, reuse via writeBuffer
117
+ const uniformBuffer = device.createBuffer({
118
+ size: UNIFORM_BUFFER_SIZE,
119
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
120
+ });
121
+ const bindGroup = device.createBindGroup({
122
+ layout: pipeline.getBindGroupLayout(0),
123
+ entries: [{
124
+ binding: 0,
125
+ resource: {
126
+ buffer: uniformBuffer
127
+ }
128
+ }]
129
+ });
130
+ const uniformData = new Float32Array(UNIFORM_FLOAT_COUNT);
131
+ let accumulatedTime = 0;
132
+ let lastTimestamp = 0;
133
+ function render(timestamp) {
134
+ const props = propsSync.getDirty();
135
+ if (props[IDX_ALIVE] === 0) {
136
+ return;
137
+ }
138
+
139
+ // Compute dt
140
+ const dt = lastTimestamp === 0 ? 0 : (timestamp - lastTimestamp) / 1000;
141
+ lastTimestamp = timestamp;
142
+
143
+ // Accumulate time with speed
144
+ const currentSpeed = props[IDX_SPEED];
145
+ accumulatedTime += dt * currentSpeed;
146
+
147
+ // Resolution
148
+ const canvas = context.canvas;
149
+ const width = canvas.width || 1;
150
+ const height = canvas.height || 1;
151
+ const aspect = width / height;
152
+
153
+ // Fill uniform data (6 × vec4 = 24 floats)
154
+ // resolution: vec4<f32>
155
+ uniformData[0] = width;
156
+ uniformData[1] = height;
157
+ uniformData[2] = aspect;
158
+ uniformData[3] = dpr;
159
+
160
+ // time: vec4<f32>
161
+ uniformData[4] = accumulatedTime;
162
+ uniformData[5] = dt;
163
+ uniformData[6] = 0;
164
+ uniformData[7] = 0;
165
+
166
+ // color0: vec4<f32>
167
+ uniformData[8] = props[0];
168
+ uniformData[9] = props[1];
169
+ uniformData[10] = props[2];
170
+ uniformData[11] = props[3];
171
+
172
+ // color1: vec4<f32>
173
+ uniformData[12] = props[4];
174
+ uniformData[13] = props[5];
175
+ uniformData[14] = props[6];
176
+ uniformData[15] = props[7];
177
+
178
+ // params0: vec4<f32>
179
+ uniformData[16] = props[IDX_PARAMS];
180
+ uniformData[17] = props[IDX_PARAMS + 1];
181
+ uniformData[18] = props[IDX_PARAMS + 2];
182
+ uniformData[19] = props[IDX_PARAMS + 3];
183
+
184
+ // params1: vec4<f32>
185
+ uniformData[20] = props[IDX_PARAMS + 4];
186
+ uniformData[21] = props[IDX_PARAMS + 5];
187
+ uniformData[22] = props[IDX_PARAMS + 6];
188
+ uniformData[23] = props[IDX_PARAMS + 7];
189
+ device.queue.writeBuffer(uniformBuffer, 0, uniformData);
190
+ const commandEncoder = device.createCommandEncoder();
191
+ const textureView = context.getCurrentTexture().createView();
192
+ const passEncoder = commandEncoder.beginRenderPass({
193
+ colorAttachments: [{
194
+ view: textureView,
195
+ clearValue: [0, 0, 0, 1],
196
+ loadOp: 'clear',
197
+ storeOp: 'store'
198
+ }]
199
+ });
200
+ passEncoder.setPipeline(pipeline);
201
+ passEncoder.setBindGroup(0, bindGroup);
202
+ passEncoder.draw(3);
203
+ passEncoder.end();
204
+ device.queue.submit([commandEncoder.finish()]);
205
+ context.present();
206
+ if (!isStatic) {
207
+ requestAnimationFrame(render);
208
+ }
209
+ }
210
+ requestAnimationFrame(render);
211
+ });
212
+ }, [resources, runtime, propsSync, fragmentShader, isStatic]);
213
+ return /*#__PURE__*/_jsx(Canvas, {
214
+ ref: canvasRef,
215
+ style: [styles.canvas, style],
216
+ ...viewProps
217
+ });
218
+ }
219
+ const styles = StyleSheet.create({
220
+ canvas: {
221
+ flex: 1
222
+ }
223
+ });
224
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PixelRatio","StyleSheet","Canvas","useEffect","useRef","createSynchronizable","scheduleOnRuntime","colorToVec4","useWGPUSetup","TRIANGLE_VERTEX_SHADER","UNIFORM_BUFFER_SIZE","UNIFORM_FLOAT_COUNT","jsx","_jsx","SYNC_SIZE","IDX_SPEED","IDX_PARAMS","IDX_ALIVE","ShaderView","fragmentShader","colors","speed","params","isStatic","style","viewProps","canvasRef","runtime","resources","propsSync","Float64Array","current","data","undefined","c0","r","g","b","a","c1","i","setBlocking","prev","device","context","presentationFormat","dpr","get","pipeline","createRenderPipeline","layout","vertex","module","createShaderModule","code","entryPoint","fragment","targets","format","primitive","topology","uniformBuffer","createBuffer","size","usage","GPUBufferUsage","UNIFORM","COPY_DST","bindGroup","createBindGroup","getBindGroupLayout","entries","binding","resource","buffer","uniformData","Float32Array","accumulatedTime","lastTimestamp","render","timestamp","props","getDirty","dt","currentSpeed","canvas","width","height","aspect","queue","writeBuffer","commandEncoder","createCommandEncoder","textureView","getCurrentTexture","createView","passEncoder","beginRenderPass","colorAttachments","view","clearValue","loadOp","storeOp","setPipeline","setBindGroup","draw","end","submit","finish","present","requestAnimationFrame","ref","styles","create","flex"],"sourceRoot":"../../../../src","sources":["components/ShaderView/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/ShaderView/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,83 @@
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 Silk({
7
+ color = '#7B7481',
8
+ speed = 1.0,
9
+ scale = 1.0,
10
+ rotation = 0.0,
11
+ noiseIntensity = 1.5,
12
+ ...viewProps
13
+ }) {
14
+ const colors = useMemo(() => [color], [color]);
15
+ const params = useMemo(() => [scale, rotation, noiseIntensity], [scale, rotation, noiseIntensity]);
16
+ return /*#__PURE__*/_jsx(ShaderView, {
17
+ fragmentShader: SILK_SHADER,
18
+ colors: colors,
19
+ params: params,
20
+ speed: speed,
21
+ isStatic: false,
22
+ ...viewProps
23
+ });
24
+ }
25
+ const SILK_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
+ const e = 2.71828182845904523536;
37
+
38
+ fn noise(texCoord: vec2<f32>) -> f32 {
39
+ let G = e;
40
+ let r = (G * sin(G * texCoord));
41
+ return fract(r.x * r.y * (1.0 + texCoord.x));
42
+ }
43
+
44
+ fn rotateUvs(uv: vec2<f32>, angle: f32) -> vec2<f32> {
45
+ let c = cos(angle);
46
+ let s = sin(angle);
47
+ let rot = mat2x2<f32>(c, -s, s, c);
48
+ return rot * uv;
49
+ }
50
+
51
+ @fragment
52
+ fn main(@location(0) ndc: vec2<f32>) -> @location(0) vec4<f32> {
53
+ let time = u.time.x;
54
+ let scale = u.params0.x;
55
+ let rotation = u.params0.y;
56
+ let noiseIntensity = u.params0.z;
57
+
58
+ let resolution2D = u.resolution.xy;
59
+ let vUv = ndc * 0.5 + vec2<f32>(0.5, 0.5);
60
+ let fragCoord = vUv * resolution2D;
61
+
62
+ let rnd = noise(fragCoord);
63
+ let uv = rotateUvs(vUv * scale, rotation);
64
+ var tex = uv * scale;
65
+ let tOffset = time;
66
+
67
+ tex.y = tex.y + 0.03 * sin(8.0 * tex.x - tOffset);
68
+
69
+ let pattern = 0.6 +
70
+ 0.4 * sin(5.0 * (tex.x + tex.y +
71
+ cos(3.0 * tex.x + 5.0 * tex.y) +
72
+ 0.02 * tOffset) +
73
+ sin(20.0 * (tex.x + tex.y - 0.1 * tOffset)));
74
+
75
+ var col = u.color0 * vec4<f32>(pattern, pattern, pattern, 1.0) -
76
+ vec4<f32>(rnd / 15.0 * noiseIntensity, rnd / 15.0 * noiseIntensity,
77
+ rnd / 15.0 * noiseIntensity, 0.0);
78
+ col.a = u.color0.a;
79
+
80
+ return clamp(col, vec4<f32>(0.0), vec4<f32>(1.0));
81
+ }
82
+ `;
83
+ //# sourceMappingURL=Silk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","ShaderView","jsx","_jsx","Silk","color","speed","scale","rotation","noiseIntensity","viewProps","colors","params","fragmentShader","SILK_SHADER","isStatic"],"sourceRoot":"../../../src","sources":["components/Silk.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAG/B,OAAOC,UAAU,MAAM,uBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAetC,eAAe,SAASC,IAAIA,CAAC;EAC3BC,KAAK,GAAG,SAAS;EACjBC,KAAK,GAAG,GAAG;EACXC,KAAK,GAAG,GAAG;EACXC,QAAQ,GAAG,GAAG;EACdC,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,KAAK,EAAEC,QAAQ,EAAEC,cAAc,CAAC,EACvC,CAACF,KAAK,EAAEC,QAAQ,EAAEC,cAAc,CAClC,CAAC;EAED,oBACEN,IAAA,CAACF,UAAU;IACTY,cAAc,EAAEC,WAAY;IAC5BH,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEA,MAAO;IACfN,KAAK,EAAEA,KAAM;IACbS,QAAQ,EAAE,KAAM;IAAA,GACZL;EAAS,CACd,CAAC;AAEN;AAEA,MAAMI,WAAW,GAAG,UAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,154 @@
1
+ "use strict";
2
+
3
+ export const NAMED_COLORS = {
4
+ // Basic colors
5
+ black: 0x000000,
6
+ white: 0xffffff,
7
+ red: 0xff0000,
8
+ green: 0x008000,
9
+ blue: 0x0000ff,
10
+ yellow: 0xffff00,
11
+ cyan: 0x00ffff,
12
+ magenta: 0xff00ff,
13
+ silver: 0xc0c0c0,
14
+ gray: 0x808080,
15
+ grey: 0x808080,
16
+ maroon: 0x800000,
17
+ olive: 0x808000,
18
+ lime: 0x00ff00,
19
+ aqua: 0x00ffff,
20
+ teal: 0x008080,
21
+ navy: 0x000080,
22
+ fuchsia: 0xff00ff,
23
+ purple: 0x800080,
24
+ // Extended colors
25
+ aliceblue: 0xf0f8ff,
26
+ antiquewhite: 0xfaebd7,
27
+ aquamarine: 0x7fffd4,
28
+ azure: 0xf0ffff,
29
+ beige: 0xf5f5dc,
30
+ bisque: 0xffe4c4,
31
+ blanchedalmond: 0xffebcd,
32
+ blueviolet: 0x8a2be2,
33
+ brown: 0xa52a2a,
34
+ burlywood: 0xdeb887,
35
+ cadetblue: 0x5f9ea0,
36
+ chartreuse: 0x7fff00,
37
+ chocolate: 0xd2691e,
38
+ coral: 0xff7f50,
39
+ cornflowerblue: 0x6495ed,
40
+ cornsilk: 0xfff8dc,
41
+ crimson: 0xdc143c,
42
+ darkblue: 0x00008b,
43
+ darkcyan: 0x008b8b,
44
+ darkgoldenrod: 0xb8860b,
45
+ darkgray: 0xa9a9a9,
46
+ darkgrey: 0xa9a9a9,
47
+ darkgreen: 0x006400,
48
+ darkkhaki: 0xbdb76b,
49
+ darkmagenta: 0x8b008b,
50
+ darkolivegreen: 0x556b2f,
51
+ darkorange: 0xff8c00,
52
+ darkorchid: 0x9932cc,
53
+ darkred: 0x8b0000,
54
+ darksalmon: 0xe9967a,
55
+ darkseagreen: 0x8fbc8f,
56
+ darkslateblue: 0x483d8b,
57
+ darkslategray: 0x2f4f4f,
58
+ darkslategrey: 0x2f4f4f,
59
+ darkturquoise: 0x00ced1,
60
+ darkviolet: 0x9400d3,
61
+ deeppink: 0xff1493,
62
+ deepskyblue: 0x00bfff,
63
+ dimgray: 0x696969,
64
+ dimgrey: 0x696969,
65
+ dodgerblue: 0x1e90ff,
66
+ firebrick: 0xb22222,
67
+ floralwhite: 0xfffaf0,
68
+ forestgreen: 0x228b22,
69
+ gainsboro: 0xdcdcdc,
70
+ ghostwhite: 0xf8f8ff,
71
+ gold: 0xffd700,
72
+ goldenrod: 0xdaa520,
73
+ greenyellow: 0xadff2f,
74
+ honeydew: 0xf0fff0,
75
+ hotpink: 0xff69b4,
76
+ indianred: 0xcd5c5c,
77
+ indigo: 0x4b0082,
78
+ ivory: 0xfffff0,
79
+ khaki: 0xf0e68c,
80
+ lavender: 0xe6e6fa,
81
+ lavenderblush: 0xfff0f5,
82
+ lawngreen: 0x7cfc00,
83
+ lemonchiffon: 0xfffacd,
84
+ lightblue: 0xadd8e6,
85
+ lightcoral: 0xf08080,
86
+ lightcyan: 0xe0ffff,
87
+ lightgoldenrodyellow: 0xfafad2,
88
+ lightgray: 0xd3d3d3,
89
+ lightgrey: 0xd3d3d3,
90
+ lightgreen: 0x90ee90,
91
+ lightpink: 0xffb6c1,
92
+ lightsalmon: 0xffa07a,
93
+ lightseagreen: 0x20b2aa,
94
+ lightskyblue: 0x87cefa,
95
+ lightslategray: 0x778899,
96
+ lightslategrey: 0x778899,
97
+ lightsteelblue: 0xb0c4de,
98
+ lightyellow: 0xffffe0,
99
+ limegreen: 0x32cd32,
100
+ linen: 0xfaf0e6,
101
+ mediumaquamarine: 0x66cdaa,
102
+ mediumblue: 0x0000cd,
103
+ mediumorchid: 0xba55d3,
104
+ mediumpurple: 0x9370db,
105
+ mediumseagreen: 0x3cb371,
106
+ mediumslateblue: 0x7b68ee,
107
+ mediumspringgreen: 0x00fa9a,
108
+ mediumturquoise: 0x48d1cc,
109
+ mediumvioletred: 0xc71585,
110
+ midnightblue: 0x191970,
111
+ mintcream: 0xf5fffa,
112
+ mistyrose: 0xffe4e1,
113
+ moccasin: 0xffe4b5,
114
+ navajowhite: 0xffdead,
115
+ oldlace: 0xfdf5e6,
116
+ olivedrab: 0x6b8e23,
117
+ orange: 0xffa500,
118
+ orangered: 0xff4500,
119
+ orchid: 0xda70d6,
120
+ palegoldenrod: 0xeee8aa,
121
+ palegreen: 0x98fb98,
122
+ paleturquoise: 0xafeeee,
123
+ palevioletred: 0xdb7093,
124
+ papayawhip: 0xffefd5,
125
+ peachpuff: 0xffdab9,
126
+ peru: 0xcd853f,
127
+ pink: 0xffc0cb,
128
+ plum: 0xdda0dd,
129
+ powderblue: 0xb0e0e6,
130
+ rosybrown: 0xbc8f8f,
131
+ royalblue: 0x4169e1,
132
+ saddlebrown: 0x8b4513,
133
+ salmon: 0xfa8072,
134
+ sandybrown: 0xf4a460,
135
+ seagreen: 0x2e8b57,
136
+ seashell: 0xfff5ee,
137
+ sienna: 0xa0522d,
138
+ skyblue: 0x87ceeb,
139
+ slateblue: 0x6a5acd,
140
+ slategray: 0x708090,
141
+ slategrey: 0x708090,
142
+ snow: 0xfffafa,
143
+ springgreen: 0x00ff7f,
144
+ steelblue: 0x4682b4,
145
+ tan: 0xd2b48c,
146
+ thistle: 0xd8bfd8,
147
+ tomato: 0xff6347,
148
+ turquoise: 0x40e0d0,
149
+ violet: 0xee82ee,
150
+ wheat: 0xf5deb3,
151
+ whitesmoke: 0xf5f5f5,
152
+ yellowgreen: 0x9acd32
153
+ };
154
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NAMED_COLORS","black","white","red","green","blue","yellow","cyan","magenta","silver","gray","grey","maroon","olive","lime","aqua","teal","navy","fuchsia","purple","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen"],"sourceRoot":"../../src","sources":["consts.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ import { useCallback } from 'react';
4
+ import { useFrameCallback, useSharedValue } from 'react-native-reanimated';
5
+ export function useClock() {
6
+ const clock = useSharedValue(0);
7
+ const callback = useCallback(info => {
8
+ 'worklet';
9
+
10
+ clock.value = info.timeSinceFirstFrame;
11
+ }, [clock]);
12
+ useFrameCallback(callback);
13
+ return clock;
14
+ }
15
+ //# sourceMappingURL=useClock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useFrameCallback","useSharedValue","useClock","clock","callback","info","value","timeSinceFirstFrame"],"sourceRoot":"../../../src","sources":["hooks/useClock.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SACEC,gBAAgB,EAChBC,cAAc,QAGT,yBAAyB;AAEhC,OAAO,SAASC,QAAQA,CAAA,EAAwB;EAC9C,MAAMC,KAAK,GAAGF,cAAc,CAAC,CAAC,CAAC;EAC/B,MAAMG,QAAQ,GAAGL,WAAW,CACzBM,IAAe,IAAK;IACnB,SAAS;;IACTF,KAAK,CAACG,KAAK,GAAGD,IAAI,CAACE,mBAAmB;EACxC,CAAC,EACD,CAACJ,KAAK,CACR,CAAC;EACDH,gBAAgB,CAACI,QAAQ,CAAC;EAC1B,OAAOD,KAAK;AACd","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ import { PixelRatio } from 'react-native';
4
+ import { useCanvasRef } from 'react-native-wgpu';
5
+ import { useEffect, useState } from 'react';
6
+ import { initWebGPU } from "../utils/initWebGPU.js";
7
+ import { BackgroundRuntime } from "../utils/backgroundRuntime.js";
8
+ export function useWGPUSetup() {
9
+ const canvasRef = useCanvasRef();
10
+ const [resources, setResources] = useState(null);
11
+ const runtime = BackgroundRuntime;
12
+ useEffect(() => {
13
+ let cancelled = false;
14
+ (async () => {
15
+ const adapter = await navigator.gpu.requestAdapter();
16
+ if (!adapter || cancelled) {
17
+ return;
18
+ }
19
+ const device = await adapter.requestDevice();
20
+ if (cancelled) {
21
+ return;
22
+ }
23
+ const context = canvasRef.current.getContext('webgpu');
24
+ const canvas = context.canvas;
25
+ const dpr = PixelRatio.get();
26
+ canvas.width = canvas.width * dpr;
27
+ canvas.height = canvas.height * dpr;
28
+ const presentationFormat = navigator.gpu.getPreferredCanvasFormat();
29
+ context.configure({
30
+ device,
31
+ format: presentationFormat,
32
+ alphaMode: 'premultiplied'
33
+ });
34
+ initWebGPU(runtime);
35
+ if (!cancelled) {
36
+ setResources({
37
+ device,
38
+ context,
39
+ presentationFormat
40
+ });
41
+ }
42
+ })();
43
+ return () => {
44
+ cancelled = true;
45
+ };
46
+ // eslint-disable-next-line react-hooks/exhaustive-deps
47
+ }, []);
48
+ return {
49
+ canvasRef,
50
+ runtime,
51
+ resources
52
+ };
53
+ }
54
+ //# sourceMappingURL=useWGPUSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PixelRatio","useCanvasRef","useEffect","useState","initWebGPU","BackgroundRuntime","useWGPUSetup","canvasRef","resources","setResources","runtime","cancelled","adapter","navigator","gpu","requestAdapter","device","requestDevice","context","current","getContext","canvas","dpr","get","width","height","presentationFormat","getPreferredCanvasFormat","configure","format","alphaMode"],"sourceRoot":"../../../src","sources":["hooks/useWGPUSetup.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SACEC,YAAY,QAGP,mBAAmB;AAC1B,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAE3C,SAASC,UAAU,QAAQ,wBAAqB;AAChD,SAASC,iBAAiB,QAAQ,+BAA4B;AAc9D,OAAO,SAASC,YAAYA,CAAA,EAAoB;EAC9C,MAAMC,SAAS,GAAGN,YAAY,CAAC,CAAC;EAChC,MAAM,CAACO,SAAS,EAAEC,YAAY,CAAC,GAAGN,QAAQ,CAAsB,IAAI,CAAC;EACrE,MAAMO,OAAO,GAAGL,iBAAiB;EAEjCH,SAAS,CAAC,MAAM;IACd,IAAIS,SAAS,GAAG,KAAK;IAErB,CAAC,YAAY;MACX,MAAMC,OAAO,GAAG,MAAMC,SAAS,CAACC,GAAG,CAACC,cAAc,CAAC,CAAC;MACpD,IAAI,CAACH,OAAO,IAAID,SAAS,EAAE;QACzB;MACF;MAEA,MAAMK,MAAM,GAAG,MAAMJ,OAAO,CAACK,aAAa,CAAC,CAAC;MAC5C,IAAIN,SAAS,EAAE;QACb;MACF;MAEA,MAAMO,OAAO,GAAGX,SAAS,CAACY,OAAO,CAAEC,UAAU,CAAC,QAAQ,CAAE;MACxD,MAAMC,MAAM,GAAGH,OAAO,CAACG,MAGtB;MACD,MAAMC,GAAG,GAAGtB,UAAU,CAACuB,GAAG,CAAC,CAAC;MAC5BF,MAAM,CAACG,KAAK,GAAGH,MAAM,CAACG,KAAK,GAAGF,GAAG;MACjCD,MAAM,CAACI,MAAM,GAAGJ,MAAM,CAACI,MAAM,GAAGH,GAAG;MAEnC,MAAMI,kBAAkB,GAAGb,SAAS,CAACC,GAAG,CAACa,wBAAwB,CAAC,CAAC;MACnET,OAAO,CAACU,SAAS,CAAC;QAChBZ,MAAM;QACNa,MAAM,EAAEH,kBAAkB;QAC1BI,SAAS,EAAE;MACb,CAAC,CAAC;MAEF1B,UAAU,CAACM,OAAO,CAAC;MAEnB,IAAI,CAACC,SAAS,EAAE;QACdF,YAAY,CAAC;UAAEO,MAAM;UAAEE,OAAO;UAAEQ;QAAmB,CAAC,CAAC;MACvD;IACF,CAAC,EAAE,CAAC;IAEJ,OAAO,MAAM;MACXf,SAAS,GAAG,IAAI;IAClB,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAEJ,SAAS;IAAEG,OAAO;IAAEF;EAAU,CAAC;AAC1C","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import CircularGradient from "./components/CircularGradient.js";
4
+ import LinearGradient from "./components/LinearGradient.js";
5
+ import ShaderView from "./components/ShaderView/index.js";
6
+ import Iridescence from "./components/Iridescence.js";
7
+ import LiquidChrome from "./components/LiquidChrome.js";
8
+ import Silk from "./components/Silk.js";
9
+ import Campfire from "./components/Campfire.js";
10
+ import CalicoSwirl from "./components/CalicoSwirl.js";
11
+ import Aurora from "./components/Aurora.js";
12
+ export { CircularGradient, LinearGradient, ShaderView, Iridescence, LiquidChrome, Silk, Campfire, CalicoSwirl, Aurora };
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CircularGradient","LinearGradient","ShaderView","Iridescence","LiquidChrome","Silk","Campfire","CalicoSwirl","Aurora"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,gBAAgB,MAAM,kCAA+B;AAC5D,OAAOC,cAAc,MAAM,gCAA6B;AACxD,OAAOC,UAAU,MAAM,kCAAyB;AAChD,OAAOC,WAAW,MAAM,6BAA0B;AAClD,OAAOC,YAAY,MAAM,8BAA2B;AACpD,OAAOC,IAAI,MAAM,sBAAmB;AACpC,OAAOC,QAAQ,MAAM,0BAAuB;AAC5C,OAAOC,WAAW,MAAM,6BAA0B;AAClD,OAAOC,MAAM,MAAM,wBAAqB;AAIxC,SACER,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,WAAW,EACXC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,WAAW,EACXC,MAAM","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ export const TRIANGLE_VERTEX_SHADER = /* wgsl */`
4
+ struct VSOut {
5
+ @builtin(position) pos: vec4<f32>,
6
+ @location(0) ndc: vec2<f32>,
7
+ };
8
+
9
+ @vertex
10
+ fn main(@builtin(vertex_index) vid: u32) -> VSOut {
11
+ var p = array<vec2<f32>,3>(
12
+ vec2<f32>(-1.0,-3.0), vec2<f32>(-1.0,1.0), vec2<f32>(3.0,1.0)
13
+ );
14
+ var o: VSOut;
15
+ o.pos = vec4<f32>(p[vid], 0, 1.0);
16
+ o.ndc = p[vid];
17
+ return o;
18
+ }
19
+ `;
20
+ //# sourceMappingURL=TRIANGLE_VERTEX_SHADER.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TRIANGLE_VERTEX_SHADER"],"sourceRoot":"../../../src","sources":["shaders/TRIANGLE_VERTEX_SHADER.ts"],"mappings":";;AAAA,OAAO,MAAMA,sBAAsB,GAAG,UAAW;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ /** 96 bytes = 6 × vec4<f32> */
4
+ export const UNIFORM_BUFFER_SIZE = 96;
5
+
6
+ /** Number of float32 values in the uniform buffer */
7
+ export const UNIFORM_FLOAT_COUNT = UNIFORM_BUFFER_SIZE / 4; // 24
8
+
9
+ export const UNIFORMS_WGSL = /* wgsl */`
10
+ struct Uniforms {
11
+ resolution: vec4<f32>, // (width, height, aspect, pixelRatio)
12
+ time: vec4<f32>, // (seconds, dt, 0, 0)
13
+ color0: vec4<f32>, // colors[0] RGBA
14
+ color1: vec4<f32>, // colors[1] RGBA
15
+ params0: vec4<f32>, // params[0..3]
16
+ params1: vec4<f32>, // params[4..7]
17
+ };
18
+ @group(0) @binding(0) var<uniform> u: Uniforms;
19
+ `;
20
+ //# sourceMappingURL=uniforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["UNIFORM_BUFFER_SIZE","UNIFORM_FLOAT_COUNT","UNIFORMS_WGSL"],"sourceRoot":"../../../src","sources":["shaders/uniforms.ts"],"mappings":";;AAAA;AACA,OAAO,MAAMA,mBAAmB,GAAG,EAAE;;AAErC;AACA,OAAO,MAAMC,mBAAmB,GAAGD,mBAAmB,GAAG,CAAC,CAAC,CAAC;;AAE5D,OAAO,MAAME,aAAa,GAAG,UAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ import { createWorkletRuntime, scheduleOnRuntime } from 'react-native-worklets';
4
+ export const BackgroundRuntime = createWorkletRuntime({
5
+ name: 'react-native-effects'
6
+ });
7
+ export function runOnBackground(callback) {
8
+ 'worklet';
9
+
10
+ return scheduleOnRuntime(BackgroundRuntime, callback);
11
+ }
12
+ //# sourceMappingURL=backgroundRuntime.js.map