@tolokoban/tgd 2.0.133 → 2.0.136

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 (76) hide show
  1. package/README.md +20 -0
  2. package/lib/dist/context/context.d.ts +2 -1
  3. package/lib/dist/context/context.d.ts.map +1 -1
  4. package/lib/dist/context/context.js +4 -8
  5. package/lib/dist/context/extensions.d.ts +174 -0
  6. package/lib/dist/context/extensions.d.ts.map +1 -0
  7. package/lib/dist/context/extensions.js +41 -0
  8. package/lib/dist/controller/camera/orbit.js +3 -3
  9. package/lib/dist/dataset/dataset.d.ts +3 -0
  10. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  11. package/lib/dist/dataset/dataset.js +23 -1
  12. package/lib/dist/filter/filter.d.ts +5 -4
  13. package/lib/dist/filter/filter.d.ts.map +1 -1
  14. package/lib/dist/filter/filter.js +7 -4
  15. package/lib/dist/geometry/geometry.d.ts +2 -0
  16. package/lib/dist/geometry/geometry.d.ts.map +1 -1
  17. package/lib/dist/geometry/geometry.js +16 -2
  18. package/lib/dist/geometry/tools/index.d.ts +1 -0
  19. package/lib/dist/geometry/tools/index.d.ts.map +1 -1
  20. package/lib/dist/geometry/tools/index.js +2 -1
  21. package/lib/dist/geometry/tools/join.d.ts +8 -0
  22. package/lib/dist/geometry/tools/join.d.ts.map +1 -0
  23. package/lib/dist/geometry/tools/join.js +134 -0
  24. package/lib/dist/input/pointer.d.ts.map +1 -1
  25. package/lib/dist/input/pointer.js +6 -5
  26. package/lib/dist/material/glass.d.ts +2 -0
  27. package/lib/dist/material/glass.d.ts.map +1 -1
  28. package/lib/dist/material/glass.js +5 -3
  29. package/lib/dist/painter/filter/filter.d.ts +1 -0
  30. package/lib/dist/painter/filter/filter.d.ts.map +1 -1
  31. package/lib/dist/painter/filter/filter.js +29 -3
  32. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  33. package/lib/dist/painter/framebuffer.js +2 -3
  34. package/lib/dist/painter/index.d.ts +1 -0
  35. package/lib/dist/painter/index.d.ts.map +1 -1
  36. package/lib/dist/painter/index.js +2 -1
  37. package/lib/dist/painter/overlay/overlay.d.ts.map +1 -1
  38. package/lib/dist/painter/overlay/overlay.js +8 -10
  39. package/lib/dist/painter/painter.d.ts +1 -1
  40. package/lib/dist/painter/painter.d.ts.map +1 -1
  41. package/lib/dist/painter/painter.js +1 -1
  42. package/lib/dist/painter/particles/index.d.ts +2 -0
  43. package/lib/dist/painter/particles/index.d.ts.map +1 -0
  44. package/lib/dist/painter/particles/index.js +2 -0
  45. package/lib/dist/painter/particles/particles.d.ts +40 -0
  46. package/lib/dist/painter/particles/particles.d.ts.map +1 -0
  47. package/lib/dist/painter/particles/particles.js +116 -0
  48. package/lib/dist/painter/program.js +4 -19
  49. package/lib/dist/program/program.js +2 -2
  50. package/lib/dist/shader/fragment.d.ts +4 -0
  51. package/lib/dist/shader/fragment.d.ts.map +1 -1
  52. package/lib/dist/shader/fragment.js +16 -2
  53. package/lib/dist/shader/vertex.d.ts +8 -1
  54. package/lib/dist/shader/vertex.d.ts.map +1 -1
  55. package/lib/dist/shader/vertex.js +37 -4
  56. package/lib/dist/texture/texture-depth.d.ts +2 -2
  57. package/lib/dist/texture/texture-depth.d.ts.map +1 -1
  58. package/lib/dist/texture/texture-depth.js +11 -13
  59. package/lib/dist/texture/texture2d.d.ts +11 -7
  60. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  61. package/lib/dist/texture/texture2d.js +141 -79
  62. package/lib/dist/types/elements.d.ts +1 -0
  63. package/lib/dist/types/elements.d.ts.map +1 -1
  64. package/lib/dist/types/elements.js +10 -1
  65. package/lib/dist/utils/error.d.ts +2 -0
  66. package/lib/dist/utils/error.d.ts.map +1 -0
  67. package/lib/dist/utils/error.js +13 -0
  68. package/lib/dist/utils/index.d.ts +2 -0
  69. package/lib/dist/utils/index.d.ts.map +1 -1
  70. package/lib/dist/utils/index.js +3 -1
  71. package/lib/dist/utils/texture.d.ts +5 -0
  72. package/lib/dist/utils/texture.d.ts.map +1 -0
  73. package/lib/dist/utils/texture.js +17 -0
  74. package/lib/dist/version.d.ts +1 -1
  75. package/lib/dist/version.js +1 -1
  76. package/package.json +1 -1
@@ -5,7 +5,7 @@ import type { TgdFilter } from "../filter";
5
5
  import { TgdVec4 } from "../math";
6
6
  import { TgdProgram } from "../program";
7
7
  import { ArrayNumber4, type WebglImage, type WebglTexParameter } from "../types";
8
- import { type WebglTextureInternalFormat, type WebglTextureParameters } from "../webgl";
8
+ import { type WebglTextureParameters } from "../webgl";
9
9
  import { type LoadBmpOptions } from "./types";
10
10
  interface TgdTexture2DStorage {
11
11
  width: number;
@@ -17,7 +17,7 @@ interface TgdTexture2DStorage {
17
17
  * Default to `false`.
18
18
  */
19
19
  premultipliedAlpha: boolean;
20
- internalFormat: "R8" | "R16F" | "R32F" | "R8UI" | "RG8" | "RG16F" | "RG32F" | "RG8UI" | "RGB8" | "SRGB8" | "RGB565" | "R11F_G11F_B10F" | "RGB9_E5" | "RGB16F" | "RGB32F" | "RGB8UI" | "RGBA" | "RGBA8" | "SRGB8_ALPHA8" | "RGB5_A1" | "RGBA4" | "RGBA16F" | "RGBA32F" | "RGBA8UI" | "COMPRESSED_R11_EAC" | "COMPRESSED_SIGNED_R11_EAC" | "COMPRESSED_RG11_EAC" | "COMPRESSED_SIGNED_RG11_EAC" | "COMPRESSED_RGB8_ETC2" | "COMPRESSED_RGBA8_ETC2_EAC" | "COMPRESSED_SRGB8_ETC2" | "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC" | "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2" | "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2" | "DEPTH_COMPONENT24" | "DEPTH_COMPONENT16" | "DEPTH_COMPONENT32F";
20
+ format: "R8 / RED / UNSIGNED_BYTE" | "R8_SNORM / RED / BYTE" | "R16F / RED / HALF_FLOAT" | "R16F / RED / FLOAT" | "R32F / RED / FLOAT" | "R8UI / RED_INTEGER / UNSIGNED_BYTE" | "R8I / RED_INTEGER / BYTE" | "R16UI / RED_INTEGER / UNSIGNED_SHORT" | "R16I / RED_INTEGER / SHORT" | "R32UI / RED_INTEGER / UNSIGNED_INT" | "R32I / RED_INTEGER / INT" | "RG8 / RG / UNSIGNED_BYTE" | "RG8_SNORM / RG / BYTE" | "RG16F / RG / HALF_FLOAT" | "RG16F / RG / FLOAT" | "RG32F / RG / FLOAT" | "RG8UI / RG_INTEGER / UNSIGNED_BYTE" | "RG8I / RG_INTEGER / BYTE" | "RG16UI / RG_INTEGER / UNSIGNED_SHORT" | "RG16I / RG_INTEGER / SHORT" | "RG32UI / RG_INTEGER / UNSIGNED_INT" | "RG32I / RG_INTEGER / INT" | "RGB8 / RGB / UNSIGNED_BYTE" | "SRGB8 / RGB / UNSIGNED_BYTE" | "RGB565 / RGB / UNSIGNED_BYTE" | "RGB565 / RGB / UNSIGNED_SHORT_5_6_5" | "RGB8_SNORM / RGB / BYTE" | "R11F_G11F_B10F / RGB / UNSIGNED_INT_10F_11F_11F_REV" | "R11F_G11F_B10F / RGB / HALF_FLOAT" | "R11F_G11F_B10F / RGB / FLOAT" | "RGB9_E5 / RGB / UNSIGNED_INT_5_9_9_9_REV" | "RGB9_E5 / RGB / HALF_FLOAT" | "RGB9_E5 / RGB / FLOAT" | "RGB16F / RGB / HALF_FLOAT" | "RGB16F / RGB / FLOAT" | "RGB32F / RGB / FLOAT" | "RGB8UI / RGB_INTEGER / UNSIGNED_BYTE" | "RGB8I / RGB_INTEGER / BYTE" | "RGB16UI / RGB_INTEGER / UNSIGNED_SHORT" | "RGB16I / RGB_INTEGER / SHORT" | "RGB32UI / RGB_INTEGER / UNSIGNED_INT" | "RGB32I / RGB_INTEGER / INT" | "RGBA8 / RGBA / UNSIGNED_BYTE" | "SRGB8_ALPHA8 / RGBA / UNSIGNED_BYTE" | "RGBA8_SNORM / RGBA / BYTE" | "RGB5_A1 / RGBA / UNSIGNED_BYTE" | "RGB5_A1 / RGBA / UNSIGNED_SHORT_5_5_5_1" | "RGB5_A1 / RGBA / UNSIGNED_INT_2_10_10_10_REV" | "RGBA4 / RGBA / UNSIGNED_BYTE" | "RGBA4 / RGBA / UNSIGNED_SHORT_4_4_4_4" | "RGB10_A2 / RGBA / UNSIGNED_INT_2_10_10_10_REV" | "RGBA16F / RGBA / HALF_FLOAT" | "RGBA16F / RGBA / FLOAT" | "RGBA32F / RGBA / FLOAT" | "RGBA8UI / RGBA_INTEGER / UNSIGNED_BYTE" | "RGBA8I / RGBA_INTEGER / BYTE" | "RGBA16UI / RGBA_INTEGER / UNSIGNED_SHORT" | "RGBA16I / RGBA_INTEGER / SHORT" | "RGBA32UI / RGBA_INTEGER / UNSIGNED_INT" | "RGBA32I / RGBA_INTEGER / INT" | "DEPTH_COMPONENT16 / DEPTH_COMPONENT / UNSIGNED_SHORT" | "DEPTH_COMPONENT16 / DEPTH_COMPONENT / UNSIGNED_INT" | "DEPTH_COMPONENT24 / DEPTH_COMPONENT / UNSIGNED_INT" | "DEPTH_COMPONENT32F / DEPTH_COMPONENT / FLOAT" | "DEPTH24_STENCIL8 / DEPTH_STENCIL / UNSIGNED_INT_24_8" | "DEPTH32F_STENCIL8 / DEPTH_STENCIL / FLOAT_32_UNSIGNED_INT_24_8_REV";
21
21
  }
22
22
  export interface TgdTexture2DOptions {
23
23
  name?: string;
@@ -42,15 +42,20 @@ export declare class TgdTexture2D {
42
42
  private _height;
43
43
  private readonly storage;
44
44
  private params;
45
+ private videoUpdater;
45
46
  private static counter;
46
47
  constructor(context: TgdContext, options?: TgdTexture2DOptions);
47
48
  clone(name?: string): TgdTexture2D;
48
- get internalFormat(): TgdTexture2DStorage["internalFormat"];
49
- private set internalFormat(value);
49
+ get format(): TgdTexture2DStorage["format"];
50
+ private set format(value);
51
+ get internalFormat(): number;
52
+ get sourceFormat(): number;
53
+ get sourceType(): number;
50
54
  delete(): void;
51
55
  get width(): number;
52
56
  get height(): number;
53
57
  private createTexture;
58
+ private splitFormat;
54
59
  resize(w: number, h: number): void;
55
60
  private checkError;
56
61
  get glTexture(): WebGLTexture;
@@ -65,13 +70,12 @@ export declare class TgdTexture2D {
65
70
  onLoad?: () => void;
66
71
  }): this;
67
72
  applyFilter(filter: TgdFilter): this;
68
- loadData(data: Uint8Array | Uint8ClampedArray, options: {
73
+ loadData(data: Uint8Array | Uint8ClampedArray | Float32Array, options: {
69
74
  width: number;
70
75
  height: number;
71
- internalFormat: WebglTextureInternalFormat;
72
- format: "RED" | "RG" | "RGB" | "RGBA" | "RED_INTEGER" | "RG_INTEGER" | "RGB_INTEGER" | "RGBA_INTEGER";
73
76
  level?: number;
74
77
  offset?: number;
78
+ format?: TgdTexture2DStorage["format"];
75
79
  }): this;
76
80
  /**
77
81
  *
@@ -1 +1 @@
1
- {"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/texture/texture2d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/texture/texture2d.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { TgdEvent } from "./../event/index.js";
2
2
  import { tgdLoadImage } from "./../loader/image.js";
3
- import { TgdPainterFilter, TgdPainterFramebuffer } from "./../painter/index.js";
3
+ import { TgdPainterFilter, TgdPainterFramebuffer, TgdPainterLogic } from "./../painter/index.js";
4
4
  import { isWebglImage } from "./../types/index.js";
5
5
  import { isString } from "./../types/guards.js";
6
- import { ensureArrayNumber4, tgdCanvasCreate, webglLookup } from "./../utils/index.js";
6
+ import { ensureArrayNumber4, resolveErrorMessage, tgdCanvasCreate, webglLookup } from "./../utils/index.js";
7
7
  import { webglTextureParametersSet } from "./../webgl/index.js";
8
8
  import { isLoadBmpOptions } from "./types.js";
9
9
  export class TgdTexture2D {
@@ -21,6 +21,7 @@ export class TgdTexture2D {
21
21
  wrapT: "REPEAT",
22
22
  wrapR: "REPEAT",
23
23
  };
24
+ this.videoUpdater = null;
24
25
  const { storage, params, load } = options;
25
26
  const { gl } = context;
26
27
  this.gl = gl;
@@ -28,7 +29,7 @@ export class TgdTexture2D {
28
29
  this.storage = {
29
30
  width: 0,
30
31
  height: 0,
31
- internalFormat: storage?.internalFormat ?? "RGBA8",
32
+ format: storage?.format ?? "RGBA8 / RGBA / UNSIGNED_BYTE",
32
33
  levels: 1,
33
34
  flipY: false,
34
35
  premultipliedAlpha: false,
@@ -55,13 +56,28 @@ export class TgdTexture2D {
55
56
  name: name ?? this.options.name,
56
57
  })).loadBitmap(tgdCanvasCreate(this.width, this.height));
57
58
  }
59
+ get format() {
60
+ return this.storage.format;
61
+ }
62
+ set format(format) {
63
+ this.storage.format = format;
64
+ }
58
65
  get internalFormat() {
59
- return this.storage.internalFormat;
66
+ const [internalFormat] = this.splitFormat(this.context.gl);
67
+ return internalFormat;
68
+ }
69
+ get sourceFormat() {
70
+ const [, sourceFormat] = this.splitFormat(this.context.gl);
71
+ return sourceFormat;
60
72
  }
61
- set internalFormat(internalFormat) {
62
- this.storage.internalFormat = internalFormat;
73
+ get sourceType() {
74
+ const [, , sourceType] = this.splitFormat(this.context.gl);
75
+ return sourceType;
63
76
  }
64
77
  delete() {
78
+ const { videoUpdater } = this;
79
+ if (videoUpdater)
80
+ this.context.remove(videoUpdater);
65
81
  if (this._texture)
66
82
  this.gl.deleteTexture(this._texture);
67
83
  this._texture = null;
@@ -81,18 +97,24 @@ export class TgdTexture2D {
81
97
  this._texture = texture;
82
98
  this.bind();
83
99
  this.setParams(this.params);
100
+ const color4 = ensureArrayNumber4(color, [1, 0, 0.667, 1]);
101
+ const [internalFormat, sourceFormat, sourceType] = this.splitFormat(gl);
84
102
  gl.texImage2D(gl.TEXTURE_2D, // target
85
103
  0, // level of detail
86
- gl.RGBA, // internal format
104
+ internalFormat, // internal format
87
105
  1, // width
88
106
  1, // height
89
107
  0, // border
90
- gl.RGBA, // source format
91
- gl.UNSIGNED_BYTE, // source type
92
- new Uint8Array(ensureArrayNumber4(color, [1, 0, 0.667, 1])));
108
+ sourceFormat, // source format
109
+ sourceType, // source type
110
+ sourceType === gl.FLOAT ? new Float32Array(color4) : new Uint8Array(color4));
93
111
  this._width = 1;
94
112
  this._height = 1;
95
113
  }
114
+ splitFormat(gl) {
115
+ const [internalFormat, sourceFormat, sourceType] = this.storage.format.split(" / ");
116
+ return [gl[internalFormat], gl[sourceFormat], gl[sourceType]];
117
+ }
96
118
  resize(w, h) {
97
119
  const width = Math.ceil(w);
98
120
  const height = Math.ceil(h);
@@ -125,10 +147,21 @@ export class TgdTexture2D {
125
147
  let playing = false;
126
148
  let timeupdate = false;
127
149
  const video = document.createElement("video");
150
+ let initialized = false;
128
151
  const checkReady = () => {
129
- if (!playing || !timeupdate)
152
+ if (!playing || !timeupdate || initialized)
130
153
  return;
154
+ initialized = true;
131
155
  this.loadBitmap(video, options);
156
+ const videoUpdater = new TgdPainterLogic(() => {
157
+ if (!video.paused && !video.ended) {
158
+ this.loadBitmap(video);
159
+ }
160
+ });
161
+ if (this.videoUpdater)
162
+ this.context.remove(this.videoUpdater);
163
+ this.context.add(videoUpdater);
164
+ this.videoUpdater = videoUpdater;
132
165
  };
133
166
  video.playsInline = true;
134
167
  video.muted = true;
@@ -142,7 +175,10 @@ export class TgdTexture2D {
142
175
  checkReady();
143
176
  });
144
177
  video.src = url;
145
- video.play();
178
+ video.play().catch(() => {
179
+ // We want to prevent this error:
180
+ // The fetching process for the media resource was aborted by the user agent at the user's request.
181
+ });
146
182
  return this;
147
183
  }
148
184
  loadBitmap(bmp, options = {}) {
@@ -178,9 +214,8 @@ export class TgdTexture2D {
178
214
  this.bind();
179
215
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
180
216
  gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
181
- gl.texImage2D(gl.TEXTURE_2D, level, gl.RGBA, // (gl as unknown as Record<string, GLenum>)[storage.internalFormat],
182
- gl.RGBA, // gl[figureOutCompatibleFormat(storage.internalFormat)] as number,
183
- gl.UNSIGNED_BYTE, bmp);
217
+ const [internalFormat, sourceFormat, sourceType] = this.splitFormat(gl);
218
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, sourceFormat, sourceType, bmp);
184
219
  this.checkError(`loadBitmap(${JSON.stringify({
185
220
  width: bmp.width,
186
221
  height: bmp.height,
@@ -192,10 +227,11 @@ export class TgdTexture2D {
192
227
  });
193
228
  if (options.generateMipmap) {
194
229
  this.generateMipmap();
230
+ const { context } = this;
195
231
  this.checkError(`loadBitmap(${JSON.stringify({
196
232
  width: bmp.width,
197
233
  height: bmp.height,
198
- })})\ngl.texImage2D(gl.TEXTURE_2D, ${level}, gl.${storage.internalFormat}, gl.${resolveCompatibleFormat(storage.internalFormat)}, gl.UNSIGNED_BYTE, bmp)\ngenerateMipmap()`);
234
+ })})\ngl.texImage2D(gl.TEXTURE_2D, ${level}, gl.${context.lookupWebglConstant(internalFormat)}, gl.${context.lookupWebglConstant(sourceFormat)}, gl.${context.lookupWebglConstant(sourceType)}, bmp)\ngenerateMipmap()`);
199
235
  }
200
236
  const { filter } = this.options;
201
237
  if (filter)
@@ -212,7 +248,7 @@ export class TgdTexture2D {
212
248
  const output = new TgdTexture2D(this.context, {
213
249
  params: { ...this.params },
214
250
  storage: {
215
- internalFormat: "RGBA8",
251
+ ...this.storage,
216
252
  width: this.width,
217
253
  height: this.height,
218
254
  },
@@ -236,18 +272,37 @@ export class TgdTexture2D {
236
272
  return this;
237
273
  }
238
274
  loadData(data, options) {
239
- const { level = 0, width, height, internalFormat = "RGB", format = "RGB",
240
- // offset = 0,
241
- } = options;
242
- const { gl } = this;
243
- this.bind();
244
- gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
245
- gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
246
- gl.texImage2D(gl.TEXTURE_2D, level, gl[internalFormat], width, height, 0, gl[format], gl.UNSIGNED_BYTE, data);
247
- this.checkError(`loadData(${printArray(data)}, ${JSON.stringify(options)})`);
248
- this.unbind();
249
- this.eventChange.dispatch(this);
250
- return this;
275
+ try {
276
+ const { level = 0, width, height, format,
277
+ // offset = 0,
278
+ } = options;
279
+ const { gl, context } = this;
280
+ if (format) {
281
+ this.format = format;
282
+ }
283
+ checkIfDataHasMinimalRequestedSize(data, this.format, width, height);
284
+ this._width = width;
285
+ this._height = height;
286
+ this.bind();
287
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.storage.flipY);
288
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.storage.premultipliedAlpha);
289
+ const [internalFormat, sourceFormat, sourceType] = this.splitFormat(gl);
290
+ if (sourceType === gl.FLOAT && !(data instanceof Float32Array)) {
291
+ throw new Error(`You must pass a Float32Array with this format: ${this.format}!`);
292
+ }
293
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, 0, sourceFormat, sourceType, data);
294
+ this.checkError(`loadData(${printArray(data)}, ${JSON.stringify(options)})
295
+ internalFormat: ${context.lookupWebglConstant(internalFormat)}
296
+ sourceFormat: ${context.lookupWebglConstant(sourceFormat)}
297
+ sourceType: ${context.lookupWebglConstant(sourceType)}
298
+ `);
299
+ this.unbind();
300
+ this.eventChange.dispatch(this);
301
+ return this;
302
+ }
303
+ catch (error) {
304
+ throw new Error(`[${this.name}::loadData()] ${resolveErrorMessage(error)}`);
305
+ }
251
306
  }
252
307
  /**
253
308
  *
@@ -331,55 +386,6 @@ export class TgdTexture2D {
331
386
  }
332
387
  }
333
388
  TgdTexture2D.counter = 0;
334
- const COMPATIBLE_FORMATS = [
335
- [
336
- "RGB",
337
- new Set([
338
- "RGB",
339
- "RGB8",
340
- "RGB565",
341
- "SRGB8",
342
- "RGB8_SNORM",
343
- "RGB565",
344
- "R11F_G11F_B10F",
345
- "RGB9_E5",
346
- "RGB16F",
347
- "R11F_G11F_B10F",
348
- "RGB9_E5",
349
- "RGB32F",
350
- "RGB16F",
351
- "R11F_G11F_B10F",
352
- "RGB9_E5",
353
- ]),
354
- ],
355
- [
356
- "RGBA",
357
- new Set([
358
- "RGBA",
359
- "RGBA8",
360
- "RGB5_A1",
361
- "RGBA4",
362
- "SRGB8_ALPHA8",
363
- "RGBA8_SNORM",
364
- "RGBA4",
365
- "RGB5_A1",
366
- "RGB10_A2",
367
- "RGB5_A1",
368
- "RGBA16F",
369
- "RGBA32F",
370
- "RGBA16F",
371
- ]),
372
- ],
373
- ["RG", new Set(["RG8"])],
374
- ["RED", new Set(["R8"])],
375
- ];
376
- function resolveCompatibleFormat(internalFormat) {
377
- for (const [format, internalFormats] of COMPATIBLE_FORMATS) {
378
- if (internalFormats.has(internalFormat))
379
- return format;
380
- }
381
- throw new Error(`There is no compatible format for internalFormat "${internalFormat}" and type "UNSIGNED_BYTE"!`);
382
- }
383
389
  function printArray(data) {
384
390
  if (data.length > 10) {
385
391
  return `[${data.slice(0, 10).join(", ")}, ...] (${data.length} elements)`;
@@ -395,4 +401,60 @@ function isImageURL(url) {
395
401
  }
396
402
  return false;
397
403
  }
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV0RSxPQUFPLEVBQWdCLFlBQVksRUFBMkMsTUFBTSxZQUFZLENBQUE7QUFDaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzdFLE9BQU8sRUFBZ0UseUJBQXlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDcEgsT0FBTyxFQUFFLGdCQUFnQixFQUF1QixNQUFNLFNBQVMsQ0FBQTtBQWlFL0QsTUFBTSxPQUFPLFlBQVk7SUFtQnJCLFlBQ29CLE9BQW1CLEVBQ2xCLFVBQStCLEVBQUU7UUFEbEMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQWxCdEMsZ0JBQVcsR0FBRyxJQUFJLFFBQVEsRUFBZ0IsQ0FBQTtRQUVsRCxhQUFRLEdBQXdCLElBQUksQ0FBQTtRQUNwQyxXQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDWCxZQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFFWixXQUFNLEdBQTJCO1lBQ3JDLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtTQUNsQixDQUFBO1FBUUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFB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QUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUE7SUFDN0UsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMvQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBVztJQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEUsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdDLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDM0IsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFBO0lBQy9DLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNoQixDQUFDIn0=
404
+ function computeDataSizePerRow(format, width) {
405
+ const [, sourceFormat, sourceType] = format.split(" / ");
406
+ const componentCount = {
407
+ RED: 1,
408
+ RED_INTEGER: 1,
409
+ RG: 2,
410
+ RG_INTEGER: 2,
411
+ RGB: 3,
412
+ RGB_INTEGER: 3,
413
+ RGBA: 4,
414
+ RGBA_INTEGER: 4,
415
+ DEPTH_COMPONENT: 1,
416
+ DEPTH_STENCIL: 1,
417
+ };
418
+ const typeBytes = {
419
+ UNSIGNED_BYTE: 1,
420
+ BYTE: 1,
421
+ UNSIGNED_SHORT: 2,
422
+ SHORT: 2,
423
+ HALF_FLOAT: 2,
424
+ UNSIGNED_INT: 4,
425
+ INT: 4,
426
+ FLOAT: 4,
427
+ UNSIGNED_SHORT_5_6_5: 2,
428
+ UNSIGNED_SHORT_5_5_5_1: 2,
429
+ UNSIGNED_SHORT_4_4_4_4: 2,
430
+ UNSIGNED_INT_2_10_10_10_REV: 4,
431
+ UNSIGNED_INT_10F_11F_11F_REV: 4,
432
+ UNSIGNED_INT_5_9_9_9_REV: 4,
433
+ UNSIGNED_INT_24_8: 4,
434
+ FLOAT_32_UNSIGNED_INT_24_8_REV: 8,
435
+ };
436
+ const packed = typeBytes[sourceType] !== undefined &&
437
+ sourceType !== "UNSIGNED_BYTE" &&
438
+ sourceType !== "BYTE" &&
439
+ sourceType !== "UNSIGNED_SHORT" &&
440
+ sourceType !== "SHORT" &&
441
+ sourceType !== "UNSIGNED_INT" &&
442
+ sourceType !== "INT" &&
443
+ sourceType !== "HALF_FLOAT" &&
444
+ sourceType !== "FLOAT";
445
+ const bytesPerPixel = packed
446
+ ? typeBytes[sourceType]
447
+ : (componentCount[sourceFormat] ?? 4) * (typeBytes[sourceType] ?? 1);
448
+ const rowBytes = width * bytesPerPixel;
449
+ return Math.ceil(rowBytes / 4) * 4;
450
+ }
451
+ function checkIfDataHasMinimalRequestedSize(data, format, width, height) {
452
+ const expectedSizePerRow = computeDataSizePerRow(format, width);
453
+ const expectedSize = expectedSizePerRow * height;
454
+ if (data.byteLength < expectedSize) {
455
+ throw new Error(`For a texture of ${width}×${height} with format "${format}", you need a storage of ${expectedSizePerRow}×${height} = ${expectedSize}.
456
+ But your data has only ${data.byteLength} bytes.
457
+ Did you specify the right format?`);
458
+ }
459
+ }
460
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFdkYsT0FBTyxFQUFnQixZQUFZLEVBQTJDLE1BQU0sWUFBWSxDQUFBO0FBQ2hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsRyxPQUFPLEVBQStCLHlCQUF5QixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBdUIsTUFBTSxTQUFTLENBQUE7QUE4Ri9ELE1BQU0sT0FBTyxZQUFZO0lBbUJyQixZQUNvQixPQUFtQixFQUNsQixVQUErQixFQUFFO1FBRGxDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFsQnRDLGdCQUFXLEdBQUcsSUFBSSxRQUFRLEVBQWdCLENBQUE7UUFFbEQsYUFBUSxHQUF3QixJQUFJLENBQUE7UUFDcEMsV0FBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ1gsWUFBTyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBRVosV0FBTSxHQUEyQjtZQUNyQyxTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTLEVBQUUsUUFBUTtZQUNuQixLQUFLLEVBQUUsUUFBUTtZQUNmLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7U0FDbEIsQ0FBQTtRQUNPLGlCQUFZLEdBQTJC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
@@ -1,3 +1,4 @@
1
1
  export type TgdTypeArrayForElements = Uint8Array | Uint16Array | Uint32Array;
2
+ export declare function isTgdTypeArrayForElements(data: unknown): data is TgdTypeArrayForElements;
2
3
  export declare function assertTgdTypeArrayForElements(data: unknown): asserts data is TgdTypeArrayForElements;
3
4
  //# sourceMappingURL=elements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../src/types/elements.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAA;AAE5E,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,uBAAuB,CAMpG"}
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../src/types/elements.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAA;AAE5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,uBAAuB,CAMxF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,uBAAuB,CAMpG"}
@@ -1,3 +1,12 @@
1
+ export function isTgdTypeArrayForElements(data) {
2
+ if (data instanceof Uint8Array)
3
+ return true;
4
+ if (data instanceof Uint16Array)
5
+ return true;
6
+ if (data instanceof Uint32Array)
7
+ return true;
8
+ return false;
9
+ }
1
10
  export function assertTgdTypeArrayForElements(data) {
2
11
  if (data instanceof Uint8Array)
3
12
  return;
@@ -7,4 +16,4 @@ export function assertTgdTypeArrayForElements(data) {
7
16
  return;
8
17
  throw new Error("Only Uint8Array, Uint16Array or Uint32Array are allowed for elements!");
9
18
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZWxlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLDZCQUE2QixDQUFDLElBQWE7SUFDdkQsSUFBSSxJQUFJLFlBQVksVUFBVTtRQUFFLE9BQU07SUFDdEMsSUFBSSxJQUFJLFlBQVksV0FBVztRQUFFLE9BQU07SUFDdkMsSUFBSSxJQUFJLFlBQVksV0FBVztRQUFFLE9BQU07SUFFdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1RUFBdUUsQ0FBQyxDQUFBO0FBQzVGLENBQUMifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZWxlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLHlCQUF5QixDQUFDLElBQWE7SUFDbkQsSUFBSSxJQUFJLFlBQVksVUFBVTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQzNDLElBQUksSUFBSSxZQUFZLFdBQVc7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUM1QyxJQUFJLElBQUksWUFBWSxXQUFXO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFNUMsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxJQUFhO0lBQ3ZELElBQUksSUFBSSxZQUFZLFVBQVU7UUFBRSxPQUFNO0lBQ3RDLElBQUksSUFBSSxZQUFZLFdBQVc7UUFBRSxPQUFNO0lBQ3ZDLElBQUksSUFBSSxZQUFZLFdBQVc7UUFBRSxPQUFNO0lBRXZDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtBQUM1RixDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ export declare function resolveErrorMessage(error: unknown, indentation?: number): string;
2
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,SAAI,GAAG,MAAM,CAQ3E"}
@@ -0,0 +1,13 @@
1
+ export function resolveErrorMessage(error, indentation = 0) {
2
+ if (!error)
3
+ return "";
4
+ if (typeof error === "string")
5
+ return error;
6
+ if (error instanceof Error)
7
+ return error.message;
8
+ if (typeof error === "object" && "message" in error && typeof error.message === "string") {
9
+ return error.message;
10
+ }
11
+ return indentation > 0 ? JSON.stringify(error, null, indentation) : JSON.stringify(error);
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWMsRUFBRSxXQUFXLEdBQUcsQ0FBQztJQUMvRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3JCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQzNDLElBQUksS0FBSyxZQUFZLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUE7SUFDaEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdkYsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFBO0lBQ3hCLENBQUM7SUFDRCxPQUFPLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUM3RixDQUFDIn0=
@@ -1,6 +1,7 @@
1
1
  export * from "./action";
2
2
  export * from "./animation";
3
3
  export * from "./ensure";
4
+ export * from "./error";
4
5
  export * from "./assert";
5
6
  export * from "./bbox";
6
7
  export * from "./canvas";
@@ -10,5 +11,6 @@ export * from "./framebuffer";
10
11
  export * from "./fullscreen";
11
12
  export * from "./pbo";
12
13
  export * from "./state";
14
+ export * from "./texture";
13
15
  export * from "./webgl";
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export * from "./action/index.js";
2
2
  export * from "./animation/index.js";
3
3
  export * from "./ensure.js";
4
+ export * from "./error.js";
4
5
  export * from "./assert.js";
5
6
  export * from "./bbox.js";
6
7
  export * from "./canvas.js";
@@ -10,5 +11,6 @@ export * from "./framebuffer.js";
10
11
  export * from "./fullscreen.js";
11
12
  export * from "./pbo.js";
12
13
  export * from "./state/index.js";
14
+ export * from "./texture.js";
13
15
  export * from "./webgl.js";
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsT0FBTyxDQUFBO0FBQ3JCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsT0FBTyxDQUFBO0FBQ3JCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsU0FBUyxDQUFBIn0=
@@ -0,0 +1,5 @@
1
+ import { TgdTexture2D, TgdTextureCube } from "../texture";
2
+ import { WebglUniformType } from "../types";
3
+ export declare function tgdTextureRecordToUniforms(textures: Record<string, TgdTexture2D | TgdTextureCube>): Record<string, WebglUniformType>;
4
+ export declare function tgdTextureResolveGLSLType(texture: TgdTexture2D | TgdTextureCube): "sampler2D" | "samplerCube";
5
+ //# sourceMappingURL=texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../src/utils/texture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAAC,oCAMjG;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,+BAO/E"}
@@ -0,0 +1,17 @@
1
+ import { TgdTexture2D, TgdTextureCube } from "./../texture/index.js";
2
+ export function tgdTextureRecordToUniforms(textures) {
3
+ const uniforms = {};
4
+ for (const name of Object.keys(textures)) {
5
+ uniforms[name] = tgdTextureResolveGLSLType(textures[name]);
6
+ }
7
+ return uniforms;
8
+ }
9
+ export function tgdTextureResolveGLSLType(texture) {
10
+ if (texture instanceof TgdTexture2D)
11
+ return "sampler2D";
12
+ if (texture instanceof TgdTextureCube)
13
+ return "samplerCube";
14
+ console.error("[resolveTextureType] Don't know the type of this texture:", texture);
15
+ throw new Error("[resolveTextureType] Don't know the type of this texture!");
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRzNELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxRQUF1RDtJQUM5RixNQUFNLFFBQVEsR0FBcUMsRUFBRSxDQUFBO0lBQ3JELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUE7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxPQUFzQztJQUM1RSxJQUFJLE9BQU8sWUFBWSxZQUFZO1FBQUUsT0FBTyxXQUFXLENBQUE7SUFFdkQsSUFBSSxPQUFPLFlBQVksY0FBYztRQUFFLE9BQU8sYUFBYSxDQUFBO0lBRTNELE9BQU8sQ0FBQyxLQUFLLENBQUMsMkRBQTJELEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbkYsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFBO0FBQ2hGLENBQUMifQ==
@@ -1,2 +1,2 @@
1
- export declare const version = "2.0.133";
1
+ export declare const version = "2.0.136";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,2 +1,2 @@
1
- export const version = "2.0.133";
1
+ export const version = "2.0.136";
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUEifQ==