@tolokoban/tgd 2.0.18 → 2.0.20
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/buffer/buffer.d.ts +5 -2
- package/lib/dist/buffer/buffer.d.ts.map +1 -1
- package/lib/dist/buffer/buffer.js +13 -13
- package/lib/dist/camera/camera-node.js +2 -3
- package/lib/dist/camera/camera-orthographic.js +9 -8
- package/lib/dist/camera/camera-perspective.js +9 -8
- package/lib/dist/camera/camera.js +43 -43
- package/lib/dist/canvas/gizmo/gizmo.js +68 -72
- package/lib/dist/canvas/gizmo/painter/tips.d.ts +0 -1
- package/lib/dist/canvas/gizmo/painter/tips.d.ts.map +1 -1
- package/lib/dist/canvas/gizmo/painter/tips.js +24 -22
- package/lib/dist/canvas/landscape/landscape.js +4 -11
- package/lib/dist/color/color.js +15 -15
- package/lib/dist/context/animation/animation-manager.js +7 -4
- package/lib/dist/context/context.d.ts +5 -18
- package/lib/dist/context/context.d.ts.map +1 -1
- package/lib/dist/context/context.js +43 -79
- package/lib/dist/controller/camera/orbit.d.ts +24 -2
- package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
- package/lib/dist/controller/camera/orbit.js +147 -103
- package/lib/dist/dataset/dataset.d.ts +1 -1
- package/lib/dist/dataset/dataset.d.ts.map +1 -1
- package/lib/dist/dataset/dataset.js +13 -18
- package/lib/dist/debug/debug.js +6 -5
- package/lib/dist/event/event.js +4 -2
- package/lib/dist/filter/chromatic-aberration.js +10 -10
- package/lib/dist/filter/filter.d.ts +2 -1
- package/lib/dist/filter/filter.d.ts.map +1 -1
- package/lib/dist/filter/filter.js +22 -22
- package/lib/dist/filter/hue-rotation.d.ts +1 -1
- package/lib/dist/filter/hue-rotation.d.ts.map +1 -1
- package/lib/dist/filter/hue-rotation.js +5 -5
- package/lib/dist/filter/index.d.ts +1 -0
- package/lib/dist/filter/index.d.ts.map +1 -1
- package/lib/dist/filter/index.js +2 -1
- package/lib/dist/filter/verbatim.d.ts +8 -0
- package/lib/dist/filter/verbatim.d.ts.map +1 -0
- package/lib/dist/filter/verbatim.js +20 -0
- package/lib/dist/filter/zoom.d.ts +3 -1
- package/lib/dist/filter/zoom.d.ts.map +1 -1
- package/lib/dist/filter/zoom.js +10 -6
- package/lib/dist/geometry/geometry.js +9 -17
- package/lib/dist/geometry/index.d.ts +1 -0
- package/lib/dist/geometry/index.d.ts.map +1 -1
- package/lib/dist/geometry/index.js +2 -1
- package/lib/dist/geometry/place.d.ts +12 -0
- package/lib/dist/geometry/place.d.ts.map +1 -0
- package/lib/dist/geometry/place.js +145 -0
- package/lib/dist/geometry/plane.d.ts +12 -0
- package/lib/dist/geometry/plane.d.ts.map +1 -0
- package/lib/dist/geometry/plane.js +51 -0
- package/lib/dist/index.d.ts +4 -1
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +5 -2
- package/lib/dist/input/inputs.js +3 -4
- package/lib/dist/input/keyboard.js +14 -14
- package/lib/dist/input/pointer.js +80 -104
- package/lib/dist/light/light.js +5 -8
- package/lib/dist/loader/asset.js +14 -11
- package/lib/dist/loader/binary.js +29 -24
- package/lib/dist/loader/image.js +31 -24
- package/lib/dist/log.js +7 -4
- package/lib/dist/material/diffuse.d.ts +3 -1
- package/lib/dist/material/diffuse.d.ts.map +1 -1
- package/lib/dist/material/diffuse.js +17 -20
- package/lib/dist/material/ghost.d.ts +2 -1
- package/lib/dist/material/ghost.d.ts.map +1 -1
- package/lib/dist/material/ghost.js +1 -4
- package/lib/dist/material/hull.d.ts +2 -1
- package/lib/dist/material/hull.d.ts.map +1 -1
- package/lib/dist/material/hull.js +10 -13
- package/lib/dist/material/material.d.ts +2 -1
- package/lib/dist/material/material.d.ts.map +1 -1
- package/lib/dist/material/material.js +14 -20
- package/lib/dist/material/normals.d.ts +2 -1
- package/lib/dist/material/normals.d.ts.map +1 -1
- package/lib/dist/material/normals.js +1 -4
- package/lib/dist/material/solid.d.ts +2 -1
- package/lib/dist/material/solid.d.ts.map +1 -1
- package/lib/dist/material/solid.js +6 -9
- package/lib/dist/math/mat3.d.ts +6 -2
- package/lib/dist/math/mat3.d.ts.map +1 -1
- package/lib/dist/math/mat3.js +43 -4
- package/lib/dist/math/mat4.js +2 -2
- package/lib/dist/math/math.js +5 -5
- package/lib/dist/math/quat.d.ts +4 -1
- package/lib/dist/math/quat.d.ts.map +1 -1
- package/lib/dist/math/quat.js +25 -4
- package/lib/dist/math/transfo.js +12 -10
- package/lib/dist/math/vec4.js +8 -8
- package/lib/dist/painter/axis/axis.js +5 -7
- package/lib/dist/painter/background/background.d.ts +1 -1
- package/lib/dist/painter/background/background.d.ts.map +1 -1
- package/lib/dist/painter/background/background.js +14 -16
- package/lib/dist/painter/clear.d.ts +4 -3
- package/lib/dist/painter/clear.d.ts.map +1 -1
- package/lib/dist/painter/clear.js +16 -19
- package/lib/dist/painter/debug/index.d.ts +2 -0
- package/lib/dist/painter/debug/index.d.ts.map +1 -0
- package/lib/dist/painter/debug/index.js +2 -0
- package/lib/dist/painter/debug/stencil/index.d.ts +2 -0
- package/lib/dist/painter/debug/stencil/index.d.ts.map +1 -0
- package/lib/dist/painter/debug/stencil/index.js +2 -0
- package/lib/dist/painter/debug/stencil/stencil.d.ts +11 -0
- package/lib/dist/painter/debug/stencil/stencil.d.ts.map +1 -0
- package/lib/dist/painter/debug/stencil/stencil.frag +10 -0
- package/lib/dist/painter/debug/stencil/stencil.js +53 -0
- package/lib/dist/painter/debug/stencil/stencil.vert +7 -0
- package/lib/dist/painter/debug/stencil.d.ts +11 -0
- package/lib/dist/painter/debug/stencil.d.ts.map +1 -0
- package/lib/dist/painter/debug/stencil.js +41 -0
- package/lib/dist/painter/depth.d.ts +5 -3
- package/lib/dist/painter/depth.d.ts.map +1 -1
- package/lib/dist/painter/depth.js +4 -10
- package/lib/dist/painter/filter/filter.d.ts +1 -1
- package/lib/dist/painter/filter/filter.d.ts.map +1 -1
- package/lib/dist/painter/filter/filter.js +13 -24
- package/lib/dist/painter/framebuffer.backup.js +10 -13
- package/lib/dist/painter/framebuffer.d.ts +25 -4
- package/lib/dist/painter/framebuffer.d.ts.map +1 -1
- package/lib/dist/painter/framebuffer.js +76 -43
- package/lib/dist/painter/group.js +6 -8
- package/lib/dist/painter/index.d.ts +1 -0
- package/lib/dist/painter/index.d.ts.map +1 -1
- package/lib/dist/painter/index.js +2 -1
- package/lib/dist/painter/logic.js +3 -3
- package/lib/dist/painter/mesh/gltf/gltf.d.ts +1 -1
- package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/painter/mesh/gltf/gltf.js +9 -10
- package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
- package/lib/dist/painter/mesh/mesh/mesh.js +30 -39
- package/lib/dist/painter/mesh/normals/normals.js +17 -20
- package/lib/dist/painter/node/node.js +8 -8
- package/lib/dist/painter/painter.js +11 -9
- package/lib/dist/painter/segments/segments.d.ts +11 -3
- package/lib/dist/painter/segments/segments.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments.js +27 -27
- package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
- package/lib/dist/painter/skybox/skybox.js +12 -13
- package/lib/dist/painter/state/state.js +6 -10
- package/lib/dist/parser/gltf/gltf.d.ts +5 -2
- package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/parser/gltf/gltf.js +86 -55
- package/lib/dist/parser/mesh/wavefront.js +95 -92
- package/lib/dist/program/program.d.ts +6 -4
- package/lib/dist/program/program.d.ts.map +1 -1
- package/lib/dist/program/program.js +6 -11
- package/lib/dist/ref-map.js +9 -5
- package/lib/dist/resource/program.js +1 -2
- package/lib/dist/resource/resource.js +11 -7
- package/lib/dist/resource/texture2d.js +1 -2
- package/lib/dist/resource/textureCube.js +1 -2
- package/lib/dist/shader/fragment.js +2 -14
- package/lib/dist/shader/vertex.js +2 -7
- package/lib/dist/table/index.d.ts +2 -0
- package/lib/dist/table/index.d.ts.map +1 -0
- package/lib/dist/table/index.js +2 -0
- package/lib/dist/table/table.d.ts +41 -0
- package/lib/dist/table/table.d.ts.map +1 -0
- package/lib/dist/table/table.js +101 -0
- package/lib/dist/texture/texture2d.d.ts +45 -22
- package/lib/dist/texture/texture2d.d.ts.map +1 -1
- package/lib/dist/texture/texture2d.js +162 -135
- package/lib/dist/texture/texture2dArray.d.ts +43 -0
- package/lib/dist/texture/texture2dArray.d.ts.map +1 -0
- package/lib/dist/texture/texture2dArray.js +112 -0
- package/lib/dist/texture/textureCube.d.ts +12 -5
- package/lib/dist/texture/textureCube.d.ts.map +1 -1
- package/lib/dist/texture/textureCube.js +7 -25
- package/lib/dist/types/gltf.js +3 -9
- package/lib/dist/types/index.d.ts +0 -2
- package/lib/dist/types/index.d.ts.map +1 -1
- package/lib/dist/types/index.js +1 -3
- package/lib/dist/types/program.d.ts +0 -37
- package/lib/dist/types/program.d.ts.map +1 -1
- package/lib/dist/types/texture2d.d.ts +17 -2
- package/lib/dist/types/texture2d.d.ts.map +1 -1
- package/lib/dist/types/textureCube.d.ts +6 -15
- package/lib/dist/types/textureCube.d.ts.map +1 -1
- package/lib/dist/types/webgl.d.ts +10 -1
- package/lib/dist/types/webgl.d.ts.map +1 -1
- package/lib/dist/types/webgl.js +1 -1
- package/lib/dist/uniform/uniform-buffer-object.d.ts +49 -0
- package/lib/dist/uniform/uniform-buffer-object.d.ts.map +1 -0
- package/lib/dist/uniform/uniform-buffer-object.js +93 -0
- package/lib/dist/utils/action/camera.js +8 -7
- package/lib/dist/utils/bbox.js +3 -3
- package/lib/dist/utils/canvas.d.ts +28 -0
- package/lib/dist/utils/canvas.d.ts.map +1 -1
- package/lib/dist/utils/canvas.js +55 -1
- package/lib/dist/utils/framebuffer.d.ts +2 -0
- package/lib/dist/utils/framebuffer.d.ts.map +1 -0
- package/lib/dist/utils/framebuffer.js +7 -0
- package/lib/dist/utils/fullscreen.js +38 -31
- package/lib/dist/utils/index.d.ts +2 -0
- package/lib/dist/utils/index.d.ts.map +1 -1
- package/lib/dist/utils/index.js +3 -1
- package/lib/dist/utils/pbo.d.ts +9 -0
- package/lib/dist/utils/pbo.d.ts.map +1 -0
- package/lib/dist/utils/pbo.js +32 -0
- package/lib/dist/utils/ref-map.js +9 -5
- package/lib/dist/utils/state/stencil.d.ts +55 -1
- package/lib/dist/utils/state/stencil.d.ts.map +1 -1
- package/lib/dist/utils/state/stencil.js +20 -38
- package/lib/dist/utils/webgl.d.ts +1 -1
- package/lib/dist/utils/webgl.d.ts.map +1 -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 +10 -14
- package/lib/dist/webgl/index.d.ts +2 -0
- package/lib/dist/webgl/index.d.ts.map +1 -0
- package/lib/dist/webgl/index.js +2 -0
- package/lib/dist/webgl/texture/index.d.ts +3 -0
- package/lib/dist/webgl/texture/index.d.ts.map +1 -0
- package/lib/dist/webgl/texture/index.js +3 -0
- package/lib/dist/webgl/texture/texture2d.d.ts +38 -0
- package/lib/dist/webgl/texture/texture2d.d.ts.map +1 -0
- package/lib/dist/webgl/texture/texture2d.js +35 -0
- package/lib/dist/webgl/texture/types.d.ts +4 -0
- package/lib/dist/webgl/texture/types.d.ts.map +1 -0
- package/lib/dist/webgl/texture/types.js +2 -0
- package/package.json +1 -1
|
@@ -1,100 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
id;
|
|
8
|
-
name;
|
|
9
|
-
eventImageUpdate = new TgdEvent();
|
|
10
|
-
glTexture;
|
|
11
|
-
options;
|
|
12
|
-
_width = 0;
|
|
13
|
-
_height = 0;
|
|
14
|
-
_image = null;
|
|
15
|
-
static counter = 0;
|
|
16
|
-
constructor(context, id, options = {}) {
|
|
17
|
-
this.context = context;
|
|
18
|
-
this.id = id;
|
|
1
|
+
import { webglTextureParametersSet, } from "./../webgl/index.js";
|
|
2
|
+
export class TgdTexture2D {
|
|
3
|
+
constructor(context, storage) {
|
|
4
|
+
this._texture = null;
|
|
5
|
+
this._width = 0;
|
|
6
|
+
this._height = 0;
|
|
19
7
|
const { gl } = context;
|
|
20
|
-
this.
|
|
21
|
-
|
|
22
|
-
wrapT: "REPEAT",
|
|
23
|
-
wrapR: "REPEAT",
|
|
24
|
-
minFilter: "NEAREST_MIPMAP_LINEAR",
|
|
25
|
-
magFilter: "LINEAR",
|
|
26
|
-
width: 1,
|
|
27
|
-
height: 1,
|
|
28
|
-
internalFormat: "RGBA",
|
|
29
|
-
...options,
|
|
30
|
-
};
|
|
31
|
-
this.name = options.name ?? `Texture2D/${TgdTexture2DImpl.counter++}`;
|
|
32
|
-
this._width = this.options.width;
|
|
33
|
-
this._height = this.options.height;
|
|
8
|
+
this.gl = gl;
|
|
9
|
+
this.name = `Texture2D/${TgdTexture2D.counter++}`;
|
|
34
10
|
const texture = gl.createTexture();
|
|
35
11
|
if (!texture)
|
|
36
12
|
throw Error("Unable to create a WebGLTexture!");
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
else if (generateMipMap)
|
|
51
|
-
gl.generateMipmap(gl.TEXTURE_2D);
|
|
52
|
-
return texture;
|
|
53
|
-
};
|
|
54
|
-
this.updateTexture();
|
|
55
|
-
}
|
|
56
|
-
copyTexImage2D(level = 1, internalFormat = WebglEnumTex2DInternalFormat.RGBA, x = 0, y = 0, width = 0, height = 0, border = 0) {
|
|
57
|
-
const { gl } = this.context;
|
|
58
|
-
this.bind();
|
|
59
|
-
gl.copyTexImage2D(gl.TEXTURE_2D, level, internalFormat, x, y, width > 0 ? width : gl.drawingBufferWidth, height > 0 ? height : gl.drawingBufferHeight, border);
|
|
60
|
-
}
|
|
61
|
-
resize(width, height) {
|
|
62
|
-
console.log("Resize texture:", width, height);
|
|
63
|
-
this._width = Math.max(Math.round(width), 1);
|
|
64
|
-
this._height = Math.max(Math.round(height), 1);
|
|
65
|
-
this.updateTexture();
|
|
66
|
-
}
|
|
67
|
-
getParameter(param) {
|
|
68
|
-
const { context, glTexture: glTexture } = this;
|
|
69
|
-
const { gl } = context;
|
|
70
|
-
gl.bindTexture(gl.TEXTURE_2D, glTexture);
|
|
71
|
-
const value = gl.getTexParameter(gl.TEXTURE_2D, gl[param]);
|
|
72
|
-
return value;
|
|
73
|
-
}
|
|
74
|
-
makePalette(colors, colums = 0) {
|
|
75
|
-
const width = colums > 0 ? colums : colors.length;
|
|
76
|
-
const height = Math.ceil(colors.length / width);
|
|
77
|
-
const { canvas, ctx } = tgdCanvasCreateWithContext2D(width, height);
|
|
78
|
-
let i = 0;
|
|
79
|
-
for (let y = 0; y < height; y++) {
|
|
80
|
-
for (let x = 0; x < width; x++) {
|
|
81
|
-
ctx.fillStyle = colors[i++];
|
|
82
|
-
ctx.fillRect(x, y, 1, 1);
|
|
83
|
-
}
|
|
13
|
+
this._texture = texture;
|
|
14
|
+
this.setParams({
|
|
15
|
+
magFilter: "LINEAR",
|
|
16
|
+
minFilter: "LINEAR",
|
|
17
|
+
wrapS: "REPEAT",
|
|
18
|
+
wrapT: "REPEAT",
|
|
19
|
+
wrapR: "REPEAT",
|
|
20
|
+
});
|
|
21
|
+
this.storage = Object.assign({ width: 1, height: 1, internalFormat: "RGBA8", levels: 1, flipY: false }, storage);
|
|
22
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
|
|
23
|
+
if (typeof (storage === null || storage === void 0 ? void 0 : storage.width) === "number" &&
|
|
24
|
+
typeof (storage === null || storage === void 0 ? void 0 : storage.height) === "number") {
|
|
25
|
+
this.resize(storage === null || storage === void 0 ? void 0 : storage.width, storage === null || storage === void 0 ? void 0 : storage.height);
|
|
84
26
|
}
|
|
85
|
-
this.loadImage(canvas);
|
|
86
|
-
}
|
|
87
|
-
fillHorizontalGradient(size, ...colors) {
|
|
88
|
-
this.fillGradient(size, 1, 1, 0, ...colors);
|
|
89
|
-
}
|
|
90
|
-
fillverticalGradient(size, ...colors) {
|
|
91
|
-
this.fillGradient(1, size, 0, 1, ...colors);
|
|
92
|
-
}
|
|
93
|
-
delete() {
|
|
94
|
-
this.context.gl.deleteTexture(this.glTexture);
|
|
95
|
-
}
|
|
96
|
-
get image() {
|
|
97
|
-
return this._image;
|
|
98
27
|
}
|
|
99
28
|
get width() {
|
|
100
29
|
return this._width;
|
|
@@ -102,53 +31,151 @@ export class TgdTexture2DImpl {
|
|
|
102
31
|
get height() {
|
|
103
32
|
return this._height;
|
|
104
33
|
}
|
|
34
|
+
resize(width, height) {
|
|
35
|
+
if (width === this.width && height === this.height)
|
|
36
|
+
return;
|
|
37
|
+
const { gl, storage } = this;
|
|
38
|
+
this._width = storage.width = width;
|
|
39
|
+
this._height = storage.height = height;
|
|
40
|
+
const { internalFormat, levels } = this.storage;
|
|
41
|
+
if (internalFormat.startsWith("COMPRESSED_")) {
|
|
42
|
+
// We need to load an extension for that.
|
|
43
|
+
const ext = gl.getExtension("WEBGL_compressed_texture_etc");
|
|
44
|
+
if (!ext)
|
|
45
|
+
throw Error('Your browser does not support extension "WEBGL_compressed_texture_etc" on this device!');
|
|
46
|
+
}
|
|
47
|
+
this.bind();
|
|
48
|
+
gl.texStorage2D(gl.TEXTURE_2D, levels, gl[internalFormat], width, height);
|
|
49
|
+
}
|
|
50
|
+
get glTexture() {
|
|
51
|
+
if (this._texture)
|
|
52
|
+
return this._texture;
|
|
53
|
+
throw Error(`Texture "${this.name}" has been deleted!`);
|
|
54
|
+
}
|
|
105
55
|
bind() {
|
|
106
|
-
|
|
107
|
-
gl.bindTexture(gl.TEXTURE_2D, this.glTexture);
|
|
56
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, this.glTexture);
|
|
108
57
|
}
|
|
109
|
-
|
|
110
|
-
const {
|
|
111
|
-
const {
|
|
112
|
-
|
|
58
|
+
loadBitmap(bmp, options = {}) {
|
|
59
|
+
const { storage, gl } = this;
|
|
60
|
+
const { level = 0 } = options;
|
|
61
|
+
this._width = bmp.width;
|
|
62
|
+
this._height = bmp.height;
|
|
113
63
|
this.bind();
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
64
|
+
gl.texImage2D(gl.TEXTURE_2D, level, gl[storage.internalFormat], gl[figureOutCompatibleFormat(storage.internalFormat)], gl.UNSIGNED_BYTE, bmp);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
loadData(data, options) {
|
|
68
|
+
const { level = 0, width, height, internalFormat, format, offset = 0, } = options;
|
|
69
|
+
const { gl } = this;
|
|
70
|
+
this.bind();
|
|
71
|
+
gl.texImage2D(gl.TEXTURE_2D, level, gl.RGB, //gl[internalFormat],
|
|
72
|
+
width, height, 0, gl.RGB, // gl[format],
|
|
73
|
+
gl.UNSIGNED_BYTE, data
|
|
74
|
+
// offset
|
|
75
|
+
);
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
*
|
|
80
|
+
* @param unit Unit to link the texture to
|
|
81
|
+
* @param program The program that owns the uniform to update
|
|
82
|
+
* @param uniformName The uniform that hold the texture
|
|
83
|
+
*/
|
|
84
|
+
activate(unit, program, uniformName) {
|
|
85
|
+
const { gl } = this;
|
|
86
|
+
gl.activeTexture(gl.TEXTURE0 + unit);
|
|
87
|
+
this.bind();
|
|
88
|
+
if (program && uniformName) {
|
|
89
|
+
program.uniform1i(uniformName, unit);
|
|
130
90
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
generateMipmap() {
|
|
94
|
+
const { gl } = this;
|
|
95
|
+
this.bind();
|
|
135
96
|
gl.generateMipmap(gl.TEXTURE_2D);
|
|
136
|
-
this
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
this
|
|
150
|
-
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
setParams(params) {
|
|
100
|
+
this.bind();
|
|
101
|
+
webglTextureParametersSet(this.gl, params);
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
set textureBaseLevel(value) {
|
|
105
|
+
const { gl } = this;
|
|
106
|
+
this.bind();
|
|
107
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_BASE_LEVEL, value);
|
|
108
|
+
}
|
|
109
|
+
get textureBaseLevel() {
|
|
110
|
+
const { gl } = this;
|
|
111
|
+
this.bind();
|
|
112
|
+
return gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_BASE_LEVEL);
|
|
113
|
+
}
|
|
114
|
+
set textureMaxLevel(value) {
|
|
115
|
+
const { gl } = this;
|
|
116
|
+
this.bind();
|
|
117
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL, value);
|
|
118
|
+
}
|
|
119
|
+
get textureMaxLevel() {
|
|
120
|
+
const { gl } = this;
|
|
121
|
+
this.bind();
|
|
122
|
+
return gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL);
|
|
123
|
+
}
|
|
124
|
+
getParameter(param) {
|
|
125
|
+
const { gl, glTexture } = this;
|
|
126
|
+
gl.bindTexture(gl.TEXTURE_2D, glTexture);
|
|
127
|
+
const value = gl.getTexParameter(gl.TEXTURE_2D, gl[param]);
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
TgdTexture2D.counter = 0;
|
|
132
|
+
const COMPATIBLE_FORMATS = [
|
|
133
|
+
[
|
|
134
|
+
"RGB",
|
|
135
|
+
new Set([
|
|
136
|
+
"RGB",
|
|
137
|
+
"RGB8",
|
|
138
|
+
"RGB565",
|
|
139
|
+
"SRGB8",
|
|
140
|
+
"RGB8_SNORM",
|
|
141
|
+
"RGB565",
|
|
142
|
+
"R11F_G11F_B10F",
|
|
143
|
+
"RGB9_E5",
|
|
144
|
+
"RGB16F",
|
|
145
|
+
"R11F_G11F_B10F",
|
|
146
|
+
"RGB9_E5",
|
|
147
|
+
"RGB32F",
|
|
148
|
+
"RGB16F",
|
|
149
|
+
"R11F_G11F_B10F",
|
|
150
|
+
"RGB9_E5",
|
|
151
|
+
]),
|
|
152
|
+
],
|
|
153
|
+
[
|
|
154
|
+
"RGBA",
|
|
155
|
+
new Set([
|
|
156
|
+
"RGBA",
|
|
157
|
+
"RGBA8",
|
|
158
|
+
"RGB5_A1",
|
|
159
|
+
"RGBA4",
|
|
160
|
+
"SRGB8_ALPHA8",
|
|
161
|
+
"RGBA8_SNORM",
|
|
162
|
+
"RGBA4",
|
|
163
|
+
"RGB5_A1",
|
|
164
|
+
"RGB10_A2",
|
|
165
|
+
"RGB5_A1",
|
|
166
|
+
"RGBA16F",
|
|
167
|
+
"RGBA32F",
|
|
168
|
+
"RGBA16F",
|
|
169
|
+
]),
|
|
170
|
+
],
|
|
171
|
+
["RG", new Set(["RG8"])],
|
|
172
|
+
["RED", new Set(["R8"])],
|
|
173
|
+
];
|
|
174
|
+
function figureOutCompatibleFormat(internalFormat) {
|
|
175
|
+
for (const [format, internalFormats] of COMPATIBLE_FORMATS) {
|
|
176
|
+
if (internalFormats.has(internalFormat))
|
|
177
|
+
return format;
|
|
151
178
|
}
|
|
152
|
-
|
|
179
|
+
throw Error(`There is no compatible format for internalFormat "${internalFormat}" and type "UNSIGNED_BYTE"!`);
|
|
153
180
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFHSCx5QkFBeUIsR0FDNUIsTUFBTSxZQUFZLENBQUE7QUEyQ25CLE1BQU0sT0FBTyxZQUFZO0lBV3JCLFlBQ0ksT0FBdUMsRUFDdkMsT0FBc0M7UUFUekIsYUFBUSxHQUF3QixJQUFJLENBQUE7UUFDN0MsV0FBTSxHQUFHLENBQUMsQ0FBQTtRQUNWLFlBQU8sR0FBRyxDQUFDLENBQUE7UUFTZixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFBO1FBQ2pELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7UUFFN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNYLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtTQUNsQixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsT0FBTyxtQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUNSLE1BQU0sRUFBRSxDQUFDLEVBQ1QsY0FBYyxFQUFFLE9BQU8sRUFDdkIsTUFBTSxFQUFFLENBQUMsRUFDVCxLQUFLLEVBQUUsS0FBSyxJQUNULE9BQU8sQ0FDYixDQUFBO1FBQ0QsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUs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
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { TgdEvent } from "../event/event";
|
|
2
|
+
import { TgdProgram, TgdTexture2D, TgdTexture2DArrayOptions, TgdContextInterface, WebglImage, WebglTexParameter, WebglPixelStorage2DArrayFormat, WebglType } from "../types";
|
|
3
|
+
export declare class TgdTexture2DArray {
|
|
4
|
+
readonly context: TgdContextInterface;
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly eventImageUpdate: TgdEvent<TgdTexture2D>;
|
|
8
|
+
readonly glTexture: WebGLTexture;
|
|
9
|
+
private readonly options;
|
|
10
|
+
private static counter;
|
|
11
|
+
constructor(context: TgdContextInterface, id: string, options: TgdTexture2DArrayOptions);
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param params
|
|
15
|
+
* - `dataOffsetX` and `dataOffsetY` are used to define the origin into the `data` image/array.
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
setData(params: {
|
|
19
|
+
xoffset?: number;
|
|
20
|
+
yoffset?: number;
|
|
21
|
+
zoffset?: number;
|
|
22
|
+
mipmapLevel?: number;
|
|
23
|
+
dataOffsetX?: number;
|
|
24
|
+
dataOffsetY?: number;
|
|
25
|
+
width?: number;
|
|
26
|
+
height?: number;
|
|
27
|
+
depth?: number;
|
|
28
|
+
format?: WebglPixelStorage2DArrayFormat;
|
|
29
|
+
type?: WebglType;
|
|
30
|
+
data: string | WebglImage;
|
|
31
|
+
}): void;
|
|
32
|
+
private getWidth;
|
|
33
|
+
private getHeight;
|
|
34
|
+
getParameter(param: WebglTexParameter): number | boolean | null;
|
|
35
|
+
delete(): void;
|
|
36
|
+
get width(): number;
|
|
37
|
+
get height(): number;
|
|
38
|
+
get depth(): number;
|
|
39
|
+
bind(): void;
|
|
40
|
+
activate(program: TgdProgram, uniformName: string, slot?: number): void;
|
|
41
|
+
private updateTexture;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=texture2dArray.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture2dArray.d.ts","sourceRoot":"","sources":["../../src/texture/texture2dArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EACH,UAAU,EACV,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,8BAA8B,EAC9B,SAAS,EACZ,MAAM,YAAY,CAAA;AAEnB,qBAAa,iBAAiB;aAUN,OAAO,EAAE,mBAAmB;aAC5B,EAAE,EAAE,MAAM;IAV9B,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,SAAgB,gBAAgB,yBAA+B;IAC/D,SAAgB,SAAS,EAAE,YAAY,CAAA;IAEvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;gBAGN,OAAO,EAAE,mBAAmB,EAC5B,EAAE,EAAE,MAAM,EAC1B,OAAO,EAAE,wBAAwB;IA+BrC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,8BAA8B,CAAA;QACvC,IAAI,CAAC,EAAE,SAAS,CAAA;QAChB,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAC5B;IAwDD,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,SAAS;IAMjB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAW/D,MAAM;IAIN,IAAI,KAAK,WAER;IAED,IAAI,MAAM,WAET;IAED,IAAI,KAAK,WAER;IAED,IAAI;IAKJ,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,SAAI;IAQ3D,OAAO,CAAC,aAAa;CA6BxB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { TgdEvent } from "./../event/event.js";
|
|
2
|
+
import { tgdLoadImage } from "./../loader/index.js";
|
|
3
|
+
export class TgdTexture2DArray {
|
|
4
|
+
constructor(context, id, options) {
|
|
5
|
+
var _a;
|
|
6
|
+
this.context = context;
|
|
7
|
+
this.id = id;
|
|
8
|
+
this.eventImageUpdate = new TgdEvent();
|
|
9
|
+
const { gl } = context;
|
|
10
|
+
const name = (_a = options.name) !== null && _a !== void 0 ? _a : `Texture2D/${TgdTexture2DArray.counter++}`;
|
|
11
|
+
this.options = Object.assign({ name, mipmapLevels: 1, generateMipMap: false, wrapS: "REPEAT", wrapT: "REPEAT", wrapR: "REPEAT", minFilter: "NEAREST_MIPMAP_LINEAR", magFilter: "LINEAR", internalFormat: "RGBA8" }, options);
|
|
12
|
+
this.name = this.options.name;
|
|
13
|
+
const texture = gl.createTexture();
|
|
14
|
+
if (!texture)
|
|
15
|
+
throw Error("Unable to create a WebGLTexture!");
|
|
16
|
+
this.glTexture = texture;
|
|
17
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
18
|
+
gl.texStorage3D(gl.TEXTURE_2D_ARRAY, this.options.mipmapLevels, gl[this.options.internalFormat], this.options.width, this.options.height, this.options.depth);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param params
|
|
23
|
+
* - `dataOffsetX` and `dataOffsetY` are used to define the origin into the `data` image/array.
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
setData(params) {
|
|
27
|
+
var _a;
|
|
28
|
+
const { data } = params;
|
|
29
|
+
if (typeof data === "string") {
|
|
30
|
+
tgdLoadImage(data)
|
|
31
|
+
.then(img => {
|
|
32
|
+
if (img) {
|
|
33
|
+
this.setData(Object.assign(Object.assign({}, params), { data: img }));
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
.catch(console.error);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const { xoffset = 0, yoffset = 0, zoffset = 0, dataOffsetX = 0, dataOffsetY = 0, mipmapLevel = 1, format, type = "UNSIGNED_BYTE", } = params;
|
|
40
|
+
const { options } = this;
|
|
41
|
+
const { gl } = this.context;
|
|
42
|
+
const width = this.getWidth(params.width, data);
|
|
43
|
+
const height = this.getHeight(params.height, data);
|
|
44
|
+
const depth = (_a = params.width) !== null && _a !== void 0 ? _a : 1;
|
|
45
|
+
if (width + xoffset > options.width)
|
|
46
|
+
throw Error("Exceeding the width of the texture array!");
|
|
47
|
+
if (height + yoffset > options.height)
|
|
48
|
+
throw Error("Exceeding the height of the texture array!");
|
|
49
|
+
if (depth + zoffset > options.depth)
|
|
50
|
+
throw Error("Exceeding the depth of the texture array!");
|
|
51
|
+
this.bind();
|
|
52
|
+
gl.pixelStorei(gl.UNPACK_SKIP_PIXELS, dataOffsetX);
|
|
53
|
+
gl.pixelStorei(gl.UNPACK_SKIP_ROWS, dataOffsetY);
|
|
54
|
+
gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, mipmapLevel, xoffset, yoffset, zoffset, width !== null && width !== void 0 ? width : options.width, height !== null && height !== void 0 ? height : options.height, depth !== null && depth !== void 0 ? depth : 1, gl[format !== null && format !== void 0 ? format : "RGBA"], gl[type], data);
|
|
55
|
+
gl.generateMipmap(gl.TEXTURE_2D_ARRAY);
|
|
56
|
+
}
|
|
57
|
+
getWidth(width, data) {
|
|
58
|
+
if (typeof width === "number")
|
|
59
|
+
return width;
|
|
60
|
+
if (typeof data.width === "number")
|
|
61
|
+
return data.width;
|
|
62
|
+
return this.options.width;
|
|
63
|
+
}
|
|
64
|
+
getHeight(height, data) {
|
|
65
|
+
if (typeof height === "number")
|
|
66
|
+
return height;
|
|
67
|
+
if (typeof data.height === "number")
|
|
68
|
+
return data.height;
|
|
69
|
+
return this.options.height;
|
|
70
|
+
}
|
|
71
|
+
getParameter(param) {
|
|
72
|
+
const { context, glTexture: glTexture } = this;
|
|
73
|
+
const { gl } = context;
|
|
74
|
+
gl.bindTexture(gl.TEXTURE_2D, glTexture);
|
|
75
|
+
const value = gl.getTexParameter(gl.TEXTURE_2D, gl[param]);
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
delete() {
|
|
79
|
+
this.context.gl.deleteTexture(this.glTexture);
|
|
80
|
+
}
|
|
81
|
+
get width() {
|
|
82
|
+
return this.options.width;
|
|
83
|
+
}
|
|
84
|
+
get height() {
|
|
85
|
+
return this.options.height;
|
|
86
|
+
}
|
|
87
|
+
get depth() {
|
|
88
|
+
return this.options.depth;
|
|
89
|
+
}
|
|
90
|
+
bind() {
|
|
91
|
+
const { gl } = this.context;
|
|
92
|
+
gl.bindTexture(gl.TEXTURE_2D_ARRAY, this.glTexture);
|
|
93
|
+
}
|
|
94
|
+
activate(program, uniformName, slot = 0) {
|
|
95
|
+
const { context } = this;
|
|
96
|
+
const { gl } = context;
|
|
97
|
+
gl.activeTexture(gl.TEXTURE0 + slot);
|
|
98
|
+
this.bind();
|
|
99
|
+
program.uniform1i(uniformName, slot);
|
|
100
|
+
}
|
|
101
|
+
updateTexture() {
|
|
102
|
+
const { options, context } = this;
|
|
103
|
+
const { gl } = context;
|
|
104
|
+
gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MIN_FILTER, gl[options.minFilter]);
|
|
105
|
+
gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MAG_FILTER, gl[options.magFilter]);
|
|
106
|
+
gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_WRAP_S, gl[options.wrapS]);
|
|
107
|
+
gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_WRAP_T, gl[options.wrapT]);
|
|
108
|
+
gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_WRAP_R, gl[options.wrapR]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
TgdTexture2DArray.counter = 0;
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGV4dHVyZS90ZXh0dXJlMmRBcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVkxQyxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLFlBQ29CLE9BQTRCLEVBQzVCLEVBQVUsRUFDMUIsT0FBaUM7O1FBRmpCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLE9BQUUsR0FBRixFQUFFLENBQVE7UUFUZCxxQkFBZ0IsR0FBRyxJQUFJLFFBQVEsRUFBZ0IsQ0FBQTtRQVkzRCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQUEsT0FBTyxDQUFDLElBQUksbUNBQUksYUFBYSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFBO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLG1CQUNSLElBQUksRUFDSixZQUFZLEVBQUUsQ0FBQyxFQUNmLGNBQWMsRUFBRSxLQUFLLEVBQ3JCLEtBQUssRUFBRSxRQUFRLEVBQ2YsS0FBSyxFQUFFLFFBQVEsRUFDZixLQUFLLEVBQUUsUUFBUSxFQUNmLFNBQVMsRUFBRSx1QkFBdUIsRUFDbEMsU0FBUyxFQUFFLFFBQVEsRUFDbkIsY0FBYyxFQUFFLE9BQU8sSUFDcEIsT0FBTyxDQUNiLENBQUE7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFBO1FBQzdCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7UUFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFP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
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import { TgdProgram
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { TgdProgram } from "../program";
|
|
2
|
+
import { TgdTextureCubeOptions } from "../types";
|
|
3
|
+
export declare class TgdTextureCubeImpl {
|
|
4
|
+
readonly context: {
|
|
5
|
+
gl: WebGL2RenderingContext;
|
|
6
|
+
paint: () => void;
|
|
7
|
+
};
|
|
4
8
|
readonly texture: WebGLTexture;
|
|
5
9
|
private _width;
|
|
6
10
|
private _height;
|
|
7
11
|
private numberOfImagesToLoad;
|
|
8
|
-
constructor(context:
|
|
12
|
+
constructor(context: {
|
|
13
|
+
gl: WebGL2RenderingContext;
|
|
14
|
+
paint: () => void;
|
|
15
|
+
}, options: TgdTextureCubeOptions);
|
|
9
16
|
delete(): void;
|
|
10
17
|
get ready(): boolean;
|
|
11
18
|
get width(): number;
|
|
12
19
|
get height(): number;
|
|
13
20
|
bind(): void;
|
|
14
|
-
activate(program: TgdProgram, uniformName: string
|
|
21
|
+
activate(unit: number, program: TgdProgram, uniformName: string): void;
|
|
15
22
|
private loadImage;
|
|
16
23
|
}
|
|
17
24
|
//# sourceMappingURL=textureCube.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textureCube.d.ts","sourceRoot":"","sources":["../../src/texture/textureCube.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"textureCube.d.ts","sourceRoot":"","sources":["../../src/texture/textureCube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAc,MAAM,YAAY,CAAA;AAE9D,qBAAa,kBAAkB;aAQP,OAAO,EAAE;QACrB,EAAE,EAAE,sBAAsB,CAAA;QAC1B,KAAK,EAAE,MAAM,IAAI,CAAA;KACpB;IAVL,SAAgB,OAAO,EAAE,YAAY,CAAA;IAErC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,oBAAoB,CAAI;gBAGZ,OAAO,EAAE;QACrB,EAAE,EAAE,sBAAsB,CAAA;QAC1B,KAAK,EAAE,MAAM,IAAI,CAAA;KACpB,EACD,OAAO,EAAE,qBAAqB;IAelC,MAAM;IAIN,IAAI,KAAK,YAER;IAED,IAAI,KAAK,WAER;IAED,IAAI,MAAM,WAET;IAED,IAAI;IAKJ,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM;IAU/D,OAAO,CAAC,SAAS;CA+BpB"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { tgdLoadImage } from "./../loader/index.js";
|
|
2
1
|
export class TgdTextureCubeImpl {
|
|
3
|
-
context;
|
|
4
|
-
texture;
|
|
5
|
-
_width = 0;
|
|
6
|
-
_height = 0;
|
|
7
|
-
numberOfImagesToLoad = 6;
|
|
8
2
|
constructor(context, options) {
|
|
9
3
|
this.context = context;
|
|
4
|
+
this._width = 0;
|
|
5
|
+
this._height = 0;
|
|
6
|
+
this.numberOfImagesToLoad = 6;
|
|
10
7
|
const { gl } = context;
|
|
11
8
|
const texture = gl.createTexture();
|
|
12
9
|
if (!texture)
|
|
@@ -35,31 +32,16 @@ export class TgdTextureCubeImpl {
|
|
|
35
32
|
const { gl } = this.context;
|
|
36
33
|
gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.texture);
|
|
37
34
|
}
|
|
38
|
-
activate(program, uniformName
|
|
35
|
+
activate(unit, program, uniformName) {
|
|
39
36
|
if (!this.ready)
|
|
40
37
|
return;
|
|
41
38
|
const { context, texture } = this;
|
|
42
39
|
const { gl } = context;
|
|
43
|
-
gl.activeTexture(gl.TEXTURE0 +
|
|
40
|
+
gl.activeTexture(gl.TEXTURE0 + unit);
|
|
44
41
|
gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
|
|
45
|
-
program.uniform1i(uniformName,
|
|
42
|
+
program.uniform1i(uniformName, unit);
|
|
46
43
|
}
|
|
47
44
|
loadImage(target, image) {
|
|
48
|
-
if (typeof image === "string") {
|
|
49
|
-
tgdLoadImage(image)
|
|
50
|
-
.then(img => {
|
|
51
|
-
if (img) {
|
|
52
|
-
this.loadImage(target, img);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
console.error(`[TgdTextureCube] Unable to load image "${image}":`, image);
|
|
56
|
-
}
|
|
57
|
-
})
|
|
58
|
-
.catch(ex => {
|
|
59
|
-
console.error(`[TgdTextureCube] Unable to load image "${image}":`, ex);
|
|
60
|
-
});
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
45
|
const { width, height } = image;
|
|
64
46
|
if (width !== height) {
|
|
65
47
|
throw Error(`Images in a CubeMap must be squares, but we got ${width}×${height}!`);
|
|
@@ -84,4 +66,4 @@ export class TgdTextureCubeImpl {
|
|
|
84
66
|
}
|
|
85
67
|
}
|
|
86
68
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZUN1YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGV4dHVyZS90ZXh0dXJlQ3ViZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sa0JBQWtCO0lBTzNCLFlBQ29CLE9BR2YsRUFDRCxPQUE4QjtRQUpkLFlBQU8sR0FBUCxPQUFPLENBR3RCO1FBUkcsV0FBTSxHQUFHLENBQUMsQ0FBQTtRQUNWLFlBQU8sR0FBRyxDQUFDLENBQUE7UUFDWCx5QkFBb0IsR0FBRyxDQUFDLENBQUE7UUFTNUIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO1FBRTdELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3JF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
|