@loaders.gl/scene 5.0.0-beta.1 → 5.0.0-beta.4

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 (541) hide show
  1. package/DRACO-README.md +15 -0
  2. package/README.md +7 -1
  3. package/THIRD-PARTY-NOTICES.md +4 -1
  4. package/dist/dist.dev.js +8894 -5137
  5. package/dist/dist.min.js +32 -24
  6. package/dist/draco/bundled.cjs +37 -0
  7. package/dist/draco/bundled.cjs.map +7 -0
  8. package/dist/draco/bundled.d.ts +6 -0
  9. package/dist/draco/bundled.d.ts.map +1 -0
  10. package/dist/draco/bundled.js +7 -0
  11. package/dist/draco/bundled.js.map +1 -0
  12. package/dist/draco/draco-format.cjs +41 -0
  13. package/dist/draco/draco-format.cjs.map +7 -0
  14. package/dist/draco/draco-format.d.ts +15 -0
  15. package/dist/draco/draco-format.d.ts.map +1 -0
  16. package/dist/draco/draco-format.js +18 -0
  17. package/dist/draco/draco-format.js.map +1 -0
  18. package/dist/draco/draco-javascript-loader-with-parser.cjs +44 -0
  19. package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
  20. package/dist/draco/draco-javascript-loader-with-parser.d.ts +34 -0
  21. package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
  22. package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
  23. package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
  24. package/dist/draco/draco-libraries.cjs +61 -0
  25. package/dist/draco/draco-libraries.cjs.map +7 -0
  26. package/dist/draco/draco-libraries.d.ts +28 -0
  27. package/dist/draco/draco-libraries.d.ts.map +1 -0
  28. package/dist/draco/draco-libraries.js +33 -0
  29. package/dist/draco/draco-libraries.js.map +1 -0
  30. package/dist/draco/draco-library-options.cjs +80 -0
  31. package/dist/draco/draco-library-options.cjs.map +7 -0
  32. package/dist/draco/draco-library-options.d.ts +16 -0
  33. package/dist/draco/draco-library-options.d.ts.map +1 -0
  34. package/dist/draco/draco-library-options.js +52 -0
  35. package/dist/draco/draco-library-options.js.map +1 -0
  36. package/dist/draco/draco-loader-options.cjs +37 -0
  37. package/dist/draco/draco-loader-options.cjs.map +7 -0
  38. package/dist/draco/draco-loader-options.d.ts +27 -0
  39. package/dist/draco/draco-loader-options.d.ts.map +1 -0
  40. package/dist/draco/draco-loader-options.js +12 -0
  41. package/dist/draco/draco-loader-options.js.map +1 -0
  42. package/dist/draco/draco-loader-types.cjs +88 -0
  43. package/dist/draco/draco-loader-types.cjs.map +7 -0
  44. package/dist/draco/draco-loader-types.d.ts +69 -0
  45. package/dist/draco/draco-loader-types.d.ts.map +1 -0
  46. package/dist/draco/draco-loader-types.js +54 -0
  47. package/dist/draco/draco-loader-types.js.map +1 -0
  48. package/dist/draco/draco-loader.cjs +51 -0
  49. package/dist/draco/draco-loader.cjs.map +7 -0
  50. package/dist/draco/draco-loader.d.ts +39 -0
  51. package/dist/draco/draco-loader.d.ts.map +1 -0
  52. package/dist/draco/draco-loader.js +22 -0
  53. package/dist/draco/draco-loader.js.map +1 -0
  54. package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
  55. package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
  56. package/dist/draco/draco-wasm-loader-with-parser.d.ts +34 -0
  57. package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
  58. package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
  59. package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
  60. package/dist/draco/draco-writer.cjs +183 -0
  61. package/dist/draco/draco-writer.cjs.map +7 -0
  62. package/dist/draco/draco-writer.d.ts +97 -0
  63. package/dist/draco/draco-writer.d.ts.map +1 -0
  64. package/dist/draco/draco-writer.js +166 -0
  65. package/dist/draco/draco-writer.js.map +1 -0
  66. package/dist/draco/draco3d/draco3d-types.cjs +76 -0
  67. package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
  68. package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
  69. package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
  70. package/dist/draco/draco3d/draco3d-types.js +47 -0
  71. package/dist/draco/draco3d/draco3d-types.js.map +1 -0
  72. package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
  73. package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
  74. package/dist/draco/draco3d-loader-with-parser.d.ts +34 -0
  75. package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
  76. package/dist/draco/draco3d-loader-with-parser.js +21 -0
  77. package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
  78. package/dist/draco/index.cjs +54 -0
  79. package/dist/draco/index.cjs.map +7 -0
  80. package/dist/draco/index.d.ts +13 -0
  81. package/dist/draco/index.d.ts.map +1 -0
  82. package/dist/draco/index.js +13 -0
  83. package/dist/draco/index.js.map +1 -0
  84. package/dist/draco/lib/draco-builder.cjs +660 -0
  85. package/dist/draco/lib/draco-builder.cjs.map +7 -0
  86. package/dist/draco/lib/draco-builder.d.ts +175 -0
  87. package/dist/draco/lib/draco-builder.d.ts.map +1 -0
  88. package/dist/draco/lib/draco-builder.js +612 -0
  89. package/dist/draco/lib/draco-builder.js.map +1 -0
  90. package/dist/draco/lib/draco-library-loader.cjs +47 -0
  91. package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
  92. package/dist/draco/lib/draco-library-loader.d.ts +5 -0
  93. package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
  94. package/dist/draco/lib/draco-library-loader.js +23 -0
  95. package/dist/draco/lib/draco-library-loader.js.map +1 -0
  96. package/dist/draco/lib/draco-module-loader.cjs +281 -0
  97. package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
  98. package/dist/draco/lib/draco-module-loader.d.ts +25 -0
  99. package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
  100. package/dist/draco/lib/draco-module-loader.js +220 -0
  101. package/dist/draco/lib/draco-module-loader.js.map +1 -0
  102. package/dist/draco/lib/draco-parser.cjs +598 -0
  103. package/dist/draco/lib/draco-parser.cjs.map +7 -0
  104. package/dist/draco/lib/draco-parser.d.ts +142 -0
  105. package/dist/draco/lib/draco-parser.d.ts.map +1 -0
  106. package/dist/draco/lib/draco-parser.js +595 -0
  107. package/dist/draco/lib/draco-parser.js.map +1 -0
  108. package/dist/draco/lib/draco-types.cjs +19 -0
  109. package/dist/draco/lib/draco-types.cjs.map +7 -0
  110. package/dist/draco/lib/draco-types.d.ts +59 -0
  111. package/dist/draco/lib/draco-types.d.ts.map +1 -0
  112. package/dist/draco/lib/draco-types.js +5 -0
  113. package/dist/draco/lib/draco-types.js.map +1 -0
  114. package/dist/draco/lib/parse-draco.cjs +59 -0
  115. package/dist/draco/lib/parse-draco.cjs.map +7 -0
  116. package/dist/draco/lib/parse-draco.d.ts +22 -0
  117. package/dist/draco/lib/parse-draco.d.ts.map +1 -0
  118. package/dist/draco/lib/parse-draco.js +32 -0
  119. package/dist/draco/lib/parse-draco.js.map +1 -0
  120. package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
  121. package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
  122. package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
  123. package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
  124. package/dist/draco/lib/utils/get-draco-schema.js +45 -0
  125. package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
  126. package/dist/draco/lib/utils/version.cjs +31 -0
  127. package/dist/draco/lib/utils/version.cjs.map +7 -0
  128. package/dist/draco/lib/utils/version.d.ts +2 -0
  129. package/dist/draco/lib/utils/version.d.ts.map +1 -0
  130. package/dist/draco/lib/utils/version.js +8 -0
  131. package/dist/draco/lib/utils/version.js.map +1 -0
  132. package/dist/draco/unbundled.cjs +33 -0
  133. package/dist/draco/unbundled.cjs.map +7 -0
  134. package/dist/draco/unbundled.d.ts +3 -0
  135. package/dist/draco/unbundled.d.ts.map +1 -0
  136. package/dist/draco/unbundled.js +5 -0
  137. package/dist/draco/unbundled.js.map +1 -0
  138. package/dist/draco/workers/draco-worker-node.cjs +8 -0
  139. package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
  140. package/dist/draco/workers/draco-worker-node.d.ts +2 -0
  141. package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
  142. package/dist/draco/workers/draco-worker-node.js +9 -0
  143. package/dist/draco/workers/draco-worker-node.js.map +1 -0
  144. package/dist/draco/workers/draco-worker.cjs +7 -0
  145. package/dist/draco/workers/draco-worker.cjs.map +7 -0
  146. package/dist/draco/workers/draco-worker.d.ts +2 -0
  147. package/dist/draco/workers/draco-worker.d.ts.map +1 -0
  148. package/dist/draco/workers/draco-worker.js +7 -0
  149. package/dist/draco/workers/draco-worker.js.map +1 -0
  150. package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
  151. package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
  152. package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
  153. package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
  154. package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
  155. package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
  156. package/dist/draco/workers/draco-writer-worker-node.js +9 -0
  157. package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
  158. package/dist/draco/workers/draco-writer-worker.cjs +10 -0
  159. package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
  160. package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
  161. package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
  162. package/dist/draco/workers/draco-writer-worker.js +7 -0
  163. package/dist/draco/workers/draco-writer-worker.js.map +1 -0
  164. package/dist/draco-javascript-loader.cjs +25 -0
  165. package/dist/draco-javascript-loader.cjs.map +7 -0
  166. package/dist/draco-javascript-loader.d.ts +2 -0
  167. package/dist/draco-javascript-loader.d.ts.map +1 -0
  168. package/dist/draco-javascript-loader.js +3 -0
  169. package/dist/draco-javascript-loader.js.map +1 -0
  170. package/dist/draco-library-options.cjs +36 -0
  171. package/dist/draco-library-options.cjs.map +7 -0
  172. package/dist/draco-library-options.d.ts +3 -0
  173. package/dist/draco-library-options.d.ts.map +1 -0
  174. package/dist/draco-library-options.js +4 -0
  175. package/dist/draco-library-options.js.map +1 -0
  176. package/dist/draco-loader-types.cjs +25 -0
  177. package/dist/draco-loader-types.cjs.map +7 -0
  178. package/dist/draco-loader-types.d.ts +2 -0
  179. package/dist/draco-loader-types.d.ts.map +1 -0
  180. package/dist/draco-loader-types.js +3 -0
  181. package/dist/draco-loader-types.js.map +1 -0
  182. package/dist/draco-loader.cjs +25 -0
  183. package/dist/draco-loader.cjs.map +7 -0
  184. package/dist/draco-loader.d.ts +2 -0
  185. package/dist/draco-loader.d.ts.map +1 -0
  186. package/dist/draco-loader.js +3 -0
  187. package/dist/draco-loader.js.map +1 -0
  188. package/dist/draco-wasm-loader.cjs +25 -0
  189. package/dist/draco-wasm-loader.cjs.map +7 -0
  190. package/dist/draco-wasm-loader.d.ts +2 -0
  191. package/dist/draco-wasm-loader.d.ts.map +1 -0
  192. package/dist/draco-wasm-loader.js +3 -0
  193. package/dist/draco-wasm-loader.js.map +1 -0
  194. package/dist/draco-worker-node.js +28640 -0
  195. package/dist/draco-worker-node.js.map +7 -0
  196. package/dist/draco-worker.js +18481 -0
  197. package/dist/draco-worker.js.map +7 -0
  198. package/dist/draco-writer-worker-node.cjs +28855 -0
  199. package/dist/draco-writer-worker-node.cjs.map +7 -0
  200. package/dist/draco-writer-worker.js +18617 -0
  201. package/dist/draco-writer-worker.js.map +7 -0
  202. package/dist/draco-writer.cjs +25 -0
  203. package/dist/draco-writer.cjs.map +7 -0
  204. package/dist/draco-writer.d.ts +2 -0
  205. package/dist/draco-writer.d.ts.map +1 -0
  206. package/dist/draco-writer.js +3 -0
  207. package/dist/draco-writer.js.map +1 -0
  208. package/dist/draco3d-loader.cjs +25 -0
  209. package/dist/draco3d-loader.cjs.map +7 -0
  210. package/dist/draco3d-loader.d.ts +2 -0
  211. package/dist/draco3d-loader.d.ts.map +1 -0
  212. package/dist/draco3d-loader.js +3 -0
  213. package/dist/draco3d-loader.js.map +1 -0
  214. package/dist/glb-loader-types.cjs +61 -0
  215. package/dist/glb-loader-types.cjs.map +7 -0
  216. package/dist/glb-loader-types.d.ts +2 -0
  217. package/dist/glb-loader-types.d.ts.map +1 -0
  218. package/dist/glb-loader-types.js +2 -0
  219. package/dist/glb-loader-types.js.map +1 -0
  220. package/dist/glb-loader.cjs +48 -0
  221. package/dist/glb-loader.cjs.map +7 -0
  222. package/dist/glb-loader.d.ts +2 -0
  223. package/dist/glb-loader.d.ts.map +1 -0
  224. package/dist/glb-loader.js +2 -0
  225. package/dist/glb-loader.js.map +1 -0
  226. package/dist/glb-writer.cjs +53 -0
  227. package/dist/glb-writer.cjs.map +7 -0
  228. package/dist/glb-writer.d.ts +2 -0
  229. package/dist/glb-writer.d.ts.map +1 -0
  230. package/dist/glb-writer.js +2 -0
  231. package/dist/glb-writer.js.map +1 -0
  232. package/dist/gltf/glb-loader-types.cjs +1 -1
  233. package/dist/gltf/glb-loader-types.cjs.map +2 -2
  234. package/dist/gltf/glb-loader-types.d.ts +2 -2
  235. package/dist/gltf/glb-loader-types.js +1 -1
  236. package/dist/gltf/glb-loader-types.js.map +1 -1
  237. package/dist/gltf/gltf-loader-types.cjs +1 -1
  238. package/dist/gltf/gltf-loader-types.cjs.map +2 -2
  239. package/dist/gltf/gltf-loader-types.d.ts +11 -5
  240. package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
  241. package/dist/gltf/gltf-loader-types.js +1 -1
  242. package/dist/gltf/gltf-loader-types.js.map +1 -1
  243. package/dist/gltf/gltf-loader.cjs.map +1 -1
  244. package/dist/gltf/gltf-loader.d.ts +4 -4
  245. package/dist/gltf/gltf-loader.d.ts.map +1 -1
  246. package/dist/gltf/index.cjs +2 -0
  247. package/dist/gltf/index.cjs.map +2 -2
  248. package/dist/gltf/index.d.ts +2 -2
  249. package/dist/gltf/index.d.ts.map +1 -1
  250. package/dist/gltf/index.js +1 -1
  251. package/dist/gltf/index.js.map +1 -1
  252. package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
  253. package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
  254. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
  255. package/dist/gltf/lib/api/gltf-extensions.js +7 -5
  256. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
  257. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +12 -2
  258. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +2 -2
  259. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +1 -1
  260. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -1
  261. package/dist/gltf/lib/encoders/encode-gltf-draco.js +1 -1
  262. package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -1
  263. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
  264. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
  265. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  266. package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
  267. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
  268. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
  269. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
  270. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
  271. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
  272. package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
  273. package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
  274. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +2 -2
  275. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +2 -2
  276. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  277. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +1 -1
  278. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  279. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +12 -3
  280. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
  281. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
  282. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
  283. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +9 -3
  284. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
  285. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
  286. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
  287. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
  288. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
  289. package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
  290. package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
  291. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
  292. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
  293. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  294. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
  295. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  296. package/dist/gltf/lib/parsers/parse-gltf.cjs +27 -2
  297. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +3 -3
  298. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
  299. package/dist/gltf/lib/parsers/parse-gltf.js +23 -5
  300. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
  301. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
  302. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
  303. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
  304. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
  305. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
  306. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
  307. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
  308. package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
  309. package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
  310. package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
  311. package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
  312. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
  313. package/dist/gltf/lib/types/gltf-zod-schema.cjs +3 -0
  314. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
  315. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +6 -1
  316. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
  317. package/dist/gltf/lib/types/gltf-zod-schema.js +4 -0
  318. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
  319. package/dist/gltf/lib/utils/version.cjs +1 -1
  320. package/dist/gltf/lib/utils/version.js +1 -1
  321. package/dist/gltf/schema.cjs +3 -0
  322. package/dist/gltf/schema.cjs.map +2 -2
  323. package/dist/gltf/schema.d.ts +1 -0
  324. package/dist/gltf/schema.d.ts.map +1 -1
  325. package/dist/gltf/schema.js +1 -0
  326. package/dist/gltf/schema.js.map +1 -1
  327. package/dist/gltf-loader-types.cjs +73 -0
  328. package/dist/gltf-loader-types.cjs.map +7 -0
  329. package/dist/gltf-loader-types.d.ts +2 -0
  330. package/dist/gltf-loader-types.d.ts.map +1 -0
  331. package/dist/gltf-loader-types.js +2 -0
  332. package/dist/gltf-loader-types.js.map +1 -0
  333. package/dist/gltf-loader.cjs +48 -0
  334. package/dist/gltf-loader.cjs.map +7 -0
  335. package/dist/gltf-loader.d.ts +2 -0
  336. package/dist/gltf-loader.d.ts.map +1 -0
  337. package/dist/gltf-loader.js +2 -0
  338. package/dist/gltf-loader.js.map +1 -0
  339. package/dist/gltf-source.cjs +238 -0
  340. package/dist/gltf-source.cjs.map +7 -0
  341. package/dist/gltf-source.d.ts +2 -0
  342. package/dist/gltf-source.d.ts.map +1 -0
  343. package/dist/gltf-source.js +2 -0
  344. package/dist/gltf-source.js.map +1 -0
  345. package/dist/gltf-writer.cjs +69 -0
  346. package/dist/gltf-writer.cjs.map +7 -0
  347. package/dist/gltf-writer.d.ts +2 -0
  348. package/dist/gltf-writer.d.ts.map +1 -0
  349. package/dist/gltf-writer.js +2 -0
  350. package/dist/gltf-writer.js.map +1 -0
  351. package/dist/index.cjs +16 -0
  352. package/dist/index.cjs.map +2 -2
  353. package/dist/index.d.ts +6 -0
  354. package/dist/index.d.ts.map +1 -1
  355. package/dist/index.js +4 -0
  356. package/dist/index.js.map +1 -1
  357. package/dist/libs/DRACO-LICENSE +252 -0
  358. package/dist/libs/README.md +20 -0
  359. package/dist/libs/draco_decoder.js +34 -0
  360. package/dist/libs/draco_decoder.mjs +37 -0
  361. package/dist/libs/draco_decoder.wasm +0 -0
  362. package/dist/libs/draco_decoder_gltf.wasm +0 -0
  363. package/dist/libs/draco_encoder.js +98 -0
  364. package/dist/libs/draco_encoder.mjs +101 -0
  365. package/dist/libs/draco_encoder.wasm +0 -0
  366. package/dist/libs/draco_wasm_wrapper.js +117 -0
  367. package/dist/libs/draco_wasm_wrapper.mjs +120 -0
  368. package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
  369. package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
  370. package/dist/materialx/parse-materialx.cjs +61 -0
  371. package/dist/materialx/parse-materialx.cjs.map +7 -0
  372. package/dist/materialx/parse-materialx.d.ts +23 -0
  373. package/dist/materialx/parse-materialx.d.ts.map +1 -0
  374. package/dist/materialx/parse-materialx.js +39 -0
  375. package/dist/materialx/parse-materialx.js.map +1 -0
  376. package/dist/materialx/procedural-graph.cjs +77 -0
  377. package/dist/materialx/procedural-graph.cjs.map +7 -0
  378. package/dist/materialx/procedural-graph.d.ts +40 -0
  379. package/dist/materialx/procedural-graph.d.ts.map +1 -0
  380. package/dist/materialx/procedural-graph.js +59 -0
  381. package/dist/materialx/procedural-graph.js.map +1 -0
  382. package/dist/materialx-loader-types.cjs +57 -0
  383. package/dist/materialx-loader-types.cjs.map +7 -0
  384. package/dist/materialx-loader-types.d.ts +34 -0
  385. package/dist/materialx-loader-types.d.ts.map +1 -0
  386. package/dist/materialx-loader-types.js +20 -0
  387. package/dist/materialx-loader-types.js.map +1 -0
  388. package/dist/materialx-loader.cjs +40 -0
  389. package/dist/materialx-loader.cjs.map +7 -0
  390. package/dist/materialx-loader.d.ts +19 -0
  391. package/dist/materialx-loader.d.ts.map +1 -0
  392. package/dist/materialx-loader.js +14 -0
  393. package/dist/materialx-loader.js.map +1 -0
  394. package/dist/mtl-loader-types.cjs +64 -0
  395. package/dist/mtl-loader-types.cjs.map +7 -0
  396. package/dist/mtl-loader-types.d.ts +2 -0
  397. package/dist/mtl-loader-types.d.ts.map +1 -0
  398. package/dist/mtl-loader-types.js +2 -0
  399. package/dist/mtl-loader-types.js.map +1 -0
  400. package/dist/mtl-loader.cjs +47 -0
  401. package/dist/mtl-loader.cjs.map +7 -0
  402. package/dist/mtl-loader.d.ts +2 -0
  403. package/dist/mtl-loader.d.ts.map +1 -0
  404. package/dist/mtl-loader.js +2 -0
  405. package/dist/mtl-loader.js.map +1 -0
  406. package/dist/obj/mtl-loader-types.cjs +2 -2
  407. package/dist/obj/mtl-loader-types.cjs.map +2 -2
  408. package/dist/obj/mtl-loader-types.d.ts +2 -2
  409. package/dist/obj/mtl-loader-types.js +2 -2
  410. package/dist/obj/mtl-loader-types.js.map +1 -1
  411. package/dist/obj/mtl-loader.cjs +1 -1
  412. package/dist/obj/mtl-loader.cjs.map +2 -2
  413. package/dist/obj/mtl-loader.js +1 -1
  414. package/dist/obj/mtl-loader.js.map +1 -1
  415. package/dist/obj/obj-loader-types.cjs +2 -2
  416. package/dist/obj/obj-loader-types.cjs.map +2 -2
  417. package/dist/obj/obj-loader-types.js +2 -2
  418. package/dist/obj/obj-loader-types.js.map +1 -1
  419. package/dist/obj/obj-writer.cjs +1 -1
  420. package/dist/obj/obj-writer.js +1 -1
  421. package/dist/obj-loader-types.cjs +71 -0
  422. package/dist/obj-loader-types.cjs.map +7 -0
  423. package/dist/obj-loader-types.d.ts +2 -0
  424. package/dist/obj-loader-types.d.ts.map +1 -0
  425. package/dist/obj-loader-types.js +2 -0
  426. package/dist/obj-loader-types.js.map +1 -0
  427. package/dist/obj-loader.cjs +163 -0
  428. package/dist/obj-loader.cjs.map +7 -0
  429. package/dist/obj-loader.d.ts +2 -0
  430. package/dist/obj-loader.d.ts.map +1 -0
  431. package/dist/obj-loader.js +2 -0
  432. package/dist/obj-loader.js.map +1 -0
  433. package/dist/obj-worker.js +586 -117
  434. package/dist/obj-writer.cjs +167 -0
  435. package/dist/obj-writer.cjs.map +7 -0
  436. package/dist/obj-writer.d.ts +2 -0
  437. package/dist/obj-writer.d.ts.map +1 -0
  438. package/dist/obj-writer.js +2 -0
  439. package/dist/obj-writer.js.map +1 -0
  440. package/dist/usd/usd-loader-types.cjs +2 -2
  441. package/dist/usd/usd-loader-types.cjs.map +2 -2
  442. package/dist/usd/usd-loader-types.js +2 -2
  443. package/dist/usd/usd-loader-types.js.map +1 -1
  444. package/dist/usd-loader-types.cjs +69 -0
  445. package/dist/usd-loader-types.cjs.map +7 -0
  446. package/dist/usd-loader-types.d.ts +2 -0
  447. package/dist/usd-loader-types.d.ts.map +1 -0
  448. package/dist/usd-loader-types.js +2 -0
  449. package/dist/usd-loader-types.js.map +1 -0
  450. package/dist/usd-loader.cjs +43 -0
  451. package/dist/usd-loader.cjs.map +7 -0
  452. package/dist/usd-loader.d.ts +2 -0
  453. package/dist/usd-loader.d.ts.map +1 -0
  454. package/dist/usd-loader.js +2 -0
  455. package/dist/usd-loader.js.map +1 -0
  456. package/package.json +136 -71
  457. package/src/draco/bundled.ts +10 -0
  458. package/src/draco/draco-format.ts +20 -0
  459. package/src/draco/draco-javascript-loader-with-parser.ts +26 -0
  460. package/src/draco/draco-libraries.ts +35 -0
  461. package/src/draco/draco-library-options.ts +76 -0
  462. package/src/draco/draco-loader-options.ts +33 -0
  463. package/src/draco/draco-loader-types.ts +78 -0
  464. package/src/draco/draco-loader.ts +45 -0
  465. package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
  466. package/src/draco/draco-writer.ts +252 -0
  467. package/src/draco/draco3d/draco3d-types.ts +498 -0
  468. package/src/draco/draco3d-loader-with-parser.ts +34 -0
  469. package/src/draco/index.ts +46 -0
  470. package/src/draco/lib/draco-builder.ts +935 -0
  471. package/src/draco/lib/draco-library-loader.ts +38 -0
  472. package/src/draco/lib/draco-module-loader.ts +370 -0
  473. package/src/draco/lib/draco-parser.ts +776 -0
  474. package/src/draco/lib/draco-types.ts +72 -0
  475. package/src/draco/lib/parse-draco.ts +51 -0
  476. package/src/draco/lib/utils/get-draco-schema.ts +65 -0
  477. package/src/draco/lib/utils/version.ts +8 -0
  478. package/src/draco/libs/DRACO-LICENSE +252 -0
  479. package/src/draco/libs/README.md +20 -0
  480. package/src/draco/libs/draco_decoder.js +34 -0
  481. package/src/draco/libs/draco_decoder.wasm +0 -0
  482. package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
  483. package/src/draco/libs/draco_encoder.js +98 -0
  484. package/src/draco/libs/draco_encoder.wasm +0 -0
  485. package/src/draco/libs/draco_wasm_wrapper.js +117 -0
  486. package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
  487. package/src/draco/unbundled.ts +6 -0
  488. package/src/draco/workers/draco-worker-node.ts +10 -0
  489. package/src/draco/workers/draco-worker.ts +8 -0
  490. package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
  491. package/src/draco/workers/draco-writer-worker-node.ts +13 -0
  492. package/src/draco/workers/draco-writer-worker.ts +11 -0
  493. package/src/draco-javascript-loader.ts +2 -0
  494. package/src/draco-library-options.ts +6 -0
  495. package/src/draco-loader-types.ts +2 -0
  496. package/src/draco-loader.ts +2 -0
  497. package/src/draco-wasm-loader.ts +2 -0
  498. package/src/draco-writer.ts +2 -0
  499. package/src/draco3d-loader.ts +2 -0
  500. package/src/glb-loader-types.ts +1 -0
  501. package/src/glb-loader.ts +1 -0
  502. package/src/glb-writer.ts +1 -0
  503. package/src/gltf/glb-loader-types.ts +1 -1
  504. package/src/gltf/gltf-loader-types.ts +11 -5
  505. package/src/gltf/gltf-loader.ts +4 -4
  506. package/src/gltf/index.ts +4 -1
  507. package/src/gltf/lib/api/gltf-extensions.ts +7 -2
  508. package/src/gltf/lib/encoders/encode-gltf-draco.ts +2 -2
  509. package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
  510. package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
  511. package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +2 -1
  512. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +17 -3
  513. package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
  514. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
  515. package/src/gltf/lib/parsers/parse-gltf.ts +34 -5
  516. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
  517. package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
  518. package/src/gltf/lib/types/gltf-types.ts +8 -0
  519. package/src/gltf/lib/types/gltf-zod-schema.ts +5 -0
  520. package/src/gltf/schema.ts +1 -0
  521. package/src/gltf-loader-types.ts +1 -0
  522. package/src/gltf-loader.ts +1 -0
  523. package/src/gltf-source.ts +1 -0
  524. package/src/gltf-writer.ts +1 -0
  525. package/src/index.ts +8 -0
  526. package/src/materialx/README.md +5 -0
  527. package/src/materialx/parse-materialx.ts +70 -0
  528. package/src/materialx/procedural-graph.ts +94 -0
  529. package/src/materialx-loader-types.ts +24 -0
  530. package/src/materialx-loader.ts +15 -0
  531. package/src/mtl-loader-types.ts +1 -0
  532. package/src/mtl-loader.ts +1 -0
  533. package/src/obj/mtl-loader-types.ts +1 -1
  534. package/src/obj/mtl-loader.ts +1 -1
  535. package/src/obj/obj-loader-types.ts +1 -1
  536. package/src/obj-loader-types.ts +1 -0
  537. package/src/obj-loader.ts +1 -0
  538. package/src/obj-writer.ts +1 -0
  539. package/src/usd/usd-loader-types.ts +1 -1
  540. package/src/usd-loader-types.ts +1 -0
  541. package/src/usd-loader.ts +1 -0
@@ -0,0 +1,20 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
4
+ /** Draft extension enabling binary64 accessor components. */
5
+ export const name = 'KHR_accessor_float64';
6
+ /** Validate the declared extension without converting or removing binary64 data. */
7
+ export function preprocess(gltf) {
8
+ const { json } = gltf;
9
+ if (!json.extensionsUsed?.includes(name) && !json.extensionsRequired?.includes(name))
10
+ return;
11
+ if (!json.extensionsUsed?.includes(name) || !json.extensionsRequired?.includes(name)) {
12
+ throw new Error(`${name}: must be declared in extensionsUsed and extensionsRequired.`);
13
+ }
14
+ for (const [index, accessor] of (json.accessors || []).entries()) {
15
+ if (accessor.componentType === 5130 && accessor.normalized) {
16
+ throw new Error(`${name}: accessor ${index} must not be normalized.`);
17
+ }
18
+ }
19
+ }
20
+ //# sourceMappingURL=KHR_accessor_float64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KHR_accessor_float64.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_accessor_float64.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,gCAAgC;AAIhC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,IAAI,GAAG,sBAAsB,CAAC;AAE3C,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,IAAqB;IAC9C,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7F,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8DAA8D,CAAC,CAAC;IACzF,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACjE,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,KAAK,0BAA0B,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -26,7 +26,7 @@ __export(KHR_draco_mesh_compression_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(KHR_draco_mesh_compression_exports);
28
28
  var import_loader_utils = require("@loaders.gl/core/loader-utils");
29
- var import_draco = require("@loaders.gl/draco");
29
+ var import_draco_loader_types = require("@loaders.gl/scene/draco-loader-types");
30
30
  var import_gltf_iterator = require("../api/gltf-iterator.cjs");
31
31
  var import_gltf_attribute_utils = require("../gltf-utils/gltf-attribute-utils.cjs");
32
32
  var import_get_typed_array = require("../gltf-utils/get-typed-array.cjs");
@@ -86,7 +86,7 @@ async function decompressPrimitive(iterator, primitive, options, context) {
86
86
  delete dracoOptions["3d-tiles"];
87
87
  const decodedData = await (0, import_loader_utils.parseFromContext)(
88
88
  compressedData,
89
- import_draco.DracoLoader,
89
+ import_draco_loader_types.DracoLoader,
90
90
  dracoOptions,
91
91
  context
92
92
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/gltf/lib/extensions/KHR_draco_mesh_compression.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\n/* eslint-disable camelcase */\n\nimport type {LoaderContext} from '@loaders.gl/core/loader-utils';\nimport {sliceArrayBuffer, parseFromContext} from '@loaders.gl/core/loader-utils';\n\nimport {DracoLoader, DracoLoaderOptions, type DracoMesh} from '@loaders.gl/draco';\n\nimport type {\n GLTFWithBuffers,\n GLTFAccessor,\n GLTFMeshPrimitive,\n GLTF_KHR_draco_mesh_compression\n} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\n\nimport {GLTFIterator} from '../api/gltf-iterator';\nimport {getGLTFAccessors, getGLTFAccessor} from '../gltf-utils/gltf-attribute-utils';\nimport {getTypedArrayForBufferView} from '../gltf-utils/get-typed-array';\n\nconst KHR_DRACO_MESH_COMPRESSION = 'KHR_draco_mesh_compression';\n\n/** Extension name */\nexport const name = KHR_DRACO_MESH_COMPRESSION;\n\nexport function preprocess(\n gltfData: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): void {\n const iterator = new GLTFIterator(gltfData);\n for (const mesh of iterator.meshes) {\n for (const primitive of iterator.getReferences(mesh).primitives) {\n if (iterator.getExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n // TODO - Remove fallback accessors to make sure we don't load unnecessary buffers\n }\n }\n }\n}\n\nexport async function decode(\n gltfData: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n if (!options?.gltf?.decompressMeshes) {\n return;\n }\n\n const iterator = new GLTFIterator(gltfData);\n const promises: Promise<void>[] = [];\n for (const mesh of iterator.meshes) {\n for (const primitive of iterator.getReferences(mesh).primitives) {\n if (iterator.getExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n promises.push(decompressPrimitive(iterator, primitive, options, context));\n }\n }\n }\n\n // Decompress meshes in parallel\n await Promise.all(promises);\n\n // We have now decompressed all primitives, so remove the top-level extension\n iterator.removeExtension(KHR_DRACO_MESH_COMPRESSION);\n}\n\n// DECODE\n\n// Unpacks one mesh primitive and removes the extension from the primitive\n// DracoDecoder needs to be imported and registered by app\n// Returns: Promise that resolves when all pending draco decoder jobs for this mesh complete\n\n// TODO - Implement fallback behavior per KHR_DRACO_MESH_COMPRESSION spec\n\nasync function decompressPrimitive(\n iterator: GLTFIterator,\n primitive: GLTFMeshPrimitive,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n const dracoExtension = iterator.getExtension<GLTF_KHR_draco_mesh_compression>(\n primitive,\n KHR_DRACO_MESH_COMPRESSION\n );\n if (!dracoExtension) {\n return;\n }\n\n const buffer = getTypedArrayForBufferView(\n iterator.data,\n iterator.gltf.buffers,\n dracoExtension.bufferView\n );\n // A decoder worker can transfer its input, so it must not own the shared glTF buffer.\n const compressedData = sliceArrayBuffer(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n\n const dracoOptions: DracoLoaderOptions = {\n ...options,\n draco: {\n ...options.draco,\n // Internal glTF decoding consumes the legacy mesh contract.\n shape: 'mesh',\n // Normalize compressed strips to the triangle indices returned below.\n topology: 'triangle-list',\n decoderProfile: options.draco?.decoderProfile || 'gltf',\n extraAttributes: dracoExtension.attributes\n }\n };\n\n // TODO - remove hack: The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n const decodedData = (await parseFromContext(\n compressedData,\n DracoLoader,\n dracoOptions,\n context\n )) as DracoMesh;\n\n const decodedAttributes: {[key: string]: GLTFAccessor} = getGLTFAccessors(decodedData.attributes);\n\n // A declared compressed attribute cannot fall back to its raw accessor: it may have no buffer view.\n for (const attributeName of Object.keys(dracoExtension.attributes)) {\n if (!Object.hasOwn(decodedAttributes, attributeName)) {\n throw new Error(`glTF: Draco decompression did not produce attribute ${attributeName}`);\n }\n }\n\n // Restore accessor bounds and integer normalization from the glTF declaration.\n for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {\n if (attributeName in primitive.attributes) {\n const accessorIndex: number = primitive.attributes[attributeName];\n const accessor = iterator.data.accessors?.[accessorIndex];\n if (accessor?.normalized !== undefined) {\n decodedAttribute.normalized = accessor.normalized;\n }\n if (accessor?.min && accessor?.max) {\n decodedAttribute.min = accessor.min;\n decodedAttribute.max = accessor.max;\n }\n }\n }\n\n // Attributes outside the Draco bitstream still reference ordinary glTF accessors.\n // @ts-ignore\n primitive.attributes = {...primitive.attributes, ...decodedAttributes};\n if (decodedData.indices) {\n // @ts-ignore\n primitive.indices = getGLTFAccessor(decodedData.indices);\n primitive.mode = 4;\n }\n\n // Extension has been processed, delete it\n iterator.removeExtension(primitive, KHR_DRACO_MESH_COMPRESSION);\n\n checkPrimitive(primitive);\n}\n\n// UTILS\n\nfunction checkPrimitive(primitive: GLTFMeshPrimitive): void {\n if (!primitive.attributes || Object.keys(primitive.attributes).length === 0) {\n throw new Error('glTF: Empty primitive detected: Draco decompression failure?');\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\n/* eslint-disable camelcase */\n\nimport type {LoaderContext} from '@loaders.gl/core/loader-utils';\nimport {sliceArrayBuffer, parseFromContext} from '@loaders.gl/core/loader-utils';\n\nimport {DracoLoader} from '@loaders.gl/scene/draco-loader-types';\nimport type {DracoLoaderOptions, DracoMesh} from '@loaders.gl/scene';\n\nimport type {\n GLTFWithBuffers,\n GLTFAccessor,\n GLTFMeshPrimitive,\n GLTF_KHR_draco_mesh_compression\n} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\n\nimport {GLTFIterator} from '../api/gltf-iterator';\nimport {getGLTFAccessors, getGLTFAccessor} from '../gltf-utils/gltf-attribute-utils';\nimport {getTypedArrayForBufferView} from '../gltf-utils/get-typed-array';\n\nconst KHR_DRACO_MESH_COMPRESSION = 'KHR_draco_mesh_compression';\n\n/** Extension name */\nexport const name = KHR_DRACO_MESH_COMPRESSION;\n\nexport function preprocess(\n gltfData: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): void {\n const iterator = new GLTFIterator(gltfData);\n for (const mesh of iterator.meshes) {\n for (const primitive of iterator.getReferences(mesh).primitives) {\n if (iterator.getExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n // TODO - Remove fallback accessors to make sure we don't load unnecessary buffers\n }\n }\n }\n}\n\nexport async function decode(\n gltfData: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n if (!options?.gltf?.decompressMeshes) {\n return;\n }\n\n const iterator = new GLTFIterator(gltfData);\n const promises: Promise<void>[] = [];\n for (const mesh of iterator.meshes) {\n for (const primitive of iterator.getReferences(mesh).primitives) {\n if (iterator.getExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n promises.push(decompressPrimitive(iterator, primitive, options, context));\n }\n }\n }\n\n // Decompress meshes in parallel\n await Promise.all(promises);\n\n // We have now decompressed all primitives, so remove the top-level extension\n iterator.removeExtension(KHR_DRACO_MESH_COMPRESSION);\n}\n\n// DECODE\n\n// Unpacks one mesh primitive and removes the extension from the primitive\n// DracoDecoder needs to be imported and registered by app\n// Returns: Promise that resolves when all pending draco decoder jobs for this mesh complete\n\n// TODO - Implement fallback behavior per KHR_DRACO_MESH_COMPRESSION spec\n\nasync function decompressPrimitive(\n iterator: GLTFIterator,\n primitive: GLTFMeshPrimitive,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n const dracoExtension = iterator.getExtension<GLTF_KHR_draco_mesh_compression>(\n primitive,\n KHR_DRACO_MESH_COMPRESSION\n );\n if (!dracoExtension) {\n return;\n }\n\n const buffer = getTypedArrayForBufferView(\n iterator.data,\n iterator.gltf.buffers,\n dracoExtension.bufferView\n );\n // A decoder worker can transfer its input, so it must not own the shared glTF buffer.\n const compressedData = sliceArrayBuffer(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n\n const dracoOptions: DracoLoaderOptions = {\n ...options,\n draco: {\n ...options.draco,\n // Internal glTF decoding consumes the legacy mesh contract.\n shape: 'mesh',\n // Normalize compressed strips to the triangle indices returned below.\n topology: 'triangle-list',\n decoderProfile: options.draco?.decoderProfile || 'gltf',\n extraAttributes: dracoExtension.attributes\n }\n };\n\n // TODO - remove hack: The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n const decodedData = (await parseFromContext(\n compressedData,\n DracoLoader,\n dracoOptions,\n context\n )) as DracoMesh;\n\n const decodedAttributes: {[key: string]: GLTFAccessor} = getGLTFAccessors(decodedData.attributes);\n\n // A declared compressed attribute cannot fall back to its raw accessor: it may have no buffer view.\n for (const attributeName of Object.keys(dracoExtension.attributes)) {\n if (!Object.hasOwn(decodedAttributes, attributeName)) {\n throw new Error(`glTF: Draco decompression did not produce attribute ${attributeName}`);\n }\n }\n\n // Restore accessor bounds and integer normalization from the glTF declaration.\n for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {\n if (attributeName in primitive.attributes) {\n const accessorIndex: number = primitive.attributes[attributeName];\n const accessor = iterator.data.accessors?.[accessorIndex];\n if (accessor?.normalized !== undefined) {\n decodedAttribute.normalized = accessor.normalized;\n }\n if (accessor?.min && accessor?.max) {\n decodedAttribute.min = accessor.min;\n decodedAttribute.max = accessor.max;\n }\n }\n }\n\n // Attributes outside the Draco bitstream still reference ordinary glTF accessors.\n // @ts-ignore\n primitive.attributes = {...primitive.attributes, ...decodedAttributes};\n if (decodedData.indices) {\n // @ts-ignore\n primitive.indices = getGLTFAccessor(decodedData.indices);\n primitive.mode = 4;\n }\n\n // Extension has been processed, delete it\n iterator.removeExtension(primitive, KHR_DRACO_MESH_COMPRESSION);\n\n checkPrimitive(primitive);\n}\n\n// UTILS\n\nfunction checkPrimitive(primitive: GLTFMeshPrimitive): void {\n if (!primitive.attributes || Object.keys(primitive.attributes).length === 0) {\n throw new Error('glTF: Empty primitive detected: Draco decompression failure?');\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_draco_mesh_compression.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_draco_mesh_compression.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAKjE,OAAO,KAAK,EACV,eAAe,EAIhB,+BAA4B;AAC7B,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAQ/D,qBAAqB;AACrB,eAAO,MAAM,IAAI,+BAA6B,CAAC;AAE/C,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,aAAa,GACrB,IAAI,CASN;AAED,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"KHR_draco_mesh_compression.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_draco_mesh_compression.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAMjE,OAAO,KAAK,EACV,eAAe,EAIhB,+BAA4B;AAC7B,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAQ/D,qBAAqB;AACrB,eAAO,MAAM,IAAI,+BAA6B,CAAC;AAE/C,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,aAAa,GACrB,IAAI,CASN;AAED,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { sliceArrayBuffer, parseFromContext } from '@loaders.gl/core/loader-utils';
5
- import { DracoLoader } from '@loaders.gl/draco';
5
+ import { DracoLoader } from '@loaders.gl/scene/draco-loader-types';
6
6
  import { GLTFIterator } from "../api/gltf-iterator.js";
7
7
  import { getGLTFAccessors, getGLTFAccessor } from "../gltf-utils/gltf-attribute-utils.js";
8
8
  import { getTypedArrayForBufferView } from "../gltf-utils/get-typed-array.js";
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_draco_mesh_compression.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_draco_mesh_compression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KHR_draco_mesh_compression.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_draco_mesh_compression.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,7 @@ __export(KHR_gaussian_splatting_exports, {
26
26
  name: () => name
27
27
  });
28
28
  module.exports = __toCommonJS(KHR_gaussian_splatting_exports);
29
+ var import_loader_utils = require("@loaders.gl/core/loader-utils");
29
30
  var import_gltf_iterator = require("../api/gltf-iterator.cjs");
30
31
  var name = "KHR_gaussian_splatting";
31
32
  var SPZ_COMPRESSION_EXTENSION_NAME = "KHR_gaussian_splatting_compression_spz_2";
@@ -36,7 +37,8 @@ var REQUIRED_ATTRIBUTES = [
36
37
  "KHR_gaussian_splatting:OPACITY",
37
38
  "KHR_gaussian_splatting:SH_DEGREE_0_COEF_0"
38
39
  ];
39
- async function decode(gltfData, options) {
40
+ async function decode(gltfData, options, context) {
41
+ const loader = context?.loaders?.find((candidate) => candidate.extensions?.includes("spz"));
40
42
  const descriptors = getGaussianSplatPrimitives(gltfData);
41
43
  const iterator = new import_gltf_iterator.GLTFIterator(gltfData);
42
44
  for (const [meshIndex, mesh] of (gltfData.json.meshes || []).entries()) {
@@ -61,12 +63,19 @@ async function decode(gltfData, options) {
61
63
  const bufferView = gltfData.json.bufferViews?.[compression.bufferView];
62
64
  if (bufferView && gltfData.buffers[bufferView.buffer]) {
63
65
  descriptor.compressedBytes = getBufferViewBytes(gltfData, compression.bufferView);
64
- } else if (decoder) {
66
+ } else if (decoder || loader) {
65
67
  throw new Error(
66
68
  `KHR_gaussian_splatting: bufferView ${compression.bufferView} is not loaded for SPZ2 decoding.`
67
69
  );
68
70
  }
69
- if (decoder && descriptor.compressedBytes) {
71
+ if (loader && context && descriptor.compressedBytes) {
72
+ descriptor.decoded = await (0, import_loader_utils.parseFromContext)(
73
+ descriptor.compressedBytes.buffer,
74
+ loader,
75
+ { ...options, splats: { ...options.splats, sourceCoordinateSystem: "LUF" } },
76
+ context
77
+ );
78
+ } else if (decoder && descriptor.compressedBytes) {
70
79
  descriptor.decoded = await decoder(descriptor.compressedBytes.buffer, {
71
80
  sourceCoordinateSystem: "LUF"
72
81
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/* eslint-disable camelcase */\n\nimport type {GLTF, GLTFMeshPrimitive} from '../types/gltf-json-schema';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\nimport {GLTFIterator} from '../api/gltf-iterator';\nimport type {\n GLTFGaussianSplatPrimitive,\n GLTF_KHR_gaussian_splatting\n} from '../types/gltf-ext-gaussian-splatting-schema';\n\n/** Name of the ratified Gaussian splatting glTF extension. */\nexport const name = 'KHR_gaussian_splatting';\n\n/** Name of the draft SPZ2 compression companion extension. */\nexport const SPZ_COMPRESSION_EXTENSION_NAME = 'KHR_gaussian_splatting_compression_spz_2';\n\nconst REQUIRED_ATTRIBUTES = [\n 'POSITION',\n 'KHR_gaussian_splatting:ROTATION',\n 'KHR_gaussian_splatting:SCALE',\n 'KHR_gaussian_splatting:OPACITY',\n 'KHR_gaussian_splatting:SH_DEGREE_0_COEF_0'\n] as const;\n\n/** Validates Gaussian splat primitives while preserving all source JSON. */\nexport async function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions): Promise<void> {\n const descriptors = getGaussianSplatPrimitives(gltfData);\n const iterator = new GLTFIterator(gltfData);\n for (const [meshIndex, mesh] of (gltfData.json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n validateGaussianSplatPrimitive(\n gltfData.json,\n primitive,\n extension,\n meshIndex,\n primitiveIndex,\n iterator\n );\n const compression = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME];\n if (compression) {\n const descriptor = descriptors.find(\n item => item.meshIndex === meshIndex && item.primitiveIndex === primitiveIndex\n );\n if (descriptor) {\n const decoder = options?.gltf?.splatDecoder;\n const bufferView = gltfData.json.bufferViews?.[compression.bufferView];\n if (bufferView && gltfData.buffers[bufferView.buffer]) {\n descriptor.compressedBytes = getBufferViewBytes(gltfData, compression.bufferView);\n } else if (decoder) {\n throw new Error(\n `KHR_gaussian_splatting: bufferView ${compression.bufferView} is not loaded for SPZ2 decoding.`\n );\n }\n if (decoder && descriptor.compressedBytes) {\n descriptor.decoded = await decoder(descriptor.compressedBytes.buffer as ArrayBuffer, {\n sourceCoordinateSystem: 'LUF'\n });\n }\n }\n }\n }\n }\n if (descriptors.length) {\n gltfData.gaussianSplatPrimitives = descriptors;\n }\n}\n\n/** Returns a copied buffer-view payload so applications can retain compressed bytes safely. */\nfunction getBufferViewBytes(gltfData: GLTFWithBuffers, bufferViewIndex: number): Uint8Array {\n const bufferView = gltfData.json.bufferViews?.[bufferViewIndex];\n if (!bufferView) {\n throw new Error(`KHR_gaussian_splatting: bufferView ${bufferViewIndex} is not defined.`);\n }\n const buffer = gltfData.buffers[bufferView.buffer];\n if (!buffer) {\n throw new Error(\n `KHR_gaussian_splatting: buffer ${bufferView.buffer} is not loaded for SPZ2 payload.`\n );\n }\n const byteOffset = buffer.byteOffset + (bufferView.byteOffset || 0);\n return new Uint8Array(buffer.arrayBuffer, byteOffset, bufferView.byteLength).slice();\n}\n\n/** Returns normalized Gaussian splat primitive descriptors without mutating the glTF. */\nexport function getGaussianSplatPrimitives(\n gltf: GLTF | GLTFWithBuffers\n): GLTFGaussianSplatPrimitive[] {\n const json: GLTF = 'json' in gltf ? (gltf as GLTFWithBuffers).json : (gltf as GLTF);\n const descriptors: GLTFGaussianSplatPrimitive[] = [];\n for (const [meshIndex, mesh] of (json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n const compressedBufferView =\n extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n descriptors.push({\n meshIndex,\n primitiveIndex,\n attributes: {...primitive.attributes},\n extension,\n compressedBufferView\n });\n }\n }\n return descriptors;\n}\n\n/** Validates one Gaussian splat primitive against the base extension invariants. */\nfunction validateGaussianSplatPrimitive(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n extension: GLTF_KHR_gaussian_splatting,\n meshIndex: number,\n primitiveIndex: number,\n iterator: GLTFIterator\n): void {\n if ((primitive.mode ?? 4) !== 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} must use POINTS mode.`\n );\n }\n if (typeof extension.kernel !== 'string' || extension.kernel.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing kernel.`\n );\n }\n if (typeof extension.colorSpace !== 'string' || extension.colorSpace.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing colorSpace.`\n );\n }\n\n const compressedBufferView = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n if (compressedBufferView !== undefined) {\n if (\n !Number.isInteger(compressedBufferView) ||\n compressedBufferView < 0 ||\n compressedBufferView >= (gltf.bufferViews || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid SPZ bufferView.`\n );\n }\n } else {\n for (const attributeName of REQUIRED_ATTRIBUTES) {\n if (primitive.attributes[attributeName] === undefined) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing ${attributeName}.`\n );\n }\n }\n }\n\n for (const [attributeName, accessorIndex] of Object.entries(primitive.attributes)) {\n if (\n !Number.isInteger(accessorIndex) ||\n accessorIndex < 0 ||\n accessorIndex >= (gltf.accessors || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has invalid accessor ${attributeName}.`\n );\n }\n }\n\n validateGaussianValues(gltf, primitive, iterator, meshIndex, primitiveIndex);\n\n for (let degree = 1; degree <= 3; degree++) {\n const coefficientCount = degree * 2 + 1;\n const present = Array.from(\n {length: coefficientCount},\n (_, coefficientIndex) =>\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${degree}_COEF_${coefficientIndex}`\n ] !== undefined\n );\n if (present.some(Boolean) && !present.every(Boolean)) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has incomplete SH degree ${degree}.`\n );\n }\n if (present.some(Boolean) && degree > 1) {\n const lowerDegree = degree - 1;\n const lowerCount = lowerDegree * 2 + 1;\n for (let coefficientIndex = 0; coefficientIndex < lowerCount; coefficientIndex++) {\n if (\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${lowerDegree}_COEF_${coefficientIndex}`\n ] === undefined\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} skips SH degree ${lowerDegree}.`\n );\n }\n }\n }\n }\n}\n\n/** Checks decoded scale and opacity ranges when the referenced buffers are available. */\nfunction validateGaussianValues(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n iterator: GLTFIterator,\n meshIndex: number,\n primitiveIndex: number\n): void {\n const scaleAccessor = primitive.attributes['KHR_gaussian_splatting:SCALE'];\n const opacityAccessor = primitive.attributes['KHR_gaussian_splatting:OPACITY'];\n for (const [attributeName, accessorIndex, predicate] of [\n ['KHR_gaussian_splatting:SCALE', scaleAccessor, (value: number) => value >= 0],\n ['KHR_gaussian_splatting:OPACITY', opacityAccessor, (value: number) => value >= 0 && value <= 1]\n ] as const) {\n if (accessorIndex === undefined || !isAccessorLoaded(gltf, iterator, accessorIndex)) continue;\n const values = iterator.getTypedArrayForAccessor(accessorIndex) as ArrayLike<number>;\n for (let valueIndex = 0; valueIndex < values.length; valueIndex++) {\n if (!predicate(Number(values[valueIndex]))) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid ${attributeName} value.`\n );\n }\n }\n }\n}\n\n/** Returns whether an accessor's source buffer has been resolved by the loader. */\nfunction isAccessorLoaded(gltf: GLTF, iterator: GLTFIterator, accessorIndex: number): boolean {\n const accessor = gltf.accessors?.[accessorIndex];\n const bufferView =\n accessor?.bufferView === undefined ? undefined : gltf.bufferViews?.[accessor.bufferView];\n return Boolean(bufferView && iterator.gltf.buffers[bufferView.buffer]);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/* eslint-disable camelcase */\n\nimport {parseFromContext} from '@loaders.gl/core/loader-utils';\nimport type {LoaderContext} from '@loaders.gl/core/loader-utils';\nimport type {GLTF, GLTFMeshPrimitive} from '../types/gltf-json-schema';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\nimport {GLTFIterator} from '../api/gltf-iterator';\nimport type {\n GLTFGaussianSplatPrimitive,\n GLTF_KHR_gaussian_splatting\n} from '../types/gltf-ext-gaussian-splatting-schema';\n\n/** Name of the ratified Gaussian splatting glTF extension. */\nexport const name = 'KHR_gaussian_splatting';\n\n/** Name of the draft SPZ2 compression companion extension. */\nexport const SPZ_COMPRESSION_EXTENSION_NAME = 'KHR_gaussian_splatting_compression_spz_2';\n\nconst REQUIRED_ATTRIBUTES = [\n 'POSITION',\n 'KHR_gaussian_splatting:ROTATION',\n 'KHR_gaussian_splatting:SCALE',\n 'KHR_gaussian_splatting:OPACITY',\n 'KHR_gaussian_splatting:SH_DEGREE_0_COEF_0'\n] as const;\n\n/** Validates Gaussian splat primitives while preserving all source JSON. */\nexport async function decode(\n gltfData: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n const loader = context?.loaders?.find(candidate => candidate.extensions?.includes('spz'));\n const descriptors = getGaussianSplatPrimitives(gltfData);\n const iterator = new GLTFIterator(gltfData);\n for (const [meshIndex, mesh] of (gltfData.json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n validateGaussianSplatPrimitive(\n gltfData.json,\n primitive,\n extension,\n meshIndex,\n primitiveIndex,\n iterator\n );\n const compression = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME];\n if (compression) {\n const descriptor = descriptors.find(\n item => item.meshIndex === meshIndex && item.primitiveIndex === primitiveIndex\n );\n if (descriptor) {\n const decoder = options?.gltf?.splatDecoder;\n const bufferView = gltfData.json.bufferViews?.[compression.bufferView];\n if (bufferView && gltfData.buffers[bufferView.buffer]) {\n descriptor.compressedBytes = getBufferViewBytes(gltfData, compression.bufferView);\n } else if (decoder || loader) {\n throw new Error(\n `KHR_gaussian_splatting: bufferView ${compression.bufferView} is not loaded for SPZ2 decoding.`\n );\n }\n if (loader && context && descriptor.compressedBytes) {\n descriptor.decoded = await parseFromContext(\n descriptor.compressedBytes.buffer as ArrayBuffer,\n loader,\n {...options, splats: {...options.splats, sourceCoordinateSystem: 'LUF'}},\n context\n );\n } else if (decoder && descriptor.compressedBytes) {\n descriptor.decoded = await decoder(descriptor.compressedBytes.buffer as ArrayBuffer, {\n sourceCoordinateSystem: 'LUF'\n });\n }\n }\n }\n }\n }\n if (descriptors.length) {\n gltfData.gaussianSplatPrimitives = descriptors;\n }\n}\n\n/** Returns a copied buffer-view payload so applications can retain compressed bytes safely. */\nfunction getBufferViewBytes(gltfData: GLTFWithBuffers, bufferViewIndex: number): Uint8Array {\n const bufferView = gltfData.json.bufferViews?.[bufferViewIndex];\n if (!bufferView) {\n throw new Error(`KHR_gaussian_splatting: bufferView ${bufferViewIndex} is not defined.`);\n }\n const buffer = gltfData.buffers[bufferView.buffer];\n if (!buffer) {\n throw new Error(\n `KHR_gaussian_splatting: buffer ${bufferView.buffer} is not loaded for SPZ2 payload.`\n );\n }\n const byteOffset = buffer.byteOffset + (bufferView.byteOffset || 0);\n return new Uint8Array(buffer.arrayBuffer, byteOffset, bufferView.byteLength).slice();\n}\n\n/** Returns normalized Gaussian splat primitive descriptors without mutating the glTF. */\nexport function getGaussianSplatPrimitives(\n gltf: GLTF | GLTFWithBuffers\n): GLTFGaussianSplatPrimitive[] {\n const json: GLTF = 'json' in gltf ? (gltf as GLTFWithBuffers).json : (gltf as GLTF);\n const descriptors: GLTFGaussianSplatPrimitive[] = [];\n for (const [meshIndex, mesh] of (json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n const compressedBufferView =\n extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n descriptors.push({\n meshIndex,\n primitiveIndex,\n attributes: {...primitive.attributes},\n extension,\n compressedBufferView\n });\n }\n }\n return descriptors;\n}\n\n/** Validates one Gaussian splat primitive against the base extension invariants. */\nfunction validateGaussianSplatPrimitive(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n extension: GLTF_KHR_gaussian_splatting,\n meshIndex: number,\n primitiveIndex: number,\n iterator: GLTFIterator\n): void {\n if ((primitive.mode ?? 4) !== 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} must use POINTS mode.`\n );\n }\n if (typeof extension.kernel !== 'string' || extension.kernel.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing kernel.`\n );\n }\n if (typeof extension.colorSpace !== 'string' || extension.colorSpace.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing colorSpace.`\n );\n }\n\n const compressedBufferView = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n if (compressedBufferView !== undefined) {\n if (\n !Number.isInteger(compressedBufferView) ||\n compressedBufferView < 0 ||\n compressedBufferView >= (gltf.bufferViews || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid SPZ bufferView.`\n );\n }\n } else {\n for (const attributeName of REQUIRED_ATTRIBUTES) {\n if (primitive.attributes[attributeName] === undefined) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing ${attributeName}.`\n );\n }\n }\n }\n\n for (const [attributeName, accessorIndex] of Object.entries(primitive.attributes)) {\n if (\n !Number.isInteger(accessorIndex) ||\n accessorIndex < 0 ||\n accessorIndex >= (gltf.accessors || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has invalid accessor ${attributeName}.`\n );\n }\n }\n\n validateGaussianValues(gltf, primitive, iterator, meshIndex, primitiveIndex);\n\n for (let degree = 1; degree <= 3; degree++) {\n const coefficientCount = degree * 2 + 1;\n const present = Array.from(\n {length: coefficientCount},\n (_, coefficientIndex) =>\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${degree}_COEF_${coefficientIndex}`\n ] !== undefined\n );\n if (present.some(Boolean) && !present.every(Boolean)) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has incomplete SH degree ${degree}.`\n );\n }\n if (present.some(Boolean) && degree > 1) {\n const lowerDegree = degree - 1;\n const lowerCount = lowerDegree * 2 + 1;\n for (let coefficientIndex = 0; coefficientIndex < lowerCount; coefficientIndex++) {\n if (\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${lowerDegree}_COEF_${coefficientIndex}`\n ] === undefined\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} skips SH degree ${lowerDegree}.`\n );\n }\n }\n }\n }\n}\n\n/** Checks decoded scale and opacity ranges when the referenced buffers are available. */\nfunction validateGaussianValues(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n iterator: GLTFIterator,\n meshIndex: number,\n primitiveIndex: number\n): void {\n const scaleAccessor = primitive.attributes['KHR_gaussian_splatting:SCALE'];\n const opacityAccessor = primitive.attributes['KHR_gaussian_splatting:OPACITY'];\n for (const [attributeName, accessorIndex, predicate] of [\n ['KHR_gaussian_splatting:SCALE', scaleAccessor, (value: number) => value >= 0],\n ['KHR_gaussian_splatting:OPACITY', opacityAccessor, (value: number) => value >= 0 && value <= 1]\n ] as const) {\n if (accessorIndex === undefined || !isAccessorLoaded(gltf, iterator, accessorIndex)) continue;\n const values = iterator.getTypedArrayForAccessor(accessorIndex) as ArrayLike<number>;\n for (let valueIndex = 0; valueIndex < values.length; valueIndex++) {\n if (!predicate(Number(values[valueIndex]))) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid ${attributeName} value.`\n );\n }\n }\n }\n}\n\n/** Returns whether an accessor's source buffer has been resolved by the loader. */\nfunction isAccessorLoaded(gltf: GLTF, iterator: GLTFIterator, accessorIndex: number): boolean {\n const accessor = gltf.accessors?.[accessorIndex];\n const bufferView =\n accessor?.bufferView === undefined ? undefined : gltf.bufferViews?.[accessor.bufferView];\n return Boolean(bufferView && iterator.gltf.buffers[bufferView.buffer]);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ import type { LoaderContext } from '@loaders.gl/core/loader-utils';
1
2
  import type { GLTF } from "../types/gltf-json-schema.js";
2
3
  import type { GLTFWithBuffers } from "../types/gltf-types.js";
3
4
  import type { GLTFLoaderOptions } from "../../gltf-loader-types.js";
@@ -7,7 +8,7 @@ export declare const name = "KHR_gaussian_splatting";
7
8
  /** Name of the draft SPZ2 compression companion extension. */
8
9
  export declare const SPZ_COMPRESSION_EXTENSION_NAME = "KHR_gaussian_splatting_compression_spz_2";
9
10
  /** Validates Gaussian splat primitives while preserving all source JSON. */
10
- export declare function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions): Promise<void>;
11
+ export declare function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions, context?: LoaderContext): Promise<void>;
11
12
  /** Returns normalized Gaussian splat primitive descriptors without mutating the glTF. */
12
13
  export declare function getGaussianSplatPrimitives(gltf: GLTF | GLTFWithBuffers): GLTFGaussianSplatPrimitive[];
13
14
  //# sourceMappingURL=KHR_gaussian_splatting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_gaussian_splatting.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,IAAI,EAAoB,qCAAkC;AACvE,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AACzD,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAE/D,OAAO,KAAK,EACV,0BAA0B,EAE3B,uDAAoD;AAErD,8DAA8D;AAC9D,eAAO,MAAM,IAAI,2BAA2B,CAAC;AAE7C,8DAA8D;AAC9D,eAAO,MAAM,8BAA8B,6CAA6C,CAAC;AAUzF,4EAA4E;AAC5E,wBAAsB,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CjG;AAkBD,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,GAAG,eAAe,GAC3B,0BAA0B,EAAE,CAmB9B"}
1
+ {"version":3,"file":"KHR_gaussian_splatting.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAC,IAAI,EAAoB,qCAAkC;AACvE,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AACzD,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAE/D,OAAO,KAAK,EACV,0BAA0B,EAE3B,uDAAoD;AAErD,8DAA8D;AAC9D,eAAO,MAAM,IAAI,2BAA2B,CAAC;AAE7C,8DAA8D;AAC9D,eAAO,MAAM,8BAA8B,6CAA6C,CAAC;AAUzF,4EAA4E;AAC5E,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CAkDf;AAkBD,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,GAAG,eAAe,GAC3B,0BAA0B,EAAE,CAmB9B"}
@@ -1,6 +1,8 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright vis.gl contributors
4
+ /* eslint-disable camelcase */
5
+ import { parseFromContext } from '@loaders.gl/core/loader-utils';
4
6
  import { GLTFIterator } from "../api/gltf-iterator.js";
5
7
  /** Name of the ratified Gaussian splatting glTF extension. */
6
8
  export const name = 'KHR_gaussian_splatting';
@@ -14,7 +16,8 @@ const REQUIRED_ATTRIBUTES = [
14
16
  'KHR_gaussian_splatting:SH_DEGREE_0_COEF_0'
15
17
  ];
16
18
  /** Validates Gaussian splat primitives while preserving all source JSON. */
17
- export async function decode(gltfData, options) {
19
+ export async function decode(gltfData, options, context) {
20
+ const loader = context?.loaders?.find(candidate => candidate.extensions?.includes('spz'));
18
21
  const descriptors = getGaussianSplatPrimitives(gltfData);
19
22
  const iterator = new GLTFIterator(gltfData);
20
23
  for (const [meshIndex, mesh] of (gltfData.json.meshes || []).entries()) {
@@ -32,10 +35,13 @@ export async function decode(gltfData, options) {
32
35
  if (bufferView && gltfData.buffers[bufferView.buffer]) {
33
36
  descriptor.compressedBytes = getBufferViewBytes(gltfData, compression.bufferView);
34
37
  }
35
- else if (decoder) {
38
+ else if (decoder || loader) {
36
39
  throw new Error(`KHR_gaussian_splatting: bufferView ${compression.bufferView} is not loaded for SPZ2 decoding.`);
37
40
  }
38
- if (decoder && descriptor.compressedBytes) {
41
+ if (loader && context && descriptor.compressedBytes) {
42
+ descriptor.decoded = await parseFromContext(descriptor.compressedBytes.buffer, loader, { ...options, splats: { ...options.splats, sourceCoordinateSystem: 'LUF' } }, context);
43
+ }
44
+ else if (decoder && descriptor.compressedBytes) {
39
45
  descriptor.decoded = await decoder(descriptor.compressedBytes.buffer, {
40
46
  sourceCoordinateSystem: 'LUF'
41
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_gaussian_splatting.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KHR_gaussian_splatting.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name2 in all)
8
+ __defProp(target, name2, { get: all[name2], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/gltf/lib/extensions/MSFT_texture_dds.ts
21
+ var MSFT_texture_dds_exports = {};
22
+ __export(MSFT_texture_dds_exports, {
23
+ decode: () => decode,
24
+ getDDSLoader: () => getDDSLoader,
25
+ name: () => name,
26
+ preprocess: () => preprocess
27
+ });
28
+ module.exports = __toCommonJS(MSFT_texture_dds_exports);
29
+ var import_gltf_iterator = require("../api/gltf-iterator.cjs");
30
+ var name = "MSFT_texture_dds";
31
+ function getDDSLoader(context) {
32
+ return context?.loaders?.find(
33
+ (loader) => loader.extensions?.includes("dds") || loader.mimeTypes?.includes("image/vnd-ms.dds")
34
+ );
35
+ }
36
+ function preprocess(gltf, _options, context) {
37
+ const iterator = new import_gltf_iterator.GLTFIterator(gltf);
38
+ if (!iterator.hasExtension(name)) return;
39
+ if (!getDDSLoader(context)) {
40
+ if (iterator.isExtensionRequired(name)) {
41
+ throw new Error("gltf: Required extension MSFT_texture_dds needs a DDS parser");
42
+ }
43
+ return;
44
+ }
45
+ for (const texture of iterator.textures) {
46
+ const extension = iterator.getExtension(texture, name);
47
+ if (extension) texture.source = extension.source;
48
+ }
49
+ }
50
+ async function decode(gltf, options, context) {
51
+ if (!getDDSLoader(context) || options.gltf?.loadImages === false) return;
52
+ const iterator = new import_gltf_iterator.GLTFIterator(gltf);
53
+ if (!iterator.hasExtension(name)) return;
54
+ for (const texture of iterator.textures) iterator.removeExtension(texture, name);
55
+ iterator.removeExtension(name);
56
+ }
57
+ // Annotate the CommonJS export names for ESM import in node:
58
+ 0 && (module.exports = {
59
+ decode,
60
+ getDDSLoader,
61
+ name,
62
+ preprocess
63
+ });
64
+ //# sourceMappingURL=MSFT_texture_dds.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/gltf/lib/extensions/MSFT_texture_dds.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {GLTF_MSFT_texture_dds} from '../types/gltf-json-schema';\nimport type {Loader, LoaderContext} from '@loaders.gl/core/loader-utils';\nimport {GLTFIterator} from '../api/gltf-iterator';\n\n/** Name of the Microsoft DDS texture extension. */\nexport const name = 'MSFT_texture_dds';\n\n/** Finds a DDS-capable loader supplied through the parent loader context. */\nexport function getDDSLoader(context?: LoaderContext): Loader | undefined {\n return context?.loaders?.find(\n loader => loader.extensions?.includes('dds') || loader.mimeTypes?.includes('image/vnd-ms.dds')\n );\n}\n\n/** Select DDS sources only when an application supplies a compatible loader. */\nexport function preprocess(\n gltf: GLTFWithBuffers,\n _options: GLTFLoaderOptions,\n context?: LoaderContext\n): void {\n const iterator = new GLTFIterator(gltf);\n if (!iterator.hasExtension(name)) return;\n if (!getDDSLoader(context)) {\n if (iterator.isExtensionRequired(name)) {\n throw new Error('gltf: Required extension MSFT_texture_dds needs a DDS parser');\n }\n return;\n }\n for (const texture of iterator.textures) {\n const extension = iterator.getExtension<GLTF_MSFT_texture_dds>(texture, name);\n if (extension) texture.source = extension.source;\n }\n}\n\n/** Remove DDS declarations only after image loading can identify the selected sources. */\nexport async function decode(\n gltf: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n if (!getDDSLoader(context) || options.gltf?.loadImages === false) return;\n const iterator = new GLTFIterator(gltf);\n if (!iterator.hasExtension(name)) return;\n for (const texture of iterator.textures) iterator.removeExtension(texture, name);\n iterator.removeExtension(name);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,2BAA2B;AAGpB,IAAM,OAAO;AAGb,SAAS,aAAa,SAA6C;AACxE,SAAO,SAAS,SAAS;AAAA,IACvB,YAAU,OAAO,YAAY,SAAS,KAAK,KAAK,OAAO,WAAW,SAAS,kBAAkB;AAAA,EAC/F;AACF;AAGO,SAAS,WACd,MACA,UACA,SACM;AACN,QAAM,WAAW,IAAI,kCAAa,IAAI;AACtC,MAAI,CAAC,SAAS,aAAa,IAAI,EAAG;AAClC,MAAI,CAAC,aAAa,OAAO,GAAG;AAC1B,QAAI,SAAS,oBAAoB,IAAI,GAAG;AACtC,YAAM,IAAI,MAAM,8DAA8D;AAAA,IAChF;AACA;AAAA,EACF;AACA,aAAW,WAAW,SAAS,UAAU;AACvC,UAAM,YAAY,SAAS,aAAoC,SAAS,IAAI;AAC5E,QAAI,UAAW,SAAQ,SAAS,UAAU;AAAA,EAC5C;AACF;AAGA,eAAsB,OACpB,MACA,SACA,SACe;AACf,MAAI,CAAC,aAAa,OAAO,KAAK,QAAQ,MAAM,eAAe,MAAO;AAClE,QAAM,WAAW,IAAI,kCAAa,IAAI;AACtC,MAAI,CAAC,SAAS,aAAa,IAAI,EAAG;AAClC,aAAW,WAAW,SAAS,SAAU,UAAS,gBAAgB,SAAS,IAAI;AAC/E,WAAS,gBAAgB,IAAI;AAC/B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ import type { GLTFLoaderOptions } from "../../gltf-loader-types.js";
2
+ import type { GLTFWithBuffers } from "../types/gltf-types.js";
3
+ import type { Loader, LoaderContext } from '@loaders.gl/core/loader-utils';
4
+ /** Name of the Microsoft DDS texture extension. */
5
+ export declare const name = "MSFT_texture_dds";
6
+ /** Finds a DDS-capable loader supplied through the parent loader context. */
7
+ export declare function getDDSLoader(context?: LoaderContext): Loader | undefined;
8
+ /** Select DDS sources only when an application supplies a compatible loader. */
9
+ export declare function preprocess(gltf: GLTFWithBuffers, _options: GLTFLoaderOptions, context?: LoaderContext): void;
10
+ /** Remove DDS declarations only after image loading can identify the selected sources. */
11
+ export declare function decode(gltf: GLTFWithBuffers, options: GLTFLoaderOptions, context?: LoaderContext): Promise<void>;
12
+ //# sourceMappingURL=MSFT_texture_dds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSFT_texture_dds.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/MSFT_texture_dds.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AAEzD,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAGzE,mDAAmD;AACnD,eAAO,MAAM,IAAI,qBAAqB,CAAC;AAEvC,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAIxE;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,IAAI,CAaN;AAED,0FAA0F;AAC1F,wBAAsB,MAAM,CAC1B,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,39 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GLTFIterator } from "../api/gltf-iterator.js";
5
+ /** Name of the Microsoft DDS texture extension. */
6
+ export const name = 'MSFT_texture_dds';
7
+ /** Finds a DDS-capable loader supplied through the parent loader context. */
8
+ export function getDDSLoader(context) {
9
+ return context?.loaders?.find(loader => loader.extensions?.includes('dds') || loader.mimeTypes?.includes('image/vnd-ms.dds'));
10
+ }
11
+ /** Select DDS sources only when an application supplies a compatible loader. */
12
+ export function preprocess(gltf, _options, context) {
13
+ const iterator = new GLTFIterator(gltf);
14
+ if (!iterator.hasExtension(name))
15
+ return;
16
+ if (!getDDSLoader(context)) {
17
+ if (iterator.isExtensionRequired(name)) {
18
+ throw new Error('gltf: Required extension MSFT_texture_dds needs a DDS parser');
19
+ }
20
+ return;
21
+ }
22
+ for (const texture of iterator.textures) {
23
+ const extension = iterator.getExtension(texture, name);
24
+ if (extension)
25
+ texture.source = extension.source;
26
+ }
27
+ }
28
+ /** Remove DDS declarations only after image loading can identify the selected sources. */
29
+ export async function decode(gltf, options, context) {
30
+ if (!getDDSLoader(context) || options.gltf?.loadImages === false)
31
+ return;
32
+ const iterator = new GLTFIterator(gltf);
33
+ if (!iterator.hasExtension(name))
34
+ return;
35
+ for (const texture of iterator.textures)
36
+ iterator.removeExtension(texture, name);
37
+ iterator.removeExtension(name);
38
+ }
39
+ //# sourceMappingURL=MSFT_texture_dds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSFT_texture_dds.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/MSFT_texture_dds.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAMpC,OAAO,EAAC,YAAY,EAAC,gCAA6B;AAElD,mDAAmD;AACnD,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAEvC,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,OAAO,OAAO,EAAE,OAAO,EAAE,IAAI,CAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAC/F,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,UAAU,CACxB,IAAqB,EACrB,QAA2B,EAC3B,OAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO;IACzC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO;IACT,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAwB,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9E,IAAI,SAAS;YAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACnD,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAqB,EACrB,OAA0B,EAC1B,OAAuB;IAEvB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,UAAU,KAAK,KAAK;QAAE,OAAO;IACzE,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO;IACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;QAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjF,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -128,7 +128,7 @@ function getPrimitiveTextureData(scenegraph, textureInfo, primitive) {
128
128
  if (typeof imageIndex !== "undefined") {
129
129
  const mimeType = json.images?.[imageIndex]?.mimeType;
130
130
  const parsedImage = scenegraph.gltf.images?.[imageIndex];
131
- if (parsedImage && typeof parsedImage.width !== "undefined") {
131
+ if (parsedImage && typeof parsedImage.width !== "undefined" && !("compressed" in parsedImage && parsedImage.compressed)) {
132
132
  const textureData = [];
133
133
  for (let index = 0; index < textureCoordinates.length; index += 2) {
134
134
  const value = getImageValueByCoordinates(