@loaders.gl/gltf 4.0.0-alpha.5 → 4.0.0-alpha.7

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 (315) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +3545 -2445
  3. package/dist/es5/bundle.js +6 -0
  4. package/dist/es5/bundle.js.map +1 -0
  5. package/dist/es5/glb-loader.js +56 -0
  6. package/dist/es5/glb-loader.js.map +1 -0
  7. package/dist/es5/glb-writer.js +34 -0
  8. package/dist/es5/glb-writer.js.map +1 -0
  9. package/dist/es5/gltf-loader.js +81 -0
  10. package/dist/es5/gltf-loader.js.map +1 -0
  11. package/dist/es5/gltf-writer.js +35 -0
  12. package/dist/es5/gltf-writer.js.map +1 -0
  13. package/dist/es5/index.js +55 -0
  14. package/dist/es5/index.js.map +1 -0
  15. package/dist/es5/lib/api/gltf-extensions.js +109 -0
  16. package/dist/es5/lib/api/gltf-extensions.js.map +1 -0
  17. package/dist/es5/lib/api/gltf-scenegraph.js +595 -0
  18. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -0
  19. package/dist/es5/lib/api/normalize-gltf-v1.js +331 -0
  20. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -0
  21. package/dist/es5/lib/api/post-process-gltf.js +470 -0
  22. package/dist/es5/lib/api/post-process-gltf.js.map +1 -0
  23. package/dist/es5/lib/encoders/encode-glb.js +61 -0
  24. package/dist/es5/lib/encoders/encode-glb.js.map +1 -0
  25. package/dist/es5/lib/encoders/encode-gltf.js +20 -0
  26. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -0
  27. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +94 -0
  28. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  29. package/dist/es5/lib/extensions/EXT_texture_webp.js +43 -0
  30. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -0
  31. package/dist/es5/lib/extensions/KHR_binary_gltf.js +39 -0
  32. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -0
  33. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +247 -0
  34. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  35. package/dist/es5/lib/extensions/KHR_texture_basisu.js +36 -0
  36. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -0
  37. package/dist/es5/lib/extensions/KHR_texture_transform.js +230 -0
  38. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -0
  39. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +103 -0
  40. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  41. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +99 -0
  42. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  43. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +76 -0
  44. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  45. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +113 -0
  46. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  47. package/dist/es5/lib/gltf-utils/get-typed-array.js +23 -0
  48. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -0
  49. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +68 -0
  50. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  51. package/dist/es5/lib/gltf-utils/gltf-constants.js +48 -0
  52. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -0
  53. package/dist/es5/lib/gltf-utils/gltf-utils.js +86 -0
  54. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -0
  55. package/dist/es5/lib/gltf-utils/resolve-url.js +18 -0
  56. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -0
  57. package/dist/es5/lib/parsers/parse-glb.js +120 -0
  58. package/dist/es5/lib/parsers/parse-glb.js.map +1 -0
  59. package/dist/es5/lib/parsers/parse-gltf.js +283 -0
  60. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -0
  61. package/dist/es5/lib/types/glb-types.js +2 -0
  62. package/dist/es5/lib/types/glb-types.js.map +1 -0
  63. package/dist/es5/lib/types/gltf-json-schema.js +2 -0
  64. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -0
  65. package/dist/es5/lib/types/gltf-postprocessed-schema.js +2 -0
  66. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -0
  67. package/dist/es5/lib/types/gltf-types.js +2 -0
  68. package/dist/es5/lib/types/gltf-types.js.map +1 -0
  69. package/dist/es5/lib/utils/assert.js +12 -0
  70. package/dist/es5/lib/utils/assert.js.map +1 -0
  71. package/dist/es5/lib/utils/version.js +9 -0
  72. package/dist/es5/lib/utils/version.js.map +1 -0
  73. package/dist/es5/meshopt/meshopt-decoder.js +215 -0
  74. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -0
  75. package/dist/es5/webp/webp.js +83 -0
  76. package/dist/es5/webp/webp.js.map +1 -0
  77. package/dist/esm/bundle.js +4 -0
  78. package/dist/esm/bundle.js.map +1 -0
  79. package/dist/esm/glb-loader.js +31 -0
  80. package/dist/esm/glb-loader.js.map +1 -0
  81. package/dist/esm/glb-writer.js +27 -0
  82. package/dist/esm/glb-writer.js.map +1 -0
  83. package/dist/esm/gltf-loader.js +51 -0
  84. package/dist/esm/gltf-loader.js.map +1 -0
  85. package/dist/esm/gltf-writer.js +28 -0
  86. package/dist/esm/gltf-writer.js.map +1 -0
  87. package/dist/esm/index.js +8 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/lib/api/gltf-extensions.js +35 -0
  90. package/dist/esm/lib/api/gltf-extensions.js.map +1 -0
  91. package/dist/esm/lib/api/gltf-scenegraph.js +452 -0
  92. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -0
  93. package/dist/esm/lib/api/normalize-gltf-v1.js +204 -0
  94. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -0
  95. package/dist/esm/lib/api/post-process-gltf.js +396 -0
  96. package/dist/esm/lib/api/post-process-gltf.js.map +1 -0
  97. package/dist/esm/lib/encoders/encode-glb.js +54 -0
  98. package/dist/esm/lib/encoders/encode-glb.js.map +1 -0
  99. package/dist/esm/lib/encoders/encode-gltf.js +14 -0
  100. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -0
  101. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +41 -0
  102. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  103. package/dist/esm/lib/extensions/EXT_texture_webp.js +25 -0
  104. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -0
  105. package/dist/esm/lib/extensions/KHR_binary_gltf.js +21 -0
  106. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -0
  107. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +111 -0
  108. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  109. package/dist/esm/lib/extensions/KHR_texture_basisu.js +18 -0
  110. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -0
  111. package/dist/esm/lib/extensions/KHR_texture_transform.js +182 -0
  112. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -0
  113. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +77 -0
  114. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  115. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +42 -0
  116. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  117. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +33 -0
  118. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  119. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +61 -0
  120. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  121. package/dist/esm/lib/gltf-utils/get-typed-array.js +16 -0
  122. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -0
  123. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +62 -0
  124. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  125. package/dist/esm/lib/gltf-utils/gltf-constants.js +37 -0
  126. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -0
  127. package/dist/esm/lib/gltf-utils/gltf-utils.js +74 -0
  128. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -0
  129. package/dist/esm/lib/gltf-utils/resolve-url.js +12 -0
  130. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -0
  131. package/dist/esm/lib/parsers/parse-glb.js +114 -0
  132. package/dist/esm/lib/parsers/parse-glb.js.map +1 -0
  133. package/dist/esm/lib/parsers/parse-gltf.js +155 -0
  134. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -0
  135. package/dist/esm/lib/types/glb-types.js +2 -0
  136. package/dist/esm/lib/types/glb-types.js.map +1 -0
  137. package/dist/esm/lib/types/gltf-json-schema.js +2 -0
  138. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -0
  139. package/dist/esm/lib/types/gltf-postprocessed-schema.js +2 -0
  140. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -0
  141. package/dist/esm/lib/types/gltf-types.js +2 -0
  142. package/dist/esm/lib/types/gltf-types.js.map +1 -0
  143. package/dist/esm/lib/utils/assert.js +6 -0
  144. package/dist/esm/lib/utils/assert.js.map +1 -0
  145. package/dist/esm/lib/utils/version.js +2 -0
  146. package/dist/esm/lib/utils/version.js.map +1 -0
  147. package/dist/esm/meshopt/meshopt-decoder.js +91 -0
  148. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -0
  149. package/dist/esm/meshopt/meshopt-encoder.ts.disabled +409 -0
  150. package/dist/esm/webp/webp.js +25 -0
  151. package/dist/esm/webp/webp.js.map +1 -0
  152. package/dist/glb-loader.d.ts +5 -4
  153. package/dist/glb-loader.d.ts.map +1 -1
  154. package/dist/glb-loader.js +30 -28
  155. package/dist/glb-writer.d.ts +7 -16
  156. package/dist/glb-writer.d.ts.map +1 -1
  157. package/dist/glb-writer.js +32 -26
  158. package/dist/gltf-loader.d.ts +7 -6
  159. package/dist/gltf-loader.d.ts.map +1 -1
  160. package/dist/gltf-loader.js +46 -43
  161. package/dist/gltf-writer.d.ts +2 -2
  162. package/dist/gltf-writer.d.ts.map +1 -1
  163. package/dist/gltf-writer.js +29 -26
  164. package/dist/index.d.ts +8 -4
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +28 -7
  167. package/dist/lib/api/gltf-extensions.d.ts +7 -2
  168. package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
  169. package/dist/lib/api/gltf-extensions.js +79 -31
  170. package/dist/lib/api/gltf-scenegraph.d.ts +10 -14
  171. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
  172. package/dist/lib/api/gltf-scenegraph.js +577 -513
  173. package/dist/lib/api/normalize-gltf-v1.d.ts.map +1 -1
  174. package/dist/lib/api/normalize-gltf-v1.js +278 -229
  175. package/dist/lib/api/post-process-gltf.d.ts +4 -1
  176. package/dist/lib/api/post-process-gltf.d.ts.map +1 -1
  177. package/dist/lib/api/post-process-gltf.js +385 -374
  178. package/dist/lib/encoders/encode-glb.d.ts +14 -1
  179. package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
  180. package/dist/lib/encoders/encode-glb.js +67 -58
  181. package/dist/lib/encoders/encode-gltf.d.ts +18 -0
  182. package/dist/lib/encoders/encode-gltf.d.ts.map +1 -1
  183. package/dist/lib/encoders/encode-gltf.js +30 -12
  184. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +1 -4
  185. package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
  186. package/dist/lib/extensions/EXT_meshopt_compression.js +35 -50
  187. package/dist/lib/extensions/EXT_texture_webp.d.ts +1 -1
  188. package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  189. package/dist/lib/extensions/EXT_texture_webp.js +32 -28
  190. package/dist/lib/extensions/KHR_binary_gltf.d.ts +1 -1
  191. package/dist/lib/extensions/KHR_binary_gltf.d.ts.map +1 -1
  192. package/dist/lib/extensions/KHR_binary_gltf.js +36 -23
  193. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +1 -1
  194. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  195. package/dist/lib/extensions/KHR_draco_mesh_compression.js +123 -111
  196. package/dist/lib/extensions/KHR_texture_basisu.d.ts +1 -1
  197. package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -1
  198. package/dist/lib/extensions/KHR_texture_basisu.js +26 -19
  199. package/dist/lib/extensions/KHR_texture_transform.d.ts +13 -0
  200. package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -0
  201. package/dist/lib/extensions/KHR_texture_transform.js +227 -0
  202. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +6 -0
  203. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -0
  204. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +115 -0
  205. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +1 -1
  206. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -1
  207. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +54 -44
  208. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +1 -1
  209. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -1
  210. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +39 -32
  211. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +1 -1
  212. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -1
  213. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +73 -62
  214. package/dist/lib/gltf-utils/get-typed-array.js +39 -14
  215. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +1 -1
  216. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -1
  217. package/dist/lib/gltf-utils/gltf-attribute-utils.js +65 -65
  218. package/dist/lib/gltf-utils/gltf-constants.d.ts +17 -0
  219. package/dist/lib/gltf-utils/gltf-constants.d.ts.map +1 -1
  220. package/dist/lib/gltf-utils/gltf-constants.js +38 -32
  221. package/dist/lib/gltf-utils/gltf-utils.d.ts +7 -0
  222. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
  223. package/dist/lib/gltf-utils/gltf-utils.js +79 -45
  224. package/dist/lib/gltf-utils/resolve-url.js +17 -15
  225. package/dist/lib/parsers/parse-glb.d.ts +15 -3
  226. package/dist/lib/parsers/parse-glb.d.ts.map +1 -1
  227. package/dist/lib/parsers/parse-glb.js +143 -105
  228. package/dist/lib/parsers/parse-gltf.d.ts +8 -4
  229. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
  230. package/dist/lib/parsers/parse-gltf.js +166 -154
  231. package/dist/lib/types/glb-types.d.ts +3 -3
  232. package/dist/lib/types/glb-types.d.ts.map +1 -1
  233. package/dist/lib/types/glb-types.js +2 -2
  234. package/dist/lib/types/gltf-json-schema.d.ts +530 -132
  235. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  236. package/dist/lib/types/gltf-json-schema.js +4 -2
  237. package/dist/lib/types/gltf-postprocessed-schema.d.ts +175 -210
  238. package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
  239. package/dist/lib/types/gltf-postprocessed-schema.js +4 -2
  240. package/dist/lib/types/gltf-types.d.ts +22 -7
  241. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  242. package/dist/lib/types/gltf-types.js +3 -2
  243. package/dist/lib/utils/assert.js +11 -5
  244. package/dist/lib/utils/version.js +7 -2
  245. package/dist/meshopt/meshopt-decoder.js +97 -82
  246. package/dist/webp/webp.d.ts +1 -1
  247. package/dist/webp/webp.d.ts.map +1 -1
  248. package/dist/webp/webp.js +32 -23
  249. package/package.json +9 -8
  250. package/src/glb-loader.ts +4 -4
  251. package/src/glb-writer.ts +11 -3
  252. package/src/gltf-loader.ts +12 -8
  253. package/src/gltf-writer.ts +2 -2
  254. package/src/index.ts +34 -6
  255. package/src/lib/api/gltf-extensions.ts +14 -3
  256. package/src/lib/api/gltf-scenegraph.ts +61 -34
  257. package/src/lib/api/normalize-gltf-v1.ts +2 -1
  258. package/src/lib/api/post-process-gltf.ts +275 -150
  259. package/src/lib/encoders/encode-glb.ts +21 -4
  260. package/src/lib/encoders/encode-gltf.ts +19 -10
  261. package/src/lib/extensions/EXT_meshopt_compression.ts +16 -25
  262. package/src/lib/extensions/EXT_texture_webp.ts +5 -4
  263. package/src/lib/extensions/KHR_binary_gltf.ts +3 -3
  264. package/src/lib/extensions/KHR_draco_mesh_compression.ts +8 -8
  265. package/src/lib/extensions/KHR_texture_basisu.ts +4 -3
  266. package/src/lib/extensions/KHR_texture_transform.ts +308 -0
  267. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +163 -0
  268. package/src/lib/extensions/deprecated/KHR_lights_punctual.ts +2 -2
  269. package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +5 -5
  270. package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +3 -2
  271. package/src/lib/gltf-utils/gltf-attribute-utils.ts +1 -1
  272. package/src/lib/gltf-utils/gltf-constants.ts +2 -2
  273. package/src/lib/gltf-utils/gltf-utils.ts +31 -0
  274. package/src/lib/parsers/parse-glb.ts +50 -24
  275. package/src/lib/parsers/parse-gltf.ts +32 -17
  276. package/src/lib/types/glb-types.ts +1 -1
  277. package/src/lib/types/gltf-json-schema.ts +582 -126
  278. package/src/lib/types/gltf-postprocessed-schema.ts +289 -212
  279. package/src/lib/types/gltf-types.ts +41 -44
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/glb-loader.js.map +0 -1
  282. package/dist/glb-writer.js.map +0 -1
  283. package/dist/gltf-loader.js.map +0 -1
  284. package/dist/gltf-writer.js.map +0 -1
  285. package/dist/index.js.map +0 -1
  286. package/dist/lib/api/gltf-extensions.js.map +0 -1
  287. package/dist/lib/api/gltf-scenegraph.js.map +0 -1
  288. package/dist/lib/api/normalize-gltf-v1.js.map +0 -1
  289. package/dist/lib/api/post-process-gltf.js.map +0 -1
  290. package/dist/lib/encoders/encode-glb.js.map +0 -1
  291. package/dist/lib/encoders/encode-gltf.js.map +0 -1
  292. package/dist/lib/extensions/EXT_meshopt_compression.js.map +0 -1
  293. package/dist/lib/extensions/EXT_texture_webp.js.map +0 -1
  294. package/dist/lib/extensions/KHR_binary_gltf.js.map +0 -1
  295. package/dist/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
  296. package/dist/lib/extensions/KHR_texture_basisu.js.map +0 -1
  297. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
  298. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
  299. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
  300. package/dist/lib/gltf-utils/get-typed-array.js.map +0 -1
  301. package/dist/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
  302. package/dist/lib/gltf-utils/gltf-constants.js.map +0 -1
  303. package/dist/lib/gltf-utils/gltf-utils.js.map +0 -1
  304. package/dist/lib/gltf-utils/resolve-url.js.map +0 -1
  305. package/dist/lib/parsers/parse-glb.js.map +0 -1
  306. package/dist/lib/parsers/parse-gltf.js.map +0 -1
  307. package/dist/lib/types/glb-types.js.map +0 -1
  308. package/dist/lib/types/gltf-json-schema.js.map +0 -1
  309. package/dist/lib/types/gltf-postprocessed-schema.js.map +0 -1
  310. package/dist/lib/types/gltf-types.js.map +0 -1
  311. package/dist/lib/utils/assert.js.map +0 -1
  312. package/dist/lib/utils/version.js.map +0 -1
  313. package/dist/meshopt/meshopt-decoder.js.map +0 -1
  314. package/dist/webp/webp.js.map +0 -1
  315. /package/dist/{meshopt → es5/meshopt}/meshopt-encoder.ts.disabled +0 -0
@@ -1,422 +1,433 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { assert } from '../utils/assert';
3
- import { getAccessorArrayTypeAndLength } from '../gltf-utils/gltf-utils';
1
+ "use strict";
2
+ // loaders.gl, MIT license
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.postProcessGLTF = void 0;
5
+ const assert_1 = require("../utils/assert");
6
+ const gltf_utils_1 = require("../gltf-utils/gltf-utils");
7
+ // This is a post processor for loaded glTF files
8
+ // The goal is to make the loaded data easier to use in WebGL applications
9
+ //
10
+ // Functions:
11
+ // * Resolve indexed arrays structure of glTF into a linked tree.
12
+ // * Translate stringified enum keys and values into WebGL constants.
13
+ // * Load images (optional)
14
+ // ENUM LOOKUP
4
15
  const COMPONENTS = {
5
- SCALAR: 1,
6
- VEC2: 2,
7
- VEC3: 3,
8
- VEC4: 4,
9
- MAT2: 4,
10
- MAT3: 9,
11
- MAT4: 16
16
+ SCALAR: 1,
17
+ VEC2: 2,
18
+ VEC3: 3,
19
+ VEC4: 4,
20
+ MAT2: 4,
21
+ MAT3: 9,
22
+ MAT4: 16
12
23
  };
13
24
  const BYTES = {
14
- 5120: 1,
15
- 5121: 1,
16
- 5122: 2,
17
- 5123: 2,
18
- 5125: 4,
19
- 5126: 4
25
+ 5120: 1,
26
+ 5121: 1,
27
+ 5122: 2,
28
+ 5123: 2,
29
+ 5125: 4,
30
+ 5126: 4 // FLOAT
20
31
  };
21
32
  const GL_SAMPLER = {
22
- TEXTURE_MAG_FILTER: 0x2800,
23
- TEXTURE_MIN_FILTER: 0x2801,
24
- TEXTURE_WRAP_S: 0x2802,
25
- TEXTURE_WRAP_T: 0x2803,
26
- REPEAT: 0x2901,
27
- LINEAR: 0x2601,
28
- NEAREST_MIPMAP_LINEAR: 0x2702
33
+ // Sampler parameters
34
+ TEXTURE_MAG_FILTER: 0x2800,
35
+ TEXTURE_MIN_FILTER: 0x2801,
36
+ TEXTURE_WRAP_S: 0x2802,
37
+ TEXTURE_WRAP_T: 0x2803,
38
+ // Sampler default values
39
+ REPEAT: 0x2901,
40
+ LINEAR: 0x2601,
41
+ NEAREST_MIPMAP_LINEAR: 0x2702
29
42
  };
30
43
  const SAMPLER_PARAMETER_GLTF_TO_GL = {
31
- magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,
32
- minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,
33
- wrapS: GL_SAMPLER.TEXTURE_WRAP_S,
34
- wrapT: GL_SAMPLER.TEXTURE_WRAP_T
44
+ magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,
45
+ minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,
46
+ wrapS: GL_SAMPLER.TEXTURE_WRAP_S,
47
+ wrapT: GL_SAMPLER.TEXTURE_WRAP_T
35
48
  };
36
- const DEFAULT_SAMPLER = {
37
- [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,
38
- [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,
39
- [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,
40
- [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT
49
+ // When undefined, a sampler with repeat wrapping and auto filtering should be used.
50
+ // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture
51
+ const DEFAULT_SAMPLER_PARAMETERS = {
52
+ [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,
53
+ [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,
54
+ [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,
55
+ [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT
41
56
  };
42
-
57
+ function makeDefaultSampler() {
58
+ return {
59
+ id: 'default-sampler',
60
+ parameters: DEFAULT_SAMPLER_PARAMETERS
61
+ };
62
+ }
43
63
  function getBytesFromComponentType(componentType) {
44
- return BYTES[componentType];
64
+ return BYTES[componentType];
45
65
  }
46
-
47
66
  function getSizeFromAccessorType(type) {
48
- return COMPONENTS[type];
67
+ return COMPONENTS[type];
49
68
  }
50
-
51
69
  class GLTFPostProcessor {
52
- constructor() {
53
- _defineProperty(this, "baseUri", '');
54
-
55
- _defineProperty(this, "json", {});
56
-
57
- _defineProperty(this, "buffers", []);
58
-
59
- _defineProperty(this, "images", []);
60
- }
61
-
62
- postProcess(gltf, options = {}) {
63
- const {
64
- json,
65
- buffers = [],
66
- images = [],
67
- baseUri = ''
68
- } = gltf;
69
- assert(json);
70
- this.baseUri = baseUri;
71
- this.json = json;
72
- this.buffers = buffers;
73
- this.images = images;
74
-
75
- this._resolveTree(this.json, options);
76
-
77
- return this.json;
78
- }
79
-
80
- _resolveTree(json, options = {}) {
81
- if (json.bufferViews) {
82
- json.bufferViews = json.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));
83
- }
84
-
85
- if (json.images) {
86
- json.images = json.images.map((image, i) => this._resolveImage(image, i));
70
+ constructor() {
71
+ this.baseUri = '';
72
+ this.buffers = [];
73
+ this.images = [];
87
74
  }
88
-
89
- if (json.samplers) {
90
- json.samplers = json.samplers.map((sampler, i) => this._resolveSampler(sampler, i));
75
+ postProcess(gltf, options = {}) {
76
+ const { json, buffers = [], images = [] } = gltf;
77
+ // @ts-expect-error
78
+ const { baseUri = '' } = gltf;
79
+ (0, assert_1.assert)(json);
80
+ this.baseUri = baseUri;
81
+ this.buffers = buffers;
82
+ this.images = images;
83
+ this.jsonUnprocessed = json;
84
+ this.json = this._resolveTree(gltf.json, options);
85
+ return this.json;
91
86
  }
92
-
93
- if (json.textures) {
94
- json.textures = json.textures.map((texture, i) => this._resolveTexture(texture, i));
87
+ // Convert indexed glTF structure into tree structure
88
+ // cross-link index resolution, enum lookup, convenience calculations
89
+ // eslint-disable-next-line complexity, max-statements
90
+ _resolveTree(gltf, options = {}) {
91
+ // @ts-expect-error
92
+ const json = { ...gltf };
93
+ this.json = json;
94
+ if (gltf.bufferViews) {
95
+ json.bufferViews = gltf.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));
96
+ }
97
+ if (gltf.images) {
98
+ json.images = gltf.images.map((image, i) => this._resolveImage(image, i));
99
+ }
100
+ if (gltf.samplers) {
101
+ json.samplers = gltf.samplers.map((sampler, i) => this._resolveSampler(sampler, i));
102
+ }
103
+ if (gltf.textures) {
104
+ json.textures = gltf.textures.map((texture, i) => this._resolveTexture(texture, i));
105
+ }
106
+ if (gltf.accessors) {
107
+ json.accessors = gltf.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));
108
+ }
109
+ if (gltf.materials) {
110
+ json.materials = gltf.materials.map((material, i) => this._resolveMaterial(material, i));
111
+ }
112
+ if (gltf.meshes) {
113
+ json.meshes = gltf.meshes.map((mesh, i) => this._resolveMesh(mesh, i));
114
+ }
115
+ if (gltf.nodes) {
116
+ json.nodes = gltf.nodes.map((node, i) => this._resolveNode(node, i));
117
+ json.nodes = json.nodes.map((node, i) => this._resolveNodeChildren(node));
118
+ }
119
+ if (gltf.skins) {
120
+ json.skins = gltf.skins.map((skin, i) => this._resolveSkin(skin, i));
121
+ }
122
+ if (gltf.scenes) {
123
+ json.scenes = gltf.scenes.map((scene, i) => this._resolveScene(scene, i));
124
+ }
125
+ if (typeof this.json.scene === 'number' && json.scenes) {
126
+ json.scene = json.scenes[this.json.scene];
127
+ }
128
+ return json;
95
129
  }
96
-
97
- if (json.accessors) {
98
- json.accessors = json.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));
130
+ getScene(index) {
131
+ return this._get(this.json.scenes, index);
99
132
  }
100
-
101
- if (json.materials) {
102
- json.materials = json.materials.map((material, i) => this._resolveMaterial(material, i));
133
+ getNode(index) {
134
+ return this._get(this.json.nodes, index);
103
135
  }
104
-
105
- if (json.meshes) {
106
- json.meshes = json.meshes.map((mesh, i) => this._resolveMesh(mesh, i));
136
+ getSkin(index) {
137
+ return this._get(this.json.skins, index);
107
138
  }
108
-
109
- if (json.nodes) {
110
- json.nodes = json.nodes.map((node, i) => this._resolveNode(node, i));
139
+ getMesh(index) {
140
+ return this._get(this.json.meshes, index);
111
141
  }
112
-
113
- if (json.skins) {
114
- json.skins = json.skins.map((skin, i) => this._resolveSkin(skin, i));
142
+ getMaterial(index) {
143
+ return this._get(this.json.materials, index);
115
144
  }
116
-
117
- if (json.scenes) {
118
- json.scenes = json.scenes.map((scene, i) => this._resolveScene(scene, i));
145
+ getAccessor(index) {
146
+ return this._get(this.json.accessors, index);
119
147
  }
120
-
121
- if (json.scene !== undefined) {
122
- json.scene = json.scenes[this.json.scene];
148
+ getCamera(index) {
149
+ return this._get(this.json.cameras, index);
123
150
  }
124
- }
125
-
126
- getScene(index) {
127
- return this._get('scenes', index);
128
- }
129
-
130
- getNode(index) {
131
- return this._get('nodes', index);
132
- }
133
-
134
- getSkin(index) {
135
- return this._get('skins', index);
136
- }
137
-
138
- getMesh(index) {
139
- return this._get('meshes', index);
140
- }
141
-
142
- getMaterial(index) {
143
- return this._get('materials', index);
144
- }
145
-
146
- getAccessor(index) {
147
- return this._get('accessors', index);
148
- }
149
-
150
- getCamera(index) {
151
- return null;
152
- }
153
-
154
- getTexture(index) {
155
- return this._get('textures', index);
156
- }
157
-
158
- getSampler(index) {
159
- return this._get('samplers', index);
160
- }
161
-
162
- getImage(index) {
163
- return this._get('images', index);
164
- }
165
-
166
- getBufferView(index) {
167
- return this._get('bufferViews', index);
168
- }
169
-
170
- getBuffer(index) {
171
- return this._get('buffers', index);
172
- }
173
-
174
- _get(array, index) {
175
- if (typeof index === 'object') {
176
- return index;
151
+ getTexture(index) {
152
+ return this._get(this.json.textures, index);
177
153
  }
178
-
179
- const object = this.json[array] && this.json[array][index];
180
-
181
- if (!object) {
182
- console.warn("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
154
+ getSampler(index) {
155
+ return this._get(this.json.samplers, index);
183
156
  }
184
-
185
- return object;
186
- }
187
-
188
- _resolveScene(scene, index) {
189
- scene.id = scene.id || "scene-".concat(index);
190
- scene.nodes = (scene.nodes || []).map(node => this.getNode(node));
191
- return scene;
192
- }
193
-
194
- _resolveNode(node, index) {
195
- node.id = node.id || "node-".concat(index);
196
-
197
- if (node.children) {
198
- node.children = node.children.map(child => this.getNode(child));
157
+ getImage(index) {
158
+ return this._get(this.json.images, index);
199
159
  }
200
-
201
- if (node.mesh !== undefined) {
202
- node.mesh = this.getMesh(node.mesh);
203
- } else if (node.meshes !== undefined && node.meshes.length) {
204
- node.mesh = node.meshes.reduce((accum, meshIndex) => {
205
- const mesh = this.getMesh(meshIndex);
206
- accum.id = mesh.id;
207
- accum.primitives = accum.primitives.concat(mesh.primitives);
208
- return accum;
209
- }, {
210
- primitives: []
211
- });
160
+ getBufferView(index) {
161
+ return this._get(this.json.bufferViews, index);
212
162
  }
213
-
214
- if (node.camera !== undefined) {
215
- node.camera = this.getCamera(node.camera);
163
+ getBuffer(index) {
164
+ return this._get(this.json.buffers, index);
216
165
  }
217
-
218
- if (node.skin !== undefined) {
219
- node.skin = this.getSkin(node.skin);
166
+ _get(array, index) {
167
+ // check if already resolved
168
+ if (typeof index === 'object') {
169
+ return index;
170
+ }
171
+ const object = array && array[index];
172
+ if (!object) {
173
+ console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line
174
+ }
175
+ return object;
220
176
  }
221
-
222
- return node;
223
- }
224
-
225
- _resolveSkin(skin, index) {
226
- skin.id = skin.id || "skin-".concat(index);
227
- skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);
228
- return skin;
229
- }
230
-
231
- _resolveMesh(mesh, index) {
232
- mesh.id = mesh.id || "mesh-".concat(index);
233
-
234
- if (mesh.primitives) {
235
- mesh.primitives = mesh.primitives.map(primitive => {
236
- primitive = { ...primitive
177
+ // PARSING HELPERS
178
+ _resolveScene(scene, index) {
179
+ return {
180
+ ...scene,
181
+ // @ts-ignore
182
+ id: scene.id || `scene-${index}`,
183
+ nodes: (scene.nodes || []).map((node) => this.getNode(node))
237
184
  };
238
- const attributes = primitive.attributes;
239
- primitive.attributes = {};
240
-
241
- for (const attribute in attributes) {
242
- primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);
243
- }
244
-
245
- if (primitive.indices !== undefined) {
246
- primitive.indices = this.getAccessor(primitive.indices);
247
- }
248
-
249
- if (primitive.material !== undefined) {
250
- primitive.material = this.getMaterial(primitive.material);
251
- }
252
-
253
- return primitive;
254
- });
255
185
  }
256
-
257
- return mesh;
258
- }
259
-
260
- _resolveMaterial(material, index) {
261
- material.id = material.id || "material-".concat(index);
262
-
263
- if (material.normalTexture) {
264
- material.normalTexture = { ...material.normalTexture
265
- };
266
- material.normalTexture.texture = this.getTexture(material.normalTexture.index);
186
+ _resolveNode(gltfNode, index) {
187
+ // @ts-expect-error
188
+ const node = {
189
+ ...gltfNode,
190
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
191
+ id: gltfNode?.id || `node-${index}`
192
+ };
193
+ if (gltfNode.mesh !== undefined) {
194
+ node.mesh = this.getMesh(gltfNode.mesh);
195
+ }
196
+ if (gltfNode.camera !== undefined) {
197
+ node.camera = this.getCamera(gltfNode.camera);
198
+ }
199
+ if (gltfNode.skin !== undefined) {
200
+ node.skin = this.getSkin(gltfNode.skin);
201
+ }
202
+ // TODO deprecated - Delete in v4.0?
203
+ // @ts-expect-error node.meshes does not seem to be part of the GLTF standard
204
+ if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {
205
+ // @ts-expect-error
206
+ node.mesh = gltfNode.meshes.reduce((accum, meshIndex) => {
207
+ const mesh = this.getMesh(meshIndex);
208
+ accum.id = mesh.id;
209
+ accum.primitives = accum.primitives.concat(mesh.primitives);
210
+ return accum;
211
+ }, { primitives: [] });
212
+ }
213
+ return node;
267
214
  }
268
-
269
- if (material.occlusionTexture) {
270
- material.occlustionTexture = { ...material.occlustionTexture
271
- };
272
- material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);
215
+ _resolveNodeChildren(node) {
216
+ if (node.children) {
217
+ // @ts-expect-error node.children are numbers at this stage
218
+ node.children = node.children.map((child) => this.getNode(child));
219
+ }
220
+ return node;
273
221
  }
274
-
275
- if (material.emissiveTexture) {
276
- material.emmisiveTexture = { ...material.emmisiveTexture
277
- };
278
- material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);
222
+ _resolveSkin(gltfSkin, index) {
223
+ const inverseBindMatrices = typeof gltfSkin.inverseBindMatrices === 'number'
224
+ ? this.getAccessor(gltfSkin.inverseBindMatrices)
225
+ : undefined;
226
+ return {
227
+ ...gltfSkin,
228
+ id: gltfSkin.id || `skin-${index}`,
229
+ inverseBindMatrices
230
+ };
279
231
  }
280
-
281
- if (!material.emissiveFactor) {
282
- material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];
232
+ _resolveMesh(gltfMesh, index) {
233
+ const mesh = {
234
+ ...gltfMesh,
235
+ id: gltfMesh.id || `mesh-${index}`,
236
+ primitives: []
237
+ };
238
+ if (gltfMesh.primitives) {
239
+ mesh.primitives = gltfMesh.primitives.map((gltfPrimitive) => {
240
+ const primitive = {
241
+ ...gltfPrimitive,
242
+ attributes: {},
243
+ indices: undefined,
244
+ material: undefined
245
+ };
246
+ const attributes = gltfPrimitive.attributes;
247
+ for (const attribute in attributes) {
248
+ primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);
249
+ }
250
+ if (gltfPrimitive.indices !== undefined) {
251
+ primitive.indices = this.getAccessor(gltfPrimitive.indices);
252
+ }
253
+ if (gltfPrimitive.material !== undefined) {
254
+ primitive.material = this.getMaterial(gltfPrimitive.material);
255
+ }
256
+ return primitive;
257
+ });
258
+ }
259
+ return mesh;
283
260
  }
284
-
285
- if (material.pbrMetallicRoughness) {
286
- material.pbrMetallicRoughness = { ...material.pbrMetallicRoughness
287
- };
288
- const mr = material.pbrMetallicRoughness;
289
-
290
- if (mr.baseColorTexture) {
291
- mr.baseColorTexture = { ...mr.baseColorTexture
261
+ _resolveMaterial(gltfMaterial, index) {
262
+ // @ts-expect-error
263
+ const material = {
264
+ ...gltfMaterial,
265
+ // @ts-expect-error
266
+ id: gltfMaterial.id || `material-${index}`
292
267
  };
293
- mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);
294
- }
295
-
296
- if (mr.metallicRoughnessTexture) {
297
- mr.metallicRoughnessTexture = { ...mr.metallicRoughnessTexture
268
+ if (material.normalTexture) {
269
+ material.normalTexture = { ...material.normalTexture };
270
+ material.normalTexture.texture = this.getTexture(material.normalTexture.index);
271
+ }
272
+ if (material.occlusionTexture) {
273
+ material.occlusionTexture = { ...material.occlusionTexture };
274
+ material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);
275
+ }
276
+ if (material.emissiveTexture) {
277
+ material.emissiveTexture = { ...material.emissiveTexture };
278
+ material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);
279
+ }
280
+ if (!material.emissiveFactor) {
281
+ material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];
282
+ }
283
+ if (material.pbrMetallicRoughness) {
284
+ material.pbrMetallicRoughness = { ...material.pbrMetallicRoughness };
285
+ const mr = material.pbrMetallicRoughness;
286
+ if (mr.baseColorTexture) {
287
+ mr.baseColorTexture = { ...mr.baseColorTexture };
288
+ mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);
289
+ }
290
+ if (mr.metallicRoughnessTexture) {
291
+ mr.metallicRoughnessTexture = { ...mr.metallicRoughnessTexture };
292
+ mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);
293
+ }
294
+ }
295
+ return material;
296
+ }
297
+ _resolveAccessor(gltfAccessor, index) {
298
+ // Look up enums
299
+ const bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);
300
+ const components = getSizeFromAccessorType(gltfAccessor.type);
301
+ const bytesPerElement = bytesPerComponent * components;
302
+ const accessor = {
303
+ ...gltfAccessor,
304
+ // @ts-expect-error
305
+ id: gltfAccessor.id || `accessor-${index}`,
306
+ bytesPerComponent,
307
+ components,
308
+ bytesPerElement,
309
+ value: undefined,
310
+ bufferView: undefined,
311
+ sparse: undefined
298
312
  };
299
- mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);
300
- }
313
+ if (gltfAccessor.bufferView !== undefined) {
314
+ // Draco encoded meshes don't have bufferView
315
+ accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);
316
+ }
317
+ // Create TypedArray for the accessor
318
+ // Note: The canonical way to instantiate is to ignore this array and create
319
+ // WebGLBuffer's using the bufferViews.
320
+ if (accessor.bufferView) {
321
+ const buffer = accessor.bufferView.buffer;
322
+ const { ArrayType, byteLength } = (0, gltf_utils_1.getAccessorArrayTypeAndLength)(accessor, accessor.bufferView);
323
+ const byteOffset = (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;
324
+ let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);
325
+ if (accessor.bufferView.byteStride) {
326
+ cutBuffer = this._getValueFromInterleavedBuffer(buffer, byteOffset, accessor.bufferView.byteStride, accessor.bytesPerElement, accessor.count);
327
+ }
328
+ accessor.value = new ArrayType(cutBuffer);
329
+ }
330
+ return accessor;
301
331
  }
302
-
303
- return material;
304
- }
305
-
306
- _resolveAccessor(accessor, index) {
307
- accessor.id = accessor.id || "accessor-".concat(index);
308
-
309
- if (accessor.bufferView !== undefined) {
310
- accessor.bufferView = this.getBufferView(accessor.bufferView);
332
+ /**
333
+ * Take values of particular accessor from interleaved buffer
334
+ * various parts of the buffer
335
+ * @param buffer
336
+ * @param byteOffset
337
+ * @param byteStride
338
+ * @param bytesPerElement
339
+ * @param count
340
+ * @returns
341
+ */
342
+ _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {
343
+ const result = new Uint8Array(count * bytesPerElement);
344
+ for (let i = 0; i < count; i++) {
345
+ const elementOffset = byteOffset + i * byteStride;
346
+ result.set(new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)), i * bytesPerElement);
347
+ }
348
+ return result.buffer;
311
349
  }
312
-
313
- accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);
314
- accessor.components = getSizeFromAccessorType(accessor.type);
315
- accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;
316
-
317
- if (accessor.bufferView) {
318
- const buffer = accessor.bufferView.buffer;
319
- const {
320
- ArrayType,
321
- byteLength
322
- } = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);
323
- const byteOffset = (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;
324
- let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);
325
-
326
- if (accessor.bufferView.byteStride) {
327
- cutBuffer = this._getValueFromInterleavedBuffer(buffer, byteOffset, accessor.bufferView.byteStride, accessor.bytesPerElement, accessor.count);
328
- }
329
-
330
- accessor.value = new ArrayType(cutBuffer);
350
+ _resolveTexture(gltfTexture, index) {
351
+ return {
352
+ ...gltfTexture,
353
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
354
+ id: gltfTexture.id || `texture-${index}`,
355
+ sampler: typeof gltfTexture.sampler === 'number'
356
+ ? this.getSampler(gltfTexture.sampler)
357
+ : makeDefaultSampler(),
358
+ source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined
359
+ };
331
360
  }
332
-
333
- return accessor;
334
- }
335
-
336
- _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {
337
- const result = new Uint8Array(count * bytesPerElement);
338
-
339
- for (let i = 0; i < count; i++) {
340
- const elementOffset = byteOffset + i * byteStride;
341
- result.set(new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)), i * bytesPerElement);
361
+ _resolveSampler(gltfSampler, index) {
362
+ const sampler = {
363
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
364
+ id: gltfSampler.id || `sampler-${index}`,
365
+ ...gltfSampler,
366
+ parameters: {}
367
+ };
368
+ // Map textual parameters to GL parameter values
369
+ for (const key in sampler) {
370
+ const glEnum = this._enumSamplerParameter(key);
371
+ if (glEnum !== undefined) {
372
+ sampler.parameters[glEnum] = sampler[key];
373
+ }
374
+ }
375
+ return sampler;
342
376
  }
343
-
344
- return result.buffer;
345
- }
346
-
347
- _resolveTexture(texture, index) {
348
- texture.id = texture.id || "texture-".concat(index);
349
- texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;
350
- texture.source = this.getImage(texture.source);
351
- return texture;
352
- }
353
-
354
- _resolveSampler(sampler, index) {
355
- sampler.id = sampler.id || "sampler-".concat(index);
356
- sampler.parameters = {};
357
-
358
- for (const key in sampler) {
359
- const glEnum = this._enumSamplerParameter(key);
360
-
361
- if (glEnum !== undefined) {
362
- sampler.parameters[glEnum] = sampler[key];
363
- }
377
+ _enumSamplerParameter(key) {
378
+ return SAMPLER_PARAMETER_GLTF_TO_GL[key];
364
379
  }
365
-
366
- return sampler;
367
- }
368
-
369
- _enumSamplerParameter(key) {
370
- return SAMPLER_PARAMETER_GLTF_TO_GL[key];
371
- }
372
-
373
- _resolveImage(image, index) {
374
- image.id = image.id || "image-".concat(index);
375
-
376
- if (image.bufferView !== undefined) {
377
- image.bufferView = this.getBufferView(image.bufferView);
380
+ _resolveImage(gltfImage, index) {
381
+ const image = {
382
+ ...gltfImage,
383
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
384
+ id: gltfImage.id || `image-${index}`,
385
+ image: null,
386
+ bufferView: gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined
387
+ };
388
+ // Check if image has been preloaded by the GLTFLoader
389
+ // If so, link it into the JSON and drop the URI
390
+ const preloadedImage = this.images[index];
391
+ if (preloadedImage) {
392
+ image.image = preloadedImage;
393
+ }
394
+ return image;
378
395
  }
379
-
380
- const preloadedImage = this.images[index];
381
-
382
- if (preloadedImage) {
383
- image.image = preloadedImage;
396
+ _resolveBufferView(gltfBufferView, index) {
397
+ const bufferIndex = gltfBufferView.buffer;
398
+ const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
399
+ // Add offset of buffer, then offset of buffer view
400
+ let byteOffset = this.buffers[bufferIndex].byteOffset || 0;
401
+ if (gltfBufferView.byteOffset) {
402
+ byteOffset += gltfBufferView.byteOffset;
403
+ }
404
+ const bufferView = {
405
+ // // @ts-expect-error id could already be present, glTF standard does not prevent it
406
+ id: `bufferView-${index}`,
407
+ ...gltfBufferView,
408
+ // ...this.buffers[bufferIndex],
409
+ buffer: this.buffers[bufferIndex],
410
+ data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)
411
+ };
412
+ return bufferView;
384
413
  }
385
-
386
- return image;
387
- }
388
-
389
- _resolveBufferView(bufferView, index) {
390
- const bufferIndex = bufferView.buffer;
391
- const result = {
392
- id: "bufferView-".concat(index),
393
- ...bufferView,
394
- buffer: this.buffers[bufferIndex]
395
- };
396
- const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
397
- let byteOffset = this.buffers[bufferIndex].byteOffset || 0;
398
-
399
- if ('byteOffset' in bufferView) {
400
- byteOffset += bufferView.byteOffset;
414
+ _resolveCamera(gltfCamera, index) {
415
+ const camera = {
416
+ ...gltfCamera,
417
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
418
+ id: gltfCamera.id || `camera-${index}`
419
+ };
420
+ // TODO - create 4x4 matrices
421
+ if (camera.perspective) {
422
+ // camera.matrix = createPerspectiveMatrix(camera.perspective);
423
+ }
424
+ if (camera.orthographic) {
425
+ // camera.matrix = createOrthographicMatrix(camera.orthographic);
426
+ }
427
+ return camera;
401
428
  }
402
-
403
- result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
404
- return result;
405
- }
406
-
407
- _resolveCamera(camera, index) {
408
- camera.id = camera.id || "camera-".concat(index);
409
-
410
- if (camera.perspective) {}
411
-
412
- if (camera.orthographic) {}
413
-
414
- return camera;
415
- }
416
-
417
429
  }
418
-
419
- export function postProcessGLTF(gltf, options) {
420
- return new GLTFPostProcessor().postProcess(gltf, options);
430
+ function postProcessGLTF(gltf, options) {
431
+ return new GLTFPostProcessor().postProcess(gltf, options);
421
432
  }
422
- //# sourceMappingURL=post-process-gltf.js.map
433
+ exports.postProcessGLTF = postProcessGLTF;