simulationjsv2 0.10.5 → 0.11.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/README.md +4 -0
- package/TODO.md +4 -20
- package/dist/backend.d.ts +38 -0
- package/dist/backend.js +127 -0
- package/dist/backends/backend.d.ts +22 -0
- package/dist/backends/backend.js +21 -0
- package/dist/backends/webgl.d.ts +19 -0
- package/dist/backends/webgl.js +112 -0
- package/dist/backends/webgpu.d.ts +25 -0
- package/dist/backends/webgpu.js +134 -0
- package/dist/buffers/buffer.d.ts +15 -0
- package/dist/buffers/buffer.js +42 -0
- package/dist/buffers/webgl.d.ts +13 -0
- package/dist/buffers/webgl.js +46 -0
- package/dist/buffers/webgpu.d.ts +12 -0
- package/dist/buffers/webgpu.js +40 -0
- package/dist/buffers.d.ts +20 -7
- package/dist/buffers.js +54 -20
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/geometry.d.ts +3 -2
- package/dist/geometry.js +8 -4
- package/dist/globals.d.ts +6 -7
- package/dist/globals.js +7 -12
- package/dist/graphics.d.ts +20 -21
- package/dist/graphics.js +57 -59
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/internalUtils.d.ts +3 -4
- package/dist/internalUtils.js +3 -1
- package/dist/shaders/shader.d.ts +18 -0
- package/dist/shaders/shader.js +63 -0
- package/dist/shaders/utils.d.ts +33 -0
- package/dist/shaders/utils.js +25 -0
- package/dist/shaders/webgl.d.ts +74 -0
- package/dist/shaders/webgl.js +242 -0
- package/dist/shaders/webgpu.d.ts +40 -0
- package/dist/{shaders.js → shaders/webgpu.js} +73 -114
- package/dist/simulation.d.ts +11 -5
- package/dist/simulation.js +49 -86
- package/dist/types.d.ts +54 -36
- package/dist/utils.d.ts +3 -4
- package/dist/utils.js +6 -9
- package/package.json +26 -26
- package/pnpm-workspace.yaml +2 -0
- package/dist/pipelineUtil.d.ts +0 -5
- package/dist/pipelineUtil.js +0 -22
- package/dist/shaders.d.ts +0 -37
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ArrayTypes } from '../types.js';
|
|
2
|
+
import { MemoBuffer } from './buffer.js';
|
|
3
|
+
export declare class WebGPUMemoBuffer extends MemoBuffer {
|
|
4
|
+
protected device: GPUDevice;
|
|
5
|
+
protected buffer: GPUBuffer | null;
|
|
6
|
+
private usage;
|
|
7
|
+
constructor(device: GPUDevice, usage: GPUBufferDescriptor['usage'], initCapacity: number);
|
|
8
|
+
allocBuffer(): void;
|
|
9
|
+
getBuffer(): GPUBuffer;
|
|
10
|
+
write(buf: ArrayTypes, offset?: number): void;
|
|
11
|
+
destroy(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { MemoBuffer } from './buffer.js';
|
|
2
|
+
export class WebGPUMemoBuffer extends MemoBuffer {
|
|
3
|
+
device;
|
|
4
|
+
buffer = null;
|
|
5
|
+
usage;
|
|
6
|
+
constructor(device, usage, initCapacity) {
|
|
7
|
+
super('webgpu', initCapacity);
|
|
8
|
+
if (device === null)
|
|
9
|
+
throw new Error('Device is null');
|
|
10
|
+
this.device = device;
|
|
11
|
+
this.usage = usage;
|
|
12
|
+
}
|
|
13
|
+
allocBuffer() {
|
|
14
|
+
if (this.buffer)
|
|
15
|
+
this.buffer.destroy();
|
|
16
|
+
this.buffer = this.device.createBuffer({
|
|
17
|
+
size: this.bufferCapacity,
|
|
18
|
+
usage: this.usage
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
getBuffer() {
|
|
22
|
+
if (!this.buffer)
|
|
23
|
+
this.allocBuffer();
|
|
24
|
+
return this.buffer;
|
|
25
|
+
}
|
|
26
|
+
write(buf, offset = 0) {
|
|
27
|
+
const neededSize = offset + buf.byteLength;
|
|
28
|
+
if (!this.buffer || neededSize > this.bufferCapacity) {
|
|
29
|
+
this.bufferCapacity = neededSize;
|
|
30
|
+
this.allocBuffer();
|
|
31
|
+
}
|
|
32
|
+
this.device.queue.writeBuffer(this.buffer, offset, buf.buffer, buf.byteOffset, buf.byteLength);
|
|
33
|
+
}
|
|
34
|
+
destroy() {
|
|
35
|
+
if (this.buffer) {
|
|
36
|
+
this.buffer.destroy();
|
|
37
|
+
this.buffer = null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
package/dist/buffers.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
/// <reference types="@webgpu/types" />
|
|
2
1
|
import { ArrayTypes } from './types.js';
|
|
3
|
-
export declare class MemoBuffer {
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export declare abstract class MemoBuffer<T> {
|
|
3
|
+
protected buffer: T | null;
|
|
4
|
+
protected bufferCapacity: number;
|
|
5
|
+
constructor(initCapacity: number);
|
|
6
|
+
abstract allocBuffer(): void;
|
|
7
|
+
abstract destroy(): void;
|
|
8
|
+
write(_buf: ArrayTypes, _offset?: number): void;
|
|
9
|
+
getBuffer(): NonNullable<T>;
|
|
10
|
+
private growCapacity;
|
|
11
|
+
ensureCapacity(capacity: number): void;
|
|
12
|
+
setCapacityPrecise(capacity: number): void;
|
|
13
|
+
}
|
|
14
|
+
export declare class WebGPUMemoBuffer extends MemoBuffer<GPUBuffer> {
|
|
15
|
+
protected device: GPUDevice;
|
|
6
16
|
private usage;
|
|
7
|
-
constructor(usage: GPUBufferDescriptor['usage'],
|
|
8
|
-
|
|
17
|
+
constructor(device: GPUDevice, usage: GPUBufferDescriptor['usage'], initCapacity: number);
|
|
18
|
+
allocBuffer(): void;
|
|
9
19
|
getBuffer(): GPUBuffer;
|
|
10
|
-
setSize(size: number): void;
|
|
11
20
|
write(buf: ArrayTypes, offset?: number): void;
|
|
12
21
|
destroy(): void;
|
|
13
22
|
}
|
|
23
|
+
export declare class WebGLMemoBuffer extends MemoBuffer<WebGLBuffer> {
|
|
24
|
+
allocBuffer(): void;
|
|
25
|
+
destroy(): void;
|
|
26
|
+
}
|
package/dist/buffers.js
CHANGED
|
@@ -1,19 +1,55 @@
|
|
|
1
1
|
import { globalInfo } from './globals.js';
|
|
2
2
|
export class MemoBuffer {
|
|
3
3
|
buffer;
|
|
4
|
-
|
|
4
|
+
bufferCapacity;
|
|
5
|
+
constructor(initCapacity) {
|
|
6
|
+
this.bufferCapacity = initCapacity;
|
|
7
|
+
this.buffer = null;
|
|
8
|
+
}
|
|
9
|
+
// cant be abstract because offset should be default param to 0
|
|
10
|
+
// which it wont allow (even though it could)
|
|
11
|
+
write(_buf, _offset = 0) { }
|
|
12
|
+
getBuffer() {
|
|
13
|
+
if (!this.buffer)
|
|
14
|
+
this.allocBuffer();
|
|
15
|
+
return this.buffer;
|
|
16
|
+
}
|
|
17
|
+
growCapacity(current, target) {
|
|
18
|
+
let res = Math.max(1, current);
|
|
19
|
+
while (res < target) {
|
|
20
|
+
res += Math.ceil(res / 2);
|
|
21
|
+
}
|
|
22
|
+
return res;
|
|
23
|
+
}
|
|
24
|
+
ensureCapacity(capacity) {
|
|
25
|
+
this.setCapacityPrecise(this.growCapacity(this.bufferCapacity, capacity));
|
|
26
|
+
}
|
|
27
|
+
setCapacityPrecise(capacity) {
|
|
28
|
+
if (!this.buffer) {
|
|
29
|
+
this.bufferCapacity = capacity;
|
|
30
|
+
this.allocBuffer();
|
|
31
|
+
}
|
|
32
|
+
if (capacity <= this.bufferCapacity)
|
|
33
|
+
return;
|
|
34
|
+
this.bufferCapacity = capacity;
|
|
35
|
+
this.allocBuffer();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export class WebGPUMemoBuffer extends MemoBuffer {
|
|
39
|
+
device;
|
|
5
40
|
usage;
|
|
6
|
-
constructor(usage,
|
|
41
|
+
constructor(device, usage, initCapacity) {
|
|
42
|
+
super(initCapacity);
|
|
43
|
+
if (device === null)
|
|
44
|
+
throw new Error('Device is null');
|
|
45
|
+
this.device = device;
|
|
7
46
|
this.usage = usage;
|
|
8
|
-
this.bufferSize = size;
|
|
9
|
-
this.buffer = null;
|
|
10
47
|
}
|
|
11
48
|
allocBuffer() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
size: this.bufferSize,
|
|
49
|
+
if (this.buffer)
|
|
50
|
+
this.buffer.destroy();
|
|
51
|
+
this.buffer = this.device.createBuffer({
|
|
52
|
+
size: this.bufferCapacity,
|
|
17
53
|
usage: this.usage
|
|
18
54
|
});
|
|
19
55
|
}
|
|
@@ -22,18 +58,12 @@ export class MemoBuffer {
|
|
|
22
58
|
this.allocBuffer();
|
|
23
59
|
return this.buffer;
|
|
24
60
|
}
|
|
25
|
-
setSize(size) {
|
|
26
|
-
if (!this.buffer)
|
|
27
|
-
this.allocBuffer();
|
|
28
|
-
if (size > this.bufferSize) {
|
|
29
|
-
this.bufferSize = size;
|
|
30
|
-
this.allocBuffer();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
61
|
write(buf, offset = 0) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
62
|
+
// TODO - probably change
|
|
63
|
+
const backend = globalInfo.errorGetCanvas().getBackend();
|
|
64
|
+
const device = backend.getDeviceOrError();
|
|
65
|
+
if (!this.buffer || buf.byteLength > this.bufferCapacity) {
|
|
66
|
+
this.bufferCapacity = buf.byteLength;
|
|
37
67
|
this.allocBuffer();
|
|
38
68
|
}
|
|
39
69
|
device.queue.writeBuffer(this.buffer, offset, buf.buffer, buf.byteOffset, buf.byteLength);
|
|
@@ -42,3 +72,7 @@ export class MemoBuffer {
|
|
|
42
72
|
this.buffer?.destroy();
|
|
43
73
|
}
|
|
44
74
|
}
|
|
75
|
+
export class WebGLMemoBuffer extends MemoBuffer {
|
|
76
|
+
allocBuffer() { }
|
|
77
|
+
destroy() { }
|
|
78
|
+
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -5,3 +5,4 @@ export declare const xAxis: import("./types.js").Vector3;
|
|
|
5
5
|
export declare const yAxis: import("./types.js").Vector3;
|
|
6
6
|
export declare const zAxis: import("./types.js").Vector3;
|
|
7
7
|
export declare const origin0: import("./types.js").Vector3;
|
|
8
|
+
export declare const FLOAT_SIZE = 4;
|
package/dist/constants.js
CHANGED
package/dist/geometry.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { CircleGeometryParams, CubeGeometryParams,
|
|
1
|
+
import { CircleGeometryParams, CubeGeometryParams, Spline2dGeometryParams, SquareGeometryParams, Vector3, LineGeometryParams, TraceLinesParams, LerpFunc } from './types.js';
|
|
2
2
|
import { CubicBezierCurve2d, SplinePoint2d } from './graphics.js';
|
|
3
|
+
export type EmptyParams = object;
|
|
3
4
|
export declare abstract class Geometry<T extends EmptyParams> {
|
|
4
5
|
private subdivision;
|
|
5
6
|
private subdivisionVertexLimit;
|
|
@@ -12,7 +13,7 @@ export declare abstract class Geometry<T extends EmptyParams> {
|
|
|
12
13
|
protected vertices: Vector3[];
|
|
13
14
|
protected topology: 'list' | 'strip';
|
|
14
15
|
constructor(geometryType?: 'list' | 'strip');
|
|
15
|
-
getTopology(): "
|
|
16
|
+
getTopology(): "strip" | "list";
|
|
16
17
|
computeVertices(): void;
|
|
17
18
|
compute(): void;
|
|
18
19
|
triangulate(): void;
|
package/dist/geometry.js
CHANGED
|
@@ -32,7 +32,8 @@ export class Geometry {
|
|
|
32
32
|
outer: for (let i = 0; i < this.subdivision; i++) {
|
|
33
33
|
const initialLength = initialVertices.length;
|
|
34
34
|
for (let j = 0; j < initialLength - 1; j++) {
|
|
35
|
-
if (this.subdivisionVertexLimit &&
|
|
35
|
+
if (this.subdivisionVertexLimit &&
|
|
36
|
+
this.vertices.length >= this.subdivisionVertexLimit)
|
|
36
37
|
break outer;
|
|
37
38
|
const vert = initialVertices[j];
|
|
38
39
|
const nextVert = initialVertices[j + 1];
|
|
@@ -368,14 +369,17 @@ export class Spline2dGeometry extends Geometry {
|
|
|
368
369
|
let atLimit = false;
|
|
369
370
|
if (step * j * sectionRatio + distanceRatio > this.params.interpolateLimit) {
|
|
370
371
|
atLimit = true;
|
|
371
|
-
currentInterpolation =
|
|
372
|
+
currentInterpolation =
|
|
373
|
+
(this.params.interpolateLimit - distanceRatio) / sectionRatio;
|
|
372
374
|
}
|
|
373
|
-
if (currentInterpolation * sectionRatio + distanceRatio <
|
|
375
|
+
if (currentInterpolation * sectionRatio + distanceRatio <
|
|
376
|
+
this.params.interpolateStart) {
|
|
374
377
|
continue;
|
|
375
378
|
}
|
|
376
379
|
if (!interpolationStarted) {
|
|
377
380
|
interpolationStarted = true;
|
|
378
|
-
currentInterpolation =
|
|
381
|
+
currentInterpolation =
|
|
382
|
+
(this.params.interpolateStart - distanceRatio) / sectionRatio;
|
|
379
383
|
j--;
|
|
380
384
|
}
|
|
381
385
|
if (!curveVertexIndexSet) {
|
package/dist/globals.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
import { SimJSShader } from './shaders/shader.js';
|
|
2
|
+
import { SimJSWebGPUShader } from './shaders/webgpu.js';
|
|
3
3
|
import { Simulation } from './simulation.js';
|
|
4
4
|
import { Color } from './utils.js';
|
|
5
5
|
declare class Logger {
|
|
@@ -13,23 +13,22 @@ declare class Logger {
|
|
|
13
13
|
export declare const logger: Logger;
|
|
14
14
|
export declare class GlobalInfo {
|
|
15
15
|
private canvas;
|
|
16
|
-
private device;
|
|
17
16
|
private defaultColor;
|
|
17
|
+
private toInitShaders;
|
|
18
18
|
constructor();
|
|
19
19
|
setDefaultColor(color: Color): void;
|
|
20
20
|
getDefaultColor(): Color;
|
|
21
21
|
setCanvas(canvas: Simulation): void;
|
|
22
22
|
errorGetCanvas(): Simulation;
|
|
23
23
|
getCanvas(): Simulation | null;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
getDevice(): GPUDevice | null;
|
|
24
|
+
addToInitShader(shader: SimJSShader): void;
|
|
25
|
+
getToInitShaders(): SimJSShader[];
|
|
27
26
|
}
|
|
28
27
|
export declare const globalInfo: GlobalInfo;
|
|
29
28
|
export declare class PipelineCache {
|
|
30
29
|
private pipelines;
|
|
31
30
|
constructor();
|
|
32
|
-
getPipeline(device: GPUDevice, info: string, shader:
|
|
31
|
+
getPipeline(device: GPUDevice, info: string, shader: SimJSWebGPUShader): GPURenderPipeline;
|
|
33
32
|
}
|
|
34
33
|
export declare const pipelineCache: PipelineCache;
|
|
35
34
|
export {};
|
package/dist/globals.js
CHANGED
|
@@ -3,7 +3,7 @@ import { color } from './utils.js';
|
|
|
3
3
|
class Logger {
|
|
4
4
|
constructor() { }
|
|
5
5
|
fmt(msg) {
|
|
6
|
-
return `SimJS
|
|
6
|
+
return `(SimJS) ${msg}`;
|
|
7
7
|
}
|
|
8
8
|
log(msg) {
|
|
9
9
|
console.log(this.fmt(msg));
|
|
@@ -21,12 +21,12 @@ class Logger {
|
|
|
21
21
|
export const logger = new Logger();
|
|
22
22
|
export class GlobalInfo {
|
|
23
23
|
canvas;
|
|
24
|
-
device;
|
|
25
24
|
defaultColor;
|
|
25
|
+
toInitShaders;
|
|
26
26
|
constructor() {
|
|
27
27
|
this.canvas = null;
|
|
28
|
-
this.device = null;
|
|
29
28
|
this.defaultColor = null;
|
|
29
|
+
this.toInitShaders = [];
|
|
30
30
|
}
|
|
31
31
|
setDefaultColor(color) {
|
|
32
32
|
this.defaultColor = color;
|
|
@@ -45,16 +45,11 @@ export class GlobalInfo {
|
|
|
45
45
|
getCanvas() {
|
|
46
46
|
return this.canvas;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
this.
|
|
48
|
+
addToInitShader(shader) {
|
|
49
|
+
this.toInitShaders.push(shader);
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
throw logger.error('GPUDevice is null');
|
|
54
|
-
return this.device;
|
|
55
|
-
}
|
|
56
|
-
getDevice() {
|
|
57
|
-
return this.device;
|
|
51
|
+
getToInitShaders() {
|
|
52
|
+
return this.toInitShaders;
|
|
58
53
|
}
|
|
59
54
|
}
|
|
60
55
|
export const globalInfo = new GlobalInfo();
|
package/dist/graphics.d.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
/// <reference types="@webgpu/types" />
|
|
2
1
|
import type { Vector2, Vector3, LerpFunc, Mat4 } from './types.js';
|
|
3
2
|
import { Vertex, Color } from './utils.js';
|
|
4
3
|
import { BlankGeometry, CircleGeometry, CubeGeometry, Geometry, Line2dGeometry, Line3dGeometry, PlaneGeometry, PolygonGeometry, Spline2dGeometry, SquareGeometry, TraceLinesGeometry as TraceLinesGeometry } from './geometry.js';
|
|
5
4
|
import { Float32ArrayCache } from './internalUtils.js';
|
|
6
|
-
import {
|
|
5
|
+
import { SimJSShader } from './shaders/shader.js';
|
|
7
6
|
import { Material } from './materials.js';
|
|
7
|
+
import { MemoBuffer } from './buffers/buffer.js';
|
|
8
8
|
export declare abstract class SimulationElement3d {
|
|
9
9
|
private children;
|
|
10
|
-
private uniformBuffer;
|
|
11
10
|
private prevInfo;
|
|
12
11
|
private pipeline;
|
|
13
12
|
protected id: string | null;
|
|
14
|
-
protected shader:
|
|
13
|
+
protected shader: SimJSShader;
|
|
15
14
|
protected material: Material;
|
|
16
15
|
protected cullMode: GPUCullMode;
|
|
17
16
|
protected parent: SimulationElement3d | null;
|
|
@@ -22,11 +21,15 @@ export declare abstract class SimulationElement3d {
|
|
|
22
21
|
protected vertexCache: Float32ArrayCache;
|
|
23
22
|
protected rotation: Vector3;
|
|
24
23
|
protected modelMatrix: Mat4;
|
|
24
|
+
protected uniformBuffer: MemoBuffer | null;
|
|
25
25
|
isInstance: boolean;
|
|
26
26
|
isInstanced: boolean;
|
|
27
27
|
is3d: boolean;
|
|
28
28
|
isEmpty: boolean;
|
|
29
29
|
constructor(pos: Vector3, rotation: Vector3, color?: Color);
|
|
30
|
+
delete(): void;
|
|
31
|
+
setUniformBuffer(buffer: MemoBuffer): void;
|
|
32
|
+
getUniformBuffer(): MemoBuffer | null;
|
|
30
33
|
emptyShallow(): void;
|
|
31
34
|
empty(): void;
|
|
32
35
|
getId(): string | null;
|
|
@@ -49,19 +52,18 @@ export declare abstract class SimulationElement3d {
|
|
|
49
52
|
setSubdivisionVertexLimit(limit: number): void;
|
|
50
53
|
clearSubdivisionVertexLimit(): void;
|
|
51
54
|
setCenterOffset(offset: Vector3): void;
|
|
52
|
-
getShader():
|
|
53
|
-
setShader(shader:
|
|
55
|
+
getShader(): SimJSShader;
|
|
56
|
+
setShader(shader: SimJSShader): void;
|
|
54
57
|
resetCenterOffset(): void;
|
|
55
58
|
getModelMatrix(): Mat4;
|
|
56
59
|
isTransparent(): boolean;
|
|
57
60
|
getObjectInfo(): string;
|
|
58
|
-
getUniformBuffer(): GPUBuffer;
|
|
59
61
|
getPipeline(): GPURenderPipeline;
|
|
60
62
|
protected mirrorParentTransforms3d(mat: Mat4): void;
|
|
61
63
|
protected updateModelMatrix3d(): void;
|
|
62
64
|
protected mirrorParentTransforms2d(mat: Mat4): void;
|
|
63
65
|
protected updateModelMatrix2d(): void;
|
|
64
|
-
getGeometryTopology(): "
|
|
66
|
+
getGeometryTopology(): "strip" | "list";
|
|
65
67
|
setWireframe(wireframe: boolean): void;
|
|
66
68
|
isWireframe(): boolean;
|
|
67
69
|
getMaterial(): Material;
|
|
@@ -81,9 +83,8 @@ export declare abstract class SimulationElement3d {
|
|
|
81
83
|
getVertexCount(): number;
|
|
82
84
|
getTreeVertexCount(): number;
|
|
83
85
|
getIndexCount(): number;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
getIndexBuffer(): Uint32Array;
|
|
86
|
+
getVertexCallBuffer(): Float32Array<ArrayBufferLike>;
|
|
87
|
+
getIndexBuffer(): Uint32Array<ArrayBuffer>;
|
|
87
88
|
}
|
|
88
89
|
export declare class EmptyElement extends SimulationElement3d {
|
|
89
90
|
protected geometry: BlankGeometry;
|
|
@@ -208,7 +209,7 @@ export declare class Spline2d extends SimulationElement2d {
|
|
|
208
209
|
private length;
|
|
209
210
|
constructor(pos: Vertex, points: SplinePoint2d[], thickness?: number, detail?: number);
|
|
210
211
|
private setVertexColors;
|
|
211
|
-
|
|
212
|
+
getVertexCallBuffer(): Float32Array<ArrayBufferLike>;
|
|
212
213
|
isTransparent(): boolean;
|
|
213
214
|
private estimateLength;
|
|
214
215
|
getLength(): number;
|
|
@@ -227,20 +228,18 @@ export declare class Instance<T extends SimulationElement3d> extends SimulationE
|
|
|
227
228
|
private matrixBuffer;
|
|
228
229
|
private baseMat;
|
|
229
230
|
private maxInstances;
|
|
230
|
-
private hasMapped;
|
|
231
231
|
isInstance: boolean;
|
|
232
232
|
constructor(obj: T, numInstances: number);
|
|
233
|
-
|
|
233
|
+
setInstanceCount(numInstances: number, forceResizeBuffer?: boolean): void;
|
|
234
234
|
setInstance(instance: number, transformation: Mat4): void;
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
getInstanceBuffer(): GPUBuffer;
|
|
235
|
+
getInstanceMatrices(): Mat4[];
|
|
236
|
+
getInstanceCount(): number;
|
|
237
|
+
getInstanceBuffer(): Float32Array<ArrayBufferLike>;
|
|
239
238
|
getTreeVertexCount(): number;
|
|
240
239
|
getIndexCount(): number;
|
|
241
|
-
getGeometryTopology(): "
|
|
242
|
-
|
|
243
|
-
getIndexBuffer(): Uint32Array
|
|
240
|
+
getGeometryTopology(): "strip" | "list";
|
|
241
|
+
getVertexCallBuffer(): Float32Array<ArrayBufferLike>;
|
|
242
|
+
getIndexBuffer(): Uint32Array<ArrayBuffer>;
|
|
244
243
|
getModelMatrix(): Mat4;
|
|
245
244
|
}
|
|
246
245
|
export declare class TraceLines2d extends SimulationElement2d {
|