@luma.gl/core 9.0.0-alpha.9 → 9.0.0-beta.2

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 (306) hide show
  1. package/LICENSE +3 -1
  2. package/README.md +4 -4
  3. package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts +52 -0
  4. package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts.map +1 -0
  5. package/dist/adapter/attribute-utils/get-attribute-from-layouts.js +130 -0
  6. package/dist/adapter/attribute-utils/get-attribute-from-layouts.js.map +1 -0
  7. package/dist/adapter/canvas-context.d.ts +109 -0
  8. package/dist/adapter/canvas-context.d.ts.map +1 -0
  9. package/dist/adapter/canvas-context.js +254 -0
  10. package/dist/adapter/canvas-context.js.map +1 -0
  11. package/dist/adapter/device.d.ts +219 -0
  12. package/dist/adapter/device.d.ts.map +1 -0
  13. package/dist/adapter/device.js +99 -0
  14. package/dist/adapter/device.js.map +1 -0
  15. package/dist/adapter/resources/buffer.d.ts +56 -0
  16. package/dist/adapter/resources/buffer.d.ts.map +1 -0
  17. package/dist/adapter/resources/buffer.js +62 -0
  18. package/dist/adapter/resources/buffer.js.map +1 -0
  19. package/dist/adapter/resources/command-buffer.d.ts +12 -0
  20. package/dist/adapter/resources/command-buffer.d.ts.map +1 -0
  21. package/dist/adapter/resources/command-buffer.js +15 -0
  22. package/dist/adapter/resources/command-buffer.js.map +1 -0
  23. package/dist/adapter/resources/command-encoder.d.ts +113 -0
  24. package/dist/adapter/resources/command-encoder.d.ts.map +1 -0
  25. package/dist/adapter/resources/command-encoder.js +19 -0
  26. package/dist/adapter/resources/command-encoder.js.map +1 -0
  27. package/dist/adapter/resources/compute-pass.d.ts +31 -0
  28. package/dist/adapter/resources/compute-pass.d.ts.map +1 -0
  29. package/dist/adapter/resources/compute-pass.js +15 -0
  30. package/dist/adapter/resources/compute-pass.js.map +1 -0
  31. package/dist/adapter/resources/compute-pipeline.d.ts +24 -0
  32. package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -0
  33. package/dist/adapter/resources/compute-pipeline.js +20 -0
  34. package/dist/adapter/resources/compute-pipeline.js.map +1 -0
  35. package/dist/adapter/resources/external-texture.d.ts +12 -0
  36. package/dist/adapter/resources/external-texture.d.ts.map +1 -0
  37. package/dist/adapter/resources/external-texture.js +17 -0
  38. package/dist/adapter/resources/external-texture.js.map +1 -0
  39. package/dist/adapter/resources/framebuffer.d.ts +50 -0
  40. package/dist/adapter/resources/framebuffer.d.ts.map +1 -0
  41. package/dist/adapter/resources/framebuffer.js +102 -0
  42. package/dist/adapter/resources/framebuffer.js.map +1 -0
  43. package/dist/adapter/resources/render-pass.d.ts +51 -0
  44. package/dist/adapter/resources/render-pass.d.ts.map +1 -0
  45. package/dist/adapter/resources/render-pass.js +23 -0
  46. package/dist/adapter/resources/render-pass.js.map +1 -0
  47. package/dist/adapter/resources/render-pipeline.d.ts +89 -0
  48. package/dist/adapter/resources/render-pipeline.d.ts.map +1 -0
  49. package/dist/adapter/resources/render-pipeline.js +36 -0
  50. package/dist/adapter/resources/render-pipeline.js.map +1 -0
  51. package/dist/adapter/resources/resource.d.ts +73 -0
  52. package/dist/adapter/resources/resource.d.ts.map +1 -0
  53. package/dist/adapter/resources/resource.js +101 -0
  54. package/dist/adapter/resources/resource.js.map +1 -0
  55. package/dist/adapter/resources/sampler.d.ts +42 -0
  56. package/dist/adapter/resources/sampler.d.ts.map +1 -0
  57. package/dist/adapter/resources/sampler.js +26 -0
  58. package/dist/adapter/resources/sampler.js.map +1 -0
  59. package/dist/adapter/resources/shader.d.ts +45 -0
  60. package/dist/adapter/resources/shader.d.ts.map +1 -0
  61. package/dist/adapter/resources/shader.js +90 -0
  62. package/dist/adapter/resources/shader.js.map +1 -0
  63. package/dist/adapter/resources/texture.d.ts +90 -0
  64. package/dist/adapter/resources/texture.d.ts.map +1 -0
  65. package/dist/adapter/resources/texture.js +45 -0
  66. package/dist/adapter/resources/texture.js.map +1 -0
  67. package/dist/adapter/resources/transform-feedback.d.ts +30 -0
  68. package/dist/adapter/resources/transform-feedback.d.ts.map +1 -0
  69. package/dist/adapter/resources/transform-feedback.js +17 -0
  70. package/dist/adapter/resources/transform-feedback.js.map +1 -0
  71. package/dist/adapter/resources/vertex-array.d.ts +40 -0
  72. package/dist/adapter/resources/vertex-array.d.ts.map +1 -0
  73. package/dist/adapter/resources/vertex-array.js +24 -0
  74. package/dist/adapter/resources/vertex-array.js.map +1 -0
  75. package/dist/adapter/type-utils/decode-attribute-type.d.ts +20 -0
  76. package/dist/adapter/type-utils/decode-attribute-type.d.ts.map +1 -0
  77. package/dist/adapter/type-utils/decode-attribute-type.js +60 -0
  78. package/dist/adapter/type-utils/decode-attribute-type.js.map +1 -0
  79. package/dist/adapter/type-utils/decode-data-type.d.ts +16 -0
  80. package/dist/adapter/type-utils/decode-data-type.d.ts.map +1 -0
  81. package/dist/adapter/type-utils/decode-data-type.js +43 -0
  82. package/dist/adapter/type-utils/decode-data-type.js.map +1 -0
  83. package/dist/adapter/type-utils/decode-shader-types.d.ts +9 -0
  84. package/dist/adapter/type-utils/decode-shader-types.d.ts.map +1 -0
  85. package/dist/adapter/type-utils/decode-shader-types.js +103 -0
  86. package/dist/adapter/type-utils/decode-shader-types.js.map +1 -0
  87. package/dist/adapter/type-utils/decode-texture-format.d.ts +19 -0
  88. package/dist/adapter/type-utils/decode-texture-format.d.ts.map +1 -0
  89. package/dist/adapter/type-utils/decode-texture-format.js +101 -0
  90. package/dist/adapter/type-utils/decode-texture-format.js.map +1 -0
  91. package/dist/adapter/type-utils/decode-vertex-format.d.ts +22 -0
  92. package/dist/adapter/type-utils/decode-vertex-format.d.ts.map +1 -0
  93. package/dist/adapter/type-utils/decode-vertex-format.js +25 -0
  94. package/dist/adapter/type-utils/decode-vertex-format.js.map +1 -0
  95. package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts +10 -0
  96. package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts.map +1 -0
  97. package/dist/adapter/type-utils/vertex-format-from-attribute.js +76 -0
  98. package/dist/adapter/type-utils/vertex-format-from-attribute.js.map +1 -0
  99. package/dist/adapter/type-utils/wgsl-utils.d.ts +4 -0
  100. package/dist/adapter/type-utils/wgsl-utils.d.ts.map +1 -0
  101. package/dist/adapter/type-utils/wgsl-utils.js +15 -0
  102. package/dist/adapter/type-utils/wgsl-utils.js.map +1 -0
  103. package/dist/adapter/types/accessor.d.ts +23 -0
  104. package/dist/adapter/types/accessor.d.ts.map +1 -0
  105. package/dist/adapter/types/accessor.js +2 -0
  106. package/dist/adapter/types/accessor.js.map +1 -0
  107. package/dist/adapter/types/buffer-layout.d.ts +59 -0
  108. package/dist/adapter/types/buffer-layout.d.ts.map +1 -0
  109. package/dist/adapter/types/buffer-layout.js +2 -0
  110. package/dist/adapter/types/buffer-layout.js.map +1 -0
  111. package/dist/adapter/types/parameters.d.ts +97 -0
  112. package/dist/adapter/types/parameters.d.ts.map +1 -0
  113. package/dist/adapter/types/parameters.js +28 -0
  114. package/dist/adapter/types/parameters.js.map +1 -0
  115. package/dist/adapter/types/shader-layout.d.ts +145 -0
  116. package/dist/adapter/types/shader-layout.d.ts.map +1 -0
  117. package/dist/adapter/types/shader-layout.js +2 -0
  118. package/dist/adapter/types/shader-layout.js.map +1 -0
  119. package/dist/adapter/types/shader-types.d.ts +21 -0
  120. package/dist/adapter/types/shader-types.d.ts.map +1 -0
  121. package/dist/adapter/types/shader-types.js +2 -0
  122. package/dist/adapter/types/shader-types.js.map +1 -0
  123. package/dist/adapter/types/texture-formats.d.ts +12 -0
  124. package/dist/adapter/types/texture-formats.d.ts.map +1 -0
  125. package/dist/adapter/types/texture-formats.js +2 -0
  126. package/dist/adapter/types/texture-formats.js.map +1 -0
  127. package/dist/adapter/types/types.d.ts +90 -0
  128. package/dist/adapter/types/types.d.ts.map +1 -0
  129. package/dist/adapter/types/types.js +2 -0
  130. package/dist/adapter/types/types.js.map +1 -0
  131. package/dist/adapter/types/vertex-formats.d.ts +14 -0
  132. package/dist/adapter/types/vertex-formats.d.ts.map +1 -0
  133. package/dist/adapter/types/vertex-formats.js +2 -0
  134. package/dist/adapter/types/vertex-formats.js.map +1 -0
  135. package/dist/dist.dev.js +2976 -0
  136. package/dist/index.cjs +2445 -0
  137. package/dist/index.d.ts +81 -128
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +45 -18
  140. package/dist/index.js.map +1 -1
  141. package/dist/init.d.ts +5 -0
  142. package/dist/init.d.ts.map +1 -0
  143. package/dist/init.js +24 -0
  144. package/dist/init.js.map +1 -0
  145. package/dist/lib/compiler-log/compiler-message.d.ts +8 -0
  146. package/dist/lib/compiler-log/compiler-message.d.ts.map +1 -0
  147. package/dist/lib/compiler-log/compiler-message.js +2 -0
  148. package/dist/lib/compiler-log/compiler-message.js.map +1 -0
  149. package/dist/lib/compiler-log/format-compiler-log.d.ts +8 -0
  150. package/dist/lib/compiler-log/format-compiler-log.d.ts.map +1 -0
  151. package/dist/lib/compiler-log/format-compiler-log.js +64 -0
  152. package/dist/lib/compiler-log/format-compiler-log.js.map +1 -0
  153. package/dist/lib/compiler-log/get-shader-info.d.ts +9 -0
  154. package/dist/lib/compiler-log/get-shader-info.d.ts.map +1 -0
  155. package/dist/lib/compiler-log/get-shader-info.js +25 -0
  156. package/dist/lib/compiler-log/get-shader-info.js.map +1 -0
  157. package/dist/lib/luma.d.ts +22 -0
  158. package/dist/lib/luma.d.ts.map +1 -0
  159. package/dist/lib/luma.js +63 -0
  160. package/dist/lib/luma.js.map +1 -0
  161. package/dist/lib/uniforms/uniform-block.d.ts +29 -0
  162. package/dist/lib/uniforms/uniform-block.d.ts.map +1 -0
  163. package/dist/lib/uniforms/uniform-block.js +48 -0
  164. package/dist/lib/uniforms/uniform-block.js.map +1 -0
  165. package/dist/lib/uniforms/uniform-buffer-layout.d.ts +27 -0
  166. package/dist/lib/uniforms/uniform-buffer-layout.d.ts.map +1 -0
  167. package/dist/lib/uniforms/uniform-buffer-layout.js +76 -0
  168. package/dist/lib/uniforms/uniform-buffer-layout.js.map +1 -0
  169. package/dist/lib/uniforms/uniform-store.d.ts +62 -0
  170. package/dist/lib/uniforms/uniform-store.d.ts.map +1 -0
  171. package/dist/lib/uniforms/uniform-store.js +89 -0
  172. package/dist/lib/uniforms/uniform-store.js.map +1 -0
  173. package/dist/lib/uniforms/uniform.d.ts +10 -0
  174. package/dist/lib/uniforms/uniform.d.ts.map +1 -0
  175. package/dist/lib/uniforms/uniform.js +20 -0
  176. package/dist/lib/uniforms/uniform.js.map +1 -0
  177. package/dist/types.d.ts +19 -0
  178. package/dist/types.d.ts.map +1 -0
  179. package/dist/types.js +3 -0
  180. package/dist/types.js.map +1 -0
  181. package/dist/utils/array-equal.d.ts +5 -0
  182. package/dist/utils/array-equal.d.ts.map +1 -0
  183. package/dist/utils/array-equal.js +28 -0
  184. package/dist/utils/array-equal.js.map +1 -0
  185. package/dist/utils/array-utils-flat.d.ts +10 -0
  186. package/dist/utils/array-utils-flat.d.ts.map +1 -0
  187. package/dist/utils/array-utils-flat.js +36 -0
  188. package/dist/utils/array-utils-flat.js.map +1 -0
  189. package/dist/utils/assert.d.ts +2 -0
  190. package/dist/utils/assert.d.ts.map +1 -0
  191. package/dist/utils/assert.js +6 -0
  192. package/dist/utils/assert.js.map +1 -0
  193. package/dist/utils/cast.d.ts +3 -0
  194. package/dist/utils/cast.d.ts.map +1 -0
  195. package/dist/utils/cast.js +4 -0
  196. package/dist/utils/cast.js.map +1 -0
  197. package/dist/utils/check-props.d.ts +7 -0
  198. package/dist/utils/check-props.d.ts.map +1 -0
  199. package/dist/utils/check-props.js +32 -0
  200. package/dist/utils/check-props.js.map +1 -0
  201. package/dist/utils/deep-equal.d.ts +9 -0
  202. package/dist/utils/deep-equal.d.ts.map +1 -0
  203. package/dist/utils/deep-equal.js +40 -0
  204. package/dist/utils/deep-equal.js.map +1 -0
  205. package/dist/utils/format-value.d.ts +7 -0
  206. package/dist/utils/format-value.d.ts.map +1 -0
  207. package/dist/utils/format-value.js +42 -0
  208. package/dist/utils/format-value.js.map +1 -0
  209. package/dist/utils/is-array.d.ts +16 -0
  210. package/dist/utils/is-array.d.ts.map +1 -0
  211. package/dist/utils/is-array.js +10 -0
  212. package/dist/utils/is-array.js.map +1 -0
  213. package/dist/utils/load-file.d.ts +35 -0
  214. package/dist/utils/load-file.d.ts.map +1 -0
  215. package/dist/utils/load-file.js +48 -0
  216. package/dist/utils/load-file.js.map +1 -0
  217. package/dist/utils/log.d.ts +4 -0
  218. package/dist/utils/log.d.ts.map +1 -0
  219. package/dist/utils/log.js +5 -0
  220. package/dist/utils/log.js.map +1 -0
  221. package/dist/utils/random.d.ts +5 -0
  222. package/dist/utils/random.d.ts.map +1 -0
  223. package/dist/utils/random.js +14 -0
  224. package/dist/utils/random.js.map +1 -0
  225. package/dist/utils/request-animation-frame.d.ts +3 -0
  226. package/dist/utils/request-animation-frame.d.ts.map +1 -0
  227. package/dist/utils/request-animation-frame.js +7 -0
  228. package/dist/utils/request-animation-frame.js.map +1 -0
  229. package/dist/utils/stats-manager.d.ts +12 -0
  230. package/dist/utils/stats-manager.d.ts.map +1 -0
  231. package/dist/utils/stats-manager.js +19 -0
  232. package/dist/utils/stats-manager.js.map +1 -0
  233. package/dist/utils/stub-methods.d.ts +2 -0
  234. package/dist/utils/stub-methods.d.ts.map +1 -0
  235. package/dist/utils/stub-methods.js +16 -0
  236. package/dist/utils/stub-methods.js.map +1 -0
  237. package/dist/utils/utils.d.ts +15 -0
  238. package/dist/utils/utils.d.ts.map +1 -0
  239. package/dist/utils/utils.js +19 -0
  240. package/dist/utils/utils.js.map +1 -0
  241. package/dist.min.js +33 -0
  242. package/package.json +17 -12
  243. package/src/adapter/attribute-utils/get-attribute-from-layouts.ts +259 -0
  244. package/src/adapter/canvas-context.ts +433 -0
  245. package/src/adapter/device.ts +435 -0
  246. package/src/adapter/resources/buffer.ts +106 -0
  247. package/src/adapter/resources/command-buffer.ts +38 -0
  248. package/src/adapter/resources/command-encoder.ts +172 -0
  249. package/src/adapter/resources/compute-pass.ts +52 -0
  250. package/src/adapter/resources/compute-pipeline.ts +39 -0
  251. package/src/adapter/resources/external-texture.ts +20 -0
  252. package/src/adapter/resources/framebuffer.ts +230 -0
  253. package/src/adapter/resources/render-pass.ts +117 -0
  254. package/src/adapter/resources/render-pipeline.ts +133 -0
  255. package/src/adapter/resources/resource.ts +176 -0
  256. package/src/adapter/resources/sampler.ts +69 -0
  257. package/src/adapter/resources/shader.ts +143 -0
  258. package/src/adapter/resources/texture.ts +140 -0
  259. package/src/adapter/resources/transform-feedback.ts +45 -0
  260. package/src/adapter/resources/vertex-array.ts +65 -0
  261. package/src/adapter/type-utils/decode-attribute-type.ts +82 -0
  262. package/src/adapter/type-utils/decode-data-type.ts +62 -0
  263. package/src/adapter/type-utils/decode-shader-types.ts +48 -0
  264. package/src/adapter/type-utils/decode-texture-format.ts +190 -0
  265. package/src/adapter/type-utils/decode-vertex-format.ts +49 -0
  266. package/src/adapter/type-utils/vertex-format-from-attribute.ts +103 -0
  267. package/src/adapter/type-utils/wgsl-utils.ts +18 -0
  268. package/src/adapter/types/accessor.ts +34 -0
  269. package/src/adapter/types/buffer-layout.ts +62 -0
  270. package/src/adapter/types/parameters.ts +250 -0
  271. package/src/adapter/types/shader-layout.ts +193 -0
  272. package/src/adapter/types/shader-types.ts +77 -0
  273. package/src/adapter/types/texture-formats.ts +168 -0
  274. package/src/adapter/types/types.ts +109 -0
  275. package/src/adapter/types/vertex-formats.ts +91 -0
  276. package/src/index.ts +160 -92
  277. package/src/init.ts +47 -0
  278. package/src/lib/compiler-log/compiler-message.ts +10 -0
  279. package/src/lib/compiler-log/format-compiler-log.ts +113 -0
  280. package/src/lib/compiler-log/get-shader-info.ts +41 -0
  281. package/src/lib/luma.ts +84 -0
  282. package/src/lib/uniforms/uniform-block.ts +80 -0
  283. package/src/lib/uniforms/uniform-buffer-layout.ts +109 -0
  284. package/src/lib/uniforms/uniform-store.ts +173 -0
  285. package/src/lib/uniforms/uniform.ts +25 -0
  286. package/src/types.ts +33 -0
  287. package/src/utils/array-equal.ts +33 -0
  288. package/src/utils/array-utils-flat.ts +43 -0
  289. package/src/utils/assert.ts +7 -0
  290. package/src/utils/cast.ts +4 -0
  291. package/src/utils/check-props.ts +74 -0
  292. package/src/utils/deep-equal.ts +47 -0
  293. package/src/utils/format-value.ts +40 -0
  294. package/src/utils/is-array.ts +24 -0
  295. package/src/utils/load-file.ts +89 -0
  296. package/src/utils/log.ts +4 -0
  297. package/src/utils/random.ts +17 -0
  298. package/src/utils/request-animation-frame.ts +15 -0
  299. package/src/utils/stats-manager.ts +23 -0
  300. package/src/utils/stub-methods.ts +20 -0
  301. package/src/utils/utils.ts +36 -0
  302. package/dist/bundle.d.ts +0 -2
  303. package/dist/bundle.d.ts.map +0 -1
  304. package/dist/bundle.js +0 -5
  305. package/dist/bundle.js.map +0 -1
  306. package/src/bundle.ts +0 -4
@@ -0,0 +1,168 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ /** Texture formats */
5
+ export type TextureFormat = ColorTextureFormat | DepthStencilTextureFormat;
6
+
7
+ /** Depth and stencil texture formats */
8
+ export type DepthStencilTextureFormat =
9
+ 'stencil8' |
10
+ 'depth16unorm' |
11
+ 'depth24plus' |
12
+ 'depth24plus-stencil8' |
13
+ 'depth32float' |
14
+ // device.features.has('depth24unorm-stencil8')
15
+ 'depth24unorm-stencil8' |
16
+ // device.features.has('depth32float-stencil8')
17
+ 'depth32float-stencil8';
18
+
19
+ /** Texture formats for color attachments */
20
+ export type ColorTextureFormat = WebGPUColorTextureFormat | WebGL2ColorTextureFormat | UnsizedColorTextureFormat;
21
+
22
+ export type WebGPUColorTextureFormat =
23
+ // 8-bit formats
24
+ 'r8unorm' |
25
+ 'r8snorm' |
26
+ 'r8uint' |
27
+ 'r8sint' |
28
+
29
+ // 16-bit formats
30
+ 'r16uint' |
31
+ 'r16sint' |
32
+ 'r16float' |
33
+ 'rg8unorm' |
34
+ 'rg8snorm' |
35
+ 'rg8uint' |
36
+ 'rg8sint' |
37
+
38
+ // 32-bit formats
39
+ 'r32uint' |
40
+ 'r32sint' |
41
+ 'r32float' |
42
+ 'rg16uint' |
43
+ 'rg16sint' |
44
+ 'rg16float' |
45
+ 'rgba8unorm' |
46
+ 'rgba8unorm-srgb' |
47
+ 'rgba8snorm' |
48
+ 'rgba8uint' |
49
+ 'rgba8sint' |
50
+ 'bgra8unorm' |
51
+ 'bgra8unorm-srgb' |
52
+ // Packed 32-bit formats
53
+ 'rgb9e5ufloat' |
54
+ 'rgb10a2unorm' |
55
+ 'rg11b10ufloat' |
56
+
57
+ // 64-bit formats
58
+ 'rg32uint' |
59
+ 'rg32sint' |
60
+ 'rg32float' |
61
+ 'rgba16uint' |
62
+ 'rgba16sint' |
63
+ 'rgba16float' |
64
+
65
+ // 128-bit formats
66
+ 'rgba32uint' |
67
+ 'rgba32sint' |
68
+ 'rgba32float' |
69
+
70
+ // BC compressed formats usable if 'texture-compression-bc' is both
71
+ // supported by the device/user agent and enabled in requestDevice.
72
+ 'bc1-rgba-unorm' |
73
+ 'bc1-rgba-unorm-srgb' |
74
+ 'bc2-rgba-unorm' |
75
+ 'bc2-rgba-unorm-srgb' |
76
+ 'bc3-rgba-unorm' |
77
+ 'bc3-rgba-unorm-srgb' |
78
+ 'bc4-r-unorm' |
79
+ 'bc4-r-snorm' |
80
+ 'bc5-rg-unorm' |
81
+ 'bc5-rg-snorm' |
82
+ 'bc6h-rgb-ufloat' |
83
+ 'bc6h-rgb-float' |
84
+ 'bc7-rgba-unorm' |
85
+ 'bc7-rgba-unorm-srgb' |
86
+
87
+ // ETC2 compressed formats usable if "texture-compression-etc2" is both
88
+ // supported by the device/user agent and enabled in requestDevice.
89
+ 'etc2-rgb8unorm' |
90
+ 'etc2-rgb8unorm-srgb' |
91
+ 'etc2-rgb8a1unorm' |
92
+ 'etc2-rgb8a1unorm-srgb' |
93
+ 'etc2-rgba8unorm' |
94
+ 'etc2-rgba8unorm-srgb' |
95
+ 'eac-r11unorm' |
96
+ 'eac-r11snorm' |
97
+ 'eac-rg11unorm' |
98
+ 'eac-rg11snorm' |
99
+
100
+ // ASTC compressed formats usable if "texture-compression-astc" is both
101
+ // supported by the device/user agent and enabled in requestDevice.
102
+ 'astc-4x4-unorm' |
103
+ 'astc-4x4-unorm-srgb' |
104
+ 'astc-5x4-unorm' |
105
+ 'astc-5x4-unorm-srgb' |
106
+ 'astc-5x5-unorm' |
107
+ 'astc-5x5-unorm-srgb' |
108
+ 'astc-6x5-unorm' |
109
+ 'astc-6x5-unorm-srgb' |
110
+ 'astc-6x6-unorm' |
111
+ 'astc-6x6-unorm-srgb' |
112
+ 'astc-8x5-unorm' |
113
+ 'astc-8x5-unorm-srgb' |
114
+ 'astc-8x6-unorm' |
115
+ 'astc-8x6-unorm-srgb' |
116
+ 'astc-8x8-unorm' |
117
+ 'astc-8x8-unorm-srgb' |
118
+ 'astc-10x5-unorm' |
119
+ 'astc-10x5-unorm-srgb' |
120
+ 'astc-10x6-unorm' |
121
+ 'astc-10x6-unorm-srgb' |
122
+ 'astc-10x8-unorm' |
123
+ 'astc-10x8-unorm-srgb' |
124
+ 'astc-10x10-unorm' |
125
+ 'astc-10x10-unorm-srgb' |
126
+ 'astc-12x10-unorm' |
127
+ 'astc-12x10-unorm-srgb' |
128
+ 'astc-12x12-unorm' |
129
+ 'astc-12x12-unorm-srgb'
130
+ ;
131
+
132
+ /** Unsized texture formats (the only formats supported by WebGL1) */
133
+ export type UnsizedColorTextureFormat =
134
+ // 'r8unorm-unsized' |
135
+ // 'ra8unorm-unsized' |
136
+ 'rgb8unorm-unsized' |
137
+ 'rgba8unorm-unsized'
138
+ // 'rgb8unorm-srgb-unsized' |
139
+ // 'rgba8unorm-srgb-unsized'
140
+ ;
141
+
142
+ /** Sized formats unique to WebGL 2. Will perhaps be added to WebGPU? */
143
+ export type WebGL2ColorTextureFormat =
144
+ 'r16unorm-webgl' |
145
+ 'r16snorm-webgl' |
146
+ 'rgba4unorm-webgl' |
147
+ 'rgb565unorm-webgl' |
148
+ 'rgb5a1unorm-webgl' |
149
+ 'rgb8unorm-webgl' |
150
+ 'rgb8snorm-webgl' |
151
+ 'rg16unorm-webgl' |
152
+ 'rg16snorm-webgl' |
153
+ 'rgb10a2unorm-webgl' |
154
+ 'rgb16unorm-webgl' |
155
+ 'rgb16snorm-webgl' |
156
+ 'rgba16unorm-webgl' |
157
+ 'rgba16snorm-webgl' |
158
+ 'rgb32float-webgl' |
159
+ 'bc1-rgb-unorm-webgl' |
160
+ 'bc1-rgb-unorm-srgb-webgl' |
161
+ 'pvrtc-rgb4unorm-webgl' |
162
+ 'pvrtc-rgba4unorm-webgl' |
163
+ 'pvrtc-rbg2unorm-webgl' |
164
+ 'pvrtc-rgba2unorm-webgl' |
165
+ 'etc1-rbg-unorm-webgl' |
166
+ 'atc-rgb-unorm-webgl' |
167
+ 'atc-rgba-unorm-webgl' |
168
+ 'atc-rgbai-unorm-webgl';
@@ -0,0 +1,109 @@
1
+ // luma.gl, MIT license
2
+ import {NumberArray} from '../../types';
3
+ import type {ColorTextureFormat, DepthStencilTextureFormat, TextureFormat} from './texture-formats';
4
+ import type {Buffer} from '../resources/buffer';
5
+ import type {Texture} from '../resources/texture'; // TextureView...
6
+
7
+ // UNIFORMS
8
+
9
+ /** Valid values for uniforms. @note boolean values get converted to 0 or 1 before setting */
10
+ export type UniformValue = number | boolean | Readonly<NumberArray>; // Float32Array> | Readonly<Int32Array> | Readonly<Uint32Array> | Readonly<number[]>;
11
+
12
+ // BINDINGS
13
+
14
+ /** Buffer bindings */
15
+ export type Binding = Texture | Buffer | {buffer: Buffer, offset?: number, size?: number};
16
+
17
+ // BINDING LAYOUTS
18
+
19
+ /** Describes a buffer binding layout */
20
+ type BufferBindingLayout = {
21
+ /** The index of the binding point in the compiled and linked shader */
22
+ location?: number;
23
+ visibility: number;
24
+ /** type of buffer */
25
+ type: 'uniform' | 'storage' | 'read-only-storage';
26
+ hasDynamicOffset?: boolean;
27
+ minBindingSize?: number;
28
+ }
29
+
30
+ /** Describes a texture binding */
31
+ type TextureBindingLayout = {
32
+ /** The index of the binding point in the compiled and linked shader */
33
+ location?: number;
34
+ visibility: number;
35
+ viewDimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
36
+ sampleType?: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
37
+ multisampled?: boolean;
38
+ };
39
+
40
+ /** Describes a storage texture binding */
41
+ type StorageTextureBindingLayout = {
42
+ /** The index of the binding point in the compiled and linked shader */
43
+ location?: number;
44
+ visibility: number;
45
+ access?: 'write-only';
46
+ format: TextureFormat;
47
+ viewDimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
48
+ };
49
+
50
+ export type BindingDeclaration = BufferBindingLayout | TextureBindingLayout | StorageTextureBindingLayout;
51
+
52
+ // TEXTURE VIEWS
53
+
54
+ export type TextureView = {
55
+ texture: WebGLTexture;
56
+ layer?: number; // = 0
57
+ level?: number; // = 0
58
+ };
59
+
60
+ // ATTACHMENTS (See Framebuffer)
61
+
62
+ /**
63
+ * Framebuffer attachments lets the user specify the textures that will be used for a RenderPass,
64
+ * together with some additional options for how to clear.
65
+ */
66
+ export type ColorAttachment = {
67
+ /** Describes the texture subresource that will be output to for this color attachment. */
68
+ texture?: Texture;
69
+ /** Format of the texture resource. Used to auto create texture if not supplied */
70
+ format?: ColorTextureFormat;
71
+ /* Describes the texture subresource that will receive resolved output for this color attachment if multisampled. */
72
+ // resolveTarget?: GPUTextureView;
73
+
74
+ /** Value to clear to prior to executing the render pass. Default: [0, 0, 0, 0]. Ignored if loadOp is not "clear". */
75
+ clearValue?: number[];
76
+ /** load operation to perform on texture prior to executing the render pass. Default: 'clear'. */
77
+ loadOp?: 'load' | 'clear';
78
+ /** The store operation to perform on texture after executing the render pass. Default: 'store'. */
79
+ storeOp?: 'store' | 'discard';
80
+ };
81
+
82
+ /**
83
+ * Framebuffer attachments lets the user specify the depth stencil texture that will be used for a RenderPass,
84
+ * together with some additional options for how to clear.
85
+ */
86
+ export type DepthStencilAttachment = {
87
+ /** Describes the texture subresource that will be output to and read from for this depth/stencil attachment. */
88
+ texture?: Texture;
89
+ /** Format of the texture resource. Used to auto create texture if not supplied */
90
+ format?: DepthStencilTextureFormat;
91
+
92
+ /** Value to clear depth component to prior to executing the render pass, if depthLoadOp is "clear". 0.0-1.0. */
93
+ depthClearValue?: number;
94
+ /** Indicates load operation to perform on depth component prior to executing the render pass. Default 'clear'. */
95
+ depthLoadOp?: 'load' | 'clear';
96
+ /** Store operation to perform on depth component after executing the render pass. Default: 'store'. */
97
+ depthStoreOp?: 'store' | 'discard';
98
+ /** Indicates that the depth component is read only. */
99
+ depthReadOnly?: boolean;
100
+
101
+ /** Indicates value to clear stencil component to prior to executing the render pass, if stencilLoadOp is "clear". */
102
+ stencilClearValue?: number;
103
+ /** Indicates load operation to perform on stencil component prior to executing the render pass. Prefer clearing. */
104
+ stencilLoadOp?: 'load' | 'clear';
105
+ /** Store operation to perform on stencil component after executing the render pass. */
106
+ stencilStoreOp?: 'store' | 'discard';
107
+ /** Indicates that the stencil component is read only. */
108
+ stencilReadOnly?: boolean;
109
+ };
@@ -0,0 +1,91 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ /** Basic data types signed and unsigned integers, and floats, of varying sizes */
5
+ export type DataType =
6
+ | 'uint8'
7
+ | 'sint8'
8
+ | 'uint16'
9
+ | 'sint16'
10
+ | 'uint32'
11
+ | 'sint32'
12
+ | 'float16'
13
+ | 'float32';
14
+
15
+ /** Vertex and Pixel data types. Include normalized integers */
16
+ export type NormalizedDataType =
17
+ | 'uint8'
18
+ | 'sint8'
19
+ | 'unorm8'
20
+ | 'snorm8'
21
+ | 'uint16'
22
+ | 'sint16'
23
+ | 'unorm16'
24
+ | 'snorm16'
25
+ | 'uint32'
26
+ | 'sint32'
27
+ // WebGPU does not support normalized 32 bit integer attributes...
28
+ // | 'unorm32'
29
+ // | 'snorm32'
30
+ | 'float32'
31
+ | 'float16'
32
+ ;
33
+
34
+ /** Describes the type (without number of components) of a vertex format */
35
+ export type VertexType = NormalizedDataType;
36
+
37
+ /**
38
+ * Describes the memory format of a buffer that will be supplied to vertex attributes
39
+ * @note Must be compatible with the ShaderAttributeType of the shaders, see documentation.
40
+ * @note This is a superset of WebGPU vertex formats to allow foe some flexibility for WebGL only applications
41
+ * @todo Add device.isTextureFormatSupported() method?
42
+ */
43
+ export type VertexFormat =
44
+ // 8 bit integers, note that only 16 bit aligned formats are supported in WebGPU (x2 and x4)
45
+ | 'uint8x2'
46
+ | 'uint8x4'
47
+ | 'sint8x2'
48
+ | 'sint8x4'
49
+ | 'unorm8-webgl'
50
+ | 'unorm8x2'
51
+ | 'unorm8x3-webgl'
52
+ | 'unorm8x4'
53
+ | 'snorm8-webgl'
54
+ | 'snorm8x2'
55
+ | 'snorm8x3-webgl'
56
+ | 'snorm8x4'
57
+ // 16 bit integers, note that only 32 bit aligned formats are supported in WebGPU (x2 and x4)
58
+ | 'uint16x2'
59
+ | 'uint16x4'
60
+ | 'sint16x2'
61
+ | 'sint16x4'
62
+ | 'unorm16x2'
63
+ | 'unorm16x4'
64
+ | 'snorm16x2'
65
+ | 'snorm16x4'
66
+ // 32 bit integers
67
+ | 'uint32'
68
+ | 'uint32x2'
69
+ | 'uint32x3'
70
+ | 'uint32x4'
71
+ | 'sint32'
72
+ | 'sint32x2'
73
+ | 'sint32x3'
74
+ | 'sint32x4'
75
+ // No normalized 32 bit integers in WebGPU...
76
+ // | 'unorm32'
77
+ // | 'unorm32x2'
78
+ // | 'unorm32x3'
79
+ // | 'unorm32x4'
80
+ // | 'snorm32'
81
+ // | 'snorm32x2'
82
+ // | 'snorm32x3'
83
+ // | 'snorm32x4'
84
+ // floats
85
+ | 'float16x2'
86
+ | 'float16x4'
87
+ | 'float32'
88
+ | 'float32x2'
89
+ | 'float32x3'
90
+ | 'float32x4'
91
+ ;
package/src/index.ts CHANGED
@@ -1,105 +1,173 @@
1
1
  // luma.gl, MIT license
2
- // core module exports
2
+ // Copyright (c) vis.gl contributors
3
3
 
4
- // UTILS: undocumented API for other luma.gl modules
5
- export {log, assert, uid} from '@luma.gl/api';
4
+ export {VERSION} from './init';
6
5
 
7
- // CORE MODULE EXPORTS FOR LUMA.GL
6
+ // GENERAL TYPES
7
+ export type {ConstructorOf, PartialBy} from './types';
8
8
 
9
- // ENGINE
10
- export {Timeline} from '@luma.gl/engine';
9
+ // NUMERIC TYPES - TODO: could be imported from @math.gl/types
10
+ export type {TypedArray, TypedArrayConstructor, NumberArray, BigIntOrNumberArray} from './types';
11
11
 
12
- export {
13
- ClassicAnimationLoop as AnimationLoop,
14
- ClassicModel as Model,
15
- Transform,
16
- ProgramManager,
17
- ClipSpace
18
- } from '@luma.gl/gltools';
12
+ export {isTypedArray, isNumberArray} from './utils/is-array';
19
13
 
20
- export {
21
- Geometry,
22
- ConeGeometry,
23
- CubeGeometry,
24
- CylinderGeometry,
25
- IcoSphereGeometry,
26
- PlaneGeometry,
27
- SphereGeometry,
28
- TruncatedConeGeometry
29
- } from '@luma.gl/engine';
14
+ // MAIN API ACCESS POINTS
15
+ export {luma} from './lib/luma';
16
+
17
+ export type {DeviceProps, DeviceLimits, DeviceInfo, DeviceFeature} from './adapter/device';
18
+ export {Device} from './adapter/device';
19
+ export type {CanvasContextProps} from './adapter/canvas-context';
20
+ export {CanvasContext} from './adapter/canvas-context';
21
+
22
+ // GPU RESOURCES
23
+ export type {ResourceProps} from './adapter/resources/resource';
24
+ export {Resource} from './adapter/resources/resource';
25
+ export type {BufferProps} from './adapter/resources/buffer';
26
+ export {Buffer} from './adapter/resources/buffer';
27
+ export type {TextureProps, TextureData} from './adapter/resources/texture';
28
+ export {Texture} from './adapter/resources/texture';
29
+ export type {ExternalTextureProps} from './adapter/resources/external-texture';
30
+ export {ExternalTexture} from './adapter/resources/external-texture';
31
+ export type {ShaderProps} from './adapter/resources/shader';
32
+ export {Shader} from './adapter/resources/shader';
33
+ export type {SamplerProps, SamplerParameters} from './adapter/resources/sampler';
34
+ export {Sampler} from './adapter/resources/sampler';
35
+ export type {FramebufferProps} from './adapter/resources/framebuffer';
36
+ export {Framebuffer} from './adapter/resources/framebuffer';
37
+
38
+ export type {RenderPipelineProps} from './adapter/resources/render-pipeline';
39
+ export {RenderPipeline} from './adapter/resources/render-pipeline';
40
+
41
+ export type {ComputePipelineProps} from './adapter/resources/compute-pipeline';
42
+ export {ComputePipeline} from './adapter/resources/compute-pipeline';
43
+ export type {RenderPassProps} from './adapter/resources/render-pass';
44
+ export {RenderPass} from './adapter/resources/render-pass';
45
+ export type {ComputePassProps} from './adapter/resources/compute-pass';
46
+ export {ComputePass} from './adapter/resources/compute-pass';
47
+ export type {CommandEncoderProps} from './adapter/resources/command-encoder';
48
+ export {CommandEncoder} from './adapter/resources/command-encoder';
49
+ export type {CommandBufferProps} from './adapter/resources/command-buffer';
50
+ export {CommandBuffer} from './adapter/resources/command-buffer';
51
+
52
+ export type {VertexArrayProps} from './adapter/resources/vertex-array';
53
+ export {VertexArray} from './adapter/resources/vertex-array';
54
+
55
+ export type {BufferRange, TransformFeedbackProps} from './adapter/resources/transform-feedback';
56
+ export {TransformFeedback} from './adapter/resources/transform-feedback';
57
+
58
+ // API TYPES
59
+ export type {AccessorObject} from './adapter/types/accessor';
60
+ export type {
61
+ Parameters,
62
+ PrimitiveTopology,
63
+ IndexFormat,
64
+ CullMode,
65
+ FrontFace,
66
+ RasterizationParameters,
67
+ CompareFunction,
68
+ StencilOperation,
69
+ DepthStencilParameters,
70
+ BlendFactor,
71
+ BlendOperation,
72
+ ColorParameters,
73
+ MultisampleParameters,
74
+ RenderPassParameters,
75
+ RenderPipelineParameters
76
+ } from './adapter/types/parameters';
77
+
78
+ // MEMORY LAYOUT TYPES
79
+ export type {VertexFormat, VertexType} from './adapter/types/vertex-formats';
80
+ export type {
81
+ TextureFormat,
82
+ ColorTextureFormat,
83
+ DepthStencilTextureFormat
84
+ } from './adapter/types/texture-formats';
85
+ export type {
86
+ ShaderDataType,
87
+ ShaderAttributeType,
88
+ ShaderUniformType
89
+ } from './adapter/types/shader-types';
30
90
 
31
- // TODO - the following exports will be removed in v9
91
+ export type {ColorAttachment, DepthStencilAttachment} from './adapter/types/types';
32
92
 
33
- // WEBGL - importing from `@luma.gl/core` is deprecated
93
+ export type {
94
+ ShaderLayout,
95
+ AttributeDeclaration,
96
+ BindingDeclaration,
97
+ Binding
98
+ } from './adapter/types/shader-layout';
99
+ export type {BufferLayout, BufferAttributeLayout} from './adapter/types/buffer-layout';
100
+ export type {
101
+ // Deprecated, todo
102
+ AttributeBinding,
103
+ UniformBinding,
104
+ UniformBlockBinding,
105
+ VaryingBinding
106
+ } from './adapter/types/shader-layout';
34
107
 
35
- // GLTOOLS
108
+ export type {UniformValue} from './adapter/types/types';
109
+ export {UniformBufferLayout} from './lib/uniforms/uniform-buffer-layout';
110
+ export {UniformBlock} from './lib/uniforms/uniform-block';
111
+ export {UniformStore} from './lib/uniforms/uniform-store';
112
+
113
+ // TYPE UTILS
114
+ export {decodeVertexFormat} from './adapter/type-utils/decode-vertex-format';
115
+ export {decodeTextureFormat} from './adapter/type-utils/decode-texture-format';
116
+ export {getDataTypeFromTypedArray, getTypedArrayFromDataType, getVertexFormatFromAttribute} from './adapter/type-utils/vertex-format-from-attribute';
117
+
118
+ // SHADER TYPE UTILS
119
+ export {decodeShaderUniformType} from './adapter/type-utils/decode-shader-types';
120
+ export {decodeShaderAttributeType} from './adapter/type-utils/decode-attribute-type';
121
+
122
+ // COMPILER LOG
123
+ export type {CompilerMessage} from './lib/compiler-log/compiler-message';
124
+ export {formatCompilerLog} from './lib/compiler-log/format-compiler-log';
125
+
126
+ //
127
+ export type {AttributeInfo} from './adapter/attribute-utils/get-attribute-from-layouts';
36
128
  export {
37
- createGLContext,
38
- instrumentGLContext,
39
- FEATURES,
40
- hasFeature,
41
- hasFeatures
42
- } from '@luma.gl/gltools';
129
+ getAttributeInfosFromLayouts,
130
+ mergeShaderLayout
131
+ } from './adapter/attribute-utils/get-attribute-from-layouts';
43
132
 
44
- import {luma} from '@luma.gl/api';
45
- /** @deprecated Use luma.stats */
46
- export const lumaStats = luma.stats;
133
+ // GENERAL UTILS
47
134
 
135
+ export {StatsManager} from './utils/stats-manager';
136
+ export {assert} from './utils/assert';
137
+ export {cast} from './utils/cast';
138
+ export {log} from './utils/log';
139
+ export {uid, isPowerOfTwo, isObjectEmpty} from './utils/utils';
140
+ export {isUniformValue, splitUniformsAndBindings} from './lib/uniforms/uniform';
141
+ export {formatValue} from './utils/format-value';
142
+ export {stubRemovedMethods} from './utils/stub-methods';
143
+ export {checkProps} from './utils/check-props';
48
144
  export {
49
- isWebGL,
50
- isWebGL2,
51
- getParameters,
52
- setParameters,
53
- withParameters,
54
- resetParameters,
55
- cssToDeviceRatio,
56
- cssToDevicePixels,
57
- Buffer,
58
- Program,
59
- Framebuffer,
60
- Renderbuffer,
61
- Texture2D,
62
- TextureCube,
63
- clear,
64
- readPixelsToArray,
65
- readPixelsToBuffer,
66
- cloneTextureFrom,
67
- copyToTexture,
68
- Texture3D,
69
- TransformFeedback
70
- } from '@luma.gl/gltools';
71
-
72
- // SHADERTOOLS - importing from `@luma.gl/core` is deprecated
73
-
74
- import {
75
- // HELPERS
76
- normalizeShaderModule as normalizeShaderModuleDeprecated,
77
- // SHADER MODULES
78
- fp32 as fp32Deprecated,
79
- fp64 as fp64Deprecated,
80
- project as projectDeprecated,
81
- dirlight as dirlightDeprecated,
82
- picking as pickingDeprecated,
83
- gouraudLighting as gouraudLightingDeprecated,
84
- phongLighting as phongLightingDeprecated,
85
- pbr as pbrDeprecated
86
- } from '@luma.gl/shadertools';
87
-
88
- /** @deprecated Import directly from `@luma.gl/shadertools` */
89
- export const normalizeShaderModule = normalizeShaderModuleDeprecated;
90
- /** @deprecated Import directly from `@luma.gl/shadertools` */
91
- export const fp32 = fp32Deprecated;
92
- /** @deprecated Import directly from `@luma.gl/shadertools` */
93
- export const fp64 = fp64Deprecated;
94
- /** @deprecated Import directly from `@luma.gl/shadertools` */
95
- export const project = projectDeprecated;
96
- /** @deprecated Import directly from `@luma.gl/shadertools` */
97
- export const dirlight = dirlightDeprecated;
98
- /** @deprecated Import directly from `@luma.gl/shadertools` */
99
- export const picking = pickingDeprecated;
100
- /** @deprecated Import directly from `@luma.gl/shadertools` */
101
- export const gouraudLighting = gouraudLightingDeprecated;
102
- /** @deprecated Import directly from `@luma.gl/shadertools` */
103
- export const phongLighting = phongLightingDeprecated;
104
- /** @deprecated Import directly from `@luma.gl/shadertools` */
105
- export const pbr = pbrDeprecated;
145
+ setPathPrefix,
146
+ loadFile,
147
+ loadImage,
148
+ loadImageBitmap,
149
+ loadScript
150
+ } from './utils/load-file';
151
+ export {getScratchArrayBuffer, getScratchArray, fillArray} from './utils/array-utils-flat';
152
+ export {makeRandomNumberGenerator, random} from './utils/random';
153
+ export {deepEqual} from './utils/deep-equal';
154
+
155
+ // ENGINE - TODO/move to @luma.gl/engine once that module is webgl-independent?
156
+ export {requestAnimationFrame, cancelAnimationFrame} from './utils/request-animation-frame';
157
+
158
+ // SHADER HELPERS
159
+
160
+ /**
161
+ * Marks GLSL shaders for syntax highlighting: glsl`...`
162
+ * Install https://marketplace.visualstudio.com/items?itemName=boyswan.glsl-literal
163
+ */
164
+ export const glsl = (x: TemplateStringsArray) => `${x}`;
165
+
166
+ // INTERNAL
167
+
168
+ export type {
169
+ CopyBufferToBufferOptions,
170
+ CopyBufferToTextureOptions,
171
+ CopyTextureToBufferOptions,
172
+ CopyTextureToTextureOptions
173
+ } from './adapter/resources/command-encoder';
package/src/init.ts ADDED
@@ -0,0 +1,47 @@
1
+ import {isBrowser} from '@probe.gl/env';
2
+ import {log} from './utils/log';
3
+ import {lumaStats} from './utils/stats-manager';
4
+
5
+ declare global {
6
+ // eslint-disable-next-line no-var
7
+ var luma: any
8
+ }
9
+
10
+ /**
11
+ * By adding the result of init() to Device.VERSION we guarantee it will be called
12
+ * @returns version
13
+ */
14
+ function initializeLuma(): string {
15
+ // Version detection using babel plugin
16
+ // @ts-expect-error
17
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'running from source';
18
+
19
+ const STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
20
+ // Assign luma.log.level in console to control logging: \
21
+ // 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs
22
+ // luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;
23
+
24
+ if (globalThis.luma && globalThis.luma.VERSION !== VERSION) {
25
+ throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);
26
+ }
27
+
28
+ if (!globalThis.luma) {
29
+ if (isBrowser()) {
30
+ log.log(1, `${VERSION} - ${STARTUP_MESSAGE}`)();
31
+ }
32
+
33
+ globalThis.luma = globalThis.luma || {
34
+ VERSION,
35
+ version: VERSION,
36
+ log,
37
+
38
+ // A global stats object that various components can add information to
39
+ // E.g. see webgl/resource.js
40
+ stats: lumaStats,
41
+ };
42
+ }
43
+
44
+ return VERSION;
45
+ }
46
+
47
+ export const VERSION = initializeLuma();