simulationjsv2 0.7.4 → 0.8.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 +1 -3
- package/TODO.md +5 -5
- package/dist/buffers.d.ts +2 -0
- package/dist/buffers.js +9 -1
- package/dist/constants.d.ts +0 -6
- package/dist/constants.js +1 -6
- package/dist/geometry.d.ts +23 -41
- package/dist/geometry.js +85 -204
- package/dist/globals.d.ts +26 -0
- package/dist/globals.js +51 -0
- package/dist/graphics.d.ts +40 -26
- package/dist/graphics.js +217 -199
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/internalUtils.d.ts +8 -45
- package/dist/internalUtils.js +58 -198
- package/dist/materials.d.ts +17 -0
- package/dist/materials.js +49 -1
- package/dist/shaders.d.ts +31 -5
- package/dist/shaders.js +270 -29
- package/dist/simulation.d.ts +5 -24
- package/dist/simulation.js +49 -231
- package/dist/types.d.ts +48 -43
- package/dist/utils.d.ts +8 -3
- package/dist/utils.js +36 -8
- package/package.json +1 -1
- package/dist/pipelines.d.ts +0 -1
- package/dist/pipelines.js +0 -1
package/README.md
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
SimulationJS is a graphics library with simple easy to use APIs. Version 2 hopes to improve 3d graphics and boost performance by using webgpu under the hood.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
**Documentation eventually**
|
|
5
|
+
**Documentation at 1.0.0**
|
|
8
6
|
|
|
9
7
|
By _Jackson Otto_
|
package/TODO.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# TODO
|
|
2
2
|
|
|
3
|
-
- [ ]
|
|
4
|
-
|
|
5
|
-
- [
|
|
3
|
+
- [ ] Change render vertices to use index buffer
|
|
4
|
+
- [ ] Add cull modes
|
|
5
|
+
- [x] Fix shaders
|
|
6
|
+
- [x] Clean up polygons
|
|
7
|
+
- [x] Fix transparency
|
|
6
8
|
- [x] Change absolute pos function to pos function, and pos function to relative pos
|
|
7
9
|
- [x] Update `updateModelMatrix2d`
|
|
8
10
|
- [x] Trace line element (wireframe strip for tracing paths)
|
|
@@ -10,11 +12,9 @@
|
|
|
10
12
|
- [x] Fix rotating nested children elements
|
|
11
13
|
- [x] Fix instancing
|
|
12
14
|
- [x] Remove SceneCollection and replace by elements with children
|
|
13
|
-
- Test this
|
|
14
15
|
- [x] Change position/rotation to be matrix transform on gpu
|
|
15
16
|
- [x] Add update square center offset position in-place + not
|
|
16
17
|
- [x] Make getBuffer return cached Float32Array
|
|
17
18
|
- [x] Make input buffer position vec3 not vec4
|
|
18
19
|
- [x] Use line strip vertices for polygon buffers
|
|
19
20
|
- [x] Scene collection wireframe
|
|
20
|
-
- [ ] Add animation status handle to transition values
|
package/dist/buffers.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="@webgpu/types" />
|
|
2
|
+
import { ArrayTypes } from './types.js';
|
|
2
3
|
export declare class MemoBuffer {
|
|
3
4
|
private buffer;
|
|
4
5
|
private bufferSize;
|
|
@@ -7,5 +8,6 @@ export declare class MemoBuffer {
|
|
|
7
8
|
private allocBuffer;
|
|
8
9
|
getBuffer(): GPUBuffer;
|
|
9
10
|
setSize(size: number): void;
|
|
11
|
+
write(buf: ArrayTypes, offset?: number): void;
|
|
10
12
|
destroy(): void;
|
|
11
13
|
}
|
package/dist/buffers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { globalInfo } from './
|
|
1
|
+
import { globalInfo } from './globals.js';
|
|
2
2
|
export class MemoBuffer {
|
|
3
3
|
buffer;
|
|
4
4
|
bufferSize;
|
|
@@ -30,6 +30,14 @@ export class MemoBuffer {
|
|
|
30
30
|
this.allocBuffer();
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
write(buf, offset = 0) {
|
|
34
|
+
const device = globalInfo.errorGetDevice();
|
|
35
|
+
if (!this.buffer || buf.byteLength > this.bufferSize) {
|
|
36
|
+
this.bufferSize = buf.byteLength;
|
|
37
|
+
this.allocBuffer();
|
|
38
|
+
}
|
|
39
|
+
device.queue.writeBuffer(this.buffer, offset, buf.buffer, buf.byteOffset, buf.byteLength);
|
|
40
|
+
}
|
|
33
41
|
destroy() {
|
|
34
42
|
this.buffer?.destroy();
|
|
35
43
|
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
export declare const vertexSize = 40;
|
|
2
|
-
export declare const positionOffset = 0;
|
|
3
|
-
export declare const colorOffset = 12;
|
|
4
|
-
export declare const uvOffset = 28;
|
|
5
|
-
export declare const drawingInstancesOffset = 36;
|
|
6
|
-
export declare const BUF_LEN: number;
|
|
7
1
|
export declare const worldProjMatOffset = 0;
|
|
8
2
|
export declare const modelProjMatOffset: number;
|
|
9
3
|
export declare const mat4ByteLength = 64;
|
package/dist/constants.js
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { vector3 } from './utils.js';
|
|
2
|
-
|
|
3
|
-
export const positionOffset = 0;
|
|
4
|
-
export const colorOffset = 12; // 4 * 3
|
|
5
|
-
export const uvOffset = 28; // 4 * 8
|
|
6
|
-
export const drawingInstancesOffset = 36;
|
|
7
|
-
export const BUF_LEN = vertexSize / 4;
|
|
2
|
+
// TODO find a place to put this
|
|
8
3
|
export const worldProjMatOffset = 0;
|
|
9
4
|
export const modelProjMatOffset = 4 * 16;
|
|
10
5
|
export const mat4ByteLength = 64;
|
package/dist/geometry.d.ts
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { CircleGeometryParams, CubeGeometryParams, EmptyParams, Spline2dGeometryParams, SquareGeometryParams, Vector3, LineGeometryParams, TraceLinesParams } from './types.js';
|
|
2
|
+
import { Vertex } from './utils.js';
|
|
3
3
|
import { CubicBezierCurve2d, SplinePoint2d } from './graphics.js';
|
|
4
4
|
export declare abstract class Geometry<T extends EmptyParams> {
|
|
5
5
|
protected abstract wireframeOrder: number[];
|
|
6
6
|
protected abstract triangleOrder: number[];
|
|
7
7
|
protected abstract params: T;
|
|
8
8
|
protected vertices: Vector3[];
|
|
9
|
-
protected
|
|
9
|
+
protected topology: 'list' | 'strip';
|
|
10
10
|
constructor(vertices?: Vector3[], geometryType?: 'list' | 'strip');
|
|
11
|
-
|
|
11
|
+
getTopology(): "list" | "strip";
|
|
12
12
|
abstract recompute(): void;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
protected bufferFromOrder(order: number[], color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
16
|
-
getWireframeBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
17
|
-
getTriangleBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
13
|
+
getIndexes(wireframe: boolean): number[];
|
|
14
|
+
getVertices(): Vector3[];
|
|
18
15
|
}
|
|
19
16
|
export declare class PlaneGeometry extends Geometry<EmptyParams> {
|
|
20
17
|
protected params: {};
|
|
@@ -24,7 +21,6 @@ export declare class PlaneGeometry extends Geometry<EmptyParams> {
|
|
|
24
21
|
constructor(vertices: Vertex[]);
|
|
25
22
|
recompute(): void;
|
|
26
23
|
updateVertices(vertices: Vertex[]): void;
|
|
27
|
-
getTriangleBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
28
24
|
}
|
|
29
25
|
export declare class CubeGeometry extends Geometry<CubeGeometryParams> {
|
|
30
26
|
protected params: CubeGeometryParams;
|
|
@@ -41,14 +37,10 @@ export declare class SquareGeometry extends Geometry<SquareGeometryParams> {
|
|
|
41
37
|
protected wireframeOrder: number[];
|
|
42
38
|
protected triangleOrder: number[];
|
|
43
39
|
protected params: SquareGeometryParams;
|
|
44
|
-
constructor(width: number, height: number
|
|
45
|
-
setOffset(offset: Vector2): void;
|
|
46
|
-
getOffset(): Vector2;
|
|
47
|
-
setVertexColorMap(colorMap: VertexColorMap): void;
|
|
40
|
+
constructor(width: number, height: number);
|
|
48
41
|
setWidth(width: number): void;
|
|
49
42
|
setHeight(height: number): void;
|
|
50
43
|
recompute(): void;
|
|
51
|
-
getTriangleBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
52
44
|
}
|
|
53
45
|
export declare class BlankGeometry extends Geometry<EmptyParams> {
|
|
54
46
|
protected wireframeOrder: never[];
|
|
@@ -63,64 +55,54 @@ export declare class CircleGeometry extends Geometry<CircleGeometryParams> {
|
|
|
63
55
|
protected params: CircleGeometryParams;
|
|
64
56
|
constructor(radius: number, detail: number);
|
|
65
57
|
setRadius(radius: number): void;
|
|
66
|
-
private updateWireframeOrder;
|
|
67
|
-
private updateTriangleOrder;
|
|
68
58
|
recompute(): void;
|
|
69
59
|
}
|
|
70
60
|
export declare class Spline2dGeometry extends Geometry<Spline2dGeometryParams> {
|
|
71
61
|
protected wireframeOrder: number[];
|
|
72
62
|
protected triangleOrder: number[];
|
|
73
63
|
protected params: Spline2dGeometryParams;
|
|
74
|
-
constructor(points: SplinePoint2d[],
|
|
64
|
+
constructor(points: SplinePoint2d[], thickness: number, detail: number);
|
|
75
65
|
updateInterpolationStart(start: number): void;
|
|
76
66
|
updateInterpolationLimit(limit: number): void;
|
|
67
|
+
getInterpolationStart(): number;
|
|
68
|
+
getInterpolationLimit(): number;
|
|
69
|
+
getDistance(): number;
|
|
77
70
|
updatePoint(pointIndex: number, newPoint: SplinePoint2d): void;
|
|
78
71
|
updateThickness(thickness: number): void;
|
|
79
|
-
private getVertexCount;
|
|
80
|
-
getWireframeVertexCount(): number;
|
|
81
|
-
getTriangleVertexCount(): number;
|
|
82
72
|
getCurves(): CubicBezierCurve2d[];
|
|
73
|
+
getVertexInterpolations(): number[];
|
|
74
|
+
getCurveVertexIndices(): number[];
|
|
83
75
|
private computeCurves;
|
|
84
|
-
private updateWireframeOrder;
|
|
85
76
|
recompute(): void;
|
|
86
|
-
getWireframeBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
87
|
-
getTriangleBuffer(_: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
88
77
|
}
|
|
89
78
|
export declare class Line2dGeometry extends Geometry<LineGeometryParams> {
|
|
90
79
|
protected wireframeOrder: number[];
|
|
91
80
|
protected triangleOrder: number[];
|
|
92
81
|
protected params: LineGeometryParams;
|
|
93
|
-
constructor(pos: Vector3, to: Vector3, thickness: number
|
|
94
|
-
private generateBuffer;
|
|
95
|
-
getTriangleBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
96
|
-
getWireframeBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
82
|
+
constructor(pos: Vector3, to: Vector3, thickness: number);
|
|
97
83
|
recompute(): void;
|
|
98
84
|
}
|
|
99
85
|
export declare class Line3dGeometry extends Geometry<LineGeometryParams> {
|
|
100
86
|
protected wireframeOrder: number[];
|
|
101
87
|
protected triangleOrder: number[];
|
|
102
88
|
protected params: LineGeometryParams;
|
|
103
|
-
constructor(pos: Vector3, to: Vector3, thickness: number
|
|
104
|
-
private generateBuffer;
|
|
105
|
-
getTriangleBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
106
|
-
getWireframeBuffer(color: Color, vertexParamGenerator?: VertexParamGeneratorInfo): number[];
|
|
89
|
+
constructor(pos: Vector3, to: Vector3, thickness: number);
|
|
107
90
|
recompute(): void;
|
|
108
91
|
}
|
|
109
|
-
export declare class PolygonGeometry extends Geometry<
|
|
92
|
+
export declare class PolygonGeometry extends Geometry<EmptyParams> {
|
|
110
93
|
protected wireframeOrder: number[];
|
|
111
94
|
protected triangleOrder: number[];
|
|
112
|
-
protected params:
|
|
113
|
-
constructor(
|
|
95
|
+
protected params: {};
|
|
96
|
+
constructor(vertices: Vector3[]);
|
|
114
97
|
recompute(): void;
|
|
115
|
-
getTriangleBuffer(color: Color): number[];
|
|
116
98
|
}
|
|
117
|
-
export declare class TraceLines2dGeometry extends Geometry<
|
|
118
|
-
protected wireframeOrder:
|
|
99
|
+
export declare class TraceLines2dGeometry extends Geometry<TraceLinesParams> {
|
|
100
|
+
protected wireframeOrder: number[];
|
|
119
101
|
protected triangleOrder: never[];
|
|
120
102
|
protected params: TraceLinesParams;
|
|
121
103
|
constructor(maxLen?: number);
|
|
122
104
|
recompute(): void;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
addVertex(vert:
|
|
105
|
+
getVertexCount(): number;
|
|
106
|
+
getOrder(_: boolean): readonly [Vector3[], number[]];
|
|
107
|
+
addVertex(vert: Vector3): void;
|
|
126
108
|
}
|