@paper-design/shaders-react 0.0.0-canary.390a3d9
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 +21 -0
- package/README.md +29 -0
- package/dist/color-props-are-equal.d.ts +6 -0
- package/dist/color-props-are-equal.js +34 -0
- package/dist/color-props-are-equal.js.map +7 -0
- package/dist/index.d.ts +86 -0
- package/dist/index.js +129 -0
- package/dist/index.js.map +7 -0
- package/dist/shader-mount.d.ts +38 -0
- package/dist/shader-mount.js +149 -0
- package/dist/shader-mount.js.map +7 -0
- package/dist/shaders/color-panels.d.ts +12 -0
- package/dist/shaders/color-panels.js +173 -0
- package/dist/shaders/color-panels.js.map +7 -0
- package/dist/shaders/dithering.d.ts +16 -0
- package/dist/shaders/dithering.js +158 -0
- package/dist/shaders/dithering.js.map +7 -0
- package/dist/shaders/dot-grid.d.ts +9 -0
- package/dist/shaders/dot-grid.js +139 -0
- package/dist/shaders/dot-grid.js.map +7 -0
- package/dist/shaders/dot-orbit.d.ts +12 -0
- package/dist/shaders/dot-orbit.js +130 -0
- package/dist/shaders/dot-orbit.js.map +7 -0
- package/dist/shaders/fluted-glass.d.ts +14 -0
- package/dist/shaders/fluted-glass.js +183 -0
- package/dist/shaders/fluted-glass.js.map +7 -0
- package/dist/shaders/god-rays.d.ts +12 -0
- package/dist/shaders/god-rays.js +150 -0
- package/dist/shaders/god-rays.js.map +7 -0
- package/dist/shaders/grain-gradient.d.ts +14 -0
- package/dist/shaders/grain-gradient.js +177 -0
- package/dist/shaders/grain-gradient.js.map +7 -0
- package/dist/shaders/heatmap.d.ts +14 -0
- package/dist/shaders/heatmap.js +161 -0
- package/dist/shaders/heatmap.js.map +7 -0
- package/dist/shaders/image-dithering.d.ts +14 -0
- package/dist/shaders/image-dithering.js +145 -0
- package/dist/shaders/image-dithering.js.map +7 -0
- package/dist/shaders/image-halftone-dots.d.ts +12 -0
- package/dist/shaders/image-halftone-dots.js +171 -0
- package/dist/shaders/image-halftone-dots.js.map +7 -0
- package/dist/shaders/liquid-metal.d.ts +16 -0
- package/dist/shaders/liquid-metal.js +201 -0
- package/dist/shaders/liquid-metal.js.map +7 -0
- package/dist/shaders/mesh-gradient.d.ts +12 -0
- package/dist/shaders/mesh-gradient.js +129 -0
- package/dist/shaders/mesh-gradient.js.map +7 -0
- package/dist/shaders/metaballs.d.ts +12 -0
- package/dist/shaders/metaballs.js +121 -0
- package/dist/shaders/metaballs.js.map +7 -0
- package/dist/shaders/neuro-noise.d.ts +12 -0
- package/dist/shaders/neuro-noise.js +126 -0
- package/dist/shaders/neuro-noise.js.map +7 -0
- package/dist/shaders/paper-texture.d.ts +20 -0
- package/dist/shaders/paper-texture.js +198 -0
- package/dist/shaders/paper-texture.js.map +7 -0
- package/dist/shaders/perlin-noise.d.ts +12 -0
- package/dist/shaders/perlin-noise.js +142 -0
- package/dist/shaders/perlin-noise.js.map +7 -0
- package/dist/shaders/pulsing-border.d.ts +12 -0
- package/dist/shaders/pulsing-border.js +216 -0
- package/dist/shaders/pulsing-border.js.map +7 -0
- package/dist/shaders/simplex-noise.d.ts +12 -0
- package/dist/shaders/simplex-noise.js +125 -0
- package/dist/shaders/simplex-noise.js.map +7 -0
- package/dist/shaders/smoke-ring.d.ts +12 -0
- package/dist/shaders/smoke-ring.js +137 -0
- package/dist/shaders/smoke-ring.js.map +7 -0
- package/dist/shaders/spiral.d.ts +12 -0
- package/dist/shaders/spiral.js +151 -0
- package/dist/shaders/spiral.js.map +7 -0
- package/dist/shaders/static-mesh-gradient.d.ts +12 -0
- package/dist/shaders/static-mesh-gradient.js +158 -0
- package/dist/shaders/static-mesh-gradient.js.map +7 -0
- package/dist/shaders/static-radial-gradient.d.ts +12 -0
- package/dist/shaders/static-radial-gradient.js +178 -0
- package/dist/shaders/static-radial-gradient.js.map +7 -0
- package/dist/shaders/swirl.d.ts +12 -0
- package/dist/shaders/swirl.js +146 -0
- package/dist/shaders/swirl.js.map +7 -0
- package/dist/shaders/voronoi.d.ts +12 -0
- package/dist/shaders/voronoi.js +137 -0
- package/dist/shaders/voronoi.js.map +7 -0
- package/dist/shaders/warp.d.ts +14 -0
- package/dist/shaders/warp.js +194 -0
- package/dist/shaders/warp.js.map +7 -0
- package/dist/shaders/water.d.ts +14 -0
- package/dist/shaders/water.js +148 -0
- package/dist/shaders/water.js.map +7 -0
- package/dist/shaders/waves.d.ts +12 -0
- package/dist/shaders/waves.js +136 -0
- package/dist/shaders/waves.js.map +7 -0
- package/dist/suspend.d.ts +8 -0
- package/dist/suspend.js +43 -0
- package/dist/suspend.js.map +7 -0
- package/dist/transparent-pixel.d.ts +1 -0
- package/dist/transparent-pixel.js +10 -0
- package/dist/transparent-pixel.js.map +7 -0
- package/dist/use-merge-refs.d.ts +6 -0
- package/dist/use-merge-refs.js +48 -0
- package/dist/use-merge-refs.js.map +7 -0
- package/package.json +41 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
2
|
+
* Paper Shaders *
|
|
3
|
+
* https://github.com/paper-design/shaders *
|
|
4
|
+
* * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
5
|
+
|
|
6
|
+
import { memo } from "react";
|
|
7
|
+
import { ShaderMount } from "../shader-mount.js";
|
|
8
|
+
import { colorPropsAreEqual } from "../color-props-are-equal.js";
|
|
9
|
+
import {
|
|
10
|
+
defaultPatternSizing,
|
|
11
|
+
getShaderColorFromString,
|
|
12
|
+
perlinNoiseFragmentShader,
|
|
13
|
+
ShaderFitOptions
|
|
14
|
+
} from "@paper-design/shaders";
|
|
15
|
+
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
const defaultPreset = {
|
|
17
|
+
name: "Default",
|
|
18
|
+
params: {
|
|
19
|
+
...defaultPatternSizing,
|
|
20
|
+
speed: 0.5,
|
|
21
|
+
frame: 0,
|
|
22
|
+
colorBack: "#632ad5",
|
|
23
|
+
colorFront: "#fccff7",
|
|
24
|
+
proportion: 0.35,
|
|
25
|
+
softness: 0.1,
|
|
26
|
+
octaveCount: 1,
|
|
27
|
+
persistence: 1,
|
|
28
|
+
lacunarity: 1.5
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const nintendoWaterPreset = {
|
|
32
|
+
name: "Nintendo Water",
|
|
33
|
+
params: {
|
|
34
|
+
...defaultPatternSizing,
|
|
35
|
+
scale: 1 / 0.2,
|
|
36
|
+
speed: 0.4,
|
|
37
|
+
frame: 0,
|
|
38
|
+
colorBack: "#2d69d4",
|
|
39
|
+
colorFront: "#d1eefc",
|
|
40
|
+
proportion: 0.42,
|
|
41
|
+
softness: 0,
|
|
42
|
+
octaveCount: 2,
|
|
43
|
+
persistence: 0.55,
|
|
44
|
+
lacunarity: 1.8
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const mossPreset = {
|
|
48
|
+
name: "Moss",
|
|
49
|
+
params: {
|
|
50
|
+
...defaultPatternSizing,
|
|
51
|
+
scale: 1 / 0.15,
|
|
52
|
+
speed: 0.02,
|
|
53
|
+
frame: 0,
|
|
54
|
+
colorBack: "#05ff4a",
|
|
55
|
+
colorFront: "#262626",
|
|
56
|
+
proportion: 0.65,
|
|
57
|
+
softness: 0.35,
|
|
58
|
+
octaveCount: 6,
|
|
59
|
+
persistence: 1,
|
|
60
|
+
lacunarity: 2.55
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const wormsPreset = {
|
|
64
|
+
name: "Worms",
|
|
65
|
+
params: {
|
|
66
|
+
...defaultPatternSizing,
|
|
67
|
+
scale: 0.9,
|
|
68
|
+
speed: 0,
|
|
69
|
+
frame: 0,
|
|
70
|
+
colorBack: "#ffffff00",
|
|
71
|
+
colorFront: "#595959",
|
|
72
|
+
proportion: 0.5,
|
|
73
|
+
softness: 0,
|
|
74
|
+
octaveCount: 1,
|
|
75
|
+
persistence: 1,
|
|
76
|
+
lacunarity: 1.5
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const perlinNoisePresets = [defaultPreset, nintendoWaterPreset, mossPreset, wormsPreset];
|
|
80
|
+
const PerlinNoise = memo(function PerlinNoiseImpl({
|
|
81
|
+
// Own props
|
|
82
|
+
speed = defaultPreset.params.speed,
|
|
83
|
+
frame = defaultPreset.params.frame,
|
|
84
|
+
colorFront = defaultPreset.params.colorFront,
|
|
85
|
+
colorBack = defaultPreset.params.colorBack,
|
|
86
|
+
proportion = defaultPreset.params.proportion,
|
|
87
|
+
softness = defaultPreset.params.softness,
|
|
88
|
+
octaveCount = defaultPreset.params.octaveCount,
|
|
89
|
+
persistence = defaultPreset.params.persistence,
|
|
90
|
+
lacunarity,
|
|
91
|
+
// Sizing props
|
|
92
|
+
fit = defaultPreset.params.fit,
|
|
93
|
+
worldWidth = defaultPreset.params.worldWidth,
|
|
94
|
+
worldHeight = defaultPreset.params.worldHeight,
|
|
95
|
+
scale = defaultPreset.params.scale,
|
|
96
|
+
rotation = defaultPreset.params.rotation,
|
|
97
|
+
originX = defaultPreset.params.originX,
|
|
98
|
+
originY = defaultPreset.params.originY,
|
|
99
|
+
offsetX = defaultPreset.params.offsetX,
|
|
100
|
+
offsetY = defaultPreset.params.offsetY,
|
|
101
|
+
...props
|
|
102
|
+
}) {
|
|
103
|
+
const uniforms = {
|
|
104
|
+
// Own uniforms
|
|
105
|
+
u_colorBack: getShaderColorFromString(colorBack),
|
|
106
|
+
u_colorFront: getShaderColorFromString(colorFront),
|
|
107
|
+
u_proportion: proportion,
|
|
108
|
+
u_softness: softness ?? defaultPreset.params.softness,
|
|
109
|
+
u_octaveCount: octaveCount ?? defaultPreset.params.octaveCount,
|
|
110
|
+
u_persistence: persistence ?? defaultPreset.params.persistence,
|
|
111
|
+
u_lacunarity: lacunarity ?? defaultPreset.params.lacunarity,
|
|
112
|
+
// Sizing uniforms
|
|
113
|
+
u_fit: ShaderFitOptions[fit],
|
|
114
|
+
u_scale: scale,
|
|
115
|
+
u_rotation: rotation,
|
|
116
|
+
u_offsetX: offsetX,
|
|
117
|
+
u_offsetY: offsetY,
|
|
118
|
+
u_originX: originX,
|
|
119
|
+
u_originY: originY,
|
|
120
|
+
u_worldWidth: worldWidth,
|
|
121
|
+
u_worldHeight: worldHeight
|
|
122
|
+
};
|
|
123
|
+
return /* @__PURE__ */ jsx(
|
|
124
|
+
ShaderMount,
|
|
125
|
+
{
|
|
126
|
+
...props,
|
|
127
|
+
speed,
|
|
128
|
+
frame,
|
|
129
|
+
fragmentShader: perlinNoiseFragmentShader,
|
|
130
|
+
uniforms
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}, colorPropsAreEqual);
|
|
134
|
+
export {
|
|
135
|
+
PerlinNoise,
|
|
136
|
+
defaultPreset,
|
|
137
|
+
mossPreset,
|
|
138
|
+
nintendoWaterPreset,
|
|
139
|
+
perlinNoisePresets,
|
|
140
|
+
wormsPreset
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=perlin-noise.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/shaders/perlin-noise.tsx"],
|
|
4
|
+
"sourcesContent": ["import { memo } from 'react';\nimport { ShaderMount, type ShaderComponentProps } from '../shader-mount.js';\nimport { colorPropsAreEqual } from '../color-props-are-equal.js';\nimport {\n defaultPatternSizing,\n getShaderColorFromString,\n perlinNoiseFragmentShader,\n ShaderFitOptions,\n type PerlinNoiseParams,\n type PerlinNoiseUniforms,\n type ShaderPreset,\n} from '@paper-design/shaders';\n\nexport interface PerlinNoiseProps extends ShaderComponentProps, PerlinNoiseParams {}\n\ntype PerlinNoisePreset = ShaderPreset<PerlinNoiseParams>;\n\nexport const defaultPreset: PerlinNoisePreset = {\n name: 'Default',\n params: {\n ...defaultPatternSizing,\n speed: 0.5,\n frame: 0,\n colorBack: '#632ad5',\n colorFront: '#fccff7',\n proportion: 0.35,\n softness: 0.1,\n octaveCount: 1,\n persistence: 1,\n lacunarity: 1.5,\n },\n};\n\nexport const nintendoWaterPreset: PerlinNoisePreset = {\n name: 'Nintendo Water',\n params: {\n ...defaultPatternSizing,\n scale: 1 / 0.2,\n speed: 0.4,\n frame: 0,\n colorBack: '#2d69d4',\n colorFront: '#d1eefc',\n proportion: 0.42,\n softness: 0,\n octaveCount: 2,\n persistence: 0.55,\n lacunarity: 1.8,\n },\n};\n\nexport const mossPreset: PerlinNoisePreset = {\n name: 'Moss',\n params: {\n ...defaultPatternSizing,\n scale: 1 / 0.15,\n speed: 0.02,\n frame: 0,\n colorBack: '#05ff4a',\n colorFront: '#262626',\n proportion: 0.65,\n softness: 0.35,\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n },\n};\n\nexport const wormsPreset: PerlinNoisePreset = {\n name: 'Worms',\n params: {\n ...defaultPatternSizing,\n scale: 0.9,\n speed: 0,\n frame: 0,\n colorBack: '#ffffff00',\n colorFront: '#595959',\n proportion: 0.5,\n softness: 0,\n octaveCount: 1,\n persistence: 1,\n lacunarity: 1.5,\n },\n};\n\nexport const perlinNoisePresets: PerlinNoisePreset[] = [defaultPreset, nintendoWaterPreset, mossPreset, wormsPreset];\n\nexport const PerlinNoise: React.FC<PerlinNoiseProps> = memo(function PerlinNoiseImpl({\n // Own props\n speed = defaultPreset.params.speed,\n frame = defaultPreset.params.frame,\n colorFront = defaultPreset.params.colorFront,\n colorBack = defaultPreset.params.colorBack,\n proportion = defaultPreset.params.proportion,\n softness = defaultPreset.params.softness,\n octaveCount = defaultPreset.params.octaveCount,\n persistence = defaultPreset.params.persistence,\n lacunarity,\n\n // Sizing props\n fit = defaultPreset.params.fit,\n worldWidth = defaultPreset.params.worldWidth,\n worldHeight = defaultPreset.params.worldHeight,\n scale = defaultPreset.params.scale,\n rotation = defaultPreset.params.rotation,\n originX = defaultPreset.params.originX,\n originY = defaultPreset.params.originY,\n offsetX = defaultPreset.params.offsetX,\n offsetY = defaultPreset.params.offsetY,\n ...props\n}: PerlinNoiseProps) {\n const uniforms = {\n // Own uniforms\n u_colorBack: getShaderColorFromString(colorBack),\n u_colorFront: getShaderColorFromString(colorFront),\n u_proportion: proportion,\n u_softness: softness ?? defaultPreset.params.softness,\n u_octaveCount: octaveCount ?? defaultPreset.params.octaveCount,\n u_persistence: persistence ?? defaultPreset.params.persistence,\n u_lacunarity: lacunarity ?? defaultPreset.params.lacunarity,\n\n // Sizing uniforms\n u_fit: ShaderFitOptions[fit],\n u_scale: scale,\n u_rotation: rotation,\n u_offsetX: offsetX,\n u_offsetY: offsetY,\n u_originX: originX,\n u_originY: originY,\n u_worldWidth: worldWidth,\n u_worldHeight: worldHeight,\n } satisfies PerlinNoiseUniforms;\n\n return (\n <ShaderMount\n {...props}\n speed={speed}\n frame={frame}\n fragmentShader={perlinNoiseFragmentShader}\n uniforms={uniforms}\n />\n );\n}, colorPropsAreEqual);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ShaderComponentProps } from '../shader-mount.js';
|
|
2
|
+
import { type PulsingBorderParams, type ShaderPreset } from '@paper-design/shaders';
|
|
3
|
+
export interface PulsingBorderProps extends ShaderComponentProps, PulsingBorderParams {
|
|
4
|
+
}
|
|
5
|
+
type PulsingBorderPreset = ShaderPreset<PulsingBorderParams>;
|
|
6
|
+
export declare const defaultPreset: PulsingBorderPreset;
|
|
7
|
+
export declare const circlePreset: PulsingBorderPreset;
|
|
8
|
+
export declare const northernLightsPreset: PulsingBorderPreset;
|
|
9
|
+
export declare const solidLinePreset: PulsingBorderPreset;
|
|
10
|
+
export declare const pulsingBorderPresets: PulsingBorderPreset[];
|
|
11
|
+
export declare const PulsingBorder: React.FC<PulsingBorderProps>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
2
|
+
* Paper Shaders *
|
|
3
|
+
* https://github.com/paper-design/shaders *
|
|
4
|
+
* * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
5
|
+
|
|
6
|
+
import { memo } from "react";
|
|
7
|
+
import { ShaderMount } from "../shader-mount.js";
|
|
8
|
+
import { colorPropsAreEqual } from "../color-props-are-equal.js";
|
|
9
|
+
import {
|
|
10
|
+
defaultObjectSizing,
|
|
11
|
+
getShaderColorFromString,
|
|
12
|
+
getShaderNoiseTexture,
|
|
13
|
+
pulsingBorderFragmentShader,
|
|
14
|
+
ShaderFitOptions
|
|
15
|
+
} from "@paper-design/shaders";
|
|
16
|
+
import { PulsingBorderAspectRatios } from "@paper-design/shaders";
|
|
17
|
+
import { jsx } from "react/jsx-runtime";
|
|
18
|
+
const defaultPreset = {
|
|
19
|
+
name: "Default",
|
|
20
|
+
params: {
|
|
21
|
+
...defaultObjectSizing,
|
|
22
|
+
speed: 1,
|
|
23
|
+
frame: 0,
|
|
24
|
+
scale: 0.6,
|
|
25
|
+
colorBack: "#000000",
|
|
26
|
+
colors: ["#0dc1fd", "#d915ef", "#ff3f2ecc"],
|
|
27
|
+
roundness: 0.25,
|
|
28
|
+
thickness: 0.1,
|
|
29
|
+
margin: 0,
|
|
30
|
+
marginLeft: 0,
|
|
31
|
+
marginRight: 0,
|
|
32
|
+
marginTop: 0,
|
|
33
|
+
marginBottom: 0,
|
|
34
|
+
aspectRatio: "auto",
|
|
35
|
+
softness: 0.75,
|
|
36
|
+
intensity: 0.2,
|
|
37
|
+
bloom: 0.25,
|
|
38
|
+
spots: 5,
|
|
39
|
+
spotSize: 0.5,
|
|
40
|
+
pulse: 0.25,
|
|
41
|
+
smoke: 0.3,
|
|
42
|
+
smokeSize: 0.6
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const circlePreset = {
|
|
46
|
+
name: "Circle",
|
|
47
|
+
params: {
|
|
48
|
+
...defaultObjectSizing,
|
|
49
|
+
aspectRatio: "square",
|
|
50
|
+
scale: 0.6,
|
|
51
|
+
speed: 1,
|
|
52
|
+
frame: 0,
|
|
53
|
+
colorBack: "#000000",
|
|
54
|
+
colors: ["#0dc1fd", "#d915ef", "#ff3f2ecc"],
|
|
55
|
+
roundness: 1,
|
|
56
|
+
margin: 0,
|
|
57
|
+
marginLeft: 0,
|
|
58
|
+
marginRight: 0,
|
|
59
|
+
marginTop: 0,
|
|
60
|
+
marginBottom: 0,
|
|
61
|
+
thickness: 0,
|
|
62
|
+
softness: 0.75,
|
|
63
|
+
intensity: 0.2,
|
|
64
|
+
bloom: 0.45,
|
|
65
|
+
spots: 3,
|
|
66
|
+
spotSize: 0.4,
|
|
67
|
+
pulse: 0.5,
|
|
68
|
+
smoke: 1,
|
|
69
|
+
smokeSize: 0
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const northernLightsPreset = {
|
|
73
|
+
name: "Northern lights",
|
|
74
|
+
params: {
|
|
75
|
+
...defaultObjectSizing,
|
|
76
|
+
speed: 0.18,
|
|
77
|
+
scale: 1.1,
|
|
78
|
+
frame: 0,
|
|
79
|
+
colors: ["#4c4794", "#774a7d", "#12694a", "#0aff78", "#4733cc"],
|
|
80
|
+
colorBack: "#0c182c",
|
|
81
|
+
roundness: 0,
|
|
82
|
+
thickness: 1,
|
|
83
|
+
softness: 1,
|
|
84
|
+
margin: 0,
|
|
85
|
+
marginLeft: 0,
|
|
86
|
+
marginRight: 0,
|
|
87
|
+
marginTop: 0,
|
|
88
|
+
marginBottom: 0,
|
|
89
|
+
aspectRatio: "auto",
|
|
90
|
+
intensity: 0.1,
|
|
91
|
+
bloom: 0.2,
|
|
92
|
+
spots: 4,
|
|
93
|
+
spotSize: 0.25,
|
|
94
|
+
pulse: 0,
|
|
95
|
+
smoke: 0.32,
|
|
96
|
+
smokeSize: 0.5
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const solidLinePreset = {
|
|
100
|
+
name: "Solid line",
|
|
101
|
+
params: {
|
|
102
|
+
...defaultObjectSizing,
|
|
103
|
+
speed: 1,
|
|
104
|
+
frame: 0,
|
|
105
|
+
colors: ["#81ADEC"],
|
|
106
|
+
colorBack: "#00000000",
|
|
107
|
+
roundness: 0,
|
|
108
|
+
thickness: 0.05,
|
|
109
|
+
margin: 0,
|
|
110
|
+
marginLeft: 0,
|
|
111
|
+
marginRight: 0,
|
|
112
|
+
marginTop: 0,
|
|
113
|
+
marginBottom: 0,
|
|
114
|
+
aspectRatio: "auto",
|
|
115
|
+
softness: 0,
|
|
116
|
+
intensity: 0,
|
|
117
|
+
bloom: 0.15,
|
|
118
|
+
spots: 4,
|
|
119
|
+
spotSize: 1,
|
|
120
|
+
pulse: 0,
|
|
121
|
+
smoke: 0,
|
|
122
|
+
smokeSize: 0
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const pulsingBorderPresets = [
|
|
126
|
+
defaultPreset,
|
|
127
|
+
circlePreset,
|
|
128
|
+
northernLightsPreset,
|
|
129
|
+
solidLinePreset
|
|
130
|
+
];
|
|
131
|
+
const PulsingBorder = memo(function PulsingBorderImpl({
|
|
132
|
+
// Own props
|
|
133
|
+
speed = defaultPreset.params.speed,
|
|
134
|
+
frame = defaultPreset.params.frame,
|
|
135
|
+
colors = defaultPreset.params.colors,
|
|
136
|
+
colorBack = defaultPreset.params.colorBack,
|
|
137
|
+
roundness = defaultPreset.params.roundness,
|
|
138
|
+
thickness = defaultPreset.params.thickness,
|
|
139
|
+
aspectRatio = defaultPreset.params.aspectRatio,
|
|
140
|
+
softness = defaultPreset.params.softness,
|
|
141
|
+
bloom = defaultPreset.params.bloom,
|
|
142
|
+
intensity = defaultPreset.params.intensity,
|
|
143
|
+
spots = defaultPreset.params.spots,
|
|
144
|
+
spotSize = defaultPreset.params.spotSize,
|
|
145
|
+
pulse = defaultPreset.params.pulse,
|
|
146
|
+
smoke = defaultPreset.params.smoke,
|
|
147
|
+
smokeSize = defaultPreset.params.smokeSize,
|
|
148
|
+
margin,
|
|
149
|
+
marginLeft = margin ?? defaultPreset.params.marginLeft,
|
|
150
|
+
marginRight = margin ?? defaultPreset.params.marginRight,
|
|
151
|
+
marginTop = margin ?? defaultPreset.params.marginTop,
|
|
152
|
+
marginBottom = margin ?? defaultPreset.params.marginBottom,
|
|
153
|
+
// Sizing props
|
|
154
|
+
fit = defaultPreset.params.fit,
|
|
155
|
+
rotation = defaultPreset.params.rotation,
|
|
156
|
+
scale = defaultPreset.params.scale,
|
|
157
|
+
originX = defaultPreset.params.originX,
|
|
158
|
+
originY = defaultPreset.params.originY,
|
|
159
|
+
offsetX = defaultPreset.params.offsetX,
|
|
160
|
+
offsetY = defaultPreset.params.offsetY,
|
|
161
|
+
worldWidth = defaultPreset.params.worldWidth,
|
|
162
|
+
worldHeight = defaultPreset.params.worldHeight,
|
|
163
|
+
...props
|
|
164
|
+
}) {
|
|
165
|
+
const uniforms = {
|
|
166
|
+
// Own uniforms
|
|
167
|
+
u_colorBack: getShaderColorFromString(colorBack),
|
|
168
|
+
u_colors: colors.map(getShaderColorFromString),
|
|
169
|
+
u_colorsCount: colors.length,
|
|
170
|
+
u_roundness: roundness,
|
|
171
|
+
u_thickness: thickness,
|
|
172
|
+
u_marginLeft: marginLeft,
|
|
173
|
+
u_marginRight: marginRight,
|
|
174
|
+
u_marginTop: marginTop,
|
|
175
|
+
u_marginBottom: marginBottom,
|
|
176
|
+
u_aspectRatio: PulsingBorderAspectRatios[aspectRatio],
|
|
177
|
+
u_softness: softness,
|
|
178
|
+
u_intensity: intensity,
|
|
179
|
+
u_bloom: bloom,
|
|
180
|
+
u_spots: spots,
|
|
181
|
+
u_spotSize: spotSize,
|
|
182
|
+
u_pulse: pulse,
|
|
183
|
+
u_smoke: smoke,
|
|
184
|
+
u_smokeSize: smokeSize,
|
|
185
|
+
u_noiseTexture: getShaderNoiseTexture(),
|
|
186
|
+
// Sizing uniforms
|
|
187
|
+
u_fit: ShaderFitOptions[fit],
|
|
188
|
+
u_rotation: rotation,
|
|
189
|
+
u_scale: scale,
|
|
190
|
+
u_offsetX: offsetX,
|
|
191
|
+
u_offsetY: offsetY,
|
|
192
|
+
u_originX: originX,
|
|
193
|
+
u_originY: originY,
|
|
194
|
+
u_worldWidth: worldWidth,
|
|
195
|
+
u_worldHeight: worldHeight
|
|
196
|
+
};
|
|
197
|
+
return /* @__PURE__ */ jsx(
|
|
198
|
+
ShaderMount,
|
|
199
|
+
{
|
|
200
|
+
...props,
|
|
201
|
+
speed,
|
|
202
|
+
frame,
|
|
203
|
+
fragmentShader: pulsingBorderFragmentShader,
|
|
204
|
+
uniforms
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
}, colorPropsAreEqual);
|
|
208
|
+
export {
|
|
209
|
+
PulsingBorder,
|
|
210
|
+
circlePreset,
|
|
211
|
+
defaultPreset,
|
|
212
|
+
northernLightsPreset,
|
|
213
|
+
pulsingBorderPresets,
|
|
214
|
+
solidLinePreset
|
|
215
|
+
};
|
|
216
|
+
//# sourceMappingURL=pulsing-border.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/shaders/pulsing-border.tsx"],
|
|
4
|
+
"sourcesContent": ["import { memo } from 'react';\nimport { ShaderMount, type ShaderComponentProps } from '../shader-mount.js';\nimport { colorPropsAreEqual } from '../color-props-are-equal.js';\nimport {\n defaultObjectSizing,\n getShaderColorFromString,\n getShaderNoiseTexture,\n pulsingBorderFragmentShader,\n ShaderFitOptions,\n type PulsingBorderParams,\n type PulsingBorderUniforms,\n type ShaderPreset,\n} from '@paper-design/shaders';\nimport { PulsingBorderAspectRatios } from '@paper-design/shaders';\n\nexport interface PulsingBorderProps extends ShaderComponentProps, PulsingBorderParams {}\n\ntype PulsingBorderPreset = ShaderPreset<PulsingBorderParams>;\n\nexport const defaultPreset: PulsingBorderPreset = {\n name: 'Default',\n params: {\n ...defaultObjectSizing,\n speed: 1,\n frame: 0,\n scale: 0.6,\n colorBack: '#000000',\n colors: ['#0dc1fd', '#d915ef', '#ff3f2ecc'],\n roundness: 0.25,\n thickness: 0.1,\n margin: 0,\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0,\n marginBottom: 0,\n aspectRatio: 'auto',\n softness: 0.75,\n intensity: 0.2,\n bloom: 0.25,\n spots: 5,\n spotSize: 0.5,\n pulse: 0.25,\n smoke: 0.3,\n smokeSize: 0.6,\n },\n};\n\nexport const circlePreset: PulsingBorderPreset = {\n name: 'Circle',\n params: {\n ...defaultObjectSizing,\n aspectRatio: 'square',\n scale: 0.6,\n speed: 1,\n frame: 0,\n colorBack: '#000000',\n colors: ['#0dc1fd', '#d915ef', '#ff3f2ecc'],\n roundness: 1,\n margin: 0,\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0,\n marginBottom: 0,\n thickness: 0,\n softness: 0.75,\n intensity: 0.2,\n bloom: 0.45,\n spots: 3,\n spotSize: 0.4,\n pulse: 0.5,\n smoke: 1,\n smokeSize: 0,\n },\n};\n\nexport const northernLightsPreset: PulsingBorderPreset = {\n name: 'Northern lights',\n params: {\n ...defaultObjectSizing,\n speed: 0.18,\n scale: 1.1,\n frame: 0,\n colors: ['#4c4794', '#774a7d', '#12694a', '#0aff78', '#4733cc'],\n colorBack: '#0c182c',\n roundness: 0,\n thickness: 1,\n softness: 1,\n margin: 0,\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0,\n marginBottom: 0,\n aspectRatio: 'auto',\n intensity: 0.1,\n bloom: 0.2,\n spots: 4,\n spotSize: 0.25,\n pulse: 0,\n smoke: 0.32,\n smokeSize: 0.5,\n },\n};\n\nexport const solidLinePreset: PulsingBorderPreset = {\n name: 'Solid line',\n params: {\n ...defaultObjectSizing,\n speed: 1,\n frame: 0,\n colors: ['#81ADEC'],\n colorBack: '#00000000',\n roundness: 0,\n thickness: 0.05,\n margin: 0,\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0,\n marginBottom: 0,\n aspectRatio: 'auto',\n softness: 0.0,\n intensity: 0.0,\n bloom: 0.15,\n spots: 4,\n spotSize: 1,\n pulse: 0,\n smoke: 0,\n smokeSize: 0,\n },\n};\n\nexport const pulsingBorderPresets: PulsingBorderPreset[] = [\n defaultPreset,\n circlePreset,\n northernLightsPreset,\n solidLinePreset,\n];\n\nexport const PulsingBorder: React.FC<PulsingBorderProps> = memo(function PulsingBorderImpl({\n // Own props\n speed = defaultPreset.params.speed,\n frame = defaultPreset.params.frame,\n colors = defaultPreset.params.colors,\n colorBack = defaultPreset.params.colorBack,\n roundness = defaultPreset.params.roundness,\n thickness = defaultPreset.params.thickness,\n aspectRatio = defaultPreset.params.aspectRatio,\n softness = defaultPreset.params.softness,\n bloom = defaultPreset.params.bloom,\n intensity = defaultPreset.params.intensity,\n spots = defaultPreset.params.spots,\n spotSize = defaultPreset.params.spotSize,\n pulse = defaultPreset.params.pulse,\n smoke = defaultPreset.params.smoke,\n smokeSize = defaultPreset.params.smokeSize,\n margin,\n marginLeft = margin ?? defaultPreset.params.marginLeft,\n marginRight = margin ?? defaultPreset.params.marginRight,\n marginTop = margin ?? defaultPreset.params.marginTop,\n marginBottom = margin ?? defaultPreset.params.marginBottom,\n\n // Sizing props\n fit = defaultPreset.params.fit,\n rotation = defaultPreset.params.rotation,\n scale = defaultPreset.params.scale,\n originX = defaultPreset.params.originX,\n originY = defaultPreset.params.originY,\n offsetX = defaultPreset.params.offsetX,\n offsetY = defaultPreset.params.offsetY,\n worldWidth = defaultPreset.params.worldWidth,\n worldHeight = defaultPreset.params.worldHeight,\n ...props\n}: PulsingBorderProps) {\n const uniforms = {\n // Own uniforms\n u_colorBack: getShaderColorFromString(colorBack),\n u_colors: colors.map(getShaderColorFromString),\n u_colorsCount: colors.length,\n u_roundness: roundness,\n u_thickness: thickness,\n u_marginLeft: marginLeft,\n u_marginRight: marginRight,\n u_marginTop: marginTop,\n u_marginBottom: marginBottom,\n u_aspectRatio: PulsingBorderAspectRatios[aspectRatio],\n u_softness: softness,\n u_intensity: intensity,\n u_bloom: bloom,\n u_spots: spots,\n u_spotSize: spotSize,\n u_pulse: pulse,\n u_smoke: smoke,\n u_smokeSize: smokeSize,\n u_noiseTexture: getShaderNoiseTexture(),\n\n // Sizing uniforms\n u_fit: ShaderFitOptions[fit],\n u_rotation: rotation,\n u_scale: scale,\n u_offsetX: offsetX,\n u_offsetY: offsetY,\n u_originX: originX,\n u_originY: originY,\n u_worldWidth: worldWidth,\n u_worldHeight: worldHeight,\n } satisfies PulsingBorderUniforms;\n\n return (\n <ShaderMount\n {...props}\n speed={speed}\n frame={frame}\n fragmentShader={pulsingBorderFragmentShader}\n uniforms={uniforms}\n />\n );\n}, colorPropsAreEqual);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ShaderComponentProps } from '../shader-mount.js';
|
|
2
|
+
import { type SimplexNoiseParams, type ShaderPreset } from '@paper-design/shaders';
|
|
3
|
+
export interface SimplexNoiseProps extends ShaderComponentProps, SimplexNoiseParams {
|
|
4
|
+
}
|
|
5
|
+
type SimplexNoisePreset = ShaderPreset<SimplexNoiseParams>;
|
|
6
|
+
export declare const defaultPreset: SimplexNoisePreset;
|
|
7
|
+
export declare const bubblegumPreset: SimplexNoisePreset;
|
|
8
|
+
export declare const spotsPreset: SimplexNoisePreset;
|
|
9
|
+
export declare const firstContactPreset: SimplexNoisePreset;
|
|
10
|
+
export declare const simplexNoisePresets: SimplexNoisePreset[];
|
|
11
|
+
export declare const SimplexNoise: React.FC<SimplexNoiseProps>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
2
|
+
* Paper Shaders *
|
|
3
|
+
* https://github.com/paper-design/shaders *
|
|
4
|
+
* * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
5
|
+
|
|
6
|
+
import { memo } from "react";
|
|
7
|
+
import { ShaderMount } from "../shader-mount.js";
|
|
8
|
+
import { colorPropsAreEqual } from "../color-props-are-equal.js";
|
|
9
|
+
import {
|
|
10
|
+
getShaderColorFromString,
|
|
11
|
+
simplexNoiseFragmentShader,
|
|
12
|
+
ShaderFitOptions,
|
|
13
|
+
defaultPatternSizing
|
|
14
|
+
} from "@paper-design/shaders";
|
|
15
|
+
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
const defaultPreset = {
|
|
17
|
+
name: "Default",
|
|
18
|
+
params: {
|
|
19
|
+
...defaultPatternSizing,
|
|
20
|
+
scale: 0.6,
|
|
21
|
+
speed: 0.5,
|
|
22
|
+
frame: 0,
|
|
23
|
+
colors: ["#4449CF", "#FFD1E0", "#F94446", "#FFD36B", "#FFFFFF"],
|
|
24
|
+
stepsPerColor: 2,
|
|
25
|
+
softness: 0
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const bubblegumPreset = {
|
|
29
|
+
name: "Bubblegum",
|
|
30
|
+
params: {
|
|
31
|
+
...defaultPatternSizing,
|
|
32
|
+
speed: 2,
|
|
33
|
+
frame: 0,
|
|
34
|
+
colors: ["#ffffff", "#ff9e9e", "#5f57ff", "#00f7ff"],
|
|
35
|
+
stepsPerColor: 1,
|
|
36
|
+
softness: 1,
|
|
37
|
+
scale: 1.6
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const spotsPreset = {
|
|
41
|
+
name: "Spots",
|
|
42
|
+
params: {
|
|
43
|
+
...defaultPatternSizing,
|
|
44
|
+
speed: 0.6,
|
|
45
|
+
frame: 0,
|
|
46
|
+
colors: ["#ff7b00", "#f9ffeb", "#320d82"],
|
|
47
|
+
stepsPerColor: 1,
|
|
48
|
+
softness: 0,
|
|
49
|
+
scale: 1
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const firstContactPreset = {
|
|
53
|
+
name: "First contact",
|
|
54
|
+
params: {
|
|
55
|
+
...defaultPatternSizing,
|
|
56
|
+
speed: 2,
|
|
57
|
+
frame: 0,
|
|
58
|
+
colors: ["#e8cce6", "#120d22", "#442c44", "#e6baba", "#fff5f5"],
|
|
59
|
+
stepsPerColor: 2,
|
|
60
|
+
softness: 0,
|
|
61
|
+
scale: 0.2
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const simplexNoisePresets = [
|
|
65
|
+
defaultPreset,
|
|
66
|
+
spotsPreset,
|
|
67
|
+
firstContactPreset,
|
|
68
|
+
bubblegumPreset
|
|
69
|
+
];
|
|
70
|
+
const SimplexNoise = memo(function SimplexNoiseImpl({
|
|
71
|
+
// Own props
|
|
72
|
+
speed = defaultPreset.params.speed,
|
|
73
|
+
frame = defaultPreset.params.frame,
|
|
74
|
+
colors = defaultPreset.params.colors,
|
|
75
|
+
stepsPerColor = defaultPreset.params.stepsPerColor,
|
|
76
|
+
softness = defaultPreset.params.softness,
|
|
77
|
+
// Sizing props
|
|
78
|
+
fit = defaultPreset.params.fit,
|
|
79
|
+
scale = defaultPreset.params.scale,
|
|
80
|
+
rotation = defaultPreset.params.rotation,
|
|
81
|
+
originX = defaultPreset.params.originX,
|
|
82
|
+
originY = defaultPreset.params.originY,
|
|
83
|
+
offsetX = defaultPreset.params.offsetX,
|
|
84
|
+
offsetY = defaultPreset.params.offsetY,
|
|
85
|
+
worldWidth = defaultPreset.params.worldWidth,
|
|
86
|
+
worldHeight = defaultPreset.params.worldHeight,
|
|
87
|
+
...props
|
|
88
|
+
}) {
|
|
89
|
+
const uniforms = {
|
|
90
|
+
// Own uniforms
|
|
91
|
+
u_colors: colors.map(getShaderColorFromString),
|
|
92
|
+
u_colorsCount: colors.length,
|
|
93
|
+
u_stepsPerColor: stepsPerColor,
|
|
94
|
+
u_softness: softness,
|
|
95
|
+
// Sizing uniforms
|
|
96
|
+
u_fit: ShaderFitOptions[fit],
|
|
97
|
+
u_scale: scale,
|
|
98
|
+
u_rotation: rotation,
|
|
99
|
+
u_offsetX: offsetX,
|
|
100
|
+
u_offsetY: offsetY,
|
|
101
|
+
u_originX: originX,
|
|
102
|
+
u_originY: originY,
|
|
103
|
+
u_worldWidth: worldWidth,
|
|
104
|
+
u_worldHeight: worldHeight
|
|
105
|
+
};
|
|
106
|
+
return /* @__PURE__ */ jsx(
|
|
107
|
+
ShaderMount,
|
|
108
|
+
{
|
|
109
|
+
...props,
|
|
110
|
+
speed,
|
|
111
|
+
frame,
|
|
112
|
+
fragmentShader: simplexNoiseFragmentShader,
|
|
113
|
+
uniforms
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
}, colorPropsAreEqual);
|
|
117
|
+
export {
|
|
118
|
+
SimplexNoise,
|
|
119
|
+
bubblegumPreset,
|
|
120
|
+
defaultPreset,
|
|
121
|
+
firstContactPreset,
|
|
122
|
+
simplexNoisePresets,
|
|
123
|
+
spotsPreset
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=simplex-noise.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/shaders/simplex-noise.tsx"],
|
|
4
|
+
"sourcesContent": ["import { memo } from 'react';\nimport { ShaderMount, type ShaderComponentProps } from '../shader-mount.js';\nimport { colorPropsAreEqual } from '../color-props-are-equal.js';\nimport {\n getShaderColorFromString,\n simplexNoiseFragmentShader,\n ShaderFitOptions,\n type SimplexNoiseUniforms,\n type SimplexNoiseParams,\n type ShaderPreset,\n defaultPatternSizing,\n} from '@paper-design/shaders';\n\nexport interface SimplexNoiseProps extends ShaderComponentProps, SimplexNoiseParams {}\n\ntype SimplexNoisePreset = ShaderPreset<SimplexNoiseParams>;\n\nexport const defaultPreset: SimplexNoisePreset = {\n name: 'Default',\n params: {\n ...defaultPatternSizing,\n scale: 0.6,\n speed: 0.5,\n frame: 0,\n colors: ['#4449CF', '#FFD1E0', '#F94446', '#FFD36B', '#FFFFFF'],\n stepsPerColor: 2,\n softness: 0,\n },\n};\n\nexport const bubblegumPreset: SimplexNoisePreset = {\n name: 'Bubblegum',\n params: {\n ...defaultPatternSizing,\n speed: 2,\n frame: 0,\n colors: ['#ffffff', '#ff9e9e', '#5f57ff', '#00f7ff'],\n stepsPerColor: 1,\n softness: 1.0,\n scale: 1.6,\n },\n};\n\nexport const spotsPreset: SimplexNoisePreset = {\n name: 'Spots',\n params: {\n ...defaultPatternSizing,\n speed: 0.6,\n frame: 0,\n colors: ['#ff7b00', '#f9ffeb', '#320d82'],\n stepsPerColor: 1,\n softness: 0.0,\n scale: 1.0,\n },\n};\n\nexport const firstContactPreset: SimplexNoisePreset = {\n name: 'First contact',\n params: {\n ...defaultPatternSizing,\n speed: 2,\n frame: 0,\n colors: ['#e8cce6', '#120d22', '#442c44', '#e6baba', '#fff5f5'],\n stepsPerColor: 2,\n softness: 0.0,\n scale: 0.2,\n },\n};\n\nexport const simplexNoisePresets: SimplexNoisePreset[] = [\n defaultPreset,\n spotsPreset,\n firstContactPreset,\n bubblegumPreset,\n];\n\nexport const SimplexNoise: React.FC<SimplexNoiseProps> = memo(function SimplexNoiseImpl({\n // Own props\n speed = defaultPreset.params.speed,\n frame = defaultPreset.params.frame,\n colors = defaultPreset.params.colors,\n stepsPerColor = defaultPreset.params.stepsPerColor,\n softness = defaultPreset.params.softness,\n\n // Sizing props\n fit = defaultPreset.params.fit,\n scale = defaultPreset.params.scale,\n rotation = defaultPreset.params.rotation,\n originX = defaultPreset.params.originX,\n originY = defaultPreset.params.originY,\n offsetX = defaultPreset.params.offsetX,\n offsetY = defaultPreset.params.offsetY,\n worldWidth = defaultPreset.params.worldWidth,\n worldHeight = defaultPreset.params.worldHeight,\n ...props\n}: SimplexNoiseProps) {\n const uniforms = {\n // Own uniforms\n u_colors: colors.map(getShaderColorFromString),\n u_colorsCount: colors.length,\n u_stepsPerColor: stepsPerColor,\n u_softness: softness,\n\n // Sizing uniforms\n u_fit: ShaderFitOptions[fit],\n u_scale: scale,\n u_rotation: rotation,\n u_offsetX: offsetX,\n u_offsetY: offsetY,\n u_originX: originX,\n u_originY: originY,\n u_worldWidth: worldWidth,\n u_worldHeight: worldHeight,\n } satisfies SimplexNoiseUniforms;\n\n return (\n <ShaderMount\n {...props}\n speed={speed}\n frame={frame}\n fragmentShader={simplexNoiseFragmentShader}\n uniforms={uniforms}\n />\n );\n}, colorPropsAreEqual);\n"],
|
|
5
|
+
"mappings": ";;;;;AAAA,SAAS,YAAY;AACrB,SAAS,mBAA8C;AACvD,SAAS,0BAA0B;AACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,OACK;AAyGH;AAnGG,MAAM,gBAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;AAAA,IAC9D,eAAe;AAAA,IACf,UAAU;AAAA,EACZ;AACF;AAEO,MAAM,kBAAsC;AAAA,EACjD,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAAC,WAAW,WAAW,WAAW,SAAS;AAAA,IACnD,eAAe;AAAA,IACf,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEO,MAAM,cAAkC;AAAA,EAC7C,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAAC,WAAW,WAAW,SAAS;AAAA,IACxC,eAAe;AAAA,IACf,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEO,MAAM,qBAAyC;AAAA,EACpD,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;AAAA,IAC9D,eAAe;AAAA,IACf,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;AAEO,MAAM,sBAA4C;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,eAA4C,KAAK,SAAS,iBAAiB;AAAA;AAAA,EAEtF,QAAQ,cAAc,OAAO;AAAA,EAC7B,QAAQ,cAAc,OAAO;AAAA,EAC7B,SAAS,cAAc,OAAO;AAAA,EAC9B,gBAAgB,cAAc,OAAO;AAAA,EACrC,WAAW,cAAc,OAAO;AAAA;AAAA,EAGhC,MAAM,cAAc,OAAO;AAAA,EAC3B,QAAQ,cAAc,OAAO;AAAA,EAC7B,WAAW,cAAc,OAAO;AAAA,EAChC,UAAU,cAAc,OAAO;AAAA,EAC/B,UAAU,cAAc,OAAO;AAAA,EAC/B,UAAU,cAAc,OAAO;AAAA,EAC/B,UAAU,cAAc,OAAO;AAAA,EAC/B,aAAa,cAAc,OAAO;AAAA,EAClC,cAAc,cAAc,OAAO;AAAA,EACnC,GAAG;AACL,GAAsB;AACpB,QAAM,WAAW;AAAA;AAAA,IAEf,UAAU,OAAO,IAAI,wBAAwB;AAAA,IAC7C,eAAe,OAAO;AAAA,IACtB,iBAAiB;AAAA,IACjB,YAAY;AAAA;AAAA,IAGZ,OAAO,iBAAiB,GAAG;AAAA,IAC3B,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,cAAc;AAAA,IACd,eAAe;AAAA,EACjB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB;AAAA;AAAA,EACF;AAEJ,GAAG,kBAAkB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ShaderComponentProps } from '../shader-mount.js';
|
|
2
|
+
import { type ShaderPreset, type SmokeRingParams } from '@paper-design/shaders';
|
|
3
|
+
export interface SmokeRingProps extends ShaderComponentProps, SmokeRingParams {
|
|
4
|
+
}
|
|
5
|
+
type SmokeRingPreset = ShaderPreset<SmokeRingParams>;
|
|
6
|
+
export declare const defaultPreset: SmokeRingPreset;
|
|
7
|
+
export declare const solarPreset: SmokeRingPreset;
|
|
8
|
+
export declare const linePreset: SmokeRingPreset;
|
|
9
|
+
export declare const cloudPreset: SmokeRingPreset;
|
|
10
|
+
export declare const smokeRingPresets: SmokeRingPreset[];
|
|
11
|
+
export declare const SmokeRing: React.FC<SmokeRingProps>;
|
|
12
|
+
export {};
|