@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.
Files changed (222) hide show
  1. package/lib/dist/buffer/buffer.d.ts +5 -2
  2. package/lib/dist/buffer/buffer.d.ts.map +1 -1
  3. package/lib/dist/buffer/buffer.js +13 -13
  4. package/lib/dist/camera/camera-node.js +2 -3
  5. package/lib/dist/camera/camera-orthographic.js +9 -8
  6. package/lib/dist/camera/camera-perspective.js +9 -8
  7. package/lib/dist/camera/camera.js +43 -43
  8. package/lib/dist/canvas/gizmo/gizmo.js +68 -72
  9. package/lib/dist/canvas/gizmo/painter/tips.d.ts +0 -1
  10. package/lib/dist/canvas/gizmo/painter/tips.d.ts.map +1 -1
  11. package/lib/dist/canvas/gizmo/painter/tips.js +24 -22
  12. package/lib/dist/canvas/landscape/landscape.js +4 -11
  13. package/lib/dist/color/color.js +15 -15
  14. package/lib/dist/context/animation/animation-manager.js +7 -4
  15. package/lib/dist/context/context.d.ts +5 -18
  16. package/lib/dist/context/context.d.ts.map +1 -1
  17. package/lib/dist/context/context.js +43 -79
  18. package/lib/dist/controller/camera/orbit.d.ts +24 -2
  19. package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
  20. package/lib/dist/controller/camera/orbit.js +147 -103
  21. package/lib/dist/dataset/dataset.d.ts +1 -1
  22. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  23. package/lib/dist/dataset/dataset.js +13 -18
  24. package/lib/dist/debug/debug.js +6 -5
  25. package/lib/dist/event/event.js +4 -2
  26. package/lib/dist/filter/chromatic-aberration.js +10 -10
  27. package/lib/dist/filter/filter.d.ts +2 -1
  28. package/lib/dist/filter/filter.d.ts.map +1 -1
  29. package/lib/dist/filter/filter.js +22 -22
  30. package/lib/dist/filter/hue-rotation.d.ts +1 -1
  31. package/lib/dist/filter/hue-rotation.d.ts.map +1 -1
  32. package/lib/dist/filter/hue-rotation.js +5 -5
  33. package/lib/dist/filter/index.d.ts +1 -0
  34. package/lib/dist/filter/index.d.ts.map +1 -1
  35. package/lib/dist/filter/index.js +2 -1
  36. package/lib/dist/filter/verbatim.d.ts +8 -0
  37. package/lib/dist/filter/verbatim.d.ts.map +1 -0
  38. package/lib/dist/filter/verbatim.js +20 -0
  39. package/lib/dist/filter/zoom.d.ts +3 -1
  40. package/lib/dist/filter/zoom.d.ts.map +1 -1
  41. package/lib/dist/filter/zoom.js +10 -6
  42. package/lib/dist/geometry/geometry.js +9 -17
  43. package/lib/dist/geometry/index.d.ts +1 -0
  44. package/lib/dist/geometry/index.d.ts.map +1 -1
  45. package/lib/dist/geometry/index.js +2 -1
  46. package/lib/dist/geometry/place.d.ts +12 -0
  47. package/lib/dist/geometry/place.d.ts.map +1 -0
  48. package/lib/dist/geometry/place.js +145 -0
  49. package/lib/dist/geometry/plane.d.ts +12 -0
  50. package/lib/dist/geometry/plane.d.ts.map +1 -0
  51. package/lib/dist/geometry/plane.js +51 -0
  52. package/lib/dist/index.d.ts +4 -1
  53. package/lib/dist/index.d.ts.map +1 -1
  54. package/lib/dist/index.js +5 -2
  55. package/lib/dist/input/inputs.js +3 -4
  56. package/lib/dist/input/keyboard.js +14 -14
  57. package/lib/dist/input/pointer.js +80 -104
  58. package/lib/dist/light/light.js +5 -8
  59. package/lib/dist/loader/asset.js +14 -11
  60. package/lib/dist/loader/binary.js +29 -24
  61. package/lib/dist/loader/image.js +31 -24
  62. package/lib/dist/log.js +7 -4
  63. package/lib/dist/material/diffuse.d.ts +3 -1
  64. package/lib/dist/material/diffuse.d.ts.map +1 -1
  65. package/lib/dist/material/diffuse.js +17 -20
  66. package/lib/dist/material/ghost.d.ts +2 -1
  67. package/lib/dist/material/ghost.d.ts.map +1 -1
  68. package/lib/dist/material/ghost.js +1 -4
  69. package/lib/dist/material/hull.d.ts +2 -1
  70. package/lib/dist/material/hull.d.ts.map +1 -1
  71. package/lib/dist/material/hull.js +10 -13
  72. package/lib/dist/material/material.d.ts +2 -1
  73. package/lib/dist/material/material.d.ts.map +1 -1
  74. package/lib/dist/material/material.js +14 -20
  75. package/lib/dist/material/normals.d.ts +2 -1
  76. package/lib/dist/material/normals.d.ts.map +1 -1
  77. package/lib/dist/material/normals.js +1 -4
  78. package/lib/dist/material/solid.d.ts +2 -1
  79. package/lib/dist/material/solid.d.ts.map +1 -1
  80. package/lib/dist/material/solid.js +6 -9
  81. package/lib/dist/math/mat3.d.ts +6 -2
  82. package/lib/dist/math/mat3.d.ts.map +1 -1
  83. package/lib/dist/math/mat3.js +43 -4
  84. package/lib/dist/math/mat4.js +2 -2
  85. package/lib/dist/math/math.js +5 -5
  86. package/lib/dist/math/quat.d.ts +4 -1
  87. package/lib/dist/math/quat.d.ts.map +1 -1
  88. package/lib/dist/math/quat.js +25 -4
  89. package/lib/dist/math/transfo.js +12 -10
  90. package/lib/dist/math/vec4.js +8 -8
  91. package/lib/dist/painter/axis/axis.js +5 -7
  92. package/lib/dist/painter/background/background.d.ts +1 -1
  93. package/lib/dist/painter/background/background.d.ts.map +1 -1
  94. package/lib/dist/painter/background/background.js +14 -16
  95. package/lib/dist/painter/clear.d.ts +4 -3
  96. package/lib/dist/painter/clear.d.ts.map +1 -1
  97. package/lib/dist/painter/clear.js +16 -19
  98. package/lib/dist/painter/debug/index.d.ts +2 -0
  99. package/lib/dist/painter/debug/index.d.ts.map +1 -0
  100. package/lib/dist/painter/debug/index.js +2 -0
  101. package/lib/dist/painter/debug/stencil/index.d.ts +2 -0
  102. package/lib/dist/painter/debug/stencil/index.d.ts.map +1 -0
  103. package/lib/dist/painter/debug/stencil/index.js +2 -0
  104. package/lib/dist/painter/debug/stencil/stencil.d.ts +11 -0
  105. package/lib/dist/painter/debug/stencil/stencil.d.ts.map +1 -0
  106. package/lib/dist/painter/debug/stencil/stencil.frag +10 -0
  107. package/lib/dist/painter/debug/stencil/stencil.js +53 -0
  108. package/lib/dist/painter/debug/stencil/stencil.vert +7 -0
  109. package/lib/dist/painter/debug/stencil.d.ts +11 -0
  110. package/lib/dist/painter/debug/stencil.d.ts.map +1 -0
  111. package/lib/dist/painter/debug/stencil.js +41 -0
  112. package/lib/dist/painter/depth.d.ts +5 -3
  113. package/lib/dist/painter/depth.d.ts.map +1 -1
  114. package/lib/dist/painter/depth.js +4 -10
  115. package/lib/dist/painter/filter/filter.d.ts +1 -1
  116. package/lib/dist/painter/filter/filter.d.ts.map +1 -1
  117. package/lib/dist/painter/filter/filter.js +13 -24
  118. package/lib/dist/painter/framebuffer.backup.js +10 -13
  119. package/lib/dist/painter/framebuffer.d.ts +25 -4
  120. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  121. package/lib/dist/painter/framebuffer.js +76 -43
  122. package/lib/dist/painter/group.js +6 -8
  123. package/lib/dist/painter/index.d.ts +1 -0
  124. package/lib/dist/painter/index.d.ts.map +1 -1
  125. package/lib/dist/painter/index.js +2 -1
  126. package/lib/dist/painter/logic.js +3 -3
  127. package/lib/dist/painter/mesh/gltf/gltf.d.ts +1 -1
  128. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  129. package/lib/dist/painter/mesh/gltf/gltf.js +9 -10
  130. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  131. package/lib/dist/painter/mesh/mesh/mesh.js +30 -39
  132. package/lib/dist/painter/mesh/normals/normals.js +17 -20
  133. package/lib/dist/painter/node/node.js +8 -8
  134. package/lib/dist/painter/painter.js +11 -9
  135. package/lib/dist/painter/segments/segments.d.ts +11 -3
  136. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  137. package/lib/dist/painter/segments/segments.js +27 -27
  138. package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
  139. package/lib/dist/painter/skybox/skybox.js +12 -13
  140. package/lib/dist/painter/state/state.js +6 -10
  141. package/lib/dist/parser/gltf/gltf.d.ts +5 -2
  142. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
  143. package/lib/dist/parser/gltf/gltf.js +86 -55
  144. package/lib/dist/parser/mesh/wavefront.js +95 -92
  145. package/lib/dist/program/program.d.ts +6 -4
  146. package/lib/dist/program/program.d.ts.map +1 -1
  147. package/lib/dist/program/program.js +6 -11
  148. package/lib/dist/ref-map.js +9 -5
  149. package/lib/dist/resource/program.js +1 -2
  150. package/lib/dist/resource/resource.js +11 -7
  151. package/lib/dist/resource/texture2d.js +1 -2
  152. package/lib/dist/resource/textureCube.js +1 -2
  153. package/lib/dist/shader/fragment.js +2 -14
  154. package/lib/dist/shader/vertex.js +2 -7
  155. package/lib/dist/table/index.d.ts +2 -0
  156. package/lib/dist/table/index.d.ts.map +1 -0
  157. package/lib/dist/table/index.js +2 -0
  158. package/lib/dist/table/table.d.ts +41 -0
  159. package/lib/dist/table/table.d.ts.map +1 -0
  160. package/lib/dist/table/table.js +101 -0
  161. package/lib/dist/texture/texture2d.d.ts +45 -22
  162. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  163. package/lib/dist/texture/texture2d.js +162 -135
  164. package/lib/dist/texture/texture2dArray.d.ts +43 -0
  165. package/lib/dist/texture/texture2dArray.d.ts.map +1 -0
  166. package/lib/dist/texture/texture2dArray.js +112 -0
  167. package/lib/dist/texture/textureCube.d.ts +12 -5
  168. package/lib/dist/texture/textureCube.d.ts.map +1 -1
  169. package/lib/dist/texture/textureCube.js +7 -25
  170. package/lib/dist/types/gltf.js +3 -9
  171. package/lib/dist/types/index.d.ts +0 -2
  172. package/lib/dist/types/index.d.ts.map +1 -1
  173. package/lib/dist/types/index.js +1 -3
  174. package/lib/dist/types/program.d.ts +0 -37
  175. package/lib/dist/types/program.d.ts.map +1 -1
  176. package/lib/dist/types/texture2d.d.ts +17 -2
  177. package/lib/dist/types/texture2d.d.ts.map +1 -1
  178. package/lib/dist/types/textureCube.d.ts +6 -15
  179. package/lib/dist/types/textureCube.d.ts.map +1 -1
  180. package/lib/dist/types/webgl.d.ts +10 -1
  181. package/lib/dist/types/webgl.d.ts.map +1 -1
  182. package/lib/dist/types/webgl.js +1 -1
  183. package/lib/dist/uniform/uniform-buffer-object.d.ts +49 -0
  184. package/lib/dist/uniform/uniform-buffer-object.d.ts.map +1 -0
  185. package/lib/dist/uniform/uniform-buffer-object.js +93 -0
  186. package/lib/dist/utils/action/camera.js +8 -7
  187. package/lib/dist/utils/bbox.js +3 -3
  188. package/lib/dist/utils/canvas.d.ts +28 -0
  189. package/lib/dist/utils/canvas.d.ts.map +1 -1
  190. package/lib/dist/utils/canvas.js +55 -1
  191. package/lib/dist/utils/framebuffer.d.ts +2 -0
  192. package/lib/dist/utils/framebuffer.d.ts.map +1 -0
  193. package/lib/dist/utils/framebuffer.js +7 -0
  194. package/lib/dist/utils/fullscreen.js +38 -31
  195. package/lib/dist/utils/index.d.ts +2 -0
  196. package/lib/dist/utils/index.d.ts.map +1 -1
  197. package/lib/dist/utils/index.js +3 -1
  198. package/lib/dist/utils/pbo.d.ts +9 -0
  199. package/lib/dist/utils/pbo.d.ts.map +1 -0
  200. package/lib/dist/utils/pbo.js +32 -0
  201. package/lib/dist/utils/ref-map.js +9 -5
  202. package/lib/dist/utils/state/stencil.d.ts +55 -1
  203. package/lib/dist/utils/state/stencil.d.ts.map +1 -1
  204. package/lib/dist/utils/state/stencil.js +20 -38
  205. package/lib/dist/utils/webgl.d.ts +1 -1
  206. package/lib/dist/utils/webgl.d.ts.map +1 -1
  207. package/lib/dist/vao/vao.d.ts +2 -1
  208. package/lib/dist/vao/vao.d.ts.map +1 -1
  209. package/lib/dist/vao/vao.js +10 -14
  210. package/lib/dist/webgl/index.d.ts +2 -0
  211. package/lib/dist/webgl/index.d.ts.map +1 -0
  212. package/lib/dist/webgl/index.js +2 -0
  213. package/lib/dist/webgl/texture/index.d.ts +3 -0
  214. package/lib/dist/webgl/texture/index.d.ts.map +1 -0
  215. package/lib/dist/webgl/texture/index.js +3 -0
  216. package/lib/dist/webgl/texture/texture2d.d.ts +38 -0
  217. package/lib/dist/webgl/texture/texture2d.d.ts.map +1 -0
  218. package/lib/dist/webgl/texture/texture2d.js +35 -0
  219. package/lib/dist/webgl/texture/types.d.ts +4 -0
  220. package/lib/dist/webgl/texture/types.d.ts.map +1 -0
  221. package/lib/dist/webgl/texture/types.js +2 -0
  222. package/package.json +1 -1
@@ -1,100 +1,29 @@
1
- import { TgdEvent } from "./../event/event.js";
2
- import { tgdLoadImage } from "./../loader/index.js";
3
- import { WebglEnumTex2DInternalFormat, } from "./../types/index.js";
4
- import { tgdCanvasCreateWithContext2D } from "./../utils/index.js";
5
- export class TgdTexture2DImpl {
6
- context;
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.options = {
21
- wrapS: "REPEAT",
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.glTexture = texture;
38
- this.updateTexture = () => {
39
- const { wrapS = "CLAMP_TO_EDGE", wrapT = "CLAMP_TO_EDGE", wrapR = "CLAMP_TO_EDGE", minFilter = "LINEAR", magFilter = "LINEAR", generateMipMap = false, width = 1, height = 1, internalFormat = "RGBA", data, type = "UNSIGNED_BYTE", } = this.options;
40
- const format = this.options.format ?? internalFormat;
41
- gl.bindTexture(gl.TEXTURE_2D, texture);
42
- gl.texImage2D(gl.TEXTURE_2D, 0, gl[internalFormat], width, height, 0, gl[format], gl[type], data ?? null);
43
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl[wrapS]);
44
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl[wrapT]);
45
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_R, gl[wrapR]);
46
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl[minFilter]);
47
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl[magFilter]);
48
- if (options.image)
49
- this.loadImage(options.image);
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
- const { gl } = this.context;
107
- gl.bindTexture(gl.TEXTURE_2D, this.glTexture);
56
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.glTexture);
108
57
  }
109
- activate(program, uniformName, slot = 0) {
110
- const { context } = this;
111
- const { gl } = context;
112
- gl.activeTexture(gl.TEXTURE0 + slot);
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
- program.uniform1i(uniformName, slot);
115
- }
116
- loadImage(image) {
117
- if (typeof image === "string") {
118
- tgdLoadImage(image)
119
- .then(img => {
120
- if (img) {
121
- this.loadImage(img);
122
- this.context.paint();
123
- }
124
- else {
125
- console.error("[TgdTexture2D] Unable to load image:", image);
126
- }
127
- })
128
- .catch(console.error);
129
- return;
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
- const { context, glTexture: texture } = this;
132
- const { gl } = context;
133
- gl.bindTexture(gl.TEXTURE_2D, texture);
134
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
91
+ return this;
92
+ }
93
+ generateMipmap() {
94
+ const { gl } = this;
95
+ this.bind();
135
96
  gl.generateMipmap(gl.TEXTURE_2D);
136
- this._width = image.width;
137
- this._height = image.height;
138
- this._image = image;
139
- this.eventImageUpdate.dispatch(this);
140
- }
141
- fillGradient(width, height, dirX, dirY, ...colors) {
142
- const { canvas, ctx } = tgdCanvasCreateWithContext2D(width, height);
143
- const gradient = ctx.createLinearGradient(0, 0, width * dirX, height * dirY);
144
- for (let i = 0; i < colors.length; i++) {
145
- gradient.addColorStop(i / (colors.length - 1), colors[i]);
146
- }
147
- ctx.fillStyle = gradient;
148
- ctx.fillRect(0, 0, width, height);
149
- this.loadImage(canvas);
150
- canvas.style.position = "fixed";
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
- updateTexture;
179
+ throw Error(`There is no compatible format for internalFormat "${internalFormat}" and type "UNSIGNED_BYTE"!`);
153
180
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzFDLE9BQU8sRUFPSCw0QkFBNEIsR0FDL0IsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpELE1BQU0sT0FBTyxnQkFBZ0I7SUFnQkw7SUFDQTtJQWhCSixJQUFJLENBQVE7SUFDWixnQkFBZ0IsR0FBRyxJQUFJLFFBQVEsRUFBZ0IsQ0FBQTtJQUMvQyxTQUFTLENBQWM7SUFFdEIsT0FBTyxDQUd2QjtJQUNPLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDVixPQUFPLEdBQUcsQ0FBQyxDQUFBO0lBQ1gsTUFBTSxHQUFzQixJQUFJLENBQUE7SUFFaEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFFMUIsWUFDb0IsT0FBNEIsRUFDNUIsRUFBVSxFQUMxQixVQUF3QyxFQUFFO1FBRjFCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLE9BQUUsR0FBRixFQUFFLENBQVE7UUFHMUIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtZQUNmLEtBQUssRUFBRSxRQUFRO1lBQ2YsU0FBUyxFQUFFLHVCQUF1QjtZQUNsQyxTQUFTLEVBQUUsUUFBUTtZQUNuQixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBQ1QsY0FBYyxFQUFFLE1BQU07WUFDdEIsR0FBRyxPQUFPO1NBQ2IsQ0FBQTtRQUNELElBQUksQ0FBQyxJQUFJLEdB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
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, TgdTextureCube, TgdTextureCubeOptions, TgdContextInterface } from "../types";
2
- export declare class TgdTextureCubeImpl implements TgdTextureCube {
3
- readonly context: TgdContextInterface;
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: TgdContextInterface, options: TgdTextureCubeOptions);
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, slot?: number): void;
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":"AACA,OAAO,EACH,UAAU,EACV,cAAc,EACd,qBAAqB,EAErB,mBAAmB,EACtB,MAAM,YAAY,CAAA;AAEnB,qBAAa,kBAAmB,YAAW,cAAc;aAQjC,OAAO,EAAE,mBAAmB;IAPhD,SAAgB,OAAO,EAAE,YAAY,CAAA;IAErC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,oBAAoB,CAAI;gBAGZ,OAAO,EAAE,mBAAmB,EAC5C,OAAO,EAAE,qBAAqB;IAelC,MAAM;IAIN,IAAI,KAAK,YAER;IAED,IAAI,KAAK,WAER;IAED,IAAI,MAAM,WAET;IAED,IAAI;IAKJ,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,SAAI;IAU3D,OAAO,CAAC,SAAS;CAoDpB"}
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, slot = 0) {
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 + slot);
40
+ gl.activeTexture(gl.TEXTURE0 + unit);
44
41
  gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
45
- program.uniform1i(uniformName, slot);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZUN1YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGV4dHVyZS90ZXh0dXJlQ3ViZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBUzFDLE1BQU0sT0FBTyxrQkFBa0I7SUFRUDtJQVBKLE9BQU8sQ0FBYztJQUU3QixNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ1YsT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUNYLG9CQUFvQixHQUFHLENBQUMsQ0FBQTtJQUVoQyxZQUNvQixPQUE0QixFQUM1QyxPQUE4QjtRQURkLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBRzVDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDdEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUU3RCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FB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
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZUN1YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGV4dHVyZS90ZXh0dXJlQ3ViZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sa0JBQWtCO0lBTzNCLFlBQ29CLE9BR2YsRUFDRCxPQUE4QjtRQUpkLFlBQU8sR0FBUCxPQUFPLENBR3RCO1FBUkcsV0FBTSxHQUFHLENBQUMsQ0FBQTtRQUNWLFlBQU8sR0FBRyxDQUFDLENBQUE7UUFDWCx5QkFBb0IsR0FBRyxDQUFDLENBQUE7UUFTNUIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO1FBRTdELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3JF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