@loaders.gl/textures 4.2.0-alpha.4 → 4.2.0-alpha.6

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 (110) hide show
  1. package/dist/basis-loader.js +27 -19
  2. package/dist/basis-worker-node.js +183 -127
  3. package/dist/basis-worker.js +5 -3
  4. package/dist/compressed-texture-loader.js +51 -31
  5. package/dist/compressed-texture-worker.js +5 -3
  6. package/dist/compressed-texture-writer.js +32 -19
  7. package/dist/crunch-loader.js +19 -13
  8. package/dist/crunch-worker.js +5 -3
  9. package/dist/dist.dev.js +326 -212
  10. package/dist/dist.min.js +10 -0
  11. package/dist/index.cjs +41 -60
  12. package/dist/index.cjs.map +7 -0
  13. package/dist/index.d.ts +16 -16
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +21 -13
  16. package/dist/ktx2-basis-writer-worker-node.js +183 -127
  17. package/dist/ktx2-basis-writer-worker.js +5 -3
  18. package/dist/ktx2-basis-writer.js +21 -15
  19. package/dist/lib/encoders/encode-ktx.js +6 -3
  20. package/dist/lib/encoders/encode-ktx2-basis-texture.js +38 -33
  21. package/dist/lib/encoders/encode-texture.d.ts +1 -1
  22. package/dist/lib/encoders/encode-texture.d.ts.map +1 -1
  23. package/dist/lib/encoders/encode-texture.js +23 -9
  24. package/dist/lib/gl-extensions.js +70 -59
  25. package/dist/lib/parsers/basis-module-loader.js +97 -61
  26. package/dist/lib/parsers/crunch-module-loader.js +29 -13
  27. package/dist/lib/parsers/parse-basis.js +217 -205
  28. package/dist/lib/parsers/parse-compressed-texture.js +20 -11
  29. package/dist/lib/parsers/parse-crunch.js +89 -59
  30. package/dist/lib/parsers/parse-dds.js +82 -53
  31. package/dist/lib/parsers/parse-ktx.js +37 -18
  32. package/dist/lib/parsers/parse-npy.js +70 -53
  33. package/dist/lib/parsers/parse-pvr.js +203 -112
  34. package/dist/lib/texture-api/async-deep-map.js +33 -28
  35. package/dist/lib/texture-api/deep-load.js +7 -5
  36. package/dist/lib/texture-api/generate-url.d.ts +1 -1
  37. package/dist/lib/texture-api/generate-url.d.ts.map +1 -1
  38. package/dist/lib/texture-api/generate-url.js +12 -10
  39. package/dist/lib/texture-api/load-image-array.d.ts +1 -1
  40. package/dist/lib/texture-api/load-image-array.d.ts.map +1 -1
  41. package/dist/lib/texture-api/load-image-array.js +13 -15
  42. package/dist/lib/texture-api/load-image-cube.d.ts +1 -1
  43. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -1
  44. package/dist/lib/texture-api/load-image-cube.js +32 -51
  45. package/dist/lib/texture-api/load-image.d.ts +1 -1
  46. package/dist/lib/texture-api/load-image.d.ts.map +1 -1
  47. package/dist/lib/texture-api/load-image.js +30 -36
  48. package/dist/lib/texture-api/texture-api-types.js +3 -1
  49. package/dist/lib/utils/extract-mipmap-images.js +43 -29
  50. package/dist/lib/utils/ktx-format-helper.js +119 -68
  51. package/dist/lib/utils/texture-formats.js +40 -26
  52. package/dist/lib/utils/version.js +7 -2
  53. package/dist/npy-loader.d.ts +1 -1
  54. package/dist/npy-loader.d.ts.map +1 -1
  55. package/dist/npy-loader.js +24 -15
  56. package/dist/npy-worker.js +4 -2
  57. package/dist/workers/basis-worker-node.js +4 -1
  58. package/dist/workers/basis-worker.js +3 -1
  59. package/dist/workers/compressed-texture-worker.js +4 -1
  60. package/dist/workers/crunch-worker.d.ts +1 -1
  61. package/dist/workers/crunch-worker.d.ts.map +1 -1
  62. package/dist/workers/crunch-worker.js +8 -3
  63. package/dist/workers/ktx2-basis-writer-worker-node.js +23 -26
  64. package/dist/workers/ktx2-basis-writer-worker.js +22 -26
  65. package/dist/workers/npy-worker.js +3 -1
  66. package/package.json +12 -10
  67. package/dist/basis-loader.js.map +0 -1
  68. package/dist/compressed-texture-loader.js.map +0 -1
  69. package/dist/compressed-texture-writer.js.map +0 -1
  70. package/dist/crunch-loader.js.map +0 -1
  71. package/dist/index.js.map +0 -1
  72. package/dist/ktx2-basis-writer.js.map +0 -1
  73. package/dist/lib/encoders/encode-ktx.js.map +0 -1
  74. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
  75. package/dist/lib/encoders/encode-texture.js.map +0 -1
  76. package/dist/lib/gl-extensions.js.map +0 -1
  77. package/dist/lib/parsers/basis-module-loader.js.map +0 -1
  78. package/dist/lib/parsers/crunch-module-loader.js.map +0 -1
  79. package/dist/lib/parsers/parse-basis.js.map +0 -1
  80. package/dist/lib/parsers/parse-compressed-texture.js.map +0 -1
  81. package/dist/lib/parsers/parse-crunch.js.map +0 -1
  82. package/dist/lib/parsers/parse-dds.js.map +0 -1
  83. package/dist/lib/parsers/parse-ktx.js.map +0 -1
  84. package/dist/lib/parsers/parse-npy.js.map +0 -1
  85. package/dist/lib/parsers/parse-pvr.js.map +0 -1
  86. package/dist/lib/texture-api/async-deep-map.js.map +0 -1
  87. package/dist/lib/texture-api/deep-load.js.map +0 -1
  88. package/dist/lib/texture-api/generate-url.js.map +0 -1
  89. package/dist/lib/texture-api/load-image-array.js.map +0 -1
  90. package/dist/lib/texture-api/load-image-cube.js.map +0 -1
  91. package/dist/lib/texture-api/load-image.js.map +0 -1
  92. package/dist/lib/texture-api/texture-api-types.js.map +0 -1
  93. package/dist/lib/utils/extract-mipmap-images.js.map +0 -1
  94. package/dist/lib/utils/ktx-format-helper.js.map +0 -1
  95. package/dist/lib/utils/texture-formats.js.map +0 -1
  96. package/dist/lib/utils/version.js.map +0 -1
  97. package/dist/libs/libs/README.md +0 -9
  98. package/dist/libs/libs/basis_encoder.js +0 -21
  99. package/dist/libs/libs/basis_encoder.wasm +0 -0
  100. package/dist/libs/libs/basis_transcoder.js +0 -22
  101. package/dist/libs/libs/basis_transcoder.wasm +0 -0
  102. package/dist/libs/libs/crunch.js +0 -136
  103. package/dist/npy-loader.js.map +0 -1
  104. package/dist/workers/basis-worker-node.js.map +0 -1
  105. package/dist/workers/basis-worker.js.map +0 -1
  106. package/dist/workers/compressed-texture-worker.js.map +0 -1
  107. package/dist/workers/crunch-worker.js.map +0 -1
  108. package/dist/workers/ktx2-basis-writer-worker-node.js.map +0 -1
  109. package/dist/workers/ktx2-basis-writer-worker.js.map +0 -1
  110. package/dist/workers/npy-worker.js.map +0 -1
@@ -1,154 +1,245 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { GL_EXTENSIONS_CONSTANTS } from "../gl-extensions.js";
2
5
  import { extractMipmapImages } from "../utils/extract-mipmap-images.js";
3
6
  const PVR_CONSTANTS = {
4
- MAGIC_NUMBER: 0x03525650,
5
- MAGIC_NUMBER_EXTRA: 0x50565203,
6
- HEADER_LENGTH: 13,
7
- HEADER_SIZE: 52,
8
- MAGIC_NUMBER_INDEX: 0,
9
- PIXEL_FORMAT_INDEX: 2,
10
- COLOUR_SPACE_INDEX: 4,
11
- HEIGHT_INDEX: 6,
12
- WIDTH_INDEX: 7,
13
- MIPMAPCOUNT_INDEX: 11,
14
- METADATA_SIZE_INDEX: 12
7
+ MAGIC_NUMBER: 0x03525650,
8
+ MAGIC_NUMBER_EXTRA: 0x50565203,
9
+ HEADER_LENGTH: 13,
10
+ HEADER_SIZE: 52,
11
+ MAGIC_NUMBER_INDEX: 0,
12
+ PIXEL_FORMAT_INDEX: 2,
13
+ COLOUR_SPACE_INDEX: 4,
14
+ HEIGHT_INDEX: 6,
15
+ WIDTH_INDEX: 7,
16
+ MIPMAPCOUNT_INDEX: 11,
17
+ METADATA_SIZE_INDEX: 12
15
18
  };
16
19
  const PVR_PIXEL_FORMATS = {
17
- 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
18
- 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
19
- 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
20
- 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
21
- 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
22
- 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
23
- 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
24
- 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
25
- 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
26
- 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
27
- 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
28
- 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
29
- 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
30
- 27: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],
31
- 28: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],
32
- 29: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],
33
- 30: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],
34
- 31: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],
35
- 32: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],
36
- 33: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],
37
- 34: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],
38
- 35: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],
39
- 36: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],
40
- 37: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],
41
- 38: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],
42
- 39: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],
43
- 40: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]
20
+ 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
21
+ 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
22
+ 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
23
+ 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
24
+ 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
25
+ 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
26
+ 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
27
+ 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
28
+ 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
29
+ 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
30
+ 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
31
+ 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
32
+ 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
33
+ 27: [
34
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
35
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
36
+ ],
37
+ 28: [
38
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
39
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
40
+ ],
41
+ 29: [
42
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
43
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
44
+ ],
45
+ 30: [
46
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
47
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
48
+ ],
49
+ 31: [
50
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
51
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
52
+ ],
53
+ 32: [
54
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
55
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
56
+ ],
57
+ 33: [
58
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
59
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
60
+ ],
61
+ 34: [
62
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
63
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
64
+ ],
65
+ 35: [
66
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
67
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
68
+ ],
69
+ 36: [
70
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
71
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
72
+ ],
73
+ 37: [
74
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
75
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
76
+ ],
77
+ 38: [
78
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
79
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
80
+ ],
81
+ 39: [
82
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
83
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
84
+ ],
85
+ 40: [
86
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
87
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
88
+ ]
44
89
  };
45
90
  const PVR_SIZE_FUNCTIONS = {
46
- 0: pvrtc2bppSize,
47
- 1: pvrtc2bppSize,
48
- 2: pvrtc4bppSize,
49
- 3: pvrtc4bppSize,
50
- 6: dxtEtcSmallSize,
51
- 7: dxtEtcSmallSize,
52
- 9: dxtEtcAstcBigSize,
53
- 11: dxtEtcAstcBigSize,
54
- 22: dxtEtcSmallSize,
55
- 23: dxtEtcAstcBigSize,
56
- 24: dxtEtcSmallSize,
57
- 25: dxtEtcSmallSize,
58
- 26: dxtEtcAstcBigSize,
59
- 27: dxtEtcAstcBigSize,
60
- 28: atc5x4Size,
61
- 29: atc5x5Size,
62
- 30: atc6x5Size,
63
- 31: atc6x6Size,
64
- 32: atc8x5Size,
65
- 33: atc8x6Size,
66
- 34: atc8x8Size,
67
- 35: atc10x5Size,
68
- 36: atc10x6Size,
69
- 37: atc10x8Size,
70
- 38: atc10x10Size,
71
- 39: atc12x10Size,
72
- 40: atc12x12Size
91
+ 0: pvrtc2bppSize,
92
+ 1: pvrtc2bppSize,
93
+ 2: pvrtc4bppSize,
94
+ 3: pvrtc4bppSize,
95
+ 6: dxtEtcSmallSize,
96
+ 7: dxtEtcSmallSize,
97
+ 9: dxtEtcAstcBigSize,
98
+ 11: dxtEtcAstcBigSize,
99
+ 22: dxtEtcSmallSize,
100
+ 23: dxtEtcAstcBigSize,
101
+ 24: dxtEtcSmallSize,
102
+ 25: dxtEtcSmallSize,
103
+ 26: dxtEtcAstcBigSize,
104
+ 27: dxtEtcAstcBigSize,
105
+ 28: atc5x4Size,
106
+ 29: atc5x5Size,
107
+ 30: atc6x5Size,
108
+ 31: atc6x6Size,
109
+ 32: atc8x5Size,
110
+ 33: atc8x6Size,
111
+ 34: atc8x8Size,
112
+ 35: atc10x5Size,
113
+ 36: atc10x6Size,
114
+ 37: atc10x8Size,
115
+ 38: atc10x10Size,
116
+ 39: atc12x10Size,
117
+ 40: atc12x12Size
73
118
  };
119
+ /**
120
+ * Check if data is in "PVR" format by its magic number
121
+ * @param data - binary data of compressed texture
122
+ * @returns true - data in "PVR" format, else - false
123
+ */
74
124
  export function isPVR(data) {
75
- const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
76
- const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
77
- return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
78
- }
125
+ const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
126
+ const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
127
+ return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
128
+ }
129
+ /**
130
+ * Parse texture data as "PVR" format
131
+ * @param data - binary data of compressed texture
132
+ * @returns Array of the texture levels
133
+ * @see http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf
134
+ */
79
135
  export function parsePVR(data) {
80
- const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
81
- const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
82
- const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];
83
- const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];
84
- const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];
85
- const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];
86
- const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];
87
- const width = header[PVR_CONSTANTS.WIDTH_INDEX];
88
- const height = header[PVR_CONSTANTS.HEIGHT_INDEX];
89
- const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];
90
- const image = new Uint8Array(data, dataOffset);
91
- return extractMipmapImages(image, {
92
- mipMapLevels,
93
- width,
94
- height,
95
- sizeFunction,
96
- internalFormat
97
- });
98
- }
136
+ const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
137
+ const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
138
+ const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];
139
+ const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];
140
+ const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];
141
+ const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];
142
+ const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];
143
+ const width = header[PVR_CONSTANTS.WIDTH_INDEX];
144
+ const height = header[PVR_CONSTANTS.HEIGHT_INDEX];
145
+ const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];
146
+ const image = new Uint8Array(data, dataOffset);
147
+ return extractMipmapImages(image, {
148
+ mipMapLevels,
149
+ width,
150
+ height,
151
+ sizeFunction,
152
+ internalFormat
153
+ });
154
+ }
155
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/
99
156
  function pvrtc2bppSize(width, height) {
100
- width = Math.max(width, 16);
101
- height = Math.max(height, 8);
102
- return width * height / 4;
157
+ width = Math.max(width, 16);
158
+ height = Math.max(height, 8);
159
+ return (width * height) / 4;
103
160
  }
161
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/
104
162
  function pvrtc4bppSize(width, height) {
105
- width = Math.max(width, 8);
106
- height = Math.max(height, 8);
107
- return width * height / 2;
108
- }
163
+ width = Math.max(width, 8);
164
+ height = Math.max(height, 8);
165
+ return (width * height) / 2;
166
+ }
167
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/
168
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/
169
+ // Size for:
170
+ // COMPRESSED_RGB_S3TC_DXT1_EXT
171
+ // COMPRESSED_R11_EAC
172
+ // COMPRESSED_SIGNED_R11_EAC
173
+ // COMPRESSED_RGB8_ETC2
174
+ // COMPRESSED_SRGB8_ETC2
175
+ // COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
176
+ // COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
109
177
  function dxtEtcSmallSize(width, height) {
110
- return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
111
- }
178
+ return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
179
+ }
180
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/
181
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/
182
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
183
+ // Size for:
184
+ // COMPRESSED_RGBA_S3TC_DXT3_EXT
185
+ // COMPRESSED_RGBA_S3TC_DXT5_EXT
186
+ // COMPRESSED_RG11_EAC
187
+ // COMPRESSED_SIGNED_RG11_EAC
188
+ // COMPRESSED_RGBA8_ETC2_EAC
189
+ // COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
190
+ // COMPRESSED_RGBA_ASTC_4x4_KHR
112
191
  function dxtEtcAstcBigSize(width, height) {
113
- return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
192
+ return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
114
193
  }
194
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
115
195
  function atc5x4Size(width, height) {
116
- return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
196
+ return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
117
197
  }
198
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
118
199
  function atc5x5Size(width, height) {
119
- return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
200
+ return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
120
201
  }
202
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
121
203
  function atc6x5Size(width, height) {
122
- return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
204
+ return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
123
205
  }
206
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
124
207
  function atc6x6Size(width, height) {
125
- return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
208
+ return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
126
209
  }
210
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
127
211
  function atc8x5Size(width, height) {
128
- return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
212
+ return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
129
213
  }
214
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
130
215
  function atc8x6Size(width, height) {
131
- return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
216
+ return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
132
217
  }
218
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
133
219
  function atc8x8Size(width, height) {
134
- return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
220
+ return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
135
221
  }
222
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
136
223
  function atc10x5Size(width, height) {
137
- return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
224
+ return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
138
225
  }
226
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
139
227
  function atc10x6Size(width, height) {
140
- return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
228
+ return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
141
229
  }
230
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
142
231
  function atc10x8Size(width, height) {
143
- return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
232
+ return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
144
233
  }
234
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
145
235
  function atc10x10Size(width, height) {
146
- return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
236
+ return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
147
237
  }
238
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
148
239
  function atc12x10Size(width, height) {
149
- return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
240
+ return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
150
241
  }
242
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/
151
243
  function atc12x12Size(width, height) {
152
- return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
244
+ return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
153
245
  }
154
- //# sourceMappingURL=parse-pvr.js.map
@@ -1,34 +1,39 @@
1
- const isObject = value => value && typeof value === 'object';
2
- export async function asyncDeepMap(tree, func) {
3
- let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
4
- return await mapSubtree(tree, func, options);
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ const isObject = (value) => value && typeof value === 'object';
5
+ // Loads a deep structure of urls (objects and arrays of urls)
6
+ // Returns an object with six key-value pairs containing the images (or image mip arrays)
7
+ // for each cube face
8
+ export async function asyncDeepMap(tree, func, options = {}) {
9
+ return await mapSubtree(tree, func, options);
5
10
  }
6
11
  export async function mapSubtree(object, func, options) {
7
- if (Array.isArray(object)) {
8
- return await mapArray(object, func, options);
9
- }
10
- if (isObject(object)) {
11
- return await mapObject(object, func, options);
12
- }
13
- const url = object;
14
- return await func(url, options);
12
+ if (Array.isArray(object)) {
13
+ return await mapArray(object, func, options);
14
+ }
15
+ if (isObject(object)) {
16
+ return await mapObject(object, func, options);
17
+ }
18
+ // TODO - ignore non-urls, non-arraybuffers?
19
+ const url = object;
20
+ return await func(url, options);
15
21
  }
22
+ // HELPERS
16
23
  async function mapObject(object, func, options) {
17
- const promises = [];
18
- const values = {};
19
- for (const key in object) {
20
- const url = object[key];
21
- const promise = mapSubtree(url, func, options).then(value => {
22
- values[key] = value;
23
- });
24
- promises.push(promise);
25
- }
26
- await Promise.all(promises);
27
- return values;
24
+ const promises = [];
25
+ const values = {};
26
+ for (const key in object) {
27
+ const url = object[key];
28
+ const promise = mapSubtree(url, func, options).then((value) => {
29
+ values[key] = value;
30
+ });
31
+ promises.push(promise);
32
+ }
33
+ await Promise.all(promises);
34
+ return values;
28
35
  }
29
- async function mapArray(urlArray, func) {
30
- let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
31
- const promises = urlArray.map(url => mapSubtree(url, func, options));
32
- return await Promise.all(promises);
36
+ async function mapArray(urlArray, func, options = {}) {
37
+ const promises = urlArray.map((url) => mapSubtree(url, func, options));
38
+ return await Promise.all(promises);
33
39
  }
34
- //# sourceMappingURL=async-deep-map.js.map
@@ -1,10 +1,12 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { asyncDeepMap } from "./async-deep-map.js";
2
5
  export async function deepLoad(urlTree, load, options) {
3
- return await asyncDeepMap(urlTree, url => shallowLoad(url, load, options));
6
+ return await asyncDeepMap(urlTree, (url) => shallowLoad(url, load, options));
4
7
  }
5
8
  export async function shallowLoad(url, load, options) {
6
- const response = await fetch(url, options.fetch);
7
- const arrayBuffer = await response.arrayBuffer();
8
- return await load(arrayBuffer, options);
9
+ const response = await fetch(url, options.fetch);
10
+ const arrayBuffer = await response.arrayBuffer();
11
+ return await load(arrayBuffer, options);
9
12
  }
10
- //# sourceMappingURL=deep-load.js.map
@@ -1,3 +1,3 @@
1
- import type { GetUrl, UrlOptions } from './texture-api-types';
1
+ import type { GetUrl, UrlOptions } from "./texture-api-types.js";
2
2
  export declare function generateUrl(getUrl: string | GetUrl, options: UrlOptions, urlOptions: Record<string, any>): string;
3
3
  //# sourceMappingURL=generate-url.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-url.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/generate-url.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAG5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,MAAM,CAWR"}
1
+ {"version":3,"file":"generate-url.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/generate-url.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,+BAA4B;AAG5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,MAAM,CAWR"}
@@ -1,13 +1,15 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { resolvePath } from '@loaders.gl/loader-utils';
5
+ // Generate a url by calling getUrl with mix of options, applying options.baseUrl
2
6
  export function generateUrl(getUrl, options, urlOptions) {
3
- let url = typeof getUrl === 'function' ? getUrl({
4
- ...options,
5
- ...urlOptions
6
- }) : getUrl;
7
- const baseUrl = options.baseUrl;
8
- if (baseUrl) {
9
- url = baseUrl[baseUrl.length - 1] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;
10
- }
11
- return resolvePath(url);
7
+ // Get url
8
+ let url = typeof getUrl === 'function' ? getUrl({ ...options, ...urlOptions }) : getUrl;
9
+ // Apply options.baseUrl
10
+ const baseUrl = options.baseUrl;
11
+ if (baseUrl) {
12
+ url = baseUrl[baseUrl.length - 1] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;
13
+ }
14
+ return resolvePath(url);
12
15
  }
13
- //# sourceMappingURL=generate-url.js.map
@@ -1,4 +1,4 @@
1
- import type { GetUrl } from './texture-api-types';
1
+ import type { GetUrl } from "./texture-api-types.js";
2
2
  export declare function loadImageTextureArray(count: number, getUrl: GetUrl, options?: {}): Promise<any>;
3
3
  export declare function getImageArrayUrls(count: number, getUrl: GetUrl, options?: {}): Promise<any>;
4
4
  //# sourceMappingURL=load-image-array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-image-array.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/load-image-array.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAIhD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,KAAK,GACX,OAAO,CAAC,GAAG,CAAC,CAGd;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAOjG"}
1
+ {"version":3,"file":"load-image-array.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/load-image-array.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAC,+BAA4B;AAIhD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,KAAK,GACX,OAAO,CAAC,GAAG,CAAC,CAGd;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAOjG"}
@@ -1,20 +1,18 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { ImageLoader } from '@loaders.gl/images';
2
5
  import { getImageUrls } from "./load-image.js";
3
6
  import { deepLoad } from "./deep-load.js";
4
- export async function loadImageTextureArray(count, getUrl) {
5
- let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
6
- const imageUrls = await getImageArrayUrls(count, getUrl, options);
7
- return await deepLoad(imageUrls, ImageLoader.parse, options);
7
+ export async function loadImageTextureArray(count, getUrl, options = {}) {
8
+ const imageUrls = await getImageArrayUrls(count, getUrl, options);
9
+ return await deepLoad(imageUrls, ImageLoader.parse, options);
8
10
  }
9
- export async function getImageArrayUrls(count, getUrl) {
10
- let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
11
- const promises = [];
12
- for (let index = 0; index < count; index++) {
13
- const promise = getImageUrls(getUrl, options, {
14
- index
15
- });
16
- promises.push(promise);
17
- }
18
- return await Promise.all(promises);
11
+ export async function getImageArrayUrls(count, getUrl, options = {}) {
12
+ const promises = [];
13
+ for (let index = 0; index < count; index++) {
14
+ const promise = getImageUrls(getUrl, options, { index });
15
+ promises.push(promise);
16
+ }
17
+ return await Promise.all(promises);
19
18
  }
20
- //# sourceMappingURL=load-image-array.js.map
@@ -1,4 +1,4 @@
1
- import type { GetUrl, UrlOptions } from './texture-api-types';
1
+ import type { GetUrl, UrlOptions } from "./texture-api-types.js";
2
2
  export type ImageCubeTexture = {
3
3
  GL_TEXTURE_CUBE_MAP_POSITIVE_X: any;
4
4
  GL_TEXTURE_CUBE_MAP_NEGATIVE_X: any;
@@ -1 +1 @@
1
- {"version":3,"file":"load-image-cube.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/load-image-cube.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAqB5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;CACrC,CAAC;AAIF,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,8CAiBzE;AAID,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,KAAK,GACX,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
1
+ {"version":3,"file":"load-image-cube.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/load-image-cube.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,+BAA4B;AAqB5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC;CACrC,CAAC;AAIF,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,8CAiBzE;AAID,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,KAAK,GACX,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
@@ -1,63 +1,44 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { ImageLoader } from '@loaders.gl/images';
2
5
  import { getImageUrls } from "./load-image.js";
3
6
  import { deepLoad } from "./deep-load.js";
7
+ // Returned map will be have keys corresponding to GL cubemap constants
4
8
  const GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
5
9
  const GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
6
10
  const GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
7
11
  const GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
8
12
  const GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
9
13
  const GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851a;
10
- const CUBE_FACES = [{
11
- face: GL_TEXTURE_CUBE_MAP_POSITIVE_X,
12
- direction: 'right',
13
- axis: 'x',
14
- sign: 'positive'
15
- }, {
16
- face: GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
17
- direction: 'left',
18
- axis: 'x',
19
- sign: 'negative'
20
- }, {
21
- face: GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
22
- direction: 'top',
23
- axis: 'y',
24
- sign: 'positive'
25
- }, {
26
- face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
27
- direction: 'bottom',
28
- axis: 'y',
29
- sign: 'negative'
30
- }, {
31
- face: GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
32
- direction: 'front',
33
- axis: 'z',
34
- sign: 'positive'
35
- }, {
36
- face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
37
- direction: 'back',
38
- axis: 'z',
39
- sign: 'negative'
40
- }];
14
+ const CUBE_FACES = [
15
+ { face: GL_TEXTURE_CUBE_MAP_POSITIVE_X, direction: 'right', axis: 'x', sign: 'positive' },
16
+ { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_X, direction: 'left', axis: 'x', sign: 'negative' },
17
+ { face: GL_TEXTURE_CUBE_MAP_POSITIVE_Y, direction: 'top', axis: 'y', sign: 'positive' },
18
+ { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, direction: 'bottom', axis: 'y', sign: 'negative' },
19
+ { face: GL_TEXTURE_CUBE_MAP_POSITIVE_Z, direction: 'front', axis: 'z', sign: 'positive' },
20
+ { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, direction: 'back', axis: 'z', sign: 'negative' }
21
+ ];
22
+ // Returns an object with six key-value pairs containing the urls (or url mip arrays)
23
+ // for each cube face
41
24
  export async function getImageCubeUrls(getUrl, options) {
42
- const urls = {};
43
- const promises = [];
44
- let index = 0;
45
- for (let i = 0; i < CUBE_FACES.length; ++i) {
46
- const face = CUBE_FACES[index];
47
- const promise = getImageUrls(getUrl, options, {
48
- ...face,
49
- index: index++
50
- }).then(url => {
51
- urls[face.face] = url;
52
- });
53
- promises.push(promise);
54
- }
55
- await Promise.all(promises);
56
- return urls;
25
+ // Calculate URLs
26
+ const urls = {};
27
+ const promises = [];
28
+ let index = 0;
29
+ for (let i = 0; i < CUBE_FACES.length; ++i) {
30
+ const face = CUBE_FACES[index];
31
+ const promise = getImageUrls(getUrl, options, { ...face, index: index++ }).then((url) => {
32
+ urls[face.face] = url;
33
+ });
34
+ promises.push(promise);
35
+ }
36
+ await Promise.all(promises);
37
+ return urls;
57
38
  }
58
- export async function loadImageTextureCube(getUrl) {
59
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
60
- const urls = await getImageCubeUrls(getUrl, options);
61
- return await deepLoad(urls, ImageLoader.parse, options);
39
+ // Returns an object with six key-value pairs containing the images (or image mip arrays)
40
+ // for each cube face
41
+ export async function loadImageTextureCube(getUrl, options = {}) {
42
+ const urls = await getImageCubeUrls(getUrl, options);
43
+ return (await deepLoad(urls, ImageLoader.parse, options));
62
44
  }
63
- //# sourceMappingURL=load-image-cube.js.map