@aura3d/addons 0.0.0-stage → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +11 -2
  2. package/dist/effects/AsciiOutput.d.ts +60 -0
  3. package/dist/effects/AsciiOutput.d.ts.map +1 -0
  4. package/dist/effects/AsciiOutput.js +187 -0
  5. package/dist/effects/AsciiOutput.js.map +1 -0
  6. package/dist/effects/OutlineOutput.d.ts +58 -0
  7. package/dist/effects/OutlineOutput.d.ts.map +1 -0
  8. package/dist/effects/OutlineOutput.js +274 -0
  9. package/dist/effects/OutlineOutput.js.map +1 -0
  10. package/dist/effects/StereoOutputs.d.ts +106 -0
  11. package/dist/effects/StereoOutputs.d.ts.map +1 -0
  12. package/dist/effects/StereoOutputs.js +315 -0
  13. package/dist/effects/StereoOutputs.js.map +1 -0
  14. package/dist/generators/EnvironmentGenerators.d.ts +100 -0
  15. package/dist/generators/EnvironmentGenerators.d.ts.map +1 -0
  16. package/dist/generators/EnvironmentGenerators.js +477 -0
  17. package/dist/generators/EnvironmentGenerators.js.map +1 -0
  18. package/dist/index.d.ts +14 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +14 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/objects/MarchingCubes.d.ts +80 -0
  23. package/dist/objects/MarchingCubes.d.ts.map +1 -0
  24. package/dist/objects/MarchingCubes.js +289 -0
  25. package/dist/objects/MarchingCubes.js.map +1 -0
  26. package/dist/objects/SpecializedObjects.d.ts +150 -0
  27. package/dist/objects/SpecializedObjects.d.ts.map +1 -0
  28. package/dist/objects/SpecializedObjects.js +544 -0
  29. package/dist/objects/SpecializedObjects.js.map +1 -0
  30. package/dist/renderers/SpatialDOMRenderer.d.ts +76 -0
  31. package/dist/renderers/SpatialDOMRenderer.d.ts.map +1 -0
  32. package/dist/renderers/SpatialDOMRenderer.js +279 -0
  33. package/dist/renderers/SpatialDOMRenderer.js.map +1 -0
  34. package/dist/renderers/VectorRenderer.d.ts +98 -0
  35. package/dist/renderers/VectorRenderer.d.ts.map +1 -0
  36. package/dist/renderers/VectorRenderer.js +253 -0
  37. package/dist/renderers/VectorRenderer.js.map +1 -0
  38. package/dist/tools/Fracture.d.ts +87 -0
  39. package/dist/tools/Fracture.d.ts.map +1 -0
  40. package/dist/tools/Fracture.js +422 -0
  41. package/dist/tools/Fracture.js.map +1 -0
  42. package/dist/tools/Sculptor.d.ts +84 -0
  43. package/dist/tools/Sculptor.d.ts.map +1 -0
  44. package/dist/tools/Sculptor.js +207 -0
  45. package/dist/tools/Sculptor.js.map +1 -0
  46. package/dist/tools/TubePainter.d.ts +47 -0
  47. package/dist/tools/TubePainter.d.ts.map +1 -0
  48. package/dist/tools/TubePainter.js +170 -0
  49. package/dist/tools/TubePainter.js.map +1 -0
  50. package/dist/utils/WorkerPool.d.ts +93 -0
  51. package/dist/utils/WorkerPool.d.ts.map +1 -0
  52. package/dist/utils/WorkerPool.js +360 -0
  53. package/dist/utils/WorkerPool.js.map +1 -0
  54. package/package.json +114 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutlineOutput.js","sourceRoot":"","sources":["../../src/effects/OutlineOutput.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { Scene } from "@aura3d/scene";
2
+ import { type CameraLike, type RenderItem, type RenderSource, type Renderer } from "@aura3d/rendering";
3
+ /** Pixel rectangles have a top-left origin, matching the returned image and 2D canvas. */
4
+ export interface StereoOutputView {
5
+ readonly eye: "left" | "right";
6
+ readonly viewport: {
7
+ readonly x: number;
8
+ readonly y: number;
9
+ readonly width: number;
10
+ readonly height: number;
11
+ };
12
+ readonly camera: CameraLike;
13
+ readonly cameraPosition: readonly [number, number, number];
14
+ }
15
+ export type StereoOutputMode = "side-by-side" | "over-under" | "anaglyph" | "parallax-barrier";
16
+ export interface StereoOutputOptions {
17
+ readonly width: number;
18
+ readonly height: number;
19
+ readonly mode?: StereoOutputMode;
20
+ readonly eyeSeparation?: number;
21
+ readonly convergenceDistance?: number;
22
+ readonly barrierAxis?: "x" | "y";
23
+ /** The period of a left and right strip, in output pixels. */
24
+ readonly stripPitchPx?: number;
25
+ readonly dutyCycle?: number;
26
+ /** Optional 2D output surface; the caller owns it. */
27
+ readonly canvas?: HTMLCanvasElement | OffscreenCanvas;
28
+ }
29
+ export interface StereoOutputFrame {
30
+ readonly width: number;
31
+ readonly height: number;
32
+ /** RGBA8 renderer readback, top row first; alpha association follows the source render. */
33
+ readonly pixels: Uint8ClampedArray;
34
+ readonly views: readonly [StereoOutputView, StereoOutputView];
35
+ }
36
+ export interface StereoPointer {
37
+ readonly eye: "left" | "right";
38
+ /** Coordinates relative to the eye viewport, in output pixels. */
39
+ readonly x: number;
40
+ readonly y: number;
41
+ /** Normalized device coordinates, with positive Y pointing upwards. */
42
+ readonly ndc: readonly [number, number];
43
+ }
44
+ export type StereoSource = RenderSource | Iterable<RenderItem> | Scene;
45
+ /** A column-major perspective frame; arrays, readonly tuples, and typed arrays are accepted. */
46
+ export interface StereoFrameCamera {
47
+ readonly cameraPosition: readonly [number, number, number];
48
+ readonly near: number;
49
+ readonly viewMatrix: ArrayLike<number>;
50
+ readonly projectionMatrix: ArrayLike<number>;
51
+ }
52
+ /**
53
+ * Opt-in CPU-composited stereo output. Each eye is rendered by the supplied
54
+ * Aura renderer into a private RGBA8/depth target. Red/cyan selects red from
55
+ * the left eye and green/blue from the right; the barrier starts with the
56
+ * left eye at x=0 (or y=0). A top-left row order is returned in every mode.
57
+ * Bytes are copied without alpha conversion; an optional 2D canvas interprets
58
+ * them as straight alpha, so use an opaque clear when compositing into it.
59
+ *
60
+ * Await each render before using the renderer elsewhere. The output owns only
61
+ * its targets, not the renderer, source or supplied canvas. Temporal post
62
+ * effects such as TAA, motion blur, afterimage and auto-exposure are rejected
63
+ * because one renderer history cannot represent two eyes. Custom passes must
64
+ * likewise avoid shared temporal state.
65
+ */
66
+ export declare class StereoOutput {
67
+ private readonly renderer;
68
+ private width;
69
+ private height;
70
+ private readonly mode;
71
+ private readonly eyeSeparation;
72
+ private readonly convergenceDistance;
73
+ private readonly axis;
74
+ private readonly pitch;
75
+ private readonly duty;
76
+ private readonly canvas?;
77
+ private targets;
78
+ private busy;
79
+ private disposed;
80
+ constructor(renderer: Pick<Renderer, "device" | "render" | "renderAsync">, options: StereoOutputOptions);
81
+ setSize(width: number, height: number): void;
82
+ render(source: StereoSource, frame: StereoFrameCamera): Promise<StereoOutputFrame>;
83
+ /**
84
+ * Route top-left-origin output pixels to the correct eye and its NDC. In a
85
+ * composite, a barrier chooses the displayed strip; an anaglyph defaults to
86
+ * the left eye and may be overridden. Points outside the image return null.
87
+ */
88
+ mapPointer(x: number, y: number, eye?: "left" | "right"): StereoPointer | null;
89
+ /** Convert client/CSS coordinates using the displayed canvas rectangle. */
90
+ mapClientPointer(clientX: number, clientY: number, rect: {
91
+ readonly left: number;
92
+ readonly top: number;
93
+ readonly width: number;
94
+ readonly height: number;
95
+ }, eye?: "left" | "right"): StereoPointer | null;
96
+ dispose(): void;
97
+ private createViews;
98
+ private viewRectangles;
99
+ private ensureTargets;
100
+ private compose;
101
+ private paint;
102
+ private resizeCanvas;
103
+ private releaseTargets;
104
+ private assertUsable;
105
+ }
106
+ //# sourceMappingURL=StereoOutputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StereoOutputs.d.ts","sourceRoot":"","sources":["../../src/effects/StereoOutputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ import { Scene, multiplyMat4 } from "@aura3d/scene";
2
+ import { createStereoCameraRig } from "@aura3d/rendering";
3
+ const MAX_PIXELS = 4_194_304;
4
+ /**
5
+ * Opt-in CPU-composited stereo output. Each eye is rendered by the supplied
6
+ * Aura renderer into a private RGBA8/depth target. Red/cyan selects red from
7
+ * the left eye and green/blue from the right; the barrier starts with the
8
+ * left eye at x=0 (or y=0). A top-left row order is returned in every mode.
9
+ * Bytes are copied without alpha conversion; an optional 2D canvas interprets
10
+ * them as straight alpha, so use an opaque clear when compositing into it.
11
+ *
12
+ * Await each render before using the renderer elsewhere. The output owns only
13
+ * its targets, not the renderer, source or supplied canvas. Temporal post
14
+ * effects such as TAA, motion blur, afterimage and auto-exposure are rejected
15
+ * because one renderer history cannot represent two eyes. Custom passes must
16
+ * likewise avoid shared temporal state.
17
+ */
18
+ export class StereoOutput {
19
+ renderer;
20
+ width;
21
+ height;
22
+ mode;
23
+ eyeSeparation;
24
+ convergenceDistance;
25
+ axis;
26
+ pitch;
27
+ duty;
28
+ canvas;
29
+ targets = null;
30
+ busy = false;
31
+ disposed = false;
32
+ constructor(renderer, options) {
33
+ this.renderer = renderer;
34
+ validateSize(options.width, options.height);
35
+ this.width = options.width;
36
+ this.height = options.height;
37
+ this.mode = options.mode ?? "side-by-side";
38
+ if (!["side-by-side", "over-under", "anaglyph", "parallax-barrier"].includes(this.mode))
39
+ throw new RangeError("Invalid stereo output mode");
40
+ this.eyeSeparation = options.eyeSeparation ?? 0.064;
41
+ this.convergenceDistance = options.convergenceDistance ?? 10;
42
+ this.axis = options.barrierAxis ?? "x";
43
+ this.pitch = options.stripPitchPx ?? 2;
44
+ this.duty = options.dutyCycle ?? 0.5;
45
+ if (!Number.isFinite(this.eyeSeparation) || this.eyeSeparation <= 0 || this.eyeSeparation > 1)
46
+ throw new RangeError("eyeSeparation must be in (0, 1]");
47
+ if (!Number.isFinite(this.convergenceDistance) || this.convergenceDistance <= 0)
48
+ throw new RangeError("convergenceDistance must be positive");
49
+ if (this.axis !== "x" && this.axis !== "y")
50
+ throw new RangeError("barrierAxis must be x or y");
51
+ if (!Number.isFinite(this.pitch) || this.pitch < 1 || !Number.isFinite(this.duty) || this.duty <= 0 || this.duty >= 1)
52
+ throw new RangeError("Barrier pitch must be at least one pixel and dutyCycle must be in (0, 1)");
53
+ this.canvas = options.canvas;
54
+ this.resizeCanvas();
55
+ }
56
+ setSize(width, height) {
57
+ this.assertUsable();
58
+ if (this.busy)
59
+ throw new Error("Cannot resize a stereo output during render");
60
+ validateSize(width, height);
61
+ if (this.width === width && this.height === height)
62
+ return;
63
+ this.releaseTargets();
64
+ this.width = width;
65
+ this.height = height;
66
+ this.resizeCanvas();
67
+ }
68
+ async render(source, frame) {
69
+ this.assertUsable();
70
+ if (this.busy)
71
+ throw new Error("A stereo render is already in progress");
72
+ const device = this.renderer.device;
73
+ if (!device.getRenderTarget)
74
+ throw new Error("Stereo output requires getRenderTarget for safe state restoration");
75
+ const normalized = normalizeSource(source);
76
+ if (hasSharedTemporalPostprocess(normalized.postprocess)) {
77
+ throw new Error("Stereo output does not support shared temporal postprocess history");
78
+ }
79
+ const views = this.createViews(frame);
80
+ const previous = device.getRenderTarget();
81
+ this.busy = true;
82
+ try {
83
+ const targets = this.ensureTargets(views);
84
+ const eyes = [];
85
+ for (let index = 0; index < 2; index += 1) {
86
+ if (this.disposed)
87
+ throw new Error("Stereo output was disposed during render");
88
+ const view = views[index];
89
+ const target = targets[index];
90
+ const eyeSource = { ...normalized, cameraPosition: view.cameraPosition, views: undefined };
91
+ const input = { source: eyeSource, target, camera: view.camera };
92
+ if (device.kind === "webgpu")
93
+ await this.renderer.renderAsync(input);
94
+ else
95
+ this.renderer.render(input);
96
+ device.setRenderTarget(target);
97
+ const data = device.kind === "webgpu" && device.readPixelsAsync
98
+ ? await device.readPixelsAsync(0, 0, target.width, target.height)
99
+ : device.readPixels(0, 0, target.width, target.height);
100
+ if (data.length !== target.width * target.height * 4)
101
+ throw new Error("Stereo eye readback has an invalid size");
102
+ eyes.push(device.kind === "webgl2" ? flipRows(data, target.width, target.height) : data);
103
+ }
104
+ if (this.disposed)
105
+ throw new Error("Stereo output was disposed during render");
106
+ const pixels = this.compose(views, eyes[0], eyes[1]);
107
+ this.paint(pixels);
108
+ return { width: this.width, height: this.height, pixels, views };
109
+ }
110
+ finally {
111
+ try {
112
+ device.setRenderTarget(previous);
113
+ }
114
+ finally {
115
+ this.busy = false;
116
+ if (this.disposed)
117
+ this.releaseTargets();
118
+ }
119
+ }
120
+ }
121
+ /**
122
+ * Route top-left-origin output pixels to the correct eye and its NDC. In a
123
+ * composite, a barrier chooses the displayed strip; an anaglyph defaults to
124
+ * the left eye and may be overridden. Points outside the image return null.
125
+ */
126
+ mapPointer(x, y, eye) {
127
+ this.assertUsable();
128
+ if (!Number.isFinite(x) || !Number.isFinite(y))
129
+ throw new RangeError("Pointer coordinates must be finite");
130
+ if (eye !== undefined && eye !== "left" && eye !== "right")
131
+ throw new RangeError("Pointer eye must be left or right");
132
+ if (x < 0 || y < 0 || x >= this.width || y >= this.height)
133
+ return null;
134
+ const rects = this.viewRectangles();
135
+ let index;
136
+ if (this.mode === "side-by-side")
137
+ index = x < rects[0].width ? 0 : 1;
138
+ else if (this.mode === "over-under")
139
+ index = y < rects[0].height ? 0 : 1;
140
+ else if (eye)
141
+ index = eye === "left" ? 0 : 1;
142
+ else if (this.mode === "parallax-barrier")
143
+ index = (this.axis === "x" ? Math.floor(x) : Math.floor(y)) % this.pitch < this.pitch * this.duty ? 0 : 1;
144
+ else
145
+ index = 0;
146
+ const rect = rects[index];
147
+ const localX = x - rect.x;
148
+ const localY = y - rect.y;
149
+ return { eye: index === 0 ? "left" : "right", x: localX, y: localY, ndc: [2 * localX / rect.width - 1, 1 - 2 * localY / rect.height] };
150
+ }
151
+ /** Convert client/CSS coordinates using the displayed canvas rectangle. */
152
+ mapClientPointer(clientX, clientY, rect, eye) {
153
+ if (![clientX, clientY, rect.left, rect.top, rect.width, rect.height].every(Number.isFinite) || rect.width <= 0 || rect.height <= 0)
154
+ throw new RangeError("Pointer rectangle must be finite with positive dimensions");
155
+ return this.mapPointer((clientX - rect.left) * this.width / rect.width, (clientY - rect.top) * this.height / rect.height, eye);
156
+ }
157
+ dispose() {
158
+ if (this.disposed)
159
+ return;
160
+ this.disposed = true;
161
+ if (!this.busy)
162
+ this.releaseTargets();
163
+ }
164
+ createViews(frame) {
165
+ if (!Number.isFinite(frame.near) || frame.near <= 0 || this.convergenceDistance <= frame.near)
166
+ throw new RangeError("Stereo convergenceDistance must exceed a positive near plane");
167
+ if (frame.viewMatrix.length !== 16 || frame.projectionMatrix.length !== 16 || frame.cameraPosition.length !== 3 || [...Array.from(frame.viewMatrix), ...Array.from(frame.projectionMatrix), ...frame.cameraPosition].some((value) => !Number.isFinite(value)))
168
+ throw new RangeError("Stereo frame must contain finite camera matrices and position");
169
+ const rigFrame = {
170
+ cameraPosition: [...frame.cameraPosition],
171
+ near: frame.near,
172
+ viewMatrix: Array.from(frame.viewMatrix),
173
+ projectionMatrix: Array.from(frame.projectionMatrix)
174
+ };
175
+ const rig = createStereoCameraRig({ frame: rigFrame, viewport: { x: 0, y: 0, width: this.width, height: this.height }, eyeSeparation: this.eyeSeparation, convergenceDistance: this.convergenceDistance });
176
+ const rectangles = this.viewRectangles();
177
+ const views = rig.views.map((eye, index) => {
178
+ const viewport = rectangles[index];
179
+ const projection = Array.from(frame.projectionMatrix);
180
+ // The supplied projection describes the whole output; compensate for the
181
+ // eye viewport aspect and shift the frustum so its convergence plane aligns.
182
+ projection[0] *= (this.width / this.height) / (viewport.width / viewport.height);
183
+ projection[8] -= projection[0] * eye.eyeOffset / this.convergenceDistance;
184
+ const vp = multiplyMat4(projection, eye.viewMatrix);
185
+ return { eye: eye.eye, viewport, cameraPosition: eye.cameraPosition, camera: { viewMatrix: eye.viewMatrix, projectionMatrix: projection, viewProjectionMatrix: vp } };
186
+ });
187
+ return [views[0], views[1]];
188
+ }
189
+ viewRectangles() {
190
+ const leftWidth = Math.floor(this.width / 2);
191
+ const topHeight = Math.floor(this.height / 2);
192
+ return this.mode === "side-by-side"
193
+ ? [{ x: 0, y: 0, width: leftWidth, height: this.height }, { x: leftWidth, y: 0, width: this.width - leftWidth, height: this.height }]
194
+ : this.mode === "over-under"
195
+ ? [{ x: 0, y: 0, width: this.width, height: topHeight }, { x: 0, y: topHeight, width: this.width, height: this.height - topHeight }]
196
+ : [{ x: 0, y: 0, width: this.width, height: this.height }, { x: 0, y: 0, width: this.width, height: this.height }];
197
+ }
198
+ ensureTargets(views) {
199
+ if (this.targets && !this.targets.some((target) => target.disposed))
200
+ return this.targets;
201
+ this.releaseTargets();
202
+ const created = [];
203
+ try {
204
+ for (const view of views)
205
+ created.push(this.renderer.device.createRenderTarget({ width: view.viewport.width, height: view.viewport.height, format: "rgba8", depth: true, label: `a3d.stereo.${view.eye}` }));
206
+ }
207
+ catch (error) {
208
+ for (const target of created)
209
+ target.dispose();
210
+ throw error;
211
+ }
212
+ this.targets = [created[0], created[1]];
213
+ return this.targets;
214
+ }
215
+ compose(views, left, right) {
216
+ const result = new Uint8ClampedArray(this.width * this.height * 4);
217
+ if (this.mode === "side-by-side" || this.mode === "over-under") {
218
+ for (const [index, pixels] of [left, right].entries()) {
219
+ const rect = views[index].viewport;
220
+ for (let y = 0; y < rect.height; y += 1) {
221
+ const src = y * rect.width * 4;
222
+ result.set(pixels.subarray(src, src + rect.width * 4), ((rect.y + y) * this.width + rect.x) * 4);
223
+ }
224
+ }
225
+ return result;
226
+ }
227
+ for (let y = 0; y < this.height; y += 1)
228
+ for (let x = 0; x < this.width; x += 1) {
229
+ const offset = (y * this.width + x) * 4;
230
+ if (this.mode === "anaglyph") {
231
+ result[offset] = left[offset];
232
+ result[offset + 1] = right[offset + 1];
233
+ result[offset + 2] = right[offset + 2];
234
+ result[offset + 3] = Math.max(left[offset + 3], right[offset + 3]);
235
+ }
236
+ else {
237
+ const coord = this.axis === "x" ? x : y;
238
+ const eye = coord % this.pitch < this.pitch * this.duty ? left : right;
239
+ result.set(eye.subarray(offset, offset + 4), offset);
240
+ }
241
+ }
242
+ return result;
243
+ }
244
+ paint(pixels) {
245
+ if (!this.canvas)
246
+ return;
247
+ const context = this.canvas.getContext("2d");
248
+ if (!context)
249
+ throw new Error("Stereo output canvas has no 2D context");
250
+ const image = context.createImageData(this.width, this.height);
251
+ image.data.set(pixels);
252
+ context.putImageData(image, 0, 0);
253
+ }
254
+ resizeCanvas() { if (this.canvas) {
255
+ this.canvas.width = this.width;
256
+ this.canvas.height = this.height;
257
+ } }
258
+ releaseTargets() { this.targets?.forEach((target) => target.dispose()); this.targets = null; }
259
+ assertUsable() { if (this.disposed)
260
+ throw new Error("Stereo output is disposed"); }
261
+ }
262
+ function hasSharedTemporalPostprocess(postprocess) {
263
+ if (!postprocess || typeof postprocess !== "object")
264
+ return false;
265
+ if (postprocess.taa || postprocess.motionBlur)
266
+ return true;
267
+ const pipeline = postprocess.pipeline;
268
+ if (!pipeline || typeof pipeline !== "object")
269
+ return false;
270
+ const options = pipeline;
271
+ if (options.antiAliasing === "taa" || options.taa || options.motionBlur || (options.autoExposure !== undefined && options.autoExposure !== false))
272
+ return true;
273
+ if (!Array.isArray(options.nativeEffects))
274
+ return false;
275
+ if (options.nativeEffects.length > 1024)
276
+ throw new RangeError("Stereo native effect budget exceeded");
277
+ return options.nativeEffects.some((effect) => typeof effect === "object" && effect !== null && "kind" in effect && effect.kind === "afterimage");
278
+ }
279
+ function normalizeSource(source) {
280
+ if (source instanceof Scene)
281
+ return { scene: source };
282
+ if (Symbol.iterator in Object(source))
283
+ return { renderItems: boundedArray(source, 100_000, "render items") };
284
+ const base = source;
285
+ // Snapshot explicit iterables once so one-shot generators and collectors do
286
+ // not produce a different scene for each eye.
287
+ const renderItems = boundedArray(base.collectRenderItems?.() ?? [], 100_000, "render items");
288
+ for (const item of base.renderItems ?? []) {
289
+ if (renderItems.length >= 100_000)
290
+ throw new RangeError("Stereo render item budget exceeded");
291
+ renderItems.push(item);
292
+ }
293
+ return { ...base, collectRenderItems: undefined, renderItems, ...(base.collectedLights ? { collectedLights: boundedArray(base.collectedLights, 4096, "lights") } : {}) };
294
+ }
295
+ function boundedArray(source, max, label) {
296
+ const result = [];
297
+ for (const item of source) {
298
+ if (result.length >= max)
299
+ throw new RangeError(`Stereo ${label} budget exceeded`);
300
+ result.push(item);
301
+ }
302
+ return result;
303
+ }
304
+ function flipRows(data, width, height) {
305
+ const row = width * 4;
306
+ const out = new Uint8Array(data.length);
307
+ for (let y = 0; y < height; y += 1)
308
+ out.set(data.subarray(y * row, (y + 1) * row), (height - 1 - y) * row);
309
+ return out;
310
+ }
311
+ function validateSize(width, height) {
312
+ if (!Number.isSafeInteger(width) || !Number.isSafeInteger(height) || width < 2 || height < 2 || width * height > MAX_PIXELS)
313
+ throw new RangeError(`Stereo output dimensions must be at least 2x2 and at most ${MAX_PIXELS} pixels`);
314
+ }
315
+ //# sourceMappingURL=StereoOutputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StereoOutputs.js","sourceRoot":"","sources":["../../src/effects/StereoOutputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import type { AuraCustomGeometrySpec, AuraTerrainOptions } from "@aura3d/engine";
2
+ export type GeneratorVec3 = readonly [number, number, number];
3
+ export interface GeneratorBudget {
4
+ readonly maxVertices?: number;
5
+ readonly maxTriangles?: number;
6
+ readonly maxInstances?: number;
7
+ }
8
+ export interface GeneratedMesh {
9
+ readonly materialSlot: string;
10
+ readonly geometry: AuraCustomGeometrySpec;
11
+ }
12
+ export interface GeneratedPlacement {
13
+ readonly position: GeneratorVec3;
14
+ readonly yaw: number;
15
+ readonly scale: number;
16
+ readonly kind: string;
17
+ }
18
+ export interface GeneratedEnvironment {
19
+ /** Geometry is already in world space; supply one material per slot. */
20
+ readonly parts: readonly GeneratedMesh[];
21
+ /** Placement metadata, useful for picking or replacing generated objects with assets. */
22
+ readonly placements: readonly GeneratedPlacement[];
23
+ readonly vertexCount: number;
24
+ readonly triangleCount: number;
25
+ readonly bounds: {
26
+ readonly min: GeneratorVec3;
27
+ readonly max: GeneratorVec3;
28
+ } | null;
29
+ readonly disposed: boolean;
30
+ /** Releases references owned by the result. Existing caller-held buffers remain valid. */
31
+ dispose(): void;
32
+ }
33
+ export interface TerrainGeneratorOptions {
34
+ readonly seed?: number;
35
+ readonly columns?: number;
36
+ readonly rows?: number;
37
+ readonly size?: readonly [number, number];
38
+ readonly origin?: GeneratorVec3;
39
+ readonly height?: number;
40
+ readonly frequency?: number;
41
+ readonly octaves?: number;
42
+ readonly budget?: GeneratorBudget;
43
+ }
44
+ export interface GeneratedTerrain extends GeneratedEnvironment {
45
+ /** A snapshot of the generated field for the existing `world.terrain` builder. */
46
+ readonly terrainOptions: AuraTerrainOptions;
47
+ /** Bilinear, border-clamped sample in world coordinates; throws after disposal. */
48
+ heightAt(x: number, z: number): number;
49
+ }
50
+ export interface TreeGeneratorOptions {
51
+ readonly seed?: number;
52
+ readonly height?: number;
53
+ readonly crownRadius?: number;
54
+ readonly trunkRadius?: number;
55
+ readonly branchLevels?: number;
56
+ readonly radialSegments?: number;
57
+ readonly budget?: GeneratorBudget;
58
+ }
59
+ export interface ForestGeneratorOptions extends TreeGeneratorOptions {
60
+ readonly count?: number;
61
+ readonly min?: readonly [number, number];
62
+ readonly max?: readonly [number, number];
63
+ readonly minDistance?: number;
64
+ readonly ground?: (x: number, z: number) => number;
65
+ }
66
+ export interface CityGeneratorOptions {
67
+ readonly seed?: number;
68
+ readonly columns?: number;
69
+ readonly rows?: number;
70
+ readonly blockSize?: number;
71
+ readonly roadWidth?: number;
72
+ readonly minHeight?: number;
73
+ readonly maxHeight?: number;
74
+ readonly budget?: GeneratorBudget;
75
+ }
76
+ export type StreetAssetKind = "lamp" | "bench" | "bollard" | "planter";
77
+ export interface StreetAssetGeneratorOptions {
78
+ readonly seed?: number;
79
+ readonly path: readonly GeneratorVec3[];
80
+ readonly spacing?: number;
81
+ readonly offset?: number;
82
+ readonly sides?: "left" | "right" | "both";
83
+ readonly kinds?: readonly StreetAssetKind[];
84
+ readonly budget?: GeneratorBudget;
85
+ }
86
+ /** Generate a grid mesh and the same height array accepted by `world.terrain`. */
87
+ export declare function generateTerrain(options?: TerrainGeneratorOptions): GeneratedTerrain;
88
+ /** Generate a branching tree with independently materialable wood and foliage. */
89
+ export declare function generateTree(options?: TreeGeneratorOptions): GeneratedEnvironment;
90
+ /** Seeded placement uses Aura3D's scatter planner; dense spacing can admit fewer than `count`. */
91
+ export declare function generateForest(options?: ForestGeneratorOptions): GeneratedEnvironment;
92
+ /** Construct a gridded street network with seeded building footprints and heights. */
93
+ export declare function generateCity(options?: CityGeneratorOptions): GeneratedEnvironment;
94
+ /**
95
+ * Generate seeded street furniture on one or both sides of a world-space
96
+ * polyline. Spacing is measured along the polyline; zero-horizontal-length
97
+ * segments are rejected because their left/right direction is undefined.
98
+ */
99
+ export declare function generateStreetAssets(options: StreetAssetGeneratorOptions): GeneratedEnvironment;
100
+ //# sourceMappingURL=EnvironmentGenerators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentGenerators.d.ts","sourceRoot":"","sources":["../../src/generators/EnvironmentGenerators.ts"],"names":[],"mappings":"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"}