@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,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/draco/lib/draco-builder.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\n// This code is inspired by example code in the DRACO repository\nimport type {\n Draco3D,\n DracoInt8Array,\n Encoder,\n ExpertEncoder,\n Mesh,\n MeshBuilder,\n PointCloud,\n Metadata,\n MetadataBuilder,\n draco_GeometryAttribute_Type\n} from '../draco3d/draco3d-types';\n\nimport type {MeshAttribute, TypedArray} from '@loaders.gl/core/schema';\n\n/** Geometry accepted by the low-level Draco encoder. */\nexport type DracoBuilderMesh = {\n /** Vertex attributes keyed by semantic or application attribute name. */\n attributes: Record<string, TypedArray | MeshAttribute>;\n /** Optional triangle indices. */\n indices?: TypedArray | MeshAttribute;\n};\n\n/** Metadata values supported by the Draco WebAssembly API. */\nexport type DracoMetadata = Record<string, string | number | Int32Array>;\n\n/** Draco mesh encoding method exposed by the WebAssembly encoder. */\nexport type DracoEncodingMethod = 'MESH_EDGEBREAKER_ENCODING' | 'MESH_SEQUENTIAL_ENCODING';\n\n/** Draco attribute categories used to select compression transforms. */\nexport type DracoAttributeType = 'POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC';\n\n/** Explicit quantization transform for one Draco attribute. */\nexport type DracoExplicitQuantization = {\n /** Number of quantization bits, from 1 through 30. */\n bits: number;\n /** Quantization origin, with one finite value per attribute component. */\n origin: number[];\n /** Positive finite quantization range shared by every component. */\n range: number;\n};\n\n/** Per-attribute quantization, expressed as a bit count or an explicit transform. */\nexport type DracoAttributeQuantization = number | DracoExplicitQuantization;\n\n/** Named compression profile for common glTF and GPU workloads. */\nexport type DracoEncodingPreset = 'gltf' | 'webgpu' | 'balanced';\n\n/** Per-attribute details captured after constructing a Draco geometry. */\nexport type DracoEncodingAttributeReport = {\n /** Unique attribute identifier stored in the Draco geometry. */\n id: number;\n /** Draco compression category. */\n type: DracoAttributeType;\n /** Number of scalar components per attribute value. */\n componentCount: number;\n /** Configured quantization, omitted when Draco defaults are used. */\n quantization?: DracoAttributeQuantization;\n};\n\n/** Diagnostics reported for one completed Draco encoding. */\nexport type DracoEncodingReport = {\n /** Encoded geometry kind. */\n geometryType: 'mesh' | 'point-cloud';\n /** Encoded output size in bytes. */\n byteLength: number;\n /** Point count reported by the native encoder. */\n pointCount: number;\n /** Face count reported by the native encoder. */\n faceCount: number;\n /** Number of encoded vertex attributes. */\n attributeCount: number;\n /** Explicit encoding method, omitted when Draco selects its default. */\n method?: DracoEncodingMethod;\n /** Explicit encoder speed settings, omitted when Draco selects its defaults. */\n speed?: [number, number];\n /** Encoded attributes keyed by application attribute name. */\n attributes: Record<string, DracoEncodingAttributeReport>;\n};\n\n/** Encoded Draco bytes and diagnostics from the same native operation. */\nexport type DracoEncodingResult = {\n /** Encoded Draco bytes. */\n data: ArrayBuffer;\n /** Encoding diagnostics. */\n report: DracoEncodingReport;\n};\n\nexport type DracoBuildOptions = {\n pointcloud?: boolean;\n /** Deduplicate identical point-cloud attribute tuples before encoding. */\n deduplicateValues?: boolean;\n /** Metadata key used to preserve application attribute names. */\n attributeNameEntry?: string;\n /** Explicit Draco attribute categories keyed by application attribute name. */\n attributeTypes?: Record<string, DracoAttributeType>;\n metadata?: DracoMetadata;\n attributesMetadata?: Record<string, DracoMetadata>;\n log?: (message: string) => void;\n\n // draco encoding options\n speed?: [number, number];\n method?: DracoEncodingMethod;\n /** Quantization bits keyed by Draco attribute category. */\n quantization?: Partial<Record<DracoAttributeType, number>>;\n /** Quantization keyed by application attribute name, overriding category settings. */\n attributeQuantization?: Record<string, DracoAttributeQuantization>;\n /** Applies a documented set of compression defaults before explicit options. */\n preset?: DracoEncodingPreset;\n};\n\ntype DracoBuilderAttributeInfo = {\n /** Unique attribute identifier assigned by Draco's geometry builder. */\n attributeId: number;\n /** Draco compression category for the attribute. */\n attributeType: draco_GeometryAttribute_Type;\n /** Public name of the Draco compression category. */\n attributeTypeName: DracoAttributeType;\n /** Number of scalar components in each attribute value. */\n componentCount: number;\n /** Whether Draco can apply a lossy quantization transform to the source values. */\n supportsQuantization: boolean;\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR_0: 'COLOR',\n TEXCOORD_0: 'TEX_COORD'\n} as const satisfies Record<string, DracoAttributeType>;\n\nconst noop = () => {};\n\nexport default class DracoBuilder {\n draco: Draco3D;\n dracoEncoder: Encoder;\n dracoMeshBuilder: MeshBuilder;\n dracoMetadataBuilder: MetadataBuilder;\n log: (message: string) => void = noop;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.dracoEncoder = new this.draco.Encoder();\n this.dracoMeshBuilder = new this.draco.MeshBuilder();\n this.dracoMetadataBuilder = new this.draco.MetadataBuilder();\n }\n\n destroy(): void {\n this.destroyEncodedObject(this.dracoMeshBuilder);\n this.destroyEncodedObject(this.dracoEncoder);\n this.destroyEncodedObject(this.dracoMetadataBuilder);\n }\n\n // TBD - when does this need to be called?\n destroyEncodedObject(object: unknown): void {\n if (object) {\n this.draco.destroy(object);\n }\n }\n\n /**\n * Encode mesh or point cloud\n * @param mesh =({})\n * @param options\n */\n encodeSync(mesh: DracoBuilderMesh, options: DracoBuildOptions = {}): ArrayBuffer {\n return this._encodeSync(mesh, options, false).data;\n }\n\n /** Encodes a mesh or point cloud and returns native encoding diagnostics. */\n encodeSyncWithReport(\n mesh: DracoBuilderMesh,\n options: DracoBuildOptions = {}\n ): DracoEncodingResult {\n return this._encodeSync(mesh, options, true);\n }\n\n /** Shared implementation for ordinary encoding and report-producing encoding. */\n _encodeSync(\n mesh: DracoBuilderMesh,\n options: DracoBuildOptions,\n trackEncodedProperties: boolean\n ): DracoEncodingResult {\n options = applyDracoEncodingPreset(options);\n this.log = options.log || noop;\n\n return options.pointcloud\n ? this._encodePointCloud(mesh, options, trackEncodedProperties)\n : this._encodeMesh(mesh, options, trackEncodedProperties);\n }\n\n // PRIVATE\n\n _getAttributesFromMesh(mesh: DracoBuilderMesh): Record<string, TypedArray | MeshAttribute> {\n return {\n ...(mesh.indices ? {indices: mesh.indices} : {}),\n ...mesh.attributes\n };\n }\n\n _encodePointCloud(\n pointcloud: DracoBuilderMesh,\n options: DracoBuildOptions,\n trackEncodedProperties: boolean\n ): DracoEncodingResult {\n const dracoPointCloud = new this.draco.PointCloud();\n const dracoData = new this.draco.DracoInt8Array();\n let expertEncoder: ExpertEncoder | null = null;\n\n try {\n if (options.metadata) {\n this._addGeometryMetadata(dracoPointCloud, options.metadata);\n }\n const attributes = this._getAttributesFromMesh(pointcloud);\n const attributeInfo = this._createDracoPointCloud(dracoPointCloud, attributes, options);\n const useExpertEncoder = hasAttributeQuantization(options);\n let encodedLen: number;\n let activeEncoder: Encoder | ExpertEncoder;\n if (useExpertEncoder) {\n expertEncoder = new this.draco.ExpertEncoder(dracoPointCloud);\n this._setExpertOptions(expertEncoder, attributeInfo, options);\n activeEncoder = expertEncoder;\n if (trackEncodedProperties) {\n activeEncoder.SetTrackEncodedProperties(true);\n }\n encodedLen = expertEncoder.EncodeToDracoBuffer(\n options.deduplicateValues ?? false,\n dracoData\n );\n } else {\n this._setOptions(options);\n activeEncoder = this.dracoEncoder;\n if (trackEncodedProperties) {\n activeEncoder.SetTrackEncodedProperties(true);\n }\n encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(\n dracoPointCloud,\n options.deduplicateValues ?? false,\n dracoData\n );\n }\n\n if (!(encodedLen > 0)) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoPointCloud.num_points()} points\n with ${dracoPointCloud.num_attributes()} attributes into ${encodedLen} bytes`);\n\n const data = dracoInt8ArrayToArrayBuffer(dracoData);\n return {\n data,\n report: this._getEncodingReport(\n 'point-cloud',\n data.byteLength,\n dracoPointCloud,\n activeEncoder,\n attributeInfo,\n options,\n trackEncodedProperties\n )\n };\n } finally {\n this.destroyEncodedObject(expertEncoder);\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoPointCloud);\n }\n }\n\n _encodeMesh(\n mesh: DracoBuilderMesh,\n options: DracoBuildOptions,\n trackEncodedProperties: boolean\n ): DracoEncodingResult {\n const dracoMesh = new this.draco.Mesh();\n const dracoData = new this.draco.DracoInt8Array();\n let expertEncoder: ExpertEncoder | null = null;\n\n try {\n if (options.metadata) {\n this._addGeometryMetadata(dracoMesh, options.metadata);\n }\n const attributes = this._getAttributesFromMesh(mesh);\n const attributeInfo = this._createDracoMesh(dracoMesh, attributes, options);\n const useExpertEncoder = hasAttributeQuantization(options);\n let encodedLen: number;\n let activeEncoder: Encoder | ExpertEncoder;\n if (useExpertEncoder) {\n expertEncoder = new this.draco.ExpertEncoder(dracoMesh);\n this._setExpertOptions(expertEncoder, attributeInfo, options);\n activeEncoder = expertEncoder;\n if (trackEncodedProperties) {\n activeEncoder.SetTrackEncodedProperties(true);\n }\n encodedLen = expertEncoder.EncodeToDracoBuffer(false, dracoData);\n } else {\n this._setOptions(options);\n activeEncoder = this.dracoEncoder;\n if (trackEncodedProperties) {\n activeEncoder.SetTrackEncodedProperties(true);\n }\n encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);\n }\n if (encodedLen <= 0) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoMesh.num_points()} points\n with ${dracoMesh.num_attributes()} attributes into ${encodedLen} bytes`);\n\n const data = dracoInt8ArrayToArrayBuffer(dracoData);\n return {\n data,\n report: this._getEncodingReport(\n 'mesh',\n data.byteLength,\n dracoMesh,\n activeEncoder,\n attributeInfo,\n options,\n trackEncodedProperties\n )\n };\n } finally {\n this.destroyEncodedObject(expertEncoder);\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoMesh);\n }\n }\n\n /** Applies encoder speed, method, and quantization options. */\n _setOptions(options: DracoBuildOptions): void {\n if (options.speed) {\n this.dracoEncoder.SetSpeedOptions(...options.speed);\n }\n if (options.method) {\n const dracoMethod = this.draco[options.method];\n this.dracoEncoder.SetEncodingMethod(dracoMethod);\n }\n if (options.quantization) {\n for (const attribute in options.quantization) {\n const attributeType = attribute as DracoAttributeType;\n const bits = options.quantization[attributeType];\n if (bits !== undefined) {\n validateQuantizationBits(attributeType, bits, attributeType);\n this.dracoEncoder.SetAttributeQuantization(this.draco[attributeType], bits);\n }\n }\n }\n }\n\n /** Applies common options and per-attribute quantization to an expert encoder. */\n _setExpertOptions(\n expertEncoder: ExpertEncoder,\n attributes: Record<string, DracoBuilderAttributeInfo>,\n options: DracoBuildOptions\n ): void {\n if (options.speed) {\n expertEncoder.SetSpeedOptions(...options.speed);\n }\n if (options.method) {\n expertEncoder.SetEncodingMethod(this.draco[options.method]);\n }\n\n const quantization = this._getAttributeQuantization(attributes, options);\n for (const [attributeName, setting] of quantization) {\n const attribute = attributes[attributeName];\n if (typeof setting === 'number') {\n expertEncoder.SetAttributeQuantization(attribute.attributeId, setting);\n } else {\n expertEncoder.SetAttributeExplicitQuantization(\n attribute.attributeId,\n setting.bits,\n attribute.componentCount,\n setting.origin,\n setting.range\n );\n }\n }\n }\n\n /** Resolves category and exact quantization settings for every encoded attribute. */\n _getAttributeQuantization(\n attributes: Record<string, DracoBuilderAttributeInfo>,\n options: DracoBuildOptions\n ): Map<string, DracoAttributeQuantization> {\n const categoryQuantization = new Map<draco_GeometryAttribute_Type, number>();\n for (const attributeType of Object.keys(options.quantization || {}) as DracoAttributeType[]) {\n const bits = options.quantization?.[attributeType];\n if (bits !== undefined) {\n validateQuantizationBits(attributeType, bits, attributeType);\n categoryQuantization.set(this.draco[attributeType], bits);\n }\n }\n\n const quantization = new Map<string, DracoAttributeQuantization>();\n for (const [attributeName, attribute] of Object.entries(attributes)) {\n const bits = categoryQuantization.get(attribute.attributeType);\n if (bits !== undefined) {\n quantization.set(attributeName, bits);\n }\n }\n for (const [attributeName, setting] of Object.entries(options.attributeQuantization || {})) {\n const attribute = attributes[attributeName];\n if (!attribute) {\n throw new Error(`DracoWriter: quantized attribute \"${attributeName}\" does not exist`);\n }\n if (typeof setting === 'number') {\n validateQuantizationBits(attributeName, setting, attribute.attributeTypeName);\n } else {\n if (attribute.attributeTypeName === 'NORMAL') {\n throw new Error(\n `DracoWriter: explicit quantization transforms are not supported for NORMAL attribute \"${attributeName}\"`\n );\n }\n validateExplicitQuantization(\n attributeName,\n attributes[attributeName].componentCount,\n setting\n );\n }\n quantization.set(attributeName, setting);\n }\n for (const attributeName of quantization.keys()) {\n if (!attributes[attributeName].supportsQuantization) {\n throw new Error(\n `DracoWriter: quantization for \"${attributeName}\" requires floating-point attribute data`\n );\n }\n }\n return quantization;\n }\n\n /** Builds public diagnostics for a completed native encoding. */\n _getEncodingReport(\n geometryType: 'mesh' | 'point-cloud',\n byteLength: number,\n geometry: Mesh | PointCloud,\n encoder: Encoder | ExpertEncoder,\n attributes: Record<string, DracoBuilderAttributeInfo>,\n options: DracoBuildOptions,\n trackEncodedProperties: boolean\n ): DracoEncodingReport {\n const quantization = this._getAttributeQuantization(attributes, options);\n const attributeReports: Record<string, DracoEncodingAttributeReport> = {};\n for (const [attributeName, attribute] of Object.entries(attributes)) {\n attributeReports[attributeName] = {\n id: attribute.attributeId,\n type: attribute.attributeTypeName,\n componentCount: attribute.componentCount,\n ...(quantization.has(attributeName) ? {quantization: quantization.get(attributeName)} : {})\n };\n }\n return {\n geometryType,\n byteLength,\n pointCount: trackEncodedProperties\n ? encoder.GetNumberOfEncodedPoints()\n : geometry.num_points(),\n faceCount: trackEncodedProperties\n ? encoder.GetNumberOfEncodedFaces()\n : geometryType === 'mesh'\n ? typeof (geometry as Mesh).num_faces === 'function'\n ? (geometry as Mesh).num_faces()\n : 0\n : 0,\n attributeCount: geometry.num_attributes(),\n ...(options.method ? {method: options.method} : {}),\n ...(options.speed ? {speed: options.speed} : {}),\n attributes: attributeReports\n };\n }\n\n /**\n * @param {Mesh} dracoMesh\n * @param {object} attributes\n * @returns {Mesh}\n */\n _createDracoMesh(\n dracoMesh: Mesh,\n attributes: Record<string, TypedArray | MeshAttribute>,\n options: DracoBuildOptions\n ): Record<string, DracoBuilderAttributeInfo> {\n const optionalMetadata = options.attributesMetadata || {};\n const attributeInfo: Record<string, DracoBuilderAttributeInfo> = {};\n\n const vertexCount = this._getVertexCount(attributes, options);\n for (const [attributeName, attribute] of Object.entries(attributes)) {\n const uniqueId = this._addAttributeToMesh(\n dracoMesh,\n attributeName,\n attribute,\n vertexCount,\n options\n );\n\n if (uniqueId !== -1) {\n const attributeValue = getAttributeValue(attribute);\n const attributeType = this._getDracoAttributeType(\n attributeName,\n options.attributeTypes\n ) as draco_GeometryAttribute_Type;\n attributeInfo[attributeName] = {\n attributeId: uniqueId,\n attributeType,\n attributeTypeName: getDracoAttributeTypeName(this.draco, attributeType),\n componentCount: getAttributeSize(attribute, attributeValue!.length / vertexCount),\n supportsQuantization: attributeValue instanceof Float32Array\n };\n this._addAttributeMetadata(dracoMesh, uniqueId, {\n [options.attributeNameEntry || 'name']: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n\n return attributeInfo;\n }\n\n /**\n * @param {} dracoPointCloud\n * @param {object} attributes\n */\n _createDracoPointCloud(\n dracoPointCloud: PointCloud,\n attributes: Record<string, TypedArray | MeshAttribute>,\n options: DracoBuildOptions\n ): Record<string, DracoBuilderAttributeInfo> {\n const optionalMetadata = options.attributesMetadata || {};\n const attributeInfo: Record<string, DracoBuilderAttributeInfo> = {};\n\n const vertexCount = this._getVertexCount(attributes, options);\n for (const [attributeName, attribute] of Object.entries(attributes)) {\n const uniqueId = this._addAttributeToMesh(\n dracoPointCloud,\n attributeName,\n attribute,\n vertexCount,\n options\n );\n if (uniqueId !== -1) {\n const attributeValue = getAttributeValue(attribute);\n const attributeType = this._getDracoAttributeType(\n attributeName,\n options.attributeTypes\n ) as draco_GeometryAttribute_Type;\n attributeInfo[attributeName] = {\n attributeId: uniqueId,\n attributeType,\n attributeTypeName: getDracoAttributeTypeName(this.draco, attributeType),\n componentCount: getAttributeSize(attribute, attributeValue!.length / vertexCount),\n supportsQuantization: attributeValue instanceof Float32Array\n };\n this._addAttributeMetadata(dracoPointCloud, uniqueId, {\n [options.attributeNameEntry || 'name']: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n\n return attributeInfo;\n }\n\n /**\n * @param mesh\n * @param attributeName\n * @param attribute\n * @param vertexCount\n */\n _addAttributeToMesh(\n mesh: PointCloud,\n attributeName: string,\n attribute: TypedArray | MeshAttribute,\n vertexCount: number,\n options: DracoBuildOptions = {}\n ): number {\n const attributeValue = getAttributeValue(attribute);\n if (!attributeValue) {\n throw new Error(`DracoWriter: attribute \"${attributeName}\" must contain a typed array`);\n }\n\n const type = this._getDracoAttributeType(attributeName, options.attributeTypes);\n const size = getAttributeSize(attribute, attributeValue.length / vertexCount);\n\n if (type === 'indices') {\n if (attributeValue.length % 3 !== 0) {\n throw new Error('DracoWriter: triangle indices length must be divisible by 3');\n }\n validateIndices(attributeValue, vertexCount);\n const numFaces = attributeValue.length / 3;\n this.log(`Adding attribute ${attributeName}, size ${numFaces}`);\n\n const indices =\n attributeValue instanceof Uint16Array || attributeValue instanceof Uint32Array\n ? attributeValue\n : Uint32Array.from(attributeValue);\n this.dracoMeshBuilder.AddFacesToMesh(mesh as Mesh, numFaces, indices);\n return -1;\n }\n\n if (!Number.isInteger(size) || size <= 0 || attributeValue.length !== vertexCount * size) {\n throw new Error(\n `DracoWriter: attribute \"${attributeName}\" has ${attributeValue.length} values, expected ${vertexCount * size}`\n );\n }\n\n this.log(`Adding attribute ${attributeName}, size ${size}`);\n\n const builder = this.dracoMeshBuilder;\n let uniqueAttributeId = -1;\n if (attributeValue instanceof Int8Array) {\n uniqueAttributeId = builder.AddInt8Attribute(mesh, type, vertexCount, size, attributeValue);\n } else if (attributeValue instanceof Int16Array) {\n uniqueAttributeId = builder.AddInt16Attribute(mesh, type, vertexCount, size, attributeValue);\n } else if (attributeValue instanceof Int32Array) {\n uniqueAttributeId = builder.AddInt32Attribute(mesh, type, vertexCount, size, attributeValue);\n } else if (attributeValue instanceof Uint8Array) {\n uniqueAttributeId = builder.AddUInt8Attribute(mesh, type, vertexCount, size, attributeValue);\n } else if (attributeValue instanceof Uint8ClampedArray) {\n const uint8Value = new Uint8Array(\n attributeValue.buffer,\n attributeValue.byteOffset,\n attributeValue.byteLength\n );\n uniqueAttributeId = builder.AddUInt8Attribute(mesh, type, vertexCount, size, uint8Value);\n } else if (attributeValue instanceof Uint16Array) {\n uniqueAttributeId = builder.AddUInt16Attribute(mesh, type, vertexCount, size, attributeValue);\n } else if (attributeValue instanceof Uint32Array) {\n uniqueAttributeId = builder.AddUInt32Attribute(mesh, type, vertexCount, size, attributeValue);\n } else if (attributeValue instanceof Float32Array) {\n uniqueAttributeId = builder.AddFloatAttribute(mesh, type, vertexCount, size, attributeValue);\n } else {\n throw new Error(\n `DracoWriter: attribute \"${attributeName}\" uses unsupported ${attributeValue.constructor.name}`\n );\n }\n\n if (!ArrayBuffer.isView(attribute) && attribute.normalized !== undefined) {\n builder.SetNormalizedFlagForAttribute(mesh, uniqueAttributeId, attribute.normalized);\n }\n return uniqueAttributeId;\n\n // case Float64Array:\n // Add attribute does not seem to be exposed\n // return builder.AddAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));\n }\n\n /**\n * DRACO can compress attributes of know type better\n * @param attributeName\n */\n _getDracoAttributeType(\n attributeName: string,\n attributeTypes: Record<string, DracoAttributeType> = {}\n ): draco_GeometryAttribute_Type | 'indices' {\n if (attributeName.toLowerCase() === 'indices') {\n return 'indices';\n }\n const explicitType = attributeTypes[attributeName];\n if (explicitType) {\n return this.draco[explicitType];\n }\n const gltfAttributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName];\n if (gltfAttributeName) {\n return this.draco[gltfAttributeName];\n }\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return this.draco.POSITION;\n case 'normal':\n case 'normals':\n return this.draco.NORMAL;\n case 'color':\n case 'colors':\n return this.draco.COLOR;\n case 'texcoord':\n case 'texcoords':\n return this.draco.TEX_COORD;\n default:\n if (/^color_\\d+$/i.test(attributeName)) {\n return this.draco.COLOR;\n }\n if (/^texcoord_\\d+$/i.test(attributeName)) {\n return this.draco.TEX_COORD;\n }\n return this.draco.GENERIC;\n }\n }\n\n /** Returns the common vertex count after validating the required position attribute. */\n _getVertexCount(\n attributes: Record<string, TypedArray | MeshAttribute>,\n options: DracoBuildOptions\n ): number {\n const positions = this._getPositionAttribute(attributes, options.attributeTypes);\n const positionValues = positions && getAttributeValue(positions);\n if (!positions || !positionValues) {\n throw new Error('DracoWriter: POSITION attribute is required');\n }\n const size = getAttributeSize(positions, 3);\n if (!Number.isInteger(size) || size <= 0 || positionValues.length % size !== 0) {\n throw new Error('DracoWriter: POSITION attribute has an invalid size or value count');\n }\n return positionValues.length / size;\n }\n\n _getPositionAttribute(\n attributes: Record<string, TypedArray | MeshAttribute>,\n attributeTypes: Record<string, DracoAttributeType> = {}\n ): TypedArray | MeshAttribute | null {\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const dracoType = this._getDracoAttributeType(attributeName, attributeTypes);\n if (dracoType === this.draco.POSITION && getAttributeValue(attribute)) {\n return attribute;\n }\n }\n return null;\n }\n\n /**\n * Add metadata for the geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param metadata\n */\n _addGeometryMetadata(dracoGeometry: PointCloud, metadata: DracoMetadata): void {\n const dracoMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoMetadata, metadata);\n this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);\n }\n\n /**\n * Add metadata for an attribute to geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param uniqueAttributeId\n * @param metadata\n */\n _addAttributeMetadata(\n dracoGeometry: PointCloud,\n uniqueAttributeId: number,\n metadata: Map<string, string> | DracoMetadata\n ): void {\n // Note: Draco JS IDL doesn't seem to expose draco.AttributeMetadata, however it seems to\n // create such objects automatically from draco.Metadata object.\n const dracoAttributeMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoAttributeMetadata, metadata);\n // Draco3d doc note: Directly add attribute metadata to geometry.\n // You can do this without explicitly adding |GeometryMetadata| to mesh.\n this.dracoMeshBuilder.SetMetadataForAttribute(\n dracoGeometry,\n uniqueAttributeId,\n dracoAttributeMetadata\n );\n }\n\n /**\n * Add contents of object or map to a WASM Draco Metadata Object\n * @param dracoMetadata - WASM Draco Object\n * @param metadata\n */\n _populateDracoMetadata(\n dracoMetadata: Metadata,\n metadata: Map<string, string | number | Int32Array> | DracoMetadata\n ): void {\n for (const [key, value] of getEntries(metadata)) {\n switch (typeof value) {\n case 'number':\n if (Math.trunc(value) === value) {\n this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, key, value);\n } else {\n this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, key, value);\n }\n break;\n case 'object':\n if (value instanceof Int32Array) {\n this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, key, value, value.length);\n }\n break;\n case 'string':\n default:\n this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, key, value);\n }\n }\n }\n}\n\n// HELPER FUNCTIONS\n\n/**\n * Copy encoded data to buffer\n * @param dracoData\n */\nfunction dracoInt8ArrayToArrayBuffer(dracoData: DracoInt8Array): ArrayBuffer {\n const byteLength = dracoData.size();\n const outputBuffer = new ArrayBuffer(byteLength);\n const outputData = new Int8Array(outputBuffer);\n for (let i = 0; i < byteLength; ++i) {\n outputData[i] = dracoData.GetValue(i);\n }\n return outputBuffer;\n}\n\n/** Enable iteration over either an object or a map */\nfunction getEntries(\n container: Map<string, string | number | Int32Array> | DracoMetadata\n): Iterable<[string, string | number | Int32Array]> {\n return container instanceof Map ? container.entries() : Object.entries(container);\n}\n\n/** Returns the typed-array payload from either accepted attribute representation. */\nfunction getAttributeValue(attribute: TypedArray | MeshAttribute): TypedArray | null {\n if (ArrayBuffer.isView(attribute)) {\n return attribute;\n }\n if (\n attribute &&\n typeof attribute === 'object' &&\n 'value' in attribute &&\n ArrayBuffer.isView(attribute.value)\n ) {\n return attribute.value;\n }\n return null;\n}\n\n/** Returns the declared component count, falling back to the inferred legacy value. */\nfunction getAttributeSize(attribute: TypedArray | MeshAttribute, inferredSize: number): number {\n return ArrayBuffer.isView(attribute) ? inferredSize : attribute.size;\n}\n\n/** Validates that triangle indices are integers within the encoded vertex range. */\nfunction validateIndices(indices: TypedArray, vertexCount: number): void {\n for (const index of indices) {\n if (!Number.isInteger(index) || index < 0 || index >= vertexCount) {\n throw new Error(\n `DracoWriter: triangle index ${index} is outside vertex range 0-${vertexCount - 1}`\n );\n }\n }\n}\n\n/** Returns true when exact application attributes require the expert encoder. */\nfunction hasAttributeQuantization(options: DracoBuildOptions): boolean {\n return Boolean(\n options.attributeQuantization && Object.keys(options.attributeQuantization).length\n );\n}\n\n/** Validates a Draco quantization bit count. */\nfunction validateQuantizationBits(\n attributeName: string,\n bits: number,\n attributeType?: DracoAttributeType\n): void {\n if (!Number.isInteger(bits) || bits < 1 || bits > 30) {\n throw new Error(\n `DracoWriter: quantization bits for \"${attributeName}\" must be an integer from 1 to 30`\n );\n }\n if (attributeType === 'NORMAL' && (bits < 2 || bits > 29)) {\n throw new Error(\n `DracoWriter: quantization bits for NORMAL attribute \"${attributeName}\" must be an integer from 2 to 29`\n );\n }\n}\n\n/** Validates an explicit per-attribute quantization transform. */\nfunction validateExplicitQuantization(\n attributeName: string,\n componentCount: number,\n quantization: DracoExplicitQuantization\n): void {\n validateQuantizationBits(attributeName, quantization.bits);\n if (!Array.isArray(quantization.origin) || quantization.origin.length !== componentCount) {\n throw new Error(\n `DracoWriter: quantization origin for \"${attributeName}\" must contain ${componentCount} values`\n );\n }\n if (!quantization.origin.every(Number.isFinite)) {\n throw new Error(`DracoWriter: quantization origin for \"${attributeName}\" must be finite`);\n }\n if (!Number.isFinite(quantization.range) || quantization.range <= 0) {\n throw new Error(`DracoWriter: quantization range for \"${attributeName}\" must be positive`);\n }\n}\n\n/** Returns the public Draco category name for a native enum value. */\nfunction getDracoAttributeTypeName(\n draco: Draco3D,\n attributeType: draco_GeometryAttribute_Type\n): DracoAttributeType {\n for (const name of ['POSITION', 'NORMAL', 'COLOR', 'TEX_COORD', 'GENERIC'] as const) {\n if (draco[name] === attributeType) {\n return name;\n }\n }\n return 'GENERIC';\n}\n\n/** Resolves named presets without mutating the caller's options object. */\nfunction applyDracoEncodingPreset(options: DracoBuildOptions): DracoBuildOptions {\n const presetOptions: Record<DracoEncodingPreset, DracoBuildOptions> = {\n gltf: {\n method: 'MESH_EDGEBREAKER_ENCODING',\n speed: [5, 5],\n quantization: {POSITION: 14, NORMAL: 10, TEX_COORD: 12}\n },\n webgpu: {\n method: 'MESH_SEQUENTIAL_ENCODING',\n speed: [5, 5],\n quantization: {POSITION: 14, NORMAL: 10, TEX_COORD: 12}\n },\n balanced: {\n method: 'MESH_EDGEBREAKER_ENCODING',\n speed: [5, 5],\n quantization: {POSITION: 12, NORMAL: 10, TEX_COORD: 10}\n }\n };\n const preset = options.preset ? presetOptions[options.preset] : {};\n return {\n ...preset,\n ...options,\n quantization: {...preset.quantization, ...options.quantization}\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,175 @@
1
+ import type { Draco3D, Encoder, ExpertEncoder, Mesh, MeshBuilder, PointCloud, Metadata, MetadataBuilder, draco_GeometryAttribute_Type } from "../draco3d/draco3d-types.js";
2
+ import type { MeshAttribute, TypedArray } from '@loaders.gl/core/schema';
3
+ /** Geometry accepted by the low-level Draco encoder. */
4
+ export type DracoBuilderMesh = {
5
+ /** Vertex attributes keyed by semantic or application attribute name. */
6
+ attributes: Record<string, TypedArray | MeshAttribute>;
7
+ /** Optional triangle indices. */
8
+ indices?: TypedArray | MeshAttribute;
9
+ };
10
+ /** Metadata values supported by the Draco WebAssembly API. */
11
+ export type DracoMetadata = Record<string, string | number | Int32Array>;
12
+ /** Draco mesh encoding method exposed by the WebAssembly encoder. */
13
+ export type DracoEncodingMethod = 'MESH_EDGEBREAKER_ENCODING' | 'MESH_SEQUENTIAL_ENCODING';
14
+ /** Draco attribute categories used to select compression transforms. */
15
+ export type DracoAttributeType = 'POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC';
16
+ /** Explicit quantization transform for one Draco attribute. */
17
+ export type DracoExplicitQuantization = {
18
+ /** Number of quantization bits, from 1 through 30. */
19
+ bits: number;
20
+ /** Quantization origin, with one finite value per attribute component. */
21
+ origin: number[];
22
+ /** Positive finite quantization range shared by every component. */
23
+ range: number;
24
+ };
25
+ /** Per-attribute quantization, expressed as a bit count or an explicit transform. */
26
+ export type DracoAttributeQuantization = number | DracoExplicitQuantization;
27
+ /** Named compression profile for common glTF and GPU workloads. */
28
+ export type DracoEncodingPreset = 'gltf' | 'webgpu' | 'balanced';
29
+ /** Per-attribute details captured after constructing a Draco geometry. */
30
+ export type DracoEncodingAttributeReport = {
31
+ /** Unique attribute identifier stored in the Draco geometry. */
32
+ id: number;
33
+ /** Draco compression category. */
34
+ type: DracoAttributeType;
35
+ /** Number of scalar components per attribute value. */
36
+ componentCount: number;
37
+ /** Configured quantization, omitted when Draco defaults are used. */
38
+ quantization?: DracoAttributeQuantization;
39
+ };
40
+ /** Diagnostics reported for one completed Draco encoding. */
41
+ export type DracoEncodingReport = {
42
+ /** Encoded geometry kind. */
43
+ geometryType: 'mesh' | 'point-cloud';
44
+ /** Encoded output size in bytes. */
45
+ byteLength: number;
46
+ /** Point count reported by the native encoder. */
47
+ pointCount: number;
48
+ /** Face count reported by the native encoder. */
49
+ faceCount: number;
50
+ /** Number of encoded vertex attributes. */
51
+ attributeCount: number;
52
+ /** Explicit encoding method, omitted when Draco selects its default. */
53
+ method?: DracoEncodingMethod;
54
+ /** Explicit encoder speed settings, omitted when Draco selects its defaults. */
55
+ speed?: [number, number];
56
+ /** Encoded attributes keyed by application attribute name. */
57
+ attributes: Record<string, DracoEncodingAttributeReport>;
58
+ };
59
+ /** Encoded Draco bytes and diagnostics from the same native operation. */
60
+ export type DracoEncodingResult = {
61
+ /** Encoded Draco bytes. */
62
+ data: ArrayBuffer;
63
+ /** Encoding diagnostics. */
64
+ report: DracoEncodingReport;
65
+ };
66
+ export type DracoBuildOptions = {
67
+ pointcloud?: boolean;
68
+ /** Deduplicate identical point-cloud attribute tuples before encoding. */
69
+ deduplicateValues?: boolean;
70
+ /** Metadata key used to preserve application attribute names. */
71
+ attributeNameEntry?: string;
72
+ /** Explicit Draco attribute categories keyed by application attribute name. */
73
+ attributeTypes?: Record<string, DracoAttributeType>;
74
+ metadata?: DracoMetadata;
75
+ attributesMetadata?: Record<string, DracoMetadata>;
76
+ log?: (message: string) => void;
77
+ speed?: [number, number];
78
+ method?: DracoEncodingMethod;
79
+ /** Quantization bits keyed by Draco attribute category. */
80
+ quantization?: Partial<Record<DracoAttributeType, number>>;
81
+ /** Quantization keyed by application attribute name, overriding category settings. */
82
+ attributeQuantization?: Record<string, DracoAttributeQuantization>;
83
+ /** Applies a documented set of compression defaults before explicit options. */
84
+ preset?: DracoEncodingPreset;
85
+ };
86
+ type DracoBuilderAttributeInfo = {
87
+ /** Unique attribute identifier assigned by Draco's geometry builder. */
88
+ attributeId: number;
89
+ /** Draco compression category for the attribute. */
90
+ attributeType: draco_GeometryAttribute_Type;
91
+ /** Public name of the Draco compression category. */
92
+ attributeTypeName: DracoAttributeType;
93
+ /** Number of scalar components in each attribute value. */
94
+ componentCount: number;
95
+ /** Whether Draco can apply a lossy quantization transform to the source values. */
96
+ supportsQuantization: boolean;
97
+ };
98
+ export default class DracoBuilder {
99
+ draco: Draco3D;
100
+ dracoEncoder: Encoder;
101
+ dracoMeshBuilder: MeshBuilder;
102
+ dracoMetadataBuilder: MetadataBuilder;
103
+ log: (message: string) => void;
104
+ constructor(draco: Draco3D);
105
+ destroy(): void;
106
+ destroyEncodedObject(object: unknown): void;
107
+ /**
108
+ * Encode mesh or point cloud
109
+ * @param mesh =({})
110
+ * @param options
111
+ */
112
+ encodeSync(mesh: DracoBuilderMesh, options?: DracoBuildOptions): ArrayBuffer;
113
+ /** Encodes a mesh or point cloud and returns native encoding diagnostics. */
114
+ encodeSyncWithReport(mesh: DracoBuilderMesh, options?: DracoBuildOptions): DracoEncodingResult;
115
+ /** Shared implementation for ordinary encoding and report-producing encoding. */
116
+ _encodeSync(mesh: DracoBuilderMesh, options: DracoBuildOptions, trackEncodedProperties: boolean): DracoEncodingResult;
117
+ _getAttributesFromMesh(mesh: DracoBuilderMesh): Record<string, TypedArray | MeshAttribute>;
118
+ _encodePointCloud(pointcloud: DracoBuilderMesh, options: DracoBuildOptions, trackEncodedProperties: boolean): DracoEncodingResult;
119
+ _encodeMesh(mesh: DracoBuilderMesh, options: DracoBuildOptions, trackEncodedProperties: boolean): DracoEncodingResult;
120
+ /** Applies encoder speed, method, and quantization options. */
121
+ _setOptions(options: DracoBuildOptions): void;
122
+ /** Applies common options and per-attribute quantization to an expert encoder. */
123
+ _setExpertOptions(expertEncoder: ExpertEncoder, attributes: Record<string, DracoBuilderAttributeInfo>, options: DracoBuildOptions): void;
124
+ /** Resolves category and exact quantization settings for every encoded attribute. */
125
+ _getAttributeQuantization(attributes: Record<string, DracoBuilderAttributeInfo>, options: DracoBuildOptions): Map<string, DracoAttributeQuantization>;
126
+ /** Builds public diagnostics for a completed native encoding. */
127
+ _getEncodingReport(geometryType: 'mesh' | 'point-cloud', byteLength: number, geometry: Mesh | PointCloud, encoder: Encoder | ExpertEncoder, attributes: Record<string, DracoBuilderAttributeInfo>, options: DracoBuildOptions, trackEncodedProperties: boolean): DracoEncodingReport;
128
+ /**
129
+ * @param {Mesh} dracoMesh
130
+ * @param {object} attributes
131
+ * @returns {Mesh}
132
+ */
133
+ _createDracoMesh(dracoMesh: Mesh, attributes: Record<string, TypedArray | MeshAttribute>, options: DracoBuildOptions): Record<string, DracoBuilderAttributeInfo>;
134
+ /**
135
+ * @param {} dracoPointCloud
136
+ * @param {object} attributes
137
+ */
138
+ _createDracoPointCloud(dracoPointCloud: PointCloud, attributes: Record<string, TypedArray | MeshAttribute>, options: DracoBuildOptions): Record<string, DracoBuilderAttributeInfo>;
139
+ /**
140
+ * @param mesh
141
+ * @param attributeName
142
+ * @param attribute
143
+ * @param vertexCount
144
+ */
145
+ _addAttributeToMesh(mesh: PointCloud, attributeName: string, attribute: TypedArray | MeshAttribute, vertexCount: number, options?: DracoBuildOptions): number;
146
+ /**
147
+ * DRACO can compress attributes of know type better
148
+ * @param attributeName
149
+ */
150
+ _getDracoAttributeType(attributeName: string, attributeTypes?: Record<string, DracoAttributeType>): draco_GeometryAttribute_Type | 'indices';
151
+ /** Returns the common vertex count after validating the required position attribute. */
152
+ _getVertexCount(attributes: Record<string, TypedArray | MeshAttribute>, options: DracoBuildOptions): number;
153
+ _getPositionAttribute(attributes: Record<string, TypedArray | MeshAttribute>, attributeTypes?: Record<string, DracoAttributeType>): TypedArray | MeshAttribute | null;
154
+ /**
155
+ * Add metadata for the geometry.
156
+ * @param dracoGeometry - WASM Draco Object
157
+ * @param metadata
158
+ */
159
+ _addGeometryMetadata(dracoGeometry: PointCloud, metadata: DracoMetadata): void;
160
+ /**
161
+ * Add metadata for an attribute to geometry.
162
+ * @param dracoGeometry - WASM Draco Object
163
+ * @param uniqueAttributeId
164
+ * @param metadata
165
+ */
166
+ _addAttributeMetadata(dracoGeometry: PointCloud, uniqueAttributeId: number, metadata: Map<string, string> | DracoMetadata): void;
167
+ /**
168
+ * Add contents of object or map to a WASM Draco Metadata Object
169
+ * @param dracoMetadata - WASM Draco Object
170
+ * @param metadata
171
+ */
172
+ _populateDracoMetadata(dracoMetadata: Metadata, metadata: Map<string, string | number | Int32Array> | DracoMetadata): void;
173
+ }
174
+ export {};
175
+ //# sourceMappingURL=draco-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-builder.d.ts","sourceRoot":"","sources":["../../../src/draco/lib/draco-builder.ts"],"names":[],"mappings":"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"}