@tolokoban/tgd 2.1.3 → 2.2.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 +9 -0
- package/lib/dist/painter/lod/lod.d.ts +8 -0
- package/lib/dist/painter/lod/lod.d.ts.map +1 -1
- package/lib/dist/painter/lod/lod.js +4 -2
- package/lib/dist/painter/lod/octree.d.ts +1 -1
- package/lib/dist/painter/lod/octree.d.ts.map +1 -1
- package/lib/dist/painter/lod/octree.js +49 -29
- package/lib/dist/uniform/ubo-camera.d.ts +11 -1
- package/lib/dist/uniform/ubo-camera.d.ts.map +1 -1
- package/lib/dist/uniform/ubo-camera.js +19 -2
- package/lib/dist/version.d.ts +1 -1
- package/lib/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,6 +20,15 @@ npm start
|
|
|
20
20
|
|
|
21
21
|
## Release notes
|
|
22
22
|
|
|
23
|
+
### v2.2.0
|
|
24
|
+
|
|
25
|
+
- **TgdPainterLOD Quadtree mode**: Added a `mode` option (`"xyz"` | `"xz"`) to `TgdPainterLODOptions`. When set to `"xz"`, the LOD uses a Quadtree instead of an Octree, subdividing only along the X and Z axes (Y axis is never split). Defaults to `"xyz"`.
|
|
26
|
+
- **TgdPainterLOD mutable `surfaceThreshold`**: `surfaceThreshold` is now a public property that can be changed after construction.
|
|
27
|
+
|
|
28
|
+
### v2.1.4
|
|
29
|
+
|
|
30
|
+
- **TgdUniformBufferObjectCamera new uniforms**: Added `uniScreenSize` (`vec2`, width/height in pixels), `uniScreenAspectRatio` (`float`, width/height), and `uniScreenAspectRatioInverse` (`float`, height/width) to the camera UBO.
|
|
31
|
+
|
|
23
32
|
### v2.1.3
|
|
24
33
|
|
|
25
34
|
- **TgdPainterMesh.computeBoundingBox fix**: Now correctly uses `geometry.attPosition` instead of the hardcoded `"POSITION"` attribute name, fixing bounding box computation for geometries with a custom position attribute name.
|
|
@@ -4,6 +4,12 @@ import { type TgdMat4 } from "../../math";
|
|
|
4
4
|
import type { ArrayNumber3 } from "../../types";
|
|
5
5
|
import { TgdPainter } from "../painter";
|
|
6
6
|
export interface TgdPainterLODOptions {
|
|
7
|
+
/**
|
|
8
|
+
* If mode is "xz", we don't use an Octree, but a Quadtree, and we never cut along axis Y.
|
|
9
|
+
*
|
|
10
|
+
* Defaults to `xyz`.
|
|
11
|
+
*/
|
|
12
|
+
mode?: "xyz" | "xz";
|
|
7
13
|
bbox: Readonly<{
|
|
8
14
|
min: Readonly<ArrayNumber3>;
|
|
9
15
|
max: Readonly<ArrayNumber3>;
|
|
@@ -47,6 +53,8 @@ export declare class TgdPainterLOD extends TgdPainter implements TgdInterfaceTra
|
|
|
47
53
|
readonly transfo: Readonly<{
|
|
48
54
|
matrix: TgdMat4;
|
|
49
55
|
}>;
|
|
56
|
+
surfaceThreshold: number;
|
|
57
|
+
private readonly mode;
|
|
50
58
|
private readonly group;
|
|
51
59
|
private readonly cache;
|
|
52
60
|
private readonly paintersToDelete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lod.d.ts","sourceRoot":"","sources":["../../../src/painter/lod/lod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,QAAQ,CAAC;QACX,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;QAC3B,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAC9B,CAAC,CAAA;IACF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;CAChG;AAED,qBAAa,aAAc,SAAQ,UAAW,YAAW,yBAAyB;
|
|
1
|
+
{"version":3,"file":"lod.d.ts","sourceRoot":"","sources":["../../../src/painter/lod/lod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC,MAAM,WAAW,oBAAoB;IACjC;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,QAAQ,CAAC;QACX,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;QAC3B,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAC9B,CAAC,CAAA;IACF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;CAChG;AAED,qBAAa,aAAc,SAAQ,UAAW,YAAW,yBAAyB;aAW1D,OAAO,EAAE,UAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX5B,SAAgB,OAAO,EAAE,QAAQ,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAmB;IAClE,gBAAgB,EAAE,MAAM,CAAA;IAE/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0D;IAChF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,iBAAiB,CAAQ;gBAGb,OAAO,EAAE,UAAU,EAClB,OAAO,EAAE,oBAAoB;IAOlD,MAAM,IAAI,IAAI;IAQd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;YAK1B,aAAa;IAkC3B,OAAO,CAAC,cAAc;IAStB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;CAGzB"}
|
|
@@ -13,6 +13,8 @@ export class TgdPainterLOD extends TgdPainter {
|
|
|
13
13
|
this.cache = new OctreeCache();
|
|
14
14
|
this.paintersToDelete = new Set();
|
|
15
15
|
this.isComputingOctree = false;
|
|
16
|
+
this.surfaceThreshold = options.surfaceThreshold ?? .25;
|
|
17
|
+
this.mode = options.mode ?? "xyz";
|
|
16
18
|
}
|
|
17
19
|
delete() {
|
|
18
20
|
for (const painter of this.paintersToDelete.values()) {
|
|
@@ -31,7 +33,7 @@ export class TgdPainterLOD extends TgdPainter {
|
|
|
31
33
|
this.isComputingOctree = true;
|
|
32
34
|
try {
|
|
33
35
|
const { group, context, options } = this;
|
|
34
|
-
const candidates = listBBoxes(context.camera, options.bbox, options.subdivisions,
|
|
36
|
+
const candidates = listBBoxes(context.camera, options.bbox, options.subdivisions, this.surfaceThreshold, this.mode);
|
|
35
37
|
const promises = [];
|
|
36
38
|
for (const [x, y, z, level] of candidates) {
|
|
37
39
|
promises.push(this.getMeshPromise(x, y, z, level));
|
|
@@ -65,4 +67,4 @@ export class TgdPainterLOD extends TgdPainter {
|
|
|
65
67
|
console.debug(caption ?? `${this.name} (id: ${this.id}, active: ${this.active})`);
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhaW50ZXIvbG9kL2xvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBK0NyQyxNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFVekMsWUFDb0IsT0FBbUIsRUFDbEIsT0FBNkI7UUFFOUMsS0FBSyxFQUFFLENBQUE7UUFIUyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBWGxDLFlBQU8sR0FBa0MsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQUl4RCxVQUFLLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtRQUM3QixVQUFLLEdBQUcsSUFBSSxXQUFXLEVBQXdDLENBQUE7UUFDL0QscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQTtRQUNqRCxzQkFBaUIsR0FBRyxLQUFLLENBQUE7UUFPN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUE7UUFDdkQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQTtJQUNyQyxDQUFDO0lBRUQsTUFBTTtRQUNGLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDbkQsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENB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
|
|
@@ -4,5 +4,5 @@ import type { ArrayNumber3, ArrayNumber4 } from "../../types";
|
|
|
4
4
|
export declare function listBBoxes(camera: TgdCamera, bbox: Readonly<{
|
|
5
5
|
min: Readonly<ArrayNumber3 | TgdVec3>;
|
|
6
6
|
max: Readonly<ArrayNumber3 | TgdVec3>;
|
|
7
|
-
}>, levels: number, surfaceThreshold: number): ArrayNumber4[];
|
|
7
|
+
}>, levels: number, surfaceThreshold: number, mode: "xyz" | "xz"): ArrayNumber4[];
|
|
8
8
|
//# sourceMappingURL=octree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"octree.d.ts","sourceRoot":"","sources":["../../../src/painter/lod/octree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI5D,wBAAgB,UAAU,CACtB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,QAAQ,CAAC;IACX,GAAG,EAAE,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,CAAA;IACrC,GAAG,EAAE,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,CAAA;CACxC,CAAC,EACF,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"octree.d.ts","sourceRoot":"","sources":["../../../src/painter/lod/octree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI5D,wBAAgB,UAAU,CACtB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,QAAQ,CAAC;IACX,GAAG,EAAE,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,CAAA;IACrC,GAAG,EAAE,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,CAAA;CACxC,CAAC,EACF,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,KAAK,GAAG,IAAI,GACnB,YAAY,EAAE,CAIhB"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { TgdConsole } from "./../../debug/index.js";
|
|
2
2
|
const debugListBBox = TgdConsole.memo();
|
|
3
|
-
export function listBBoxes(camera, bbox, levels, surfaceThreshold) {
|
|
3
|
+
export function listBBoxes(camera, bbox, levels, surfaceThreshold, mode) {
|
|
4
4
|
const result = [];
|
|
5
|
-
recursiveListBBoxes(result, camera, bbox, levels, 0, 0, 0, 0, surfaceThreshold);
|
|
6
|
-
// debugListBBox(result.length, (out) =>
|
|
7
|
-
// out.add(result.map((item) => JSON.stringify(item)).join("\n")).debug()
|
|
8
|
-
// )
|
|
5
|
+
recursiveListBBoxes(result, camera, bbox, levels, 0, 0, 0, 0, surfaceThreshold, mode);
|
|
9
6
|
return result;
|
|
10
7
|
}
|
|
11
|
-
|
|
12
|
-
function recursiveListBBoxes(result, camera, bbox, levels, x, y, z, level, surfaceThreshold) {
|
|
8
|
+
function recursiveListBBoxes(result, camera, bbox, levels, x, y, z, level, surfaceThreshold, mode) {
|
|
13
9
|
const visibility = camera.computeBoundingBoxVisibleSurface(bbox);
|
|
14
10
|
if (visibility < 1e-12) {
|
|
15
11
|
return;
|
|
@@ -18,31 +14,55 @@ function recursiveListBBoxes(result, camera, bbox, levels, x, y, z, level, surfa
|
|
|
18
14
|
result.push([x, y, z, level]);
|
|
19
15
|
return;
|
|
20
16
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
for (let
|
|
17
|
+
if (mode === "xyz") {
|
|
18
|
+
// We split the BBox in 8 sub boxes.
|
|
19
|
+
const [x0, y0, z0] = bbox.min;
|
|
20
|
+
const [x2, y2, z2] = bbox.max;
|
|
21
|
+
const x1 = (x0 + x2) / 2;
|
|
22
|
+
const y1 = (y0 + y2) / 2;
|
|
23
|
+
const z1 = (z0 + z2) / 2;
|
|
24
|
+
const nextLevel = level + 1;
|
|
25
|
+
const nextX = x * 2;
|
|
26
|
+
const nextY = y * 2;
|
|
27
|
+
const nextZ = z * 2;
|
|
28
|
+
const xMin = [x0, x1];
|
|
29
|
+
const xMax = [x1, x2];
|
|
30
|
+
const yMin = [y0, y1];
|
|
31
|
+
const yMax = [y1, y2];
|
|
32
|
+
const zMin = [z0, z1];
|
|
33
|
+
const zMax = [z1, z2];
|
|
34
|
+
for (let Z = 0; Z < 2; Z++) {
|
|
35
|
+
for (let Y = 0; Y < 2; Y++) {
|
|
36
|
+
for (let X = 0; X < 2; X++) {
|
|
37
|
+
recursiveListBBoxes(result, camera, {
|
|
38
|
+
min: [xMin[X], yMin[Y], zMin[Z]],
|
|
39
|
+
max: [xMax[X], yMax[Y], zMax[Z]],
|
|
40
|
+
}, levels, nextX + X, nextY + Y, nextZ + Z, nextLevel, surfaceThreshold, mode);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (mode === "xz") {
|
|
46
|
+
// We split the BBox in 4 sub boxes.
|
|
47
|
+
const [x0, y0, z0] = bbox.min;
|
|
48
|
+
const [x2, y2, z2] = bbox.max;
|
|
49
|
+
const x1 = (x0 + x2) / 2;
|
|
50
|
+
const z1 = (z0 + z2) / 2;
|
|
51
|
+
const nextLevel = level + 1;
|
|
52
|
+
const nextX = x * 2;
|
|
53
|
+
const nextZ = z * 2;
|
|
54
|
+
const xMin = [x0, x1];
|
|
55
|
+
const xMax = [x1, x2];
|
|
56
|
+
const zMin = [z0, z1];
|
|
57
|
+
const zMax = [z1, z2];
|
|
58
|
+
for (let Z = 0; Z < 2; Z++) {
|
|
39
59
|
for (let X = 0; X < 2; X++) {
|
|
40
60
|
recursiveListBBoxes(result, camera, {
|
|
41
|
-
min: [xMin[X],
|
|
42
|
-
max: [xMax[X],
|
|
43
|
-
}, levels, nextX + X,
|
|
61
|
+
min: [xMin[X], y0, zMin[Z]],
|
|
62
|
+
max: [xMax[X], y2, zMax[Z]],
|
|
63
|
+
}, levels, nextX + X, 0, nextZ + Z, nextLevel, surfaceThreshold, mode);
|
|
44
64
|
}
|
|
45
65
|
}
|
|
46
66
|
}
|
|
47
67
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2N0cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhaW50ZXIvbG9kL29jdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBSXZDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUV2QyxNQUFNLFVBQVUsVUFBVSxDQUN0QixNQUFpQixFQUNqQixJQUdFLEVBQ0YsTUFBYyxFQUNkLGdCQUF3QixFQUN4QixJQUFrQjtJQUVsQixNQUFNLE1BQU0sR0FBbUIsRUFBRSxDQUFBO0lBQ2pDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDckYsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQ3hCLE1BQXNCLEVBQ3RCLE1BQWlCLEVBQ2pCLElBR0UsRUFDRixNQUFjLEVBQ2QsQ0FBUyxFQUNULENBQVMsRUFDVCxDQUFTLEVBQ1QsS0FBYSxFQUNiLGdCQUF3QixFQUN4QixJQUFrQjtJQUVsQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEUsSUFBSSxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDckIsT0FBTTtJQUNWLENBQUM7SUFFRCxJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzdCLE9BQU07SUFDVixDQUFDO0lBRUQsSUFBSSxJQUFJLEtB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
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import type { TgdCamera } from "../camera";
|
|
2
2
|
import type { TgdContext } from "../context";
|
|
3
3
|
import { TgdUniformBufferObject } from "./";
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
- `mat4 uniModelViewMatrix`:
|
|
6
|
+
- `mat4 uniProjectionMatrix`:
|
|
7
|
+
- `vec3 uniCameraPosition`: position of the camera.
|
|
8
|
+
- `vec2 uniPixel`: Size of a pixel in camera space units.
|
|
9
|
+
- `vec2 uniScreenSize`: width and height of the screen in pixels.
|
|
10
|
+
- `float uniScreenAspectRatio`: width / height
|
|
11
|
+
- `float uniScreenAspectRatioInverse`: height / width
|
|
12
|
+
*/
|
|
13
|
+
export declare class TgdUniformBufferObjectCamera extends TgdUniformBufferObject<"uniModelViewMatrix" | "uniProjectionMatrix" | "uniCameraPosition" | "uniPixel" | "uniScreenSize" | "uniScreenAspectRatio" | "uniScreenAspectRatioInverse"> {
|
|
5
14
|
camera: TgdCamera;
|
|
6
15
|
private readonly uniPixel;
|
|
16
|
+
private readonly uniScreenSize;
|
|
7
17
|
constructor(context: TgdContext);
|
|
8
18
|
updateData(): void;
|
|
9
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ubo-camera.d.ts","sourceRoot":"","sources":["../../src/uniform/ubo-camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD,qBAAa,4BAA6B,SAAQ,sBAAsB,CACpE,oBAAoB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"ubo-camera.d.ts","sourceRoot":"","sources":["../../src/uniform/ubo-camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD;;;;;;;;GAQG;AACH,qBAAa,4BAA6B,SAAQ,sBAAsB,CACpE,oBAAoB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,UAAU,GAAG,eAAe,GAAG,sBAAsB,GAAG,6BAA6B,CAC7J;IACU,MAAM,EAAE,SAAS,CAAA;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;gBAEtC,OAAO,EAAE,UAAU;IAe/B,UAAU;CAcb"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { TgdVec2 } from "./../math/index.js";
|
|
2
2
|
import { TgdUniformBufferObject } from ".//index.js";
|
|
3
|
+
/**
|
|
4
|
+
- `mat4 uniModelViewMatrix`:
|
|
5
|
+
- `mat4 uniProjectionMatrix`:
|
|
6
|
+
- `vec3 uniCameraPosition`: position of the camera.
|
|
7
|
+
- `vec2 uniPixel`: Size of a pixel in camera space units.
|
|
8
|
+
- `vec2 uniScreenSize`: width and height of the screen in pixels.
|
|
9
|
+
- `float uniScreenAspectRatio`: width / height
|
|
10
|
+
- `float uniScreenAspectRatioInverse`: height / width
|
|
11
|
+
*/
|
|
3
12
|
export class TgdUniformBufferObjectCamera extends TgdUniformBufferObject {
|
|
4
13
|
constructor(context) {
|
|
5
14
|
super(context, {
|
|
@@ -8,19 +17,27 @@ export class TgdUniformBufferObjectCamera extends TgdUniformBufferObject {
|
|
|
8
17
|
uniProjectionMatrix: "mat4",
|
|
9
18
|
uniCameraPosition: "vec3",
|
|
10
19
|
uniPixel: "vec2",
|
|
20
|
+
uniScreenSize: "vec2",
|
|
21
|
+
uniScreenAspectRatio: "float",
|
|
22
|
+
uniScreenAspectRatioInverse: "float"
|
|
11
23
|
},
|
|
12
24
|
});
|
|
13
25
|
this.uniPixel = new TgdVec2(1, 1);
|
|
26
|
+
this.uniScreenSize = new TgdVec2(1, 1);
|
|
14
27
|
this.camera = context.camera;
|
|
15
28
|
}
|
|
16
29
|
updateData() {
|
|
17
|
-
const { camera, values, uniPixel } = this;
|
|
30
|
+
const { camera, values, uniPixel, uniScreenSize } = this;
|
|
18
31
|
values.uniModelViewMatrix = camera.matrixModelView;
|
|
19
32
|
values.uniProjectionMatrix = camera.matrixProjection;
|
|
20
33
|
values.uniCameraPosition = camera.transfo.actualPosition;
|
|
21
34
|
uniPixel.reset(1 / camera.screenWidth, 1 / camera.screenHeight);
|
|
22
35
|
values.uniPixel = uniPixel;
|
|
36
|
+
uniScreenSize.reset(camera.screenWidth, camera.screenHeight);
|
|
37
|
+
values.uniScreenSize = uniScreenSize;
|
|
38
|
+
values.uniScreenAspectRatio = camera.screenAspectRatio;
|
|
39
|
+
values.uniScreenAspectRatioInverse = 1 / camera.screenAspectRatio;
|
|
23
40
|
super.updateData();
|
|
24
41
|
}
|
|
25
42
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWJvLWNhbWVyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmb3JtL3Viby1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFckQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsc0JBRWpEO0lBTUcsWUFBWSxPQUFtQjtRQUMzQixLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ1gsUUFBUSxFQUFFO2dCQUNOLGtCQUFrQixFQUFFLE1BQU07Z0JBQzFCLG1CQUFtQixFQUFFLE1BQU07Z0JBQzNCLGlCQUFpQixFQUFFLE1BQU07Z0JBQ3pCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixhQUFhLEVBQUUsTUFBTTtnQkFDckIsb0JBQW9CLEVBQUUsT0FBTztnQkFDN0IsMkJBQTJCLEVBQUUsT0FBTzthQUN2QztTQUNKLENBQUMsQ0FBQTtRQWRXLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFjOUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxVQUFVO1FBQ04sTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUN4RCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQTtRQUNsRCxNQUFNLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFBO1FBQ3BELE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQTtRQUN4RCxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDL0QsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDMUIsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM1RCxNQUFNLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNwQyxNQUFNLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFBO1FBQ3RELE1BQU0sQ0FBQywyQkFBMkIsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFBO1FBRWpFLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0NBQ0oifQ==
|
package/lib/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "2.
|
|
1
|
+
export declare const version = "2.2.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = "2.
|
|
1
|
+
export const version = "2.2.0";
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUEifQ==
|