@opsydyn/effect-three 0.2.0 → 0.4.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/CHANGELOG.md +21 -1
- package/README.md +14 -1
- package/dist/{index-01kwfekm.js → index-h3vf50fn.js} +2418 -85
- package/dist/index-h3vf50fn.js.map +53 -0
- package/dist/index-ttwy0znv.js +145 -0
- package/dist/index-ttwy0znv.js.map +12 -0
- package/dist/index.js +543 -149
- package/dist/index.js.map +8 -6
- package/dist/kernel/behaviours.d.ts.map +1 -1
- package/dist/kernel/boxSelect.d.ts +22 -0
- package/dist/kernel/boxSelect.d.ts.map +1 -0
- package/dist/kernel/build.d.ts +197 -6
- package/dist/kernel/build.d.ts.map +1 -1
- package/dist/kernel/cameraMotion.d.ts +3 -1
- package/dist/kernel/cameraMotion.d.ts.map +1 -1
- package/dist/kernel/cameraShake.d.ts +33 -0
- package/dist/kernel/cameraShake.d.ts.map +1 -0
- package/dist/kernel/describeScene.d.ts +50 -0
- package/dist/kernel/describeScene.d.ts.map +1 -0
- package/dist/kernel/description.d.ts +240 -2
- package/dist/kernel/description.d.ts.map +1 -1
- package/dist/kernel/diff.d.ts +18 -1
- package/dist/kernel/diff.d.ts.map +1 -1
- package/dist/kernel/equality.d.ts +13 -1
- package/dist/kernel/equality.d.ts.map +1 -1
- package/dist/kernel/gizmo.d.ts +69 -0
- package/dist/kernel/gizmo.d.ts.map +1 -0
- package/dist/kernel/history.d.ts +61 -0
- package/dist/kernel/history.d.ts.map +1 -0
- package/dist/kernel/index.d.ts +13 -2
- package/dist/kernel/index.d.ts.map +1 -1
- package/dist/kernel/index.js +116 -3
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/inspect.d.ts +85 -0
- package/dist/kernel/inspect.d.ts.map +1 -0
- package/dist/kernel/lineGeometry.d.ts +25 -0
- package/dist/kernel/lineGeometry.d.ts.map +1 -0
- package/dist/kernel/lockstep.d.ts +114 -0
- package/dist/kernel/lockstep.d.ts.map +1 -0
- package/dist/kernel/loop.d.ts.map +1 -1
- package/dist/kernel/materials.d.ts.map +1 -1
- package/dist/kernel/pivot.d.ts +54 -0
- package/dist/kernel/pivot.d.ts.map +1 -0
- package/dist/kernel/pointBuffers.d.ts +17 -0
- package/dist/kernel/pointBuffers.d.ts.map +1 -0
- package/dist/kernel/pointer.d.ts +12 -0
- package/dist/kernel/pointer.d.ts.map +1 -1
- package/dist/kernel/renderKit.d.ts +21 -1
- package/dist/kernel/renderKit.d.ts.map +1 -1
- package/dist/kernel/renderer.d.ts +6 -0
- package/dist/kernel/renderer.d.ts.map +1 -1
- package/dist/kernel/resources.d.ts.map +1 -1
- package/dist/kernel/sceneChanges.d.ts +87 -0
- package/dist/kernel/sceneChanges.d.ts.map +1 -0
- package/dist/kernel/sceneGraph.d.ts +6 -1
- package/dist/kernel/sceneGraph.d.ts.map +1 -1
- package/dist/kernel/seeded.d.ts +9 -0
- package/dist/kernel/seeded.d.ts.map +1 -0
- package/dist/kernel/shots.d.ts +26 -0
- package/dist/kernel/shots.d.ts.map +1 -0
- package/dist/kernel/tape.d.ts +38 -0
- package/dist/kernel/tape.d.ts.map +1 -0
- package/dist/kernel/trail.d.ts +31 -0
- package/dist/kernel/trail.d.ts.map +1 -0
- package/dist/kernel/viewportGizmo.d.ts +25 -0
- package/dist/kernel/viewportGizmo.d.ts.map +1 -0
- package/dist/runtime/Inspector.d.ts +20 -0
- package/dist/runtime/Inspector.d.ts.map +1 -0
- package/dist/runtime/SceneFile.d.ts +448 -0
- package/dist/runtime/SceneFile.d.ts.map +1 -0
- package/dist/runtime/SceneSchema.d.ts +614 -5
- package/dist/runtime/SceneSchema.d.ts.map +1 -1
- package/dist/runtime/errors.d.ts +9 -0
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +3 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/webgl/index.d.ts.map +1 -1
- package/dist/webgl/index.js +228 -3
- package/dist/webgl/index.js.map +6 -4
- package/dist/webgl/line.d.ts +4 -0
- package/dist/webgl/line.d.ts.map +1 -0
- package/dist/webgl/points.d.ts +4 -0
- package/dist/webgl/points.d.ts.map +1 -0
- package/dist/webgpu/index.d.ts.map +1 -1
- package/dist/webgpu/index.js +206 -26
- package/dist/webgpu/index.js.map +6 -4
- package/dist/webgpu/line.d.ts +4 -0
- package/dist/webgpu/line.d.ts.map +1 -0
- package/dist/webgpu/points.d.ts +4 -0
- package/dist/webgpu/points.d.ts.map +1 -0
- package/package.json +2 -1
- package/src/kernel/behaviours.ts +5 -0
- package/src/kernel/bodySources.ts +1 -1
- package/src/kernel/boxSelect.ts +73 -0
- package/src/kernel/build.ts +430 -0
- package/src/kernel/cameraMotion.ts +3 -0
- package/src/kernel/cameraShake.ts +87 -0
- package/src/kernel/describeScene.ts +224 -0
- package/src/kernel/description.ts +266 -1
- package/src/kernel/diff.ts +46 -1
- package/src/kernel/equality.ts +148 -0
- package/src/kernel/gizmo.ts +478 -0
- package/src/kernel/history.ts +118 -0
- package/src/kernel/index.ts +102 -0
- package/src/kernel/inspect.ts +214 -0
- package/src/kernel/lineGeometry.ts +75 -0
- package/src/kernel/lockstep.ts +237 -0
- package/src/kernel/loop.ts +5 -0
- package/src/kernel/materials.ts +3 -0
- package/src/kernel/pivot.ts +418 -0
- package/src/kernel/pointBuffers.ts +115 -0
- package/src/kernel/pointer.ts +63 -12
- package/src/kernel/renderKit.ts +23 -1
- package/src/kernel/renderer.ts +6 -0
- package/src/kernel/resources.ts +69 -0
- package/src/kernel/sceneChanges.ts +265 -0
- package/src/kernel/sceneGraph.ts +461 -9
- package/src/kernel/seeded.ts +18 -0
- package/src/kernel/shots.ts +167 -0
- package/src/kernel/tape.ts +124 -0
- package/src/kernel/trail.ts +170 -0
- package/src/kernel/viewportGizmo.ts +194 -0
- package/src/runtime/Inspector.ts +43 -0
- package/src/runtime/SceneFile.ts +46 -0
- package/src/runtime/SceneSchema.ts +305 -4
- package/src/runtime/errors.ts +6 -0
- package/src/runtime/index.ts +3 -1
- package/src/webgl/index.ts +4 -0
- package/src/webgl/line.ts +66 -0
- package/src/webgl/points.ts +205 -0
- package/src/webgpu/index.ts +4 -0
- package/src/webgpu/line.ts +67 -0
- package/src/webgpu/points.ts +193 -0
- package/dist/index-01kwfekm.js.map +0 -40
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// src/kernel/seeded.ts
|
|
2
|
+
var seededRandom = (seed) => {
|
|
3
|
+
let state = seed >>> 0;
|
|
4
|
+
return () => {
|
|
5
|
+
state = state + 1831565813 >>> 0;
|
|
6
|
+
let t = state;
|
|
7
|
+
t = Math.imul(t ^ t >>> 15, t | 1);
|
|
8
|
+
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
|
|
9
|
+
return ((t ^ t >>> 14) >>> 0) / 4294967296;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// src/kernel/lineGeometry.ts
|
|
14
|
+
import { Color, EdgesGeometry } from "three";
|
|
15
|
+
var drawable = (line) => line.points.length >= 2;
|
|
16
|
+
var fillLineGeometry = (geometry, line) => {
|
|
17
|
+
const points = drawable(line) ? line.points : [[0, 0, 0], [0, 0, 0]];
|
|
18
|
+
const used = line.segments ? points.slice(0, points.length - points.length % 2) : points;
|
|
19
|
+
geometry.setPositions(used.flat());
|
|
20
|
+
const colors = line.vertexColors;
|
|
21
|
+
if (colors !== null) {
|
|
22
|
+
const per = used.map((_, index) => colors[Math.min(index, colors.length - 1)] ?? line.color);
|
|
23
|
+
geometry.setColors(per.flatMap((color) => new Color(color).toArray()));
|
|
24
|
+
}
|
|
25
|
+
return geometry;
|
|
26
|
+
};
|
|
27
|
+
var edgePoints = (geometry, threshold) => {
|
|
28
|
+
const found = new EdgesGeometry(geometry, threshold);
|
|
29
|
+
const position = found.getAttribute("position");
|
|
30
|
+
const points = Array.from({ length: position.count }, (_, index) => [position.getX(index), position.getY(index), position.getZ(index)]);
|
|
31
|
+
found.dispose();
|
|
32
|
+
return points;
|
|
33
|
+
};
|
|
34
|
+
var edgeLine = (key, look, points) => ({
|
|
35
|
+
_tag: "Line",
|
|
36
|
+
key: `${key}:edges`,
|
|
37
|
+
position: [0, 0, 0],
|
|
38
|
+
rotation: { _tag: "Fixed", euler: [0, 0, 0] },
|
|
39
|
+
scale: [1, 1, 1],
|
|
40
|
+
transition: { _tag: "Instant" },
|
|
41
|
+
behaviour: null,
|
|
42
|
+
interactive: false,
|
|
43
|
+
points,
|
|
44
|
+
segments: true,
|
|
45
|
+
color: look.color,
|
|
46
|
+
vertexColors: null,
|
|
47
|
+
width: look.width,
|
|
48
|
+
worldUnits: look.worldUnits,
|
|
49
|
+
dashed: look.dashed,
|
|
50
|
+
dashSize: look.dashSize,
|
|
51
|
+
gapSize: look.gapSize,
|
|
52
|
+
dashScale: 1,
|
|
53
|
+
dashOffset: 0,
|
|
54
|
+
opacity: look.opacity,
|
|
55
|
+
transparent: look.transparent
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// src/kernel/pointBuffers.ts
|
|
59
|
+
import { Color as Color2, Spherical, Vector3 } from "three";
|
|
60
|
+
var linear = new Color2;
|
|
61
|
+
var dots = (look) => {
|
|
62
|
+
const count = look.positions.length;
|
|
63
|
+
const colors = new Float32Array(count * 3);
|
|
64
|
+
for (let point = 0;point < count; point++) {
|
|
65
|
+
linear.setHex(look.colors?.[point] ?? look.color).toArray(colors, point * 3);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
count,
|
|
69
|
+
positions: Float32Array.from(look.positions.flat()),
|
|
70
|
+
colors,
|
|
71
|
+
sizes: Float32Array.from({ length: count }, (_, point) => look.sizes?.[point] ?? 1),
|
|
72
|
+
speeds: new Float32Array(0),
|
|
73
|
+
opacities: new Float32Array(0),
|
|
74
|
+
noise: new Float32Array(0)
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
var sparkles = (look) => {
|
|
78
|
+
const random = seededRandom(look.seed);
|
|
79
|
+
const spread = (range) => range * (0.5 - random());
|
|
80
|
+
const { count } = look;
|
|
81
|
+
const positions = new Float32Array(count * 3);
|
|
82
|
+
for (let point = 0;point < count; point++) {
|
|
83
|
+
positions[point * 3] = spread(look.scale[0]);
|
|
84
|
+
positions[point * 3 + 1] = spread(look.scale[1]);
|
|
85
|
+
positions[point * 3 + 2] = spread(look.scale[2]);
|
|
86
|
+
}
|
|
87
|
+
const colors = new Float32Array(count * 3);
|
|
88
|
+
linear.setHex(look.color);
|
|
89
|
+
for (let point = 0;point < count; point++)
|
|
90
|
+
linear.toArray(colors, point * 3);
|
|
91
|
+
const noise = new Float32Array(count * 3);
|
|
92
|
+
for (let point = 0;point < count; point++)
|
|
93
|
+
noise.set(look.noise, point * 3);
|
|
94
|
+
return {
|
|
95
|
+
count,
|
|
96
|
+
positions,
|
|
97
|
+
colors,
|
|
98
|
+
sizes: Float32Array.from({ length: count }, () => look.size ?? random()),
|
|
99
|
+
speeds: new Float32Array(count).fill(look.speed),
|
|
100
|
+
opacities: new Float32Array(count).fill(look.opacity),
|
|
101
|
+
noise
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
var stars = (look) => {
|
|
105
|
+
const random = seededRandom(look.seed);
|
|
106
|
+
const { count } = look;
|
|
107
|
+
const positions = new Float32Array(count * 3);
|
|
108
|
+
const colors = new Float32Array(count * 3);
|
|
109
|
+
const sizes = Float32Array.from({ length: count }, () => (0.5 + 0.5 * random()) * look.factor);
|
|
110
|
+
const place = new Vector3;
|
|
111
|
+
const spherical = new Spherical;
|
|
112
|
+
const increment = look.depth / count;
|
|
113
|
+
let radius = look.radius + look.depth;
|
|
114
|
+
for (let star = 0;star < count; star++) {
|
|
115
|
+
radius -= increment * random();
|
|
116
|
+
place.setFromSpherical(spherical.set(radius, Math.acos(1 - random() * 2), random() * 2 * Math.PI));
|
|
117
|
+
place.toArray(positions, star * 3);
|
|
118
|
+
linear.setHSL(star / count, look.saturation, 0.9).toArray(colors, star * 3);
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
count,
|
|
122
|
+
positions,
|
|
123
|
+
colors,
|
|
124
|
+
sizes,
|
|
125
|
+
speeds: new Float32Array(0),
|
|
126
|
+
opacities: new Float32Array(0),
|
|
127
|
+
noise: new Float32Array(0)
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
var pointBuffers = (look) => {
|
|
131
|
+
switch (look._tag) {
|
|
132
|
+
case "Dots":
|
|
133
|
+
return dots(look);
|
|
134
|
+
case "Sparkles":
|
|
135
|
+
return sparkles(look);
|
|
136
|
+
case "Stars":
|
|
137
|
+
return stars(look);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
var animatedLook = (look) => look._tag !== "Dots";
|
|
141
|
+
|
|
142
|
+
export { seededRandom, drawable, fillLineGeometry, edgePoints, edgeLine, pointBuffers, animatedLook };
|
|
143
|
+
|
|
144
|
+
//# debugId=76D13B28B891165764756E2164756E21
|
|
145
|
+
//# sourceMappingURL=index-ttwy0znv.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/kernel/seeded.ts", "../src/kernel/lineGeometry.ts", "../src/kernel/pointBuffers.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * A small seeded random generator (mulberry32): the same numbers for the same seed on\n * every page load, so randomly scattered scene parts are reproducible.\n *\n * @module\n */\n\n/** A generator of numbers in [0, 1) from `seed`, as `Math.random` would give them. */\nexport const seededRandom = (seed: number): (() => number) => {\n let state = seed >>> 0;\n return () => {\n state = (state + 0x6d2b79f5) >>> 0;\n let t = state;\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n};\n",
|
|
6
|
+
"/**\n * A line's geometry, as Drei's `Line` builds it: three's `LineGeometry` through the points\n * (or `LineSegmentsGeometry`, a segment for each pair), with a colour per point when it\n * has them. Shared by the render kits, whose materials differ; the geometry does not.\n *\n * @module\n */\nimport { type BufferGeometry, Color, EdgesGeometry } from 'three';\nimport type { LineSegmentsGeometry } from 'three/addons/lines/LineSegmentsGeometry.js';\n\nimport type { Edges, LineNode, Vec3 } from './description.ts';\n\n/** Whether there is anything to draw: two points for a line, a pair for segments. */\nexport const drawable = (line: LineNode): boolean => line.points.length >= 2;\n\n/**\n * Fills a line's geometry: a `LineGeometry` through the points, or a\n * `LineSegmentsGeometry` for segments. Too few points give one empty segment (hidden).\n */\nexport const fillLineGeometry = <G extends LineSegmentsGeometry>(\n geometry: G,\n line: LineNode,\n): G => {\n const points = drawable(line) ? line.points : [[0, 0, 0] as const, [0, 0, 0] as const];\n // Segments come in pairs: an odd last point has nothing to join.\n const used = line.segments ? points.slice(0, points.length - (points.length % 2)) : points;\n geometry.setPositions(used.flat());\n const colors = line.vertexColors;\n if (colors !== null) {\n // A colour for every point: the last given carries on, as a line can't skip one.\n const per = used.map((_, index) => colors[Math.min(index, colors.length - 1)] ?? line.color);\n geometry.setColors(per.flatMap((color) => new Color(color).toArray()));\n }\n return geometry;\n};\n\n/**\n * The line segments along a geometry's edges where faces meet at more than `threshold`\n * degrees, as Drei's `Edges` takes them from three's `EdgesGeometry`.\n */\nexport const edgePoints = (geometry: BufferGeometry, threshold: number): ReadonlyArray<Vec3> => {\n const found = new EdgesGeometry(geometry, threshold);\n const position = found.getAttribute('position');\n const points = Array.from(\n { length: position.count },\n (_, index): Vec3 => [position.getX(index), position.getY(index), position.getZ(index)],\n );\n found.dispose();\n return points;\n};\n\n/** The line a mesh's edges are drawn as: segments in the mesh's own space. */\nexport const edgeLine = (key: string, look: Edges, points: ReadonlyArray<Vec3>): LineNode => ({\n _tag: 'Line',\n key: `${key}:edges`,\n position: [0, 0, 0],\n rotation: { _tag: 'Fixed', euler: [0, 0, 0] },\n scale: [1, 1, 1],\n transition: { _tag: 'Instant' },\n behaviour: null,\n interactive: false,\n points,\n segments: true,\n color: look.color,\n vertexColors: null,\n width: look.width,\n worldUnits: look.worldUnits,\n dashed: look.dashed,\n dashSize: look.dashSize,\n gapSize: look.gapSize,\n dashScale: 1,\n dashOffset: 0,\n opacity: look.opacity,\n transparent: look.transparent,\n});\n",
|
|
7
|
+
"/**\n * The buffers a render kit draws points from, made from their look: given points as\n * they are, Drei's sparkles and stars scattered as Drei scatters them (`Sparkles.tsx`,\n * `Stars.tsx` at `bf6f4ad`) but from a seed, so the same look gives the same buffers.\n *\n * @module\n */\nimport { Color, Spherical, Vector3 } from 'three';\n\nimport type { PointLook } from './description.ts';\nimport { seededRandom } from './seeded.ts';\n\n/** Per-point attributes: three numbers a point for positions, colours and noise. */\nexport type PointBuffers = {\n readonly count: number;\n readonly positions: Float32Array;\n readonly colors: Float32Array;\n readonly sizes: Float32Array;\n /** Sparkles only: each mote's drift speed, opacity and noise. */\n readonly speeds: Float32Array;\n readonly opacities: Float32Array;\n readonly noise: Float32Array;\n};\n\nconst linear = new Color();\n\nconst dots = (look: Extract<PointLook, { readonly _tag: 'Dots' }>): PointBuffers => {\n const count = look.positions.length;\n const colors = new Float32Array(count * 3);\n for (let point = 0; point < count; point++) {\n linear.setHex(look.colors?.[point] ?? look.color).toArray(colors, point * 3);\n }\n return {\n count,\n positions: Float32Array.from(look.positions.flat()),\n colors,\n sizes: Float32Array.from({ length: count }, (_, point) => look.sizes?.[point] ?? 1),\n speeds: new Float32Array(0),\n opacities: new Float32Array(0),\n noise: new Float32Array(0),\n };\n};\n\n/** Drei's `Sparkles`: positions spread through the box, random sizes unless given. */\nconst sparkles = (look: Extract<PointLook, { readonly _tag: 'Sparkles' }>): PointBuffers => {\n const random = seededRandom(look.seed);\n // three's `MathUtils.randFloatSpread`, as Drei spreads them, from the seed.\n const spread = (range: number) => range * (0.5 - random());\n const { count } = look;\n const positions = new Float32Array(count * 3);\n for (let point = 0; point < count; point++) {\n positions[point * 3] = spread(look.scale[0]);\n positions[point * 3 + 1] = spread(look.scale[1]);\n positions[point * 3 + 2] = spread(look.scale[2]);\n }\n const colors = new Float32Array(count * 3);\n linear.setHex(look.color);\n for (let point = 0; point < count; point++) linear.toArray(colors, point * 3);\n const noise = new Float32Array(count * 3);\n for (let point = 0; point < count; point++) noise.set(look.noise, point * 3);\n return {\n count,\n positions,\n colors,\n sizes: Float32Array.from({ length: count }, () => look.size ?? random()),\n speeds: new Float32Array(count).fill(look.speed),\n opacities: new Float32Array(count).fill(look.opacity),\n noise,\n };\n};\n\n/** Drei's `Stars`: a shell of stars, nearer ones later, hues round the colour wheel. */\nconst stars = (look: Extract<PointLook, { readonly _tag: 'Stars' }>): PointBuffers => {\n const random = seededRandom(look.seed);\n const { count } = look;\n const positions = new Float32Array(count * 3);\n const colors = new Float32Array(count * 3);\n const sizes = Float32Array.from({ length: count }, () => (0.5 + 0.5 * random()) * look.factor);\n const place = new Vector3();\n const spherical = new Spherical();\n const increment = look.depth / count;\n let radius = look.radius + look.depth;\n for (let star = 0; star < count; star++) {\n radius -= increment * random();\n place.setFromSpherical(\n spherical.set(radius, Math.acos(1 - random() * 2), random() * 2 * Math.PI),\n );\n place.toArray(positions, star * 3);\n linear.setHSL(star / count, look.saturation, 0.9).toArray(colors, star * 3);\n }\n return {\n count,\n positions,\n colors,\n sizes,\n speeds: new Float32Array(0),\n opacities: new Float32Array(0),\n noise: new Float32Array(0),\n };\n};\n\n/** The buffers for a look. */\nexport const pointBuffers = (look: PointLook): PointBuffers => {\n switch (look._tag) {\n case 'Dots':\n return dots(look);\n case 'Sparkles':\n return sparkles(look);\n case 'Stars':\n return stars(look);\n }\n};\n\n/** Whether a look moves on its own: sparkles drift and stars twinkle in scene time. */\nexport const animatedLook = (look: PointLook): boolean => look._tag !== 'Dots';\n"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "76D13B28B891165764756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|