@tolokoban/tgd 2.0.28 → 2.0.30
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/lib/dist/camera/camera-orthographic.d.ts.map +1 -1
- package/lib/dist/camera/camera-orthographic.js +2 -1
- package/lib/dist/camera/camera-perspective.d.ts.map +1 -1
- package/lib/dist/camera/camera-perspective.js +4 -10
- package/lib/dist/canvas/gizmo/gizmo.js +2 -2
- package/lib/dist/canvas/landscape/landscape.js +2 -2
- package/lib/dist/color/color.d.ts +22 -7
- package/lib/dist/color/color.d.ts.map +1 -1
- package/lib/dist/color/color.js +59 -8
- package/lib/dist/color/index.d.ts +1 -0
- package/lib/dist/color/index.d.ts.map +1 -1
- package/lib/dist/color/index.js +2 -1
- package/lib/dist/color/utils.d.ts +12 -0
- package/lib/dist/color/utils.d.ts.map +1 -0
- package/lib/dist/color/utils.js +21 -0
- package/lib/dist/context/context.d.ts +14 -31
- package/lib/dist/context/context.d.ts.map +1 -1
- package/lib/dist/context/context.js +54 -69
- package/lib/dist/factory/mesh-glb.js +2 -2
- package/lib/dist/filter/hue-rotation.d.ts.map +1 -1
- package/lib/dist/filter/hue-rotation.js +1 -1
- package/lib/dist/filter/zoom.d.ts.map +1 -1
- package/lib/dist/filter/zoom.js +1 -1
- package/lib/dist/geometry/gltf.d.ts +12 -0
- package/lib/dist/geometry/gltf.d.ts.map +1 -0
- package/lib/dist/geometry/gltf.js +36 -0
- package/lib/dist/geometry/index.d.ts +2 -0
- package/lib/dist/geometry/index.d.ts.map +1 -1
- package/lib/dist/geometry/index.js +3 -1
- package/lib/dist/geometry/tools/index.d.ts +2 -0
- package/lib/dist/geometry/tools/index.d.ts.map +1 -0
- package/lib/dist/geometry/tools/index.js +2 -0
- package/lib/dist/geometry/tools/marching-cubes/data.d.ts +64 -0
- package/lib/dist/geometry/tools/marching-cubes/data.d.ts.map +1 -0
- package/lib/dist/geometry/tools/marching-cubes/data.js +361 -0
- package/lib/dist/geometry/tools/marching-cubes/index.d.ts +3 -0
- package/lib/dist/geometry/tools/marching-cubes/index.d.ts.map +1 -0
- package/lib/dist/geometry/tools/marching-cubes/index.js +3 -0
- package/lib/dist/geometry/tools/marching-cubes/marching-cubes.d.ts +29 -0
- package/lib/dist/geometry/tools/marching-cubes/marching-cubes.d.ts.map +1 -0
- package/lib/dist/geometry/tools/marching-cubes/marching-cubes.js +245 -0
- package/lib/dist/index.d.ts +3 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +4 -1
- package/lib/dist/loader/binary.d.ts.map +1 -1
- package/lib/dist/loader/binary.js +3 -1
- package/lib/dist/material/face-orientation.d.ts +34 -0
- package/lib/dist/material/face-orientation.d.ts.map +1 -0
- package/lib/dist/material/face-orientation.js +68 -0
- package/lib/dist/material/flat.d.ts.map +1 -1
- package/lib/dist/material/flat.js +1 -1
- package/lib/dist/material/ghost.d.ts +2 -2
- package/lib/dist/material/ghost.d.ts.map +1 -1
- package/lib/dist/material/ghost.js +1 -1
- package/lib/dist/material/hull.d.ts +14 -1
- package/lib/dist/material/hull.d.ts.map +1 -1
- package/lib/dist/material/hull.js +18 -6
- package/lib/dist/material/index.d.ts +2 -0
- package/lib/dist/material/index.d.ts.map +1 -1
- package/lib/dist/material/index.js +3 -1
- package/lib/dist/material/material.d.ts +7 -2
- package/lib/dist/material/material.d.ts.map +1 -1
- package/lib/dist/material/material.js +9 -1
- package/lib/dist/material/toon.d.ts +38 -0
- package/lib/dist/material/toon.d.ts.map +1 -0
- package/lib/dist/material/toon.js +95 -0
- package/lib/dist/math/mat4.d.ts +1 -0
- package/lib/dist/math/mat4.d.ts.map +1 -1
- package/lib/dist/math/mat4.js +18 -1
- package/lib/dist/math/transfo.d.ts.map +1 -1
- package/lib/dist/math/transfo.js +13 -4
- package/lib/dist/math/vec3.js +1 -1
- package/lib/dist/painter/axes/axes.d.ts +4 -0
- package/lib/dist/painter/axes/axes.d.ts.map +1 -1
- package/lib/dist/painter/axes/axes.js +14 -1
- package/lib/dist/painter/background-with-depth/background-with-depth.d.ts.map +1 -1
- package/lib/dist/painter/background-with-depth/background-with-depth.js +1 -1
- package/lib/dist/painter/framebuffer-msaa.d.ts +87 -0
- package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -0
- package/lib/dist/painter/framebuffer-msaa.js +241 -0
- package/lib/dist/painter/framebuffer.js +11 -5
- package/lib/dist/painter/group.d.ts +9 -3
- package/lib/dist/painter/group.d.ts.map +1 -1
- package/lib/dist/painter/group.js +44 -6
- package/lib/dist/painter/index.d.ts +5 -1
- package/lib/dist/painter/index.d.ts.map +1 -1
- package/lib/dist/painter/index.js +6 -2
- package/lib/dist/painter/lines/index.d.ts +2 -0
- package/lib/dist/painter/lines/index.d.ts.map +1 -0
- package/lib/dist/painter/lines/index.js +2 -0
- package/lib/dist/painter/lines/lines.d.ts +34 -0
- package/lib/dist/painter/lines/lines.d.ts.map +1 -0
- package/lib/dist/painter/lines/lines.js +98 -0
- package/lib/dist/painter/mesh/gltf/gltf.d.ts +2 -2
- package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/painter/mesh/gltf/gltf.js +6 -4
- package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
- package/lib/dist/painter/mesh/mesh/mesh.js +22 -16
- package/lib/dist/painter/node/node.d.ts +1 -1
- package/lib/dist/painter/node/node.d.ts.map +1 -1
- package/lib/dist/painter/node/node.js +1 -1
- package/lib/dist/painter/painter.d.ts +2 -2
- package/lib/dist/painter/painter.d.ts.map +1 -1
- package/lib/dist/painter/painter.js +2 -2
- package/lib/dist/painter/points-cloud/index.d.ts +2 -0
- package/lib/dist/painter/points-cloud/index.d.ts.map +1 -0
- package/lib/dist/painter/points-cloud/index.js +2 -0
- package/lib/dist/painter/points-cloud/points-cloud.d.ts +49 -0
- package/lib/dist/painter/points-cloud/points-cloud.d.ts.map +1 -0
- package/lib/dist/painter/points-cloud/points-cloud.js +118 -0
- package/lib/dist/painter/segments/capsule.d.ts +11 -0
- package/lib/dist/painter/segments/capsule.d.ts.map +1 -0
- package/lib/dist/painter/segments/capsule.js +109 -0
- package/lib/dist/painter/segments/segments.d.ts +22 -27
- package/lib/dist/painter/segments/segments.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments.js +134 -140
- package/lib/dist/painter/segments.backup/index.d.ts +2 -0
- package/lib/dist/painter/segments.backup/index.d.ts.map +1 -0
- package/lib/dist/painter/segments.backup/index.js +2 -0
- package/lib/dist/painter/segments.backup/segments.d.ts +95 -0
- package/lib/dist/painter/segments.backup/segments.d.ts.map +1 -0
- package/lib/dist/painter/segments.backup/segments.frag +22 -0
- package/lib/dist/painter/segments.backup/segments.js +223 -0
- package/lib/dist/painter/segments.backup/segments.vert +121 -0
- package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
- package/lib/dist/painter/skybox/skybox.js +4 -3
- package/lib/dist/painter/state/state.d.ts.map +1 -1
- package/lib/dist/painter/state/state.js +1 -1
- package/lib/dist/painter/x-ray/index.d.ts +2 -0
- package/lib/dist/painter/x-ray/index.d.ts.map +1 -0
- package/lib/dist/painter/x-ray/index.js +2 -0
- package/lib/dist/painter/x-ray/x-ray.d.ts +20 -0
- package/lib/dist/painter/x-ray/x-ray.d.ts.map +1 -0
- package/lib/dist/painter/x-ray/x-ray.js +60 -0
- package/lib/dist/parser/gltf/gltf.d.ts +4 -4
- package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/parser/gltf/gltf.js +29 -17
- package/lib/dist/program/program.js +2 -2
- package/lib/dist/sdf/_common.d.ts +9 -0
- package/lib/dist/sdf/_common.d.ts.map +1 -0
- package/lib/dist/sdf/_common.js +23 -0
- package/lib/dist/sdf/capsule.d.ts +3 -0
- package/lib/dist/sdf/capsule.d.ts.map +1 -0
- package/lib/dist/sdf/capsule.js +24 -0
- package/lib/dist/sdf/index.d.ts +3 -0
- package/lib/dist/sdf/index.d.ts.map +1 -0
- package/lib/dist/sdf/index.js +3 -0
- package/lib/dist/sdf/sphere.d.ts +3 -0
- package/lib/dist/sdf/sphere.d.ts.map +1 -0
- package/lib/dist/sdf/sphere.js +7 -0
- package/lib/dist/sound.d.ts +8 -0
- package/lib/dist/sound.d.ts.map +1 -0
- package/lib/dist/sound.js +43 -0
- package/lib/dist/texture/texture-cube.d.ts +2 -3
- package/lib/dist/texture/texture-cube.d.ts.map +1 -1
- package/lib/dist/texture/texture-cube.js +14 -19
- package/lib/dist/texture/texture2d.d.ts +3 -2
- package/lib/dist/texture/texture2d.d.ts.map +1 -1
- package/lib/dist/texture/texture2d.js +56 -19
- package/lib/dist/utils/action/camera.d.ts.map +1 -1
- package/lib/dist/utils/action/camera.js +1 -2
- package/lib/dist/utils/canvas.d.ts +5 -4
- package/lib/dist/utils/canvas.d.ts.map +1 -1
- package/lib/dist/utils/canvas.js +6 -3
- package/lib/dist/utils/framebuffer.d.ts +1 -0
- package/lib/dist/utils/framebuffer.d.ts.map +1 -1
- package/lib/dist/utils/framebuffer.js +19 -1
- package/lib/dist/vao/vao.d.ts +2 -1
- package/lib/dist/vao/vao.d.ts.map +1 -1
- package/lib/dist/vao/vao.js +23 -1
- package/lib/dist/wasm/code.d.ts +165 -0
- package/lib/dist/wasm/code.d.ts.map +1 -0
- package/lib/dist/wasm/code.js +605 -0
- package/lib/dist/wasm/flow.d.ts +31 -0
- package/lib/dist/wasm/flow.d.ts.map +1 -0
- package/lib/dist/wasm/flow.js +69 -0
- package/lib/dist/wasm/function.d.ts +5 -0
- package/lib/dist/wasm/function.d.ts.map +1 -0
- package/lib/dist/wasm/function.js +36 -0
- package/lib/dist/wasm/index.d.ts +9 -0
- package/lib/dist/wasm/index.d.ts.map +1 -0
- package/lib/dist/wasm/index.js +31 -0
- package/lib/dist/wasm/local.d.ts +9 -0
- package/lib/dist/wasm/local.d.ts.map +1 -0
- package/lib/dist/wasm/local.js +14 -0
- package/lib/dist/wasm/memory.d.ts +13 -0
- package/lib/dist/wasm/memory.d.ts.map +1 -0
- package/lib/dist/wasm/memory.js +16 -0
- package/lib/dist/wasm/module.d.ts +4 -0
- package/lib/dist/wasm/module.d.ts.map +1 -0
- package/lib/dist/wasm/module.js +22 -0
- package/lib/dist/wasm/types.d.ts +22 -0
- package/lib/dist/wasm/types.d.ts.map +1 -0
- package/lib/dist/wasm/types.js +2 -0
- package/lib/dist/wasm/wast.d.ts +2 -0
- package/lib/dist/wasm/wast.d.ts.map +1 -0
- package/lib/dist/wasm/wast.js +105863 -0
- package/lib/dist/webgl/texture/texture2d.js +3 -3
- package/package.json +1 -1
- package/lib/dist/camera/camera-node.d.ts +0 -16
- package/lib/dist/camera/camera-node.d.ts.map +0 -1
- package/lib/dist/camera/camera-node.js +0 -17
- package/lib/dist/painter/background-with-depth/background.d.ts +0 -55
- package/lib/dist/painter/background-with-depth/background.d.ts.map +0 -1
- package/lib/dist/painter/background-with-depth/background.js +0 -99
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class TgdTextureCube {
|
|
2
2
|
constructor(context, options) {
|
|
3
3
|
this.context = context;
|
|
4
4
|
this._width = 0;
|
|
5
5
|
this._height = 0;
|
|
6
|
-
this.numberOfImagesToLoad = 6;
|
|
7
6
|
const { gl } = context;
|
|
8
7
|
const texture = gl.createTexture();
|
|
9
8
|
if (!texture)
|
|
10
9
|
throw new Error("Unable to create a WebGLTexture!");
|
|
11
10
|
this.texture = texture;
|
|
11
|
+
const flipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);
|
|
12
12
|
this.loadImage(gl.TEXTURE_CUBE_MAP_POSITIVE_X, options.imagePosX);
|
|
13
13
|
this.loadImage(gl.TEXTURE_CUBE_MAP_NEGATIVE_X, options.imageNegX);
|
|
14
14
|
this.loadImage(gl.TEXTURE_CUBE_MAP_POSITIVE_Y, options.imagePosY);
|
|
15
15
|
this.loadImage(gl.TEXTURE_CUBE_MAP_NEGATIVE_Y, options.imageNegY);
|
|
16
16
|
this.loadImage(gl.TEXTURE_CUBE_MAP_POSITIVE_Z, options.imagePosZ);
|
|
17
17
|
this.loadImage(gl.TEXTURE_CUBE_MAP_NEGATIVE_Z, options.imageNegZ);
|
|
18
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);
|
|
19
|
+
gl.generateMipmap(gl.TEXTURE_CUBE_MAP);
|
|
20
|
+
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
|
|
18
21
|
}
|
|
19
22
|
delete() {
|
|
20
23
|
this.context.gl.deleteTexture(this.texture);
|
|
21
24
|
}
|
|
22
|
-
get ready() {
|
|
23
|
-
return this.numberOfImagesToLoad === 0;
|
|
24
|
-
}
|
|
25
25
|
get width() {
|
|
26
26
|
return this._width;
|
|
27
27
|
}
|
|
@@ -32,13 +32,14 @@ export class TgdTextureCubeImpl {
|
|
|
32
32
|
const { gl } = this.context;
|
|
33
33
|
gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.texture);
|
|
34
34
|
}
|
|
35
|
+
unbind() {
|
|
36
|
+
const { gl } = this.context;
|
|
37
|
+
gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);
|
|
38
|
+
}
|
|
35
39
|
activate(unit, program, uniformName) {
|
|
36
|
-
|
|
37
|
-
return;
|
|
38
|
-
const { context, texture } = this;
|
|
39
|
-
const { gl } = context;
|
|
40
|
+
const { gl } = this.context;
|
|
40
41
|
gl.activeTexture(gl.TEXTURE0 + unit);
|
|
41
|
-
|
|
42
|
+
this.bind();
|
|
42
43
|
program.uniform1i(uniformName, unit);
|
|
43
44
|
}
|
|
44
45
|
loadImage(target, image) {
|
|
@@ -53,17 +54,11 @@ export class TgdTextureCubeImpl {
|
|
|
53
54
|
else if (this._width !== width || this._height !== height) {
|
|
54
55
|
throw new Error(`Images in a CubeMap must all have the same size, but we got ${this._width}×${this._height} and ${width}×${height}!`);
|
|
55
56
|
}
|
|
56
|
-
const { context
|
|
57
|
+
const { context } = this;
|
|
57
58
|
const { gl } = context;
|
|
58
|
-
|
|
59
|
+
this.bind();
|
|
59
60
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, image instanceof Image);
|
|
60
61
|
gl.texImage2D(target, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
|
|
61
|
-
this.numberOfImagesToLoad--;
|
|
62
|
-
if (this.numberOfImagesToLoad === 0) {
|
|
63
|
-
gl.generateMipmap(gl.TEXTURE_CUBE_MAP);
|
|
64
|
-
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
|
|
65
|
-
context.paint();
|
|
66
|
-
}
|
|
67
62
|
}
|
|
68
63
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZS1jdWJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZS1jdWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxjQUFjO0lBTXZCLFlBQ29CLE9BR2YsRUFDRCxPQUE4QjtRQUpkLFlBQU8sR0FBUCxPQUFPLENBR3RCO1FBUEcsV0FBTSxHQUFHLENBQUMsQ0FBQTtRQUNWLFlBQU8sR0FBRyxDQUFDLENBQUE7UUFTZixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUVqRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENB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
|
|
@@ -16,7 +16,7 @@ interface TgdTexture2DStorage {
|
|
|
16
16
|
}
|
|
17
17
|
export declare class TgdTexture2D {
|
|
18
18
|
private readonly context;
|
|
19
|
-
|
|
19
|
+
name: string;
|
|
20
20
|
readonly gl: WebGL2RenderingContext;
|
|
21
21
|
readonly eventChange: TgdEvent<TgdTexture2D>;
|
|
22
22
|
private _texture;
|
|
@@ -37,6 +37,7 @@ export declare class TgdTexture2D {
|
|
|
37
37
|
private checkError;
|
|
38
38
|
get glTexture(): WebGLTexture;
|
|
39
39
|
bind(): void;
|
|
40
|
+
unbind(): void;
|
|
40
41
|
loadBitmap(bmp: string | WebglImage | null | Promise<WebglImage | null>, options?: {
|
|
41
42
|
level?: number;
|
|
42
43
|
generateMipmap?: boolean;
|
|
@@ -54,7 +55,7 @@ export declare class TgdTexture2D {
|
|
|
54
55
|
*
|
|
55
56
|
* @param unit Unit to link the texture to
|
|
56
57
|
* @param program The program that owns the uniform to update
|
|
57
|
-
* @param uniformName The uniform that
|
|
58
|
+
* @param uniformName The uniform that holds the texture
|
|
58
59
|
*/
|
|
59
60
|
activate(unit: number, program?: TgdProgram, uniformName?: string): this;
|
|
60
61
|
generateMipmap(): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/texture/texture2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAgB,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EAEzB,MAAM,YAAY,CAAA;AAEnB,UAAU,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAA;IAC3B,cAAc,EACR,IAAI,GACJ,MAAM,GACN,MAAM,GACN,MAAM,GACN,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,cAAc,GACd,SAAS,GACT,OAAO,GACP,SAAS,GACT,SAAS,GACT,SAAS,GACT,oBAAoB,GACpB,2BAA2B,GAC3B,qBAAqB,GACrB,4BAA4B,GAC5B,sBAAsB,GACtB,2BAA2B,GAC3B,uBAAuB,GACvB,kCAAkC,GAClC,0CAA0C,GAC1C,2CAA2C,CAAA;CACpD;AAED,qBAAa,YAAY;IAoBjB,OAAO,CAAC,QAAQ,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/texture/texture2d.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,13 +43,12 @@ export class TgdTexture2D {
|
|
|
43
43
|
}
|
|
44
44
|
createTexture() {
|
|
45
45
|
this.delete();
|
|
46
|
-
const
|
|
46
|
+
const { gl } = this;
|
|
47
|
+
const texture = gl.createTexture();
|
|
47
48
|
if (!texture)
|
|
48
49
|
throw new Error("Unable to create a WebGLTexture!");
|
|
49
|
-
const { gl } = this;
|
|
50
|
-
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
|
|
51
|
-
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
|
|
52
50
|
this._texture = texture;
|
|
51
|
+
this.bind();
|
|
53
52
|
this.setParams(this.params);
|
|
54
53
|
}
|
|
55
54
|
resize(width, height) {
|
|
@@ -61,9 +60,6 @@ export class TgdTexture2D {
|
|
|
61
60
|
this._height = height;
|
|
62
61
|
storage.width = width;
|
|
63
62
|
storage.height = height;
|
|
64
|
-
this.bind();
|
|
65
|
-
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
|
|
66
|
-
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
|
|
67
63
|
const { internalFormat, levels } = this.storage;
|
|
68
64
|
if (internalFormat.startsWith("COMPRESSED_")) {
|
|
69
65
|
// We need to load an extension for that.
|
|
@@ -71,14 +67,25 @@ export class TgdTexture2D {
|
|
|
71
67
|
if (!extension)
|
|
72
68
|
throw new Error('Your browser does not support extension "WEBGL_compressed_texture_etc" on this device!');
|
|
73
69
|
}
|
|
70
|
+
this.bind();
|
|
71
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
|
|
72
|
+
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
|
|
74
73
|
gl.texStorage2D(gl.TEXTURE_2D, levels, gl[internalFormat], width, height);
|
|
75
|
-
this.checkError()
|
|
74
|
+
this.checkError(`resize(${width}, ${height})
|
|
75
|
+
gl.texStorage2D(
|
|
76
|
+
gl.TEXTURE_2D,
|
|
77
|
+
${levels},
|
|
78
|
+
gl.${internalFormat},
|
|
79
|
+
${width},
|
|
80
|
+
${height}
|
|
81
|
+
)`);
|
|
82
|
+
this.unbind();
|
|
76
83
|
}
|
|
77
|
-
checkError() {
|
|
84
|
+
checkError(caption) {
|
|
78
85
|
const { gl } = this;
|
|
79
86
|
const error = gl.getError();
|
|
80
87
|
if (error !== gl.NO_ERROR) {
|
|
81
|
-
console.error(`[TgdTexture2D::${this.name}] Error:`, webglLookup(error));
|
|
88
|
+
console.error(`[TgdTexture2D::${this.name}] Error in ${caption}:`, webglLookup(error), this);
|
|
82
89
|
}
|
|
83
90
|
}
|
|
84
91
|
get glTexture() {
|
|
@@ -89,6 +96,9 @@ export class TgdTexture2D {
|
|
|
89
96
|
bind() {
|
|
90
97
|
this.gl.bindTexture(this.gl.TEXTURE_2D, this.glTexture);
|
|
91
98
|
}
|
|
99
|
+
unbind() {
|
|
100
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, null);
|
|
101
|
+
}
|
|
92
102
|
loadBitmap(bmp, options = {}) {
|
|
93
103
|
var _a, _b, _c;
|
|
94
104
|
if (!bmp)
|
|
@@ -105,12 +115,21 @@ export class TgdTexture2D {
|
|
|
105
115
|
this._width = bmp.width;
|
|
106
116
|
this._height = bmp.height;
|
|
107
117
|
this.bind();
|
|
118
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
|
|
119
|
+
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
|
|
108
120
|
gl.texImage2D(gl.TEXTURE_2D, level, gl[storage.internalFormat], gl[figureOutCompatibleFormat(storage.internalFormat)], gl.UNSIGNED_BYTE, bmp);
|
|
109
|
-
this.checkError(
|
|
121
|
+
this.checkError(`loadBitmap(${JSON.stringify({
|
|
122
|
+
width: bmp.width,
|
|
123
|
+
height: bmp.height,
|
|
124
|
+
})})\ngl.texImage2D(gl.TEXTURE_2D, ${level}, gl.${storage.internalFormat}, gl.${figureOutCompatibleFormat(storage.internalFormat)}, gl.UNSIGNED_BYTE, bmp)`);
|
|
110
125
|
if (options.generateMipmap) {
|
|
111
126
|
this.generateMipmap();
|
|
112
|
-
this.checkError(
|
|
127
|
+
this.checkError(`loadBitmap(${JSON.stringify({
|
|
128
|
+
width: bmp.width,
|
|
129
|
+
height: bmp.height,
|
|
130
|
+
})})\ngl.texImage2D(gl.TEXTURE_2D, ${level}, gl.${storage.internalFormat}, gl.${figureOutCompatibleFormat(storage.internalFormat)}, gl.UNSIGNED_BYTE, bmp)\ngenerateMipmap()`);
|
|
113
131
|
}
|
|
132
|
+
this.unbind();
|
|
114
133
|
(_b = (_a = this.context).paint) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
115
134
|
(_c = options.onLoad) === null || _c === void 0 ? void 0 : _c.call(options);
|
|
116
135
|
this.eventChange.dispatch(this);
|
|
@@ -122,10 +141,13 @@ export class TgdTexture2D {
|
|
|
122
141
|
} = options;
|
|
123
142
|
const { gl } = this;
|
|
124
143
|
this.bind();
|
|
144
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
|
|
145
|
+
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
|
|
125
146
|
gl.texImage2D(gl.TEXTURE_2D, level, gl[internalFormat], width, height, 0, gl[format], gl.UNSIGNED_BYTE, data
|
|
126
147
|
// offset
|
|
127
148
|
);
|
|
128
|
-
this.checkError();
|
|
149
|
+
this.checkError(`loadData(${printArray(data)}, ${JSON.stringify(options)})`);
|
|
150
|
+
this.unbind();
|
|
129
151
|
this.eventChange.dispatch(this);
|
|
130
152
|
return this;
|
|
131
153
|
}
|
|
@@ -133,7 +155,7 @@ export class TgdTexture2D {
|
|
|
133
155
|
*
|
|
134
156
|
* @param unit Unit to link the texture to
|
|
135
157
|
* @param program The program that owns the uniform to update
|
|
136
|
-
* @param uniformName The uniform that
|
|
158
|
+
* @param uniformName The uniform that holds the texture
|
|
137
159
|
*/
|
|
138
160
|
activate(unit, program, uniformName) {
|
|
139
161
|
const { gl } = this;
|
|
@@ -148,38 +170,47 @@ export class TgdTexture2D {
|
|
|
148
170
|
const { gl } = this;
|
|
149
171
|
this.bind();
|
|
150
172
|
gl.generateMipmap(gl.TEXTURE_2D);
|
|
173
|
+
this.unbind();
|
|
151
174
|
return this;
|
|
152
175
|
}
|
|
153
176
|
setParams(parameters) {
|
|
154
177
|
this.bind();
|
|
155
178
|
webglTextureParametersSet(this.gl, parameters);
|
|
156
179
|
this.params = Object.assign(Object.assign({}, this.params), parameters);
|
|
180
|
+
this.unbind();
|
|
157
181
|
return this;
|
|
158
182
|
}
|
|
159
183
|
set textureBaseLevel(value) {
|
|
160
184
|
const { gl } = this;
|
|
161
185
|
this.bind();
|
|
162
186
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_BASE_LEVEL, value);
|
|
187
|
+
this.unbind();
|
|
163
188
|
}
|
|
164
189
|
get textureBaseLevel() {
|
|
165
190
|
const { gl } = this;
|
|
166
191
|
this.bind();
|
|
167
|
-
|
|
192
|
+
const value = gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_BASE_LEVEL);
|
|
193
|
+
this.unbind();
|
|
194
|
+
return value;
|
|
168
195
|
}
|
|
169
196
|
set textureMaxLevel(value) {
|
|
170
197
|
const { gl } = this;
|
|
171
198
|
this.bind();
|
|
172
199
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL, value);
|
|
200
|
+
this.unbind();
|
|
173
201
|
}
|
|
174
202
|
get textureMaxLevel() {
|
|
175
203
|
const { gl } = this;
|
|
176
204
|
this.bind();
|
|
177
|
-
|
|
205
|
+
const value = gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL);
|
|
206
|
+
this.unbind();
|
|
207
|
+
return value;
|
|
178
208
|
}
|
|
179
209
|
getParameter(parameter) {
|
|
180
|
-
const { gl
|
|
181
|
-
|
|
210
|
+
const { gl } = this;
|
|
211
|
+
this.bind();
|
|
182
212
|
const value = gl.getTexParameter(gl.TEXTURE_2D, gl[parameter]);
|
|
213
|
+
this.unbind();
|
|
183
214
|
return value;
|
|
184
215
|
}
|
|
185
216
|
debug(title) {
|
|
@@ -256,4 +287,10 @@ function figureOutCompatibleFormat(internalFormat) {
|
|
|
256
287
|
}
|
|
257
288
|
throw new Error(`There is no compatible format for internalFormat "${internalFormat}" and type "UNSIGNED_BYTE"!`);
|
|
258
289
|
}
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sWUFBWSxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUdILHlCQUF5QixHQUM1QixNQUFNLFlBQVksQ0FBQTtBQWdEbkIsTUFBTSxPQUFPLFlBQVk7SUFtQnJCLFlBQ3FCLE9BR2hCLEVBQ0QsT0FBc0M7UUFKckIsWUFBTyxHQUFQLE9BQU8sQ0FHdkI7UUFwQlcsZ0JBQVcsR0FBRyxJQUFJLFFBQVEsRUFBZ0IsQ0FBQTtRQUVsRCxhQUFRLEdBQXdCLElBQUksQ0FBQTtRQUNwQyxXQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDWCxZQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFFWixXQUFNLEdBQTJCO1lBQ3JDLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtTQUNsQixDQUFBO1FBV0csTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsT0FBTyxtQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUNSLE1BQU0sRUFBRSxDQUFDLEVBQ1QsY0FBYyxFQUFFLE9BQU8sRUFDdkIsTUFBTSxFQUFFLENB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
|
|
290
|
+
function printArray(data) {
|
|
291
|
+
if (data.length > 10) {
|
|
292
|
+
return `[${data.slice(0, 10).join(", ")}, ...] (${data.length} elements)`;
|
|
293
|
+
}
|
|
294
|
+
return JSON.stringify(data);
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sWUFBWSxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUdILHlCQUF5QixHQUM1QixNQUFNLFlBQVksQ0FBQTtBQWdEbkIsTUFBTSxPQUFPLFlBQVk7SUFtQnJCLFlBQ3FCLE9BR2hCLEVBQ0QsT0FBc0M7UUFKckIsWUFBTyxHQUFQLE9BQU8sQ0FHdkI7UUFwQlcsZ0JBQVcsR0FBRyxJQUFJLFFBQVEsRUFBZ0IsQ0FBQTtRQUVsRCxhQUFRLEdBQXdCLElBQUksQ0FBQTtRQUNwQyxXQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDWCxZQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFFWixXQUFNLEdBQTJCO1lBQ3JDLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtTQUNsQixDQUFBO1FBV0csTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsT0FBTyxtQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUNSLE1BQU0sRUFBRSxDQUFDLEVBQ1QsY0FBYyxFQUFFLE9BQU8sRUFDdkIsTUFBTSxFQUFFLENB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/utils/action/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAKvD,wBAAgB,kCAAkC,CAC9C,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/utils/action/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAKvD,wBAAgB,kCAAkC,CAC9C,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,IAgB5B,GAAG,MAAM,UAWpB"}
|
|
@@ -4,7 +4,6 @@ import { tgdActionCreateTransfoInterpolation } from "./transfo.js";
|
|
|
4
4
|
export function tgdActionCreateCameraInterpolation(camera, destination) {
|
|
5
5
|
var _a, _b;
|
|
6
6
|
const transfoDestination = new TgdTransfo(camera.transfo).from(destination);
|
|
7
|
-
transfoDestination.debug();
|
|
8
7
|
if (typeof destination.distance === "number")
|
|
9
8
|
transfoDestination.distance = destination.distance;
|
|
10
9
|
const beginZoom = camera.zoom;
|
|
@@ -20,4 +19,4 @@ export function tgdActionCreateCameraInterpolation(camera, destination) {
|
|
|
20
19
|
camera.zoom = tgdCalcMix(beginZoom, endZoom, t);
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2FjdGlvbi9jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUvRCxNQUFNLFVBQVUsa0NBQWtDLENBQzlDLE1BQWlCLEVBQ2pCLFdBQW9DOztJQUVwQyxNQUFNLGtCQUFrQixHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDM0UsSUFBSSxPQUFPLFdBQVcsQ0FBQyxRQUFRLEtBQUssUUFBUTtRQUN4QyxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQTtJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFBO0lBQzdCLE1BQU0sT0FBTyxHQUFHLE1BQUEsV0FBVyxDQUFDLElBQUksbUNBQUksU0FBUyxDQUFBO0lBQzdDLE1BQU0sTUFBTSxHQUFHLG1DQUFtQyxDQUM5QyxNQUFNLENBQUMsT0FBTyxFQUNkLEVBQUUsRUFDRixrQkFBa0IsQ0FDckIsQ0FBQTtJQUNELE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFBO0lBQzNELE1BQU0sc0JBQXNCLEdBQ3hCLE1BQUEsV0FBVyxDQUFDLG1CQUFtQixtQ0FBSSxNQUFNLENBQUMsbUJBQW1CLENBQUE7SUFFakUsT0FBTyxDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNULElBQUksT0FBTyxXQUFXLENBQUMsbUJBQW1CLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEQsTUFBTSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FDbkMsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixDQUFDLENBQ0osQ0FBQTtRQUNMLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUMsQ0FBQTtBQUNMLENBQUMifQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TgdColor } from "../color";
|
|
1
2
|
/**
|
|
2
3
|
* Helper to get a canvas with the given size.
|
|
3
4
|
*/
|
|
@@ -27,9 +28,9 @@ export declare function tgdCanvasCreateWithContext2D(width: number, height: numb
|
|
|
27
28
|
* ```
|
|
28
29
|
*/
|
|
29
30
|
export declare function tgdCanvasCreatePalette(colors: string[], colums?: number, rows?: number): HTMLCanvasElement;
|
|
30
|
-
export declare function tgdCanvasCreateFill(width: number, height: number, fillColor?: string): HTMLCanvasElement;
|
|
31
|
-
export declare function tgdCanvasCreateGradientHorizontal(size: number, colors: string
|
|
32
|
-
export declare function tgdCanvasCreateCreateGradientvertical(size: number, colors: string
|
|
31
|
+
export declare function tgdCanvasCreateFill(width: number, height: number, fillColor?: string | TgdColor): HTMLCanvasElement;
|
|
32
|
+
export declare function tgdCanvasCreateGradientHorizontal(size: number, colors: Array<string | TgdColor>): HTMLCanvasElement;
|
|
33
|
+
export declare function tgdCanvasCreateCreateGradientvertical(size: number, colors: Array<string | TgdColor>): HTMLCanvasElement;
|
|
33
34
|
/**
|
|
34
35
|
* Create a canvas with a linear gradient.
|
|
35
36
|
* @param width Width of the resulting canvas.
|
|
@@ -38,5 +39,5 @@ export declare function tgdCanvasCreateCreateGradientvertical(size: number, colo
|
|
|
38
39
|
* @param directionY Y coord of the direction vector.
|
|
39
40
|
* @param colors CSS colors of each step
|
|
40
41
|
*/
|
|
41
|
-
export declare function tgdCanvasCreateGradient(width: number, height: number, directionX: number, directionY: number, colors: string
|
|
42
|
+
export declare function tgdCanvasCreateGradient(width: number, height: number, directionX: number, directionY: number, colors: Array<string | TgdColor>): HTMLCanvasElement;
|
|
42
43
|
//# sourceMappingURL=canvas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/utils/canvas.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf,iBAAiB,CAKnB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,gCAAgC,GAC5C;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,wBAAwB,CAAA;CAAE,CAQ9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,SAAI,EAAE,IAAI,SAAI,qBAa5E;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,
|
|
1
|
+
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/utils/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC;;GAEG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf,iBAAiB,CAKnB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,gCAAgC,GAC5C;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,wBAAwB,CAAA;CAAE,CAQ9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,SAAI,EAAE,IAAI,SAAI,qBAa5E;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAM,GAAG,QAAiB,qBAMxC;AAED,wBAAgB,iCAAiC,CAC7C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,qBAGnC;AAED,wBAAgB,qCAAqC,CACjD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,qBAGnC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,qBAiBnC"}
|
package/lib/dist/utils/canvas.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isString } from "./../types/guards.js";
|
|
1
2
|
/**
|
|
2
3
|
* Helper to get a canvas with the given size.
|
|
3
4
|
*/
|
|
@@ -52,7 +53,7 @@ export function tgdCanvasCreatePalette(colors, colums = 0, rows = 0) {
|
|
|
52
53
|
}
|
|
53
54
|
export function tgdCanvasCreateFill(width, height, fillColor = "#000") {
|
|
54
55
|
const { canvas, ctx } = tgdCanvasCreateWithContext2D(width, height);
|
|
55
|
-
ctx.fillStyle = fillColor;
|
|
56
|
+
ctx.fillStyle = isString(fillColor) ? fillColor : fillColor.toString();
|
|
56
57
|
ctx.fillRect(0, 0, width, height);
|
|
57
58
|
return canvas;
|
|
58
59
|
}
|
|
@@ -74,10 +75,12 @@ export function tgdCanvasCreateGradient(width, height, directionX, directionY, c
|
|
|
74
75
|
const { canvas, ctx } = tgdCanvasCreateWithContext2D(width, height);
|
|
75
76
|
const gradient = ctx.createLinearGradient(0, 0, width * directionX, height * directionY);
|
|
76
77
|
for (let colorIndex = 0; colorIndex < colors.length; colorIndex++) {
|
|
77
|
-
|
|
78
|
+
const color = colors[colorIndex];
|
|
79
|
+
const cssColor = isString(color) ? color : color.toString();
|
|
80
|
+
gradient.addColorStop(colorIndex / (colors.length - 1), cssColor);
|
|
78
81
|
}
|
|
79
82
|
ctx.fillStyle = gradient;
|
|
80
83
|
ctx.fillRect(0, 0, width, height);
|
|
81
84
|
return canvas;
|
|
82
85
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NhbnZhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFNUM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUMzQixLQUFhLEVBQ2IsTUFBYztJQUVkLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDL0MsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDdEIsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FDeEMsS0FBYSxFQUNiLE1BQWMsRUFDZCxRQUEyQztJQUUzQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQy9DLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3BCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ2pELElBQUksQ0FBQyxPQUFPO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0lBRTdELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ25DLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBZ0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDO0lBQ3pFLE1BQU0sS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1B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
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export declare function webglCreateFramebuffer(gl: WebGL2RenderingContext): WebGLFramebuffer;
|
|
2
|
+
export declare function webglRenderbufferStorageMultisample(gl: WebGL2RenderingContext, samples: number, internalFormat: number, width: number, height: number): boolean;
|
|
2
3
|
//# sourceMappingURL=framebuffer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/utils/framebuffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/utils/framebuffer.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAClC,EAAE,EAAE,sBAAsB,GAC3B,gBAAgB,CAKlB;AAED,wBAAgB,mCAAmC,CAC/C,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,WAsCjB"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import { webglLookup } from "./webgl.js";
|
|
1
2
|
export function webglCreateFramebuffer(gl) {
|
|
2
3
|
const fb = gl.createFramebuffer();
|
|
3
4
|
if (!fb)
|
|
4
5
|
throw new Error("Unable to create a WebGLFramebuffer!");
|
|
5
6
|
return fb;
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
+
export function webglRenderbufferStorageMultisample(gl, samples, internalFormat, width, height) {
|
|
9
|
+
gl.renderbufferStorageMultisample(gl.RENDERBUFFER, samples, internalFormat, width, height);
|
|
10
|
+
const error = gl.getError();
|
|
11
|
+
if (error !== gl.NO_ERROR) {
|
|
12
|
+
console.error(`WebGL Error in renderbufferStorageMultisample: ${webglLookup(error)} (${error})\n
|
|
13
|
+
samples: ${samples}
|
|
14
|
+
internalFormat: gl.${webglLookup(internalFormat)}
|
|
15
|
+
width: ${width}
|
|
16
|
+
height: ${height}`, webglLookup(error));
|
|
17
|
+
const availableSamples = gl.getInternalformatParameter(gl.RENDERBUFFER, internalFormat, gl.SAMPLES);
|
|
18
|
+
if (!availableSamples.includes(samples)) {
|
|
19
|
+
console.error(`Available samples for format gl.${webglLookup(internalFormat)} are ${JSON.stringify(availableSamples)}, but you provided ${samples}!`);
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWVidWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZnJhbWVidWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVyQyxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLEVBQTBCO0lBRTFCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBQ2pDLElBQUksQ0FBQyxFQUFFO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO0lBRWhFLE9BQU8sRUFBRSxDQUFBO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxtQ0FBbUMsQ0FDL0MsRUFBMEIsRUFDMUIsT0FBZSxFQUNmLGNBQXNCLEVBQ3RCLEtBQWEsRUFDYixNQUFjO0lBRWQsRUFBRSxDQUFDLDhCQUE4QixDQUM3QixFQUFFLENBQUMsWUFBWSxFQUNmLE9BQU8sRUFDUCxjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sQ0FDVCxDQUFBO0lBQ0QsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzNCLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsS0FBSyxDQUNULGtEQUFrRCxXQUFXLENBQ3pELEtBQUssQ0FDUixLQUFLLEtBQUs7a0JBQ0wsT0FBTztxQkFDSixXQUFXLENBQUMsY0FBYyxDQUFDO2tCQUM5QixLQUFLO2tCQUNMLE1BQU0sRUFBRSxFQUNkLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FDckIsQ0FBQTtRQUNELE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUNsRCxFQUFFLENBQUMsWUFBWSxFQUNmLGNBQWMsRUFDZCxFQUFFLENBQUMsT0FBTyxDQUNiLENBQUE7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FDVCxtQ0FBbUMsV0FBVyxDQUMxQyxjQUFjLENBQ2pCLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FDbkIsZ0JBQWdCLENBQ25CLHNCQUFzQixPQUFPLEdBQUcsQ0FDcEMsQ0FBQTtRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDIn0=
|
package/lib/dist/vao/vao.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare class TgdVertexArray {
|
|
|
6
6
|
readonly gl: WebGL2RenderingContext;
|
|
7
7
|
private readonly program?;
|
|
8
8
|
private readonly datasets?;
|
|
9
|
-
private
|
|
9
|
+
private elements?;
|
|
10
10
|
readonly vao: WebGLVertexArrayObject;
|
|
11
11
|
private readonly drawBuffers;
|
|
12
12
|
private readonly elemBuffer;
|
|
@@ -17,6 +17,7 @@ export declare class TgdVertexArray {
|
|
|
17
17
|
* Because datasets do not own any buffer.
|
|
18
18
|
*/
|
|
19
19
|
updateDataset(dataset: TgdDataset): boolean;
|
|
20
|
+
updateElements(elements: number[]): void;
|
|
20
21
|
getBuffer(index: number): TgdBuffer | undefined;
|
|
21
22
|
toCode({ indent }?: Partial<{
|
|
22
23
|
indent: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vao.d.ts","sourceRoot":"","sources":["../../src/vao/vao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,qBAAa,cAAc;aAOH,EAAE,EAAE,sBAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"vao.d.ts","sourceRoot":"","sources":["../../src/vao/vao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,qBAAa,cAAc;aAOH,EAAE,EAAE,sBAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC;IATrB,SAAgB,GAAG,EAAE,sBAAsB,CAAA;IAE3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAGhC,EAAE,EAAE,sBAAsB,EACzB,OAAO,CAAC,EAAE,UAAU,YAAA,EACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAA,EAC1C,QAAQ,CAAC,EAAE,uBAAuB,YAAA;IA8B9C;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU;IA6BjC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;IAyBjC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/C,MAAM,CAAC,EAAE,MAAW,EAAE,GAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAM;IAwBxD,KAAK,CAAC,OAAO,SAAmB;IAWhC,IAAI;IAIJ,MAAM;IAIN,MAAM;CAMT"}
|
package/lib/dist/vao/vao.js
CHANGED
|
@@ -63,6 +63,28 @@ export class TgdVertexArray {
|
|
|
63
63
|
});
|
|
64
64
|
return true;
|
|
65
65
|
}
|
|
66
|
+
updateElements(elements) {
|
|
67
|
+
if (!this.elements) {
|
|
68
|
+
throw new Error("This VAO has no elements data!");
|
|
69
|
+
}
|
|
70
|
+
if (!this.elemBuffer) {
|
|
71
|
+
throw new Error("This VAO has no elements buffer!");
|
|
72
|
+
}
|
|
73
|
+
switch (this.elements.BYTES_PER_ELEMENT) {
|
|
74
|
+
case 1:
|
|
75
|
+
this.elements = new Uint8Array(elements);
|
|
76
|
+
break;
|
|
77
|
+
case 2:
|
|
78
|
+
this.elements = new Uint16Array(elements);
|
|
79
|
+
break;
|
|
80
|
+
case 4:
|
|
81
|
+
this.elements = new Uint32Array(elements);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
throw new Error(`Don't know how to deal with ${this.elements.BYTES_PER_ELEMENT} bytes per element!`);
|
|
85
|
+
}
|
|
86
|
+
this.elemBuffer.bufferData({ data: this.elements });
|
|
87
|
+
}
|
|
66
88
|
getBuffer(index) {
|
|
67
89
|
return this.drawBuffers[index];
|
|
68
90
|
}
|
|
@@ -110,4 +132,4 @@ export class TgdVertexArray {
|
|
|
110
132
|
elemBuffer.delete();
|
|
111
133
|
}
|
|
112
134
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Zhby92YW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUt2QyxNQUFNLE9BQU8sY0FBYztJQU12QixZQUNvQixFQUEwQixFQUN6QixPQUFvQixFQUNwQixRQUFpQyxFQUMxQyxRQUFrQztRQUgxQixPQUFFLEdBQUYsRUFBRSxDQUF3QjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBQzFDLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBUDdCLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQTtRQUM3QixlQUFVLEdBQXFCLElBQUksQ0FBQTtRQVFoRCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsR0FBRztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQTtRQUVoRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNkLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTTtRQUVqQyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7YUFDdkIsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ2IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxP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
|