@opsydyn/effect-three 0.3.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 +15 -0
- package/README.md +12 -0
- package/dist/{index-8cf8t6by.js → index-h3vf50fn.js} +2113 -83
- 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 +488 -147
- package/dist/index.js.map +8 -6
- package/dist/kernel/boxSelect.d.ts +22 -0
- package/dist/kernel/boxSelect.d.ts.map +1 -0
- package/dist/kernel/build.d.ts +142 -6
- package/dist/kernel/build.d.ts.map +1 -1
- package/dist/kernel/cameraShake.d.ts.map +1 -1
- package/dist/kernel/describeScene.d.ts +50 -0
- package/dist/kernel/describeScene.d.ts.map +1 -0
- package/dist/kernel/description.d.ts +155 -1
- package/dist/kernel/description.d.ts.map +1 -1
- package/dist/kernel/diff.d.ts +15 -0
- package/dist/kernel/diff.d.ts.map +1 -1
- package/dist/kernel/equality.d.ts +9 -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 +106 -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/sceneChanges.d.ts +87 -0
- package/dist/kernel/sceneChanges.d.ts.map +1 -0
- package/dist/kernel/sceneGraph.d.ts +6 -0
- 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 +318 -0
- 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/boxSelect.ts +73 -0
- package/src/kernel/build.ts +332 -0
- package/src/kernel/cameraShake.ts +3 -13
- package/src/kernel/describeScene.ts +224 -0
- package/src/kernel/description.ts +175 -0
- package/src/kernel/diff.ts +39 -0
- package/src/kernel/equality.ts +101 -0
- package/src/kernel/gizmo.ts +478 -0
- package/src/kernel/history.ts +118 -0
- package/src/kernel/index.ts +97 -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 +55 -12
- package/src/kernel/renderKit.ts +23 -1
- package/src/kernel/renderer.ts +6 -0
- package/src/kernel/sceneChanges.ts +265 -0
- package/src/kernel/sceneGraph.ts +319 -8
- 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 +247 -0
- 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-8cf8t6by.js.map +0 -41
package/dist/webgl/index.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createContactShadowPasses
|
|
3
3
|
} from "../index-4045wme0.js";
|
|
4
|
+
import {
|
|
5
|
+
drawable,
|
|
6
|
+
fillLineGeometry,
|
|
7
|
+
pointBuffers
|
|
8
|
+
} from "../index-ttwy0znv.js";
|
|
4
9
|
|
|
5
10
|
// src/webgl/contactShadows.ts
|
|
6
11
|
import { MeshDepthMaterial, ShaderMaterial } from "three";
|
|
@@ -39,6 +44,224 @@ var blur = (direction) => {
|
|
|
39
44
|
var webglShadowMaterials = { depth, blur, flippedTargets: false };
|
|
40
45
|
var createContactShadows = (graph, renderer) => createContactShadowPasses(graph, renderer, webglShadowMaterials);
|
|
41
46
|
|
|
47
|
+
// src/webgl/line.ts
|
|
48
|
+
import { Group } from "three";
|
|
49
|
+
import { Line2 } from "three/addons/lines/Line2.js";
|
|
50
|
+
import { LineGeometry } from "three/addons/lines/LineGeometry.js";
|
|
51
|
+
import { LineMaterial } from "three/addons/lines/LineMaterial.js";
|
|
52
|
+
import { LineSegments2 } from "three/addons/lines/LineSegments2.js";
|
|
53
|
+
import { LineSegmentsGeometry } from "three/addons/lines/LineSegmentsGeometry.js";
|
|
54
|
+
var style = (material, line) => {
|
|
55
|
+
material.color.setHex(line.vertexColors === null ? line.color : 16777215);
|
|
56
|
+
if (material.vertexColors !== (line.vertexColors !== null)) {
|
|
57
|
+
material.vertexColors = line.vertexColors !== null;
|
|
58
|
+
material.needsUpdate = true;
|
|
59
|
+
}
|
|
60
|
+
material.linewidth = line.width;
|
|
61
|
+
material.worldUnits = line.worldUnits;
|
|
62
|
+
material.dashed = line.dashed;
|
|
63
|
+
material.dashSize = line.dashSize;
|
|
64
|
+
material.gapSize = line.gapSize;
|
|
65
|
+
material.dashScale = line.dashScale;
|
|
66
|
+
material.dashOffset = line.dashOffset;
|
|
67
|
+
material.opacity = line.opacity;
|
|
68
|
+
material.transparent = line.transparent;
|
|
69
|
+
};
|
|
70
|
+
var draw = (line, material) => {
|
|
71
|
+
const drawn = line.segments ? new LineSegments2(fillLineGeometry(new LineSegmentsGeometry, line), material) : new Line2(fillLineGeometry(new LineGeometry, line), material);
|
|
72
|
+
drawn.computeLineDistances();
|
|
73
|
+
drawn.visible = drawable(line);
|
|
74
|
+
return drawn;
|
|
75
|
+
};
|
|
76
|
+
var hostLine = (first) => {
|
|
77
|
+
const object = new Group;
|
|
78
|
+
const material = new LineMaterial;
|
|
79
|
+
style(material, first);
|
|
80
|
+
let drawn = draw(first, material);
|
|
81
|
+
object.add(drawn);
|
|
82
|
+
return {
|
|
83
|
+
object,
|
|
84
|
+
update: (next) => {
|
|
85
|
+
style(material, next);
|
|
86
|
+
drawn.removeFromParent();
|
|
87
|
+
drawn.geometry.dispose();
|
|
88
|
+
drawn = draw(next, material);
|
|
89
|
+
object.add(drawn);
|
|
90
|
+
},
|
|
91
|
+
dispose: () => {
|
|
92
|
+
drawn.geometry.dispose();
|
|
93
|
+
material.dispose();
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/webgl/points.ts
|
|
99
|
+
import {
|
|
100
|
+
AdditiveBlending,
|
|
101
|
+
BufferAttribute,
|
|
102
|
+
BufferGeometry,
|
|
103
|
+
Group as Group2,
|
|
104
|
+
Points,
|
|
105
|
+
PointsMaterial,
|
|
106
|
+
ShaderMaterial as ShaderMaterial2
|
|
107
|
+
} from "three";
|
|
108
|
+
var roundMask = `
|
|
109
|
+
vec2 cxy = 2.0 * gl_PointCoord - 1.0;
|
|
110
|
+
float r = dot(cxy, cxy);
|
|
111
|
+
float delta = fwidth(r);
|
|
112
|
+
float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);
|
|
113
|
+
gl_FragColor.a *= mask;
|
|
114
|
+
if (gl_FragColor.a < 0.01) discard;
|
|
115
|
+
`;
|
|
116
|
+
var dotsMaterial = (look) => {
|
|
117
|
+
const material = new PointsMaterial({
|
|
118
|
+
color: 16777215,
|
|
119
|
+
vertexColors: true,
|
|
120
|
+
size: look.size,
|
|
121
|
+
sizeAttenuation: look.sizeAttenuation,
|
|
122
|
+
opacity: look.opacity,
|
|
123
|
+
transparent: look.transparent
|
|
124
|
+
});
|
|
125
|
+
material.onBeforeCompile = (shader) => {
|
|
126
|
+
shader.vertexShader = shader.vertexShader.replace("uniform float size;", `uniform float size;
|
|
127
|
+
attribute float pointSize;`).replace("gl_PointSize = size;", "gl_PointSize = size * pointSize;");
|
|
128
|
+
if (look.round) {
|
|
129
|
+
shader.fragmentShader = shader.fragmentShader.replace("#include <opaque_fragment>", `#include <opaque_fragment>
|
|
130
|
+
${roundMask}`);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
material.customProgramCacheKey = () => `effect-three:dots:${look.round}`;
|
|
134
|
+
return material;
|
|
135
|
+
};
|
|
136
|
+
var sparklesMaterial = () => new ShaderMaterial2({
|
|
137
|
+
uniforms: { time: { value: 0 }, pixelRatio: { value: 1 } },
|
|
138
|
+
vertexShader: `
|
|
139
|
+
uniform float pixelRatio;
|
|
140
|
+
uniform float time;
|
|
141
|
+
attribute float size;
|
|
142
|
+
attribute float speed;
|
|
143
|
+
attribute float opacity;
|
|
144
|
+
attribute vec3 noise;
|
|
145
|
+
attribute vec3 color;
|
|
146
|
+
varying vec3 vColor;
|
|
147
|
+
varying float vOpacity;
|
|
148
|
+
void main() {
|
|
149
|
+
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
|
|
150
|
+
modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
|
|
151
|
+
modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
|
|
152
|
+
modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
|
|
153
|
+
vec4 viewPosition = viewMatrix * modelPosition;
|
|
154
|
+
vec4 projectionPostion = projectionMatrix * viewPosition;
|
|
155
|
+
gl_Position = projectionPostion;
|
|
156
|
+
gl_PointSize = size * 25. * pixelRatio;
|
|
157
|
+
gl_PointSize *= (1.0 / - viewPosition.z);
|
|
158
|
+
vColor = color;
|
|
159
|
+
vOpacity = opacity;
|
|
160
|
+
}`,
|
|
161
|
+
fragmentShader: `
|
|
162
|
+
varying vec3 vColor;
|
|
163
|
+
varying float vOpacity;
|
|
164
|
+
void main() {
|
|
165
|
+
float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
|
|
166
|
+
float strength = 0.05 / distanceToCenter - 0.1;
|
|
167
|
+
gl_FragColor = vec4(vColor, strength * vOpacity);
|
|
168
|
+
#include <tonemapping_fragment>
|
|
169
|
+
#include <colorspace_fragment>
|
|
170
|
+
}`,
|
|
171
|
+
transparent: true,
|
|
172
|
+
depthWrite: false
|
|
173
|
+
});
|
|
174
|
+
var starsMaterial = (fade) => new ShaderMaterial2({
|
|
175
|
+
uniforms: { time: { value: 0 }, fade: { value: fade ? 1 : 0 } },
|
|
176
|
+
vertexShader: `
|
|
177
|
+
uniform float time;
|
|
178
|
+
attribute float size;
|
|
179
|
+
varying vec3 vColor;
|
|
180
|
+
void main() {
|
|
181
|
+
vColor = color;
|
|
182
|
+
vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);
|
|
183
|
+
gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(time + 100.0));
|
|
184
|
+
gl_Position = projectionMatrix * mvPosition;
|
|
185
|
+
}`,
|
|
186
|
+
fragmentShader: `
|
|
187
|
+
uniform float fade;
|
|
188
|
+
varying vec3 vColor;
|
|
189
|
+
void main() {
|
|
190
|
+
float opacity = 1.0;
|
|
191
|
+
if (fade == 1.0) {
|
|
192
|
+
float d = distance(gl_PointCoord, vec2(0.5, 0.5));
|
|
193
|
+
opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));
|
|
194
|
+
}
|
|
195
|
+
gl_FragColor = vec4(vColor, opacity);
|
|
196
|
+
#include <tonemapping_fragment>
|
|
197
|
+
#include <colorspace_fragment>
|
|
198
|
+
}`,
|
|
199
|
+
blending: AdditiveBlending,
|
|
200
|
+
depthWrite: false,
|
|
201
|
+
transparent: true,
|
|
202
|
+
vertexColors: true
|
|
203
|
+
});
|
|
204
|
+
var pointsGeometry = (buffers, look) => {
|
|
205
|
+
const geometry = new BufferGeometry;
|
|
206
|
+
geometry.setAttribute("position", new BufferAttribute(buffers.positions, 3));
|
|
207
|
+
geometry.setAttribute("color", new BufferAttribute(buffers.colors, 3));
|
|
208
|
+
geometry.setAttribute(look._tag === "Dots" ? "pointSize" : "size", new BufferAttribute(buffers.sizes, 1));
|
|
209
|
+
if (look._tag === "Sparkles") {
|
|
210
|
+
geometry.setAttribute("speed", new BufferAttribute(buffers.speeds, 1));
|
|
211
|
+
geometry.setAttribute("opacity", new BufferAttribute(buffers.opacities, 1));
|
|
212
|
+
geometry.setAttribute("noise", new BufferAttribute(buffers.noise, 3));
|
|
213
|
+
}
|
|
214
|
+
return geometry;
|
|
215
|
+
};
|
|
216
|
+
var materialFor = (look) => {
|
|
217
|
+
switch (look._tag) {
|
|
218
|
+
case "Dots":
|
|
219
|
+
return dotsMaterial(look);
|
|
220
|
+
case "Sparkles":
|
|
221
|
+
return sparklesMaterial();
|
|
222
|
+
case "Stars":
|
|
223
|
+
return starsMaterial(look.fade);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
var draw2 = (look) => {
|
|
227
|
+
const buffers = pointBuffers(look);
|
|
228
|
+
const drawn = new Points(pointsGeometry(buffers, look), materialFor(look));
|
|
229
|
+
drawn.visible = buffers.count > 0;
|
|
230
|
+
drawn.onBeforeRender = (renderer) => {
|
|
231
|
+
const material = drawn.material;
|
|
232
|
+
if (material instanceof ShaderMaterial2 && material.uniforms["pixelRatio"] !== undefined) {
|
|
233
|
+
material.uniforms["pixelRatio"].value = renderer.getPixelRatio();
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
return drawn;
|
|
237
|
+
};
|
|
238
|
+
var hostPoints = (first) => {
|
|
239
|
+
const object = new Group2;
|
|
240
|
+
let look = first.look;
|
|
241
|
+
let drawn = draw2(look);
|
|
242
|
+
object.add(drawn);
|
|
243
|
+
const free = () => {
|
|
244
|
+
drawn.geometry.dispose();
|
|
245
|
+
drawn.material.dispose();
|
|
246
|
+
};
|
|
247
|
+
return {
|
|
248
|
+
object,
|
|
249
|
+
update: (next) => {
|
|
250
|
+
look = next.look;
|
|
251
|
+
drawn.removeFromParent();
|
|
252
|
+
free();
|
|
253
|
+
drawn = draw2(look);
|
|
254
|
+
object.add(drawn);
|
|
255
|
+
},
|
|
256
|
+
tick: (seconds) => {
|
|
257
|
+
const time = drawn.material instanceof ShaderMaterial2 ? drawn.material.uniforms["time"] : undefined;
|
|
258
|
+
if (time !== undefined)
|
|
259
|
+
time.value = look._tag === "Stars" ? seconds * look.speed : seconds;
|
|
260
|
+
},
|
|
261
|
+
dispose: free
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
|
|
42
265
|
// src/webgl/shaderGrid.ts
|
|
43
266
|
import {
|
|
44
267
|
BackSide,
|
|
@@ -48,7 +271,7 @@ import {
|
|
|
48
271
|
Mesh,
|
|
49
272
|
Plane,
|
|
50
273
|
PlaneGeometry,
|
|
51
|
-
ShaderMaterial as
|
|
274
|
+
ShaderMaterial as ShaderMaterial3,
|
|
52
275
|
Vector3
|
|
53
276
|
} from "three";
|
|
54
277
|
var sides = { front: FrontSide, back: BackSide, double: DoubleSide };
|
|
@@ -139,7 +362,7 @@ var writePlacement = (mesh, node) => {
|
|
|
139
362
|
mesh.rotation.fromArray([...node.rotation]);
|
|
140
363
|
};
|
|
141
364
|
var createShaderGrid = (node) => {
|
|
142
|
-
const material = new
|
|
365
|
+
const material = new ShaderMaterial3({
|
|
143
366
|
uniforms: {
|
|
144
367
|
cellSize: { value: 0 },
|
|
145
368
|
cellThickness: { value: 0 },
|
|
@@ -229,11 +452,13 @@ var webglKit = {
|
|
|
229
452
|
shading: "webgl",
|
|
230
453
|
sky: hostSky,
|
|
231
454
|
shaderGrid: hostShaderGrid,
|
|
455
|
+
line: hostLine,
|
|
456
|
+
points: hostPoints,
|
|
232
457
|
contactShadows: createContactShadows
|
|
233
458
|
};
|
|
234
459
|
export {
|
|
235
460
|
webglKit
|
|
236
461
|
};
|
|
237
462
|
|
|
238
|
-
//# debugId=
|
|
463
|
+
//# debugId=5FDAEE47870EAA0964756E2164756E21
|
|
239
464
|
//# sourceMappingURL=index.js.map
|
package/dist/webgl/index.js.map
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/webgl/contactShadows.ts", "../src/webgl/shaderGrid.ts", "../src/webgl/sky.ts", "../src/webgl/index.ts"],
|
|
3
|
+
"sources": ["../src/webgl/contactShadows.ts", "../src/webgl/line.ts", "../src/webgl/points.ts", "../src/webgl/shaderGrid.ts", "../src/webgl/sky.ts", "../src/webgl/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * The WebGL kit's contact shadow materials: three's depth material with its output\n * replaced by the shadow (as Drei's `ContactShadows`, `bf6f4ad`), and three's horizontal\n * and vertical blur shaders. The passes themselves are the kernel's.\n *\n * @module\n */\nimport { type Color, MeshDepthMaterial, ShaderMaterial } from 'three';\nimport { HorizontalBlurShader } from 'three/addons/shaders/HorizontalBlurShader.js';\nimport { VerticalBlurShader } from 'three/addons/shaders/VerticalBlurShader.js';\n\nimport {\n type BlurPass,\n createContactShadowPasses,\n type ShadowMaterials,\n} from '../kernel/contactShadowPasses.ts';\nimport type { SceneRenderer } from '../kernel/renderer.ts';\nimport type { ContactShadowPasses, ShadowedScene } from '../kernel/renderKit.ts';\n\n/**\n * The shadow pass's edit to three's depth shader: its basic-packing output, and the\n * shadow written instead (darkest where an object touches the plane).\n */\nconst shadowShader = {\n depthOutput: 'gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n shadowOutput: 'gl_FragColor = vec4( shadowColor * fragCoordZ * 2.0, 1.0 - fragCoordZ );',\n} as const;\n\nconst depth = (color: Color): MeshDepthMaterial => {\n const material = new MeshDepthMaterial();\n material.depthTest = false;\n material.depthWrite = false;\n material.onBeforeCompile = (shader) => {\n shader.uniforms['shadowColor'] = { value: color };\n shader.fragmentShader = `uniform vec3 shadowColor;\\n${shader.fragmentShader.replace(\n shadowShader.depthOutput,\n shadowShader.shadowOutput,\n )}`;\n };\n return material;\n};\n\n/** three's blur shaders: `h` (horizontal) or `v` (vertical) is the step, `tDiffuse` the source. */\nconst blurShaders = {\n horizontal: { shader: HorizontalBlurShader, step: 'h' },\n vertical: { shader: VerticalBlurShader, step: 'v' },\n} as const;\n\nconst blur = (direction: 'horizontal' | 'vertical'): BlurPass => {\n const { shader, step } = blurShaders[direction];\n const material = new ShaderMaterial({ ...shader, depthTest: false });\n return {\n material,\n set: (source, amount) => {\n Reflect.set(material.uniforms['tDiffuse'] ?? {}, 'value', source);\n Reflect.set(material.uniforms[step] ?? {}, 'value', amount);\n },\n };\n};\n\nconst webglShadowMaterials: ShadowMaterials = { depth, blur, flippedTargets: false };\n\n/** Creates the contact shadow passes for one scene graph and renderer, in GLSL. */\nexport const createContactShadows = (\n graph: ShadowedScene,\n renderer: SceneRenderer,\n): ContactShadowPasses => createContactShadowPasses(graph, renderer, webglShadowMaterials);\n",
|
|
6
|
+
"/**\n * The WebGL kit's lines: three's fat lines (`Line2`, `LineSegments2` and `LineMaterial`,\n * which Drei's `Line` takes from three-stdlib), which size themselves to the viewport\n * before each draw.\n *\n * @module\n */\nimport { Group } from 'three';\nimport { Line2 } from 'three/addons/lines/Line2.js';\nimport { LineGeometry } from 'three/addons/lines/LineGeometry.js';\nimport { LineMaterial } from 'three/addons/lines/LineMaterial.js';\nimport { LineSegments2 } from 'three/addons/lines/LineSegments2.js';\nimport { LineSegmentsGeometry } from 'three/addons/lines/LineSegmentsGeometry.js';\n\nimport type { LineNode } from '../kernel/description.ts';\nimport { drawable, fillLineGeometry } from '../kernel/lineGeometry.ts';\nimport type { HostedLine } from '../kernel/renderKit.ts';\n\n/** The material's look from the description; vertex colours want white, as Drei sets. */\nconst style = (material: LineMaterial, line: LineNode): void => {\n material.color.setHex(line.vertexColors === null ? line.color : 0xffffff);\n if (material.vertexColors !== (line.vertexColors !== null)) {\n material.vertexColors = line.vertexColors !== null;\n material.needsUpdate = true;\n }\n material.linewidth = line.width;\n material.worldUnits = line.worldUnits;\n material.dashed = line.dashed;\n material.dashSize = line.dashSize;\n material.gapSize = line.gapSize;\n material.dashScale = line.dashScale;\n material.dashOffset = line.dashOffset;\n material.opacity = line.opacity;\n material.transparent = line.transparent;\n};\n\nconst draw = (line: LineNode, material: LineMaterial): LineSegments2 => {\n const drawn = line.segments\n ? new LineSegments2(fillLineGeometry(new LineSegmentsGeometry(), line), material)\n : new Line2(fillLineGeometry(new LineGeometry(), line), material);\n drawn.computeLineDistances();\n drawn.visible = drawable(line);\n return drawn;\n};\n\nexport const hostLine = (first: LineNode): HostedLine => {\n const object = new Group();\n const material = new LineMaterial();\n style(material, first);\n let drawn = draw(first, material);\n object.add(drawn);\n return {\n object,\n update: (next) => {\n style(material, next);\n drawn.removeFromParent();\n drawn.geometry.dispose();\n drawn = draw(next, material);\n object.add(drawn);\n },\n dispose: () => {\n drawn.geometry.dispose();\n material.dispose();\n },\n };\n};\n",
|
|
7
|
+
"/**\n * The WebGL kit's points: three's `Points` with the materials Drei draws them with\n * (`bf6f4ad`): its `PointMaterial` (three's `PointsMaterial` with a round mask), and the\n * shaders of its `Sparkles` and `Stars`, ported as they are. The buffers come from the\n * kernel (`pointBuffers`), the same for every renderer.\n *\n * One change from Drei's `PointMaterial`: it applies tone mapping and the output colour\n * space a second time after its mask, which brightens the dots; here the mask only sets\n * the alpha, and fully masked corners are discarded so opaque dots are round too.\n *\n * @module\n */\nimport {\n AdditiveBlending,\n BufferAttribute,\n BufferGeometry,\n Group,\n type Material,\n Points,\n PointsMaterial,\n ShaderMaterial,\n} from 'three';\n\nimport type { PointLook, PointsNode } from '../kernel/description.ts';\nimport { type PointBuffers, pointBuffers } from '../kernel/pointBuffers.ts';\nimport type { HostedPoints } from '../kernel/renderKit.ts';\n\n/** Drei's `PointMaterial` mask: 1 inside the circle, smoothed over a pixel at its edge. */\nconst roundMask = /* glsl */ `\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n float delta = fwidth(r);\n float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n gl_FragColor.a *= mask;\n if (gl_FragColor.a < 0.01) discard;\n`;\n\n/** Dots: `PointsMaterial` with a size factor a point and, round, Drei's mask. */\nconst dotsMaterial = (look: Extract<PointLook, { readonly _tag: 'Dots' }>): Material => {\n const material = new PointsMaterial({\n color: 0xffffff,\n vertexColors: true,\n size: look.size,\n sizeAttenuation: look.sizeAttenuation,\n opacity: look.opacity,\n transparent: look.transparent,\n });\n material.onBeforeCompile = (shader) => {\n shader.vertexShader = shader.vertexShader\n .replace('uniform float size;', 'uniform float size;\\nattribute float pointSize;')\n .replace('gl_PointSize = size;', 'gl_PointSize = size * pointSize;');\n if (look.round) {\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <opaque_fragment>',\n `#include <opaque_fragment>\\n${roundMask}`,\n );\n }\n };\n material.customProgramCacheKey = () => `effect-three:dots:${look.round}`;\n return material;\n};\n\n/** Drei's `SparklesImplMaterial`, its shaders as Drei writes them. */\nconst sparklesMaterial = (): ShaderMaterial =>\n new ShaderMaterial({\n uniforms: { time: { value: 0 }, pixelRatio: { value: 1 } },\n vertexShader: /* glsl */ `\n uniform float pixelRatio;\n uniform float time;\n attribute float size;\n attribute float speed;\n attribute float opacity;\n attribute vec3 noise;\n attribute vec3 color;\n varying vec3 vColor;\n varying float vOpacity;\n void main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;\n modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;\n modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;\n vec4 viewPosition = viewMatrix * modelPosition;\n vec4 projectionPostion = projectionMatrix * viewPosition;\n gl_Position = projectionPostion;\n gl_PointSize = size * 25. * pixelRatio;\n gl_PointSize *= (1.0 / - viewPosition.z);\n vColor = color;\n vOpacity = opacity;\n }`,\n fragmentShader: /* glsl */ `\n varying vec3 vColor;\n varying float vOpacity;\n void main() {\n float distanceToCenter = distance(gl_PointCoord, vec2(0.5));\n float strength = 0.05 / distanceToCenter - 0.1;\n gl_FragColor = vec4(vColor, strength * vOpacity);\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n }`,\n transparent: true,\n depthWrite: false,\n });\n\n/** Drei's `StarfieldMaterial`, its shaders as Drei writes them. */\nconst starsMaterial = (fade: boolean): ShaderMaterial =>\n new ShaderMaterial({\n uniforms: { time: { value: 0 }, fade: { value: fade ? 1 : 0 } },\n vertexShader: /* glsl */ `\n uniform float time;\n attribute float size;\n varying vec3 vColor;\n void main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(time + 100.0));\n gl_Position = projectionMatrix * mvPosition;\n }`,\n fragmentShader: /* glsl */ `\n uniform float fade;\n varying vec3 vColor;\n void main() {\n float opacity = 1.0;\n if (fade == 1.0) {\n float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n }\n gl_FragColor = vec4(vColor, opacity);\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n }`,\n blending: AdditiveBlending,\n depthWrite: false,\n transparent: true,\n vertexColors: true,\n });\n\n/** The geometry from the kernel's buffers, with the attribute names each shader reads. */\nconst pointsGeometry = (buffers: PointBuffers, look: PointLook): BufferGeometry => {\n const geometry = new BufferGeometry();\n geometry.setAttribute('position', new BufferAttribute(buffers.positions, 3));\n geometry.setAttribute('color', new BufferAttribute(buffers.colors, 3));\n geometry.setAttribute(\n look._tag === 'Dots' ? 'pointSize' : 'size',\n new BufferAttribute(buffers.sizes, 1),\n );\n if (look._tag === 'Sparkles') {\n geometry.setAttribute('speed', new BufferAttribute(buffers.speeds, 1));\n geometry.setAttribute('opacity', new BufferAttribute(buffers.opacities, 1));\n geometry.setAttribute('noise', new BufferAttribute(buffers.noise, 3));\n }\n return geometry;\n};\n\nconst materialFor = (look: PointLook): Material => {\n switch (look._tag) {\n case 'Dots':\n return dotsMaterial(look);\n case 'Sparkles':\n return sparklesMaterial();\n case 'Stars':\n return starsMaterial(look.fade);\n }\n};\n\nconst draw = (look: PointLook): Points<BufferGeometry, Material> => {\n const buffers = pointBuffers(look);\n const drawn = new Points(pointsGeometry(buffers, look), materialFor(look));\n drawn.visible = buffers.count > 0;\n // Sparkles size by the device's pixel ratio, as Drei's take the viewport's `dpr`.\n drawn.onBeforeRender = (renderer) => {\n const material = drawn.material;\n if (material instanceof ShaderMaterial && material.uniforms['pixelRatio'] !== undefined) {\n material.uniforms['pixelRatio'].value = renderer.getPixelRatio();\n }\n };\n return drawn;\n};\n\nexport const hostPoints = (first: PointsNode): HostedPoints => {\n const object = new Group();\n let look = first.look;\n let drawn = draw(look);\n object.add(drawn);\n const free = (): void => {\n drawn.geometry.dispose();\n drawn.material.dispose();\n };\n return {\n object,\n update: (next) => {\n look = next.look;\n drawn.removeFromParent();\n free();\n drawn = draw(look);\n object.add(drawn);\n },\n tick: (seconds) => {\n const time =\n drawn.material instanceof ShaderMaterial ? drawn.material.uniforms['time'] : undefined;\n // Drei's stars twinkle at `speed`; its sparkles carry their speed a mote.\n if (time !== undefined) time.value = look._tag === 'Stars' ? seconds * look.speed : seconds;\n },\n dispose: free,\n };\n};\n",
|
|
6
8
|
"/**\n * Drei's `Grid` (`src/core/Grid.tsx` at `bf6f4ad`, MIT; itself after Fyrestar's\n * `THREE.InfiniteGridHelper` and threlte's `Grid`): a plane whose shader draws thin cell\n * lines and thicker section lines from screen-space derivatives, fading with distance\n * from the camera's foot on the plane. An infinite grid stretches the plane by the fade\n * distance; one that follows the camera slides under it.\n *\n * Each frame the material needs the camera drawing it projected onto the grid's plane.\n * Drei sets that in `useFrame`; here `onBeforeRender` does it, so every view (and each\n * eye in XR) gets its own camera.\n *\n * @module\n */\nimport {\n BackSide,\n Color,\n DoubleSide,\n FrontSide,\n Mesh,\n Plane,\n PlaneGeometry,\n ShaderMaterial,\n type Side,\n Vector3,\n} from 'three';\n\nimport type { MaterialSide, ShaderGridNode } from '../kernel/description.ts';\nimport type { HostedShaderGrid } from '../kernel/renderKit.ts';\n\n/** The mesh a shader grid is hosted as. */\nexport type HostShaderGrid = Mesh<PlaneGeometry, ShaderMaterial>;\n\nconst sides = { front: FrontSide, back: BackSide, double: DoubleSide } satisfies Record<\n MaterialSide,\n Side\n>;\n\nconst vertexShader = /* glsl */ `\n uniform vec3 cameraOnPlane;\n uniform vec3 planeOrigin;\n uniform float fadeDistance;\n uniform bool infiniteGrid;\n uniform bool followCamera;\n\n varying vec3 gridPosition;\n varying vec4 worldPosition;\n\n void main() {\n // The plane geometry lies in XY; the grid lies in XZ.\n gridPosition = position.xzy;\n if (infiniteGrid) gridPosition *= 1.0 + fadeDistance;\n worldPosition = modelMatrix * vec4(gridPosition, 1.0);\n if (followCamera) {\n worldPosition.xyz += cameraOnPlane - planeOrigin;\n gridPosition = (inverse(modelMatrix) * worldPosition).xyz;\n }\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n }\n`;\n\nconst fragmentShader = /* glsl */ `\n uniform vec3 cameraOnPlane;\n uniform float cellSize;\n uniform float cellThickness;\n uniform vec3 cellColor;\n uniform float sectionSize;\n uniform float sectionThickness;\n uniform vec3 sectionColor;\n uniform float fadeDistance;\n uniform float fadeStrength;\n uniform float fadeFrom;\n\n varying vec3 gridPosition;\n varying vec4 worldPosition;\n\n // 1 on a line of a grid with this spacing, 0 between, antialiased over a pixel.\n float lines(float spacing, float thickness) {\n vec2 at = gridPosition.xz / spacing;\n vec2 away = abs(fract(at - 0.5) - 0.5) / fwidth(at);\n return 1.0 - min(min(away.x, away.y) + 1.0 - thickness, 1.0);\n }\n\n void main() {\n float cell = lines(cellSize, cellThickness);\n float section = lines(sectionSize, sectionThickness);\n float distanceAway = distance(cameraOnPlane * fadeFrom, worldPosition.xyz);\n float fade = pow(1.0 - min(distanceAway / fadeDistance, 1.0), fadeStrength);\n vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * section));\n float alpha = (cell + section) * fade;\n alpha = mix(0.75 * alpha, alpha, section);\n if (alpha <= 0.0) discard;\n gl_FragColor = vec4(color, alpha);\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n }\n`;\n\nconst up = new Vector3(0, 1, 0);\nconst origin = new Vector3();\nconst plane = new Plane();\nconst cameraPosition = new Vector3();\n\n/** Writes a node's settings into its material's uniforms. */\nconst writeUniforms = (material: ShaderMaterial, node: ShaderGridNode): void => {\n const { uniforms } = material;\n const set = (name: string, value: unknown): void => {\n const uniform = uniforms[name];\n if (uniform !== undefined) uniform.value = value;\n };\n set('cellSize', node.cellSize);\n set('cellThickness', node.cellThickness);\n set('sectionSize', node.sectionSize);\n set('sectionThickness', node.sectionThickness);\n set('fadeDistance', node.fadeDistance);\n set('fadeStrength', node.fadeStrength);\n set('fadeFrom', node.fadeFrom);\n set('infiniteGrid', node.infinite);\n set('followCamera', node.followCamera);\n uniforms['cellColor']?.value.setHex(node.cellColor);\n uniforms['sectionColor']?.value.setHex(node.sectionColor);\n material.side = sides[node.side];\n};\n\n/** Places the grid and its plane from its description. */\nconst writePlacement = (mesh: HostShaderGrid, node: ShaderGridNode): void => {\n mesh.position.fromArray(node.position);\n mesh.rotation.fromArray([...node.rotation]);\n};\n\n/** Creates the grid mesh for a node. */\nexport const createShaderGrid = (node: ShaderGridNode): HostShaderGrid => {\n const material = new ShaderMaterial({\n uniforms: {\n cellSize: { value: 0 },\n cellThickness: { value: 0 },\n cellColor: { value: new Color() },\n sectionSize: { value: 0 },\n sectionThickness: { value: 0 },\n sectionColor: { value: new Color() },\n fadeDistance: { value: 0 },\n fadeStrength: { value: 0 },\n fadeFrom: { value: 0 },\n infiniteGrid: { value: false },\n followCamera: { value: false },\n cameraOnPlane: { value: new Vector3() },\n planeOrigin: { value: new Vector3() },\n },\n vertexShader,\n fragmentShader,\n transparent: true,\n });\n writeUniforms(material, node);\n const mesh: HostShaderGrid = new Mesh(new PlaneGeometry(...node.size), material);\n // The shader moves vertices (infinite, following): the plane's own bounds mean nothing.\n mesh.frustumCulled = false;\n writePlacement(mesh, node);\n mesh.onBeforeRender = (_renderer, _scene, camera) => {\n plane.setFromNormalAndCoplanarPoint(up, origin).applyMatrix4(mesh.matrixWorld);\n plane.projectPoint(\n cameraPosition.setFromMatrixPosition(camera.matrixWorld),\n material.uniforms['cameraOnPlane']?.value,\n );\n material.uniforms['planeOrigin']?.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n };\n return mesh;\n};\n\n/** Applies a new description to a grid mesh. */\nexport const updateShaderGrid = (\n mesh: HostShaderGrid,\n previous: ShaderGridNode,\n next: ShaderGridNode,\n): void => {\n if (previous.size[0] !== next.size[0] || previous.size[1] !== next.size[1]) {\n mesh.geometry.dispose();\n mesh.geometry = new PlaneGeometry(...next.size);\n }\n writeUniforms(mesh.material, next);\n writePlacement(mesh, next);\n};\n\n/** Frees the grid's geometry and material, which are its own. */\nexport const disposeShaderGrid = (mesh: HostShaderGrid): void => {\n mesh.geometry.dispose();\n mesh.material.dispose();\n};\n\n/** The WebGL kit's shader grid: the mesh, updated in place and freed with it. */\nexport const hostShaderGrid = (node: ShaderGridNode): HostedShaderGrid => {\n const mesh = createShaderGrid(node);\n return {\n object: mesh,\n update: (previous, next) => updateShaderGrid(mesh, previous, next),\n dispose: () => disposeShaderGrid(mesh),\n };\n};\n",
|
|
7
9
|
"/**\n * The WebGL kit's sky: three.js's `Sky` (Preetham, `addons/objects/Sky.js` at 0.186.1),\n * as Drei's `Sky` draws it (`bf6f4ad`, `src/core/Sky.tsx`): a box scaled to `distance`\n * whose shader paints the daylight sky for a sun position. Never picked.\n *\n * @module\n */\nimport { Vector3 } from 'three';\nimport { Sky as SkyMesh } from 'three/addons/objects/Sky.js';\n\nimport type { Sky } from '../kernel/description.ts';\nimport type { HostedSky } from '../kernel/renderKit.ts';\n\n/** Writes a sky's description into the mesh's uniforms and scale. */\nconst writeSky = (mesh: SkyMesh, description: Sky): void => {\n const { uniforms } = mesh.material;\n const set = (name: string, value: unknown): void => {\n const uniform = uniforms[name];\n if (uniform !== undefined) uniform.value = value;\n };\n set('turbidity', description.turbidity);\n set('rayleigh', description.rayleigh);\n set('mieCoefficient', description.mieCoefficient);\n set('mieDirectionalG', description.mieDirectionalG);\n set('cloudCoverage', description.clouds);\n set('sunPosition', new Vector3().fromArray(description.sunPosition));\n mesh.scale.setScalar(description.distance);\n};\n\n/** Creates the sky mesh; the scene graph adds it and writes its description. */\nexport const hostSky = (): HostedSky => {\n const mesh = new SkyMesh();\n mesh.raycast = () => undefined;\n return {\n object: mesh,\n update: (description) => writeSky(mesh, description),\n dispose: () => {\n mesh.geometry.dispose();\n mesh.material.dispose();\n },\n };\n};\n",
|
|
8
|
-
"/**\n * The WebGL render kit: the scene parts written in GLSL (the sky, the shader grid,\n * contact shadows), for renderers drawing with three.js's `WebGLRenderer`. The Foldkit\n * adapter's `webglRendererFactory` carries it; pass it to `createSceneGraph({ kit })`\n * when using the kernel directly.\n *\n * @module\n */\nimport type { RenderKit } from '../kernel/renderKit.ts';\nimport { createContactShadows } from './contactShadows.ts';\nimport { hostShaderGrid } from './shaderGrid.ts';\nimport { hostSky } from './sky.ts';\n\nexport const webglKit: RenderKit = {\n shading: 'webgl',\n sky: hostSky,\n shaderGrid: hostShaderGrid,\n contactShadows: createContactShadows,\n};\n"
|
|
10
|
+
"/**\n * The WebGL render kit: the scene parts written in GLSL (the sky, the shader grid,\n * contact shadows), for renderers drawing with three.js's `WebGLRenderer`. The Foldkit\n * adapter's `webglRendererFactory` carries it; pass it to `createSceneGraph({ kit })`\n * when using the kernel directly.\n *\n * @module\n */\nimport type { RenderKit } from '../kernel/renderKit.ts';\nimport { createContactShadows } from './contactShadows.ts';\nimport { hostLine } from './line.ts';\nimport { hostPoints } from './points.ts';\nimport { hostShaderGrid } from './shaderGrid.ts';\nimport { hostSky } from './sky.ts';\n\nexport const webglKit: RenderKit = {\n shading: 'webgl',\n sky: hostSky,\n shaderGrid: hostShaderGrid,\n line: hostLine,\n points: hostPoints,\n contactShadows: createContactShadows,\n};\n"
|
|
9
11
|
],
|
|
10
|
-
"mappings": "
|
|
11
|
-
"debugId": "
|
|
12
|
+
"mappings": "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",
|
|
13
|
+
"debugId": "5FDAEE47870EAA0964756E2164756E21",
|
|
12
14
|
"names": []
|
|
13
15
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line.d.ts","sourceRoot":"","sources":["../../src/webgl/line.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA6BzD,eAAO,MAAM,QAAQ,UAAW,QAAQ,KAAG,UAoB1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"points.d.ts","sourceRoot":"","sources":["../../src/webgl/points.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAyJ3D,eAAO,MAAM,UAAU,UAAW,UAAU,KAAG,YA0B9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webgpu/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webgpu/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAOxD,eAAO,MAAM,SAAS,EAAE,SAQvB,CAAC"}
|