@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.10

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 (553) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +300 -146
  5. package/dist/adapter/converters/sampler-parameters.d.ts +3 -13
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +74 -219
  8. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  9. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  10. package/dist/adapter/converters/shader-formats.js +59 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +41 -57
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +490 -925
  14. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +56 -33
  17. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  18. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  20. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  21. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  22. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  23. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  24. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  25. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  26. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  27. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  28. package/dist/adapter/helpers/decode-webgl-types.js +101 -0
  29. package/dist/adapter/helpers/get-shader-layout.d.ts +2 -49
  30. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-layout.js +263 -307
  32. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  33. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  34. package/dist/adapter/helpers/parse-shader-compiler-log.js +48 -33
  35. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  36. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  37. package/dist/adapter/helpers/set-uniform.js +66 -111
  38. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  39. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  40. package/dist/adapter/helpers/webgl-topology-utils.js +88 -0
  41. package/dist/adapter/objects/constants-to-keys.d.ts +2 -4
  42. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  43. package/dist/adapter/objects/constants-to-keys.js +18 -38
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +92 -91
  47. package/dist/adapter/objects/webgl-resource.d.ts +6 -31
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +103 -205
  50. package/dist/adapter/resources/webgl-buffer.d.ts +20 -16
  51. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-buffer.js +163 -155
  53. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  54. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-command-buffer.js +283 -58
  56. package/dist/adapter/resources/webgl-command-encoder.d.ts +12 -6
  57. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-command-encoder.js +36 -52
  59. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  60. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -29
  61. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-framebuffer.js +184 -261
  63. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  64. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  65. package/dist/adapter/resources/webgl-query-set.js +136 -0
  66. package/dist/adapter/resources/webgl-render-pass.d.ts +21 -4
  67. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-render-pass.js +140 -20
  69. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -21
  70. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-render-pipeline.js +371 -413
  72. package/dist/adapter/resources/webgl-sampler.d.ts +5 -6
  73. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-sampler.js +46 -46
  75. package/dist/adapter/resources/webgl-shader.d.ts +16 -6
  76. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-shader.js +113 -72
  78. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  79. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  80. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  81. package/dist/adapter/resources/webgl-texture.d.ts +53 -35
  82. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-texture.js +623 -822
  84. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  85. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-transform-feedback.js +162 -0
  87. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  88. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  89. package/dist/adapter/resources/webgl-vertex-array.js +239 -0
  90. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  91. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  92. package/dist/adapter/webgl-canvas-context.js +61 -50
  93. package/dist/adapter/webgl-device.d.ts +112 -55
  94. package/dist/adapter/webgl-device.d.ts.map +1 -1
  95. package/dist/adapter/webgl-device.js +453 -331
  96. package/dist/classic/accessor.d.ts +3 -3
  97. package/dist/classic/accessor.d.ts.map +1 -1
  98. package/dist/classic/accessor.js +135 -130
  99. package/dist/classic/clear.d.ts +22 -0
  100. package/dist/classic/clear.d.ts.map +1 -0
  101. package/dist/classic/clear.js +89 -0
  102. package/dist/classic/copy-and-blit.d.ts +62 -0
  103. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  104. package/dist/classic/copy-and-blit.js +191 -0
  105. package/dist/classic/format-utils.d.ts +3 -0
  106. package/dist/classic/format-utils.d.ts.map +1 -0
  107. package/dist/classic/format-utils.js +44 -0
  108. package/dist/classic/typed-array-utils.d.ts +17 -17
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -102
  111. package/dist/context/debug/spector.d.ts +1 -2
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +56 -63
  114. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  115. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  116. package/dist/context/debug/webgl-developer-tools.js +106 -102
  117. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  118. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  119. package/dist/context/helpers/create-browser-context.js +67 -0
  120. package/dist/context/helpers/webgl-context-data.d.ts +13 -0
  121. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  122. package/dist/context/helpers/webgl-context-data.js +21 -0
  123. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  124. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  125. package/dist/context/helpers/webgl-extensions.js +10 -0
  126. package/dist/context/parameters/unified-parameter-api.d.ts +4 -5
  127. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  128. package/dist/context/parameters/unified-parameter-api.js +91 -54
  129. package/dist/context/parameters/webgl-parameter-tables.d.ts +115 -106
  130. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  131. package/dist/context/parameters/webgl-parameter-tables.js +463 -423
  132. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  133. package/dist/context/state-tracker/deep-array-equal.js +19 -18
  134. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  135. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  136. package/dist/context/state-tracker/track-context-state.js +192 -163
  137. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  138. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  139. package/dist/context/state-tracker/with-parameters.js +44 -32
  140. package/dist/dist.dev.js +6574 -0
  141. package/dist/dist.min.js +10 -0
  142. package/dist/index.cjs +5586 -0
  143. package/dist/index.cjs.map +7 -0
  144. package/dist/index.d.ts +25 -32
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +37 -28
  147. package/dist/types.d.ts +3 -1
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js +3 -1
  150. package/dist.min.js +19 -0
  151. package/package.json +22 -15
  152. package/src/adapter/converters/device-parameters.ts +217 -54
  153. package/src/adapter/converters/sampler-parameters.ts +46 -126
  154. package/src/adapter/converters/shader-formats.ts +69 -0
  155. package/src/adapter/converters/texture-formats.ts +369 -340
  156. package/src/adapter/converters/vertex-formats.ts +71 -10
  157. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  158. package/src/adapter/device-helpers/webgl-device-info.ts +111 -0
  159. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  160. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +38 -25
  161. package/src/adapter/helpers/get-shader-layout.ts +104 -158
  162. package/src/adapter/helpers/parse-shader-compiler-log.ts +31 -11
  163. package/src/adapter/helpers/set-uniform.ts +39 -36
  164. package/src/adapter/helpers/webgl-topology-utils.ts +110 -0
  165. package/src/adapter/objects/constants-to-keys.ts +8 -26
  166. package/src/adapter/objects/webgl-renderbuffer.ts +68 -40
  167. package/src/adapter/objects/webgl-resource.ts +16 -156
  168. package/src/adapter/resources/webgl-buffer.ts +103 -112
  169. package/src/adapter/resources/webgl-command-buffer.ts +333 -41
  170. package/src/adapter/resources/webgl-command-encoder.ts +33 -22
  171. package/src/adapter/resources/webgl-external-texture.ts +11 -8
  172. package/src/adapter/resources/webgl-framebuffer.ts +125 -165
  173. package/src/adapter/resources/webgl-query-set.ts +171 -0
  174. package/src/adapter/resources/webgl-render-pass.ts +176 -6
  175. package/src/adapter/resources/webgl-render-pipeline.ts +308 -229
  176. package/src/adapter/resources/webgl-sampler.ts +19 -18
  177. package/src/adapter/resources/webgl-shader.ts +91 -32
  178. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  179. package/src/adapter/resources/webgl-texture.ts +147 -184
  180. package/src/adapter/resources/webgl-transform-feedback.ts +196 -0
  181. package/src/adapter/resources/webgl-vertex-array.ts +282 -0
  182. package/src/adapter/webgl-canvas-context.ts +23 -22
  183. package/src/adapter/webgl-device.ts +411 -196
  184. package/src/classic/accessor.ts +12 -8
  185. package/src/classic/clear.ts +118 -0
  186. package/src/classic/copy-and-blit.ts +318 -0
  187. package/src/classic/format-utils.ts +47 -0
  188. package/src/classic/typed-array-utils.ts +19 -31
  189. package/src/context/debug/spector.ts +16 -10
  190. package/src/context/debug/webgl-developer-tools.ts +52 -32
  191. package/src/context/helpers/create-browser-context.ts +116 -0
  192. package/src/context/helpers/webgl-context-data.ts +31 -0
  193. package/src/context/helpers/webgl-extensions.ts +17 -0
  194. package/src/context/parameters/unified-parameter-api.ts +11 -16
  195. package/src/context/parameters/webgl-parameter-tables.ts +171 -121
  196. package/src/context/state-tracker/deep-array-equal.ts +3 -0
  197. package/src/context/state-tracker/track-context-state.ts +35 -26
  198. package/src/context/state-tracker/with-parameters.ts +12 -3
  199. package/src/index.ts +41 -55
  200. package/src/types.ts +6 -0
  201. package/dist/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  203. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  204. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  205. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  206. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  210. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  211. package/dist/adapter/device-helpers/device-features.js +0 -112
  212. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  213. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  214. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  215. package/dist/adapter/device-helpers/device-limits.js +0 -91
  216. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  217. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  218. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  219. package/dist/adapter/device-helpers/get-device-info.js +0 -44
  220. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  221. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  222. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  223. package/dist/adapter/device-helpers/is-old-ie.js +0 -8
  224. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  225. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  226. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  227. package/dist/adapter/helpers/attribute-utils.js +0 -81
  228. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  229. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  230. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  231. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  232. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  233. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  234. package/dist/adapter/helpers/uniforms.js +0 -99
  235. package/dist/adapter/helpers/uniforms.js.map +0 -1
  236. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  237. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  238. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  239. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  240. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  241. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  242. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  243. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  244. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  245. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  246. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  247. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  249. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  250. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  252. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  253. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  254. package/dist/adapter/webgl-device.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -2
  256. package/dist/bundle.d.ts.map +0 -1
  257. package/dist/bundle.js +0 -5
  258. package/dist/bundle.js.map +0 -1
  259. package/dist/classic/accessor.js.map +0 -1
  260. package/dist/classic/buffer.d.ts +0 -95
  261. package/dist/classic/buffer.d.ts.map +0 -1
  262. package/dist/classic/buffer.js +0 -392
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/classic/typed-array-utils.js.map +0 -1
  265. package/dist/context/context/context-state.d.ts +0 -18
  266. package/dist/context/context/context-state.d.ts.map +0 -1
  267. package/dist/context/context/context-state.js +0 -26
  268. package/dist/context/context/context-state.js.map +0 -1
  269. package/dist/context/context/create-browser-context.d.ts +0 -41
  270. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  271. package/dist/context/context/create-browser-context.js +0 -61
  272. package/dist/context/context/create-browser-context.js.map +0 -1
  273. package/dist/context/context/create-headless-context.d.ts +0 -9
  274. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  275. package/dist/context/context/create-headless-context.js +0 -43
  276. package/dist/context/context/create-headless-context.js.map +0 -1
  277. package/dist/context/context/device-pixels.d.ts +0 -25
  278. package/dist/context/context/device-pixels.d.ts.map +0 -1
  279. package/dist/context/context/device-pixels.js +0 -103
  280. package/dist/context/context/device-pixels.js.map +0 -1
  281. package/dist/context/context/webgl-checks.d.ts +0 -13
  282. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  283. package/dist/context/context/webgl-checks.js +0 -34
  284. package/dist/context/context/webgl-checks.js.map +0 -1
  285. package/dist/context/debug/spector.js.map +0 -1
  286. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  287. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  288. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  289. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  290. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  291. package/dist/context/polyfill/get-parameter-polyfill.js +0 -91
  292. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  293. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  294. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  295. package/dist/context/polyfill/polyfill-context.js +0 -91
  296. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  297. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  298. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  299. package/dist/context/polyfill/polyfill-table.js +0 -160
  300. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  301. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  302. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  303. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -335
  304. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  305. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  306. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  307. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  309. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  311. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  313. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  315. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  317. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  319. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  321. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  323. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  325. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  327. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  329. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  330. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  331. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  332. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  333. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  334. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  335. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  336. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  337. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  338. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  339. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  340. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  341. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  342. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  343. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  345. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  347. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  349. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  351. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  353. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  355. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  357. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  358. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  359. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  360. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  361. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  362. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  363. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  364. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  365. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  366. package/dist/es5/adapter/webgl-device.js +0 -463
  367. package/dist/es5/adapter/webgl-device.js.map +0 -1
  368. package/dist/es5/bundle.js +0 -7
  369. package/dist/es5/bundle.js.map +0 -1
  370. package/dist/es5/classic/accessor.js +0 -181
  371. package/dist/es5/classic/accessor.js.map +0 -1
  372. package/dist/es5/classic/buffer.js +0 -478
  373. package/dist/es5/classic/buffer.js.map +0 -1
  374. package/dist/es5/classic/typed-array-utils.js +0 -126
  375. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  376. package/dist/es5/context/context/context-state.js +0 -31
  377. package/dist/es5/context/context/context-state.js.map +0 -1
  378. package/dist/es5/context/context/create-browser-context.js +0 -83
  379. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  380. package/dist/es5/context/context/create-headless-context.js +0 -60
  381. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  382. package/dist/es5/context/context/device-pixels.js +0 -121
  383. package/dist/es5/context/context/device-pixels.js.map +0 -1
  384. package/dist/es5/context/context/webgl-checks.js +0 -54
  385. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  386. package/dist/es5/context/debug/spector.js +0 -133
  387. package/dist/es5/context/debug/spector.js.map +0 -1
  388. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  389. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  390. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  391. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  392. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  393. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  394. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  395. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  397. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  399. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  401. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  403. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  405. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  407. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/es5/index.js +0 -290
  409. package/dist/es5/index.js.map +0 -1
  410. package/dist/es5/init.js +0 -10
  411. package/dist/es5/init.js.map +0 -1
  412. package/dist/es5/types/webgl.js +0 -6
  413. package/dist/es5/types/webgl.js.map +0 -1
  414. package/dist/es5/types.js +0 -2
  415. package/dist/es5/types.js.map +0 -1
  416. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  417. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  418. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  419. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  420. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  421. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  422. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  423. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  424. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  425. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  426. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  427. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  428. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  429. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  430. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  431. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  432. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  433. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  434. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  435. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  436. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  437. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  438. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  439. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  440. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  441. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  442. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  443. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  444. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  445. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  446. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  447. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  448. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  449. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  450. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  451. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  453. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  455. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  457. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  459. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  461. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  463. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  464. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  465. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  466. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  467. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  468. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  469. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  470. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  471. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  472. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  473. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  474. package/dist/esm/adapter/webgl-device.js +0 -337
  475. package/dist/esm/adapter/webgl-device.js.map +0 -1
  476. package/dist/esm/bundle.js +0 -5
  477. package/dist/esm/bundle.js.map +0 -1
  478. package/dist/esm/classic/accessor.js +0 -144
  479. package/dist/esm/classic/accessor.js.map +0 -1
  480. package/dist/esm/classic/buffer.js +0 -392
  481. package/dist/esm/classic/buffer.js.map +0 -1
  482. package/dist/esm/classic/typed-array-utils.js +0 -112
  483. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  484. package/dist/esm/context/context/context-state.js +0 -26
  485. package/dist/esm/context/context/context-state.js.map +0 -1
  486. package/dist/esm/context/context/create-browser-context.js +0 -61
  487. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  488. package/dist/esm/context/context/create-headless-context.js +0 -43
  489. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  490. package/dist/esm/context/context/device-pixels.js +0 -103
  491. package/dist/esm/context/context/device-pixels.js.map +0 -1
  492. package/dist/esm/context/context/webgl-checks.js +0 -34
  493. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  494. package/dist/esm/context/debug/spector.js +0 -76
  495. package/dist/esm/context/debug/spector.js.map +0 -1
  496. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  497. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  498. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  499. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  500. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  501. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  502. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  503. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  504. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  505. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  506. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  507. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  508. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  509. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  510. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  511. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  512. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  513. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  514. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  515. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  516. package/dist/esm/index.js +0 -28
  517. package/dist/esm/index.js.map +0 -1
  518. package/dist/esm/init.js +0 -4
  519. package/dist/esm/init.js.map +0 -1
  520. package/dist/esm/types/webgl.js +0 -2
  521. package/dist/esm/types/webgl.js.map +0 -1
  522. package/dist/esm/types.js +0 -2
  523. package/dist/esm/types.js.map +0 -1
  524. package/dist/index.js.map +0 -1
  525. package/dist/init.d.ts +0 -2
  526. package/dist/init.d.ts.map +0 -1
  527. package/dist/init.js +0 -4
  528. package/dist/init.js.map +0 -1
  529. package/dist/types/webgl.d.ts +0 -145
  530. package/dist/types/webgl.d.ts.map +0 -1
  531. package/dist/types/webgl.js +0 -2
  532. package/dist/types/webgl.js.map +0 -1
  533. package/dist/types.js.map +0 -1
  534. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  535. package/src/adapter/device-helpers/device-features.ts +0 -158
  536. package/src/adapter/device-helpers/device-limits.ts +0 -153
  537. package/src/adapter/device-helpers/get-device-info.ts +0 -49
  538. package/src/adapter/device-helpers/is-old-ie.ts +0 -11
  539. package/src/adapter/helpers/attribute-utils.ts +0 -61
  540. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  541. package/src/bundle.ts +0 -4
  542. package/src/classic/buffer.ts +0 -474
  543. package/src/context/context/context-state.ts +0 -41
  544. package/src/context/context/create-browser-context.ts +0 -118
  545. package/src/context/context/create-headless-context.ts +0 -48
  546. package/src/context/context/device-pixels.ts +0 -158
  547. package/src/context/context/webgl-checks.ts +0 -49
  548. package/src/context/polyfill/get-parameter-polyfill.ts +0 -118
  549. package/src/context/polyfill/polyfill-context.ts +0 -97
  550. package/src/context/polyfill/polyfill-table.ts +0 -162
  551. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -360
  552. package/src/init.ts +0 -4
  553. package/src/types/webgl.ts +0 -284
@@ -1,5 +1,9 @@
1
- import {assert, checkProps, Buffer, AccessorObject} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {assert, checkProps, Buffer, AccessorObject} from '@luma.gl/core';
6
+ import {GL} from '@luma.gl/constants';
3
7
  import {getTypedArrayFromGLType} from './typed-array-utils';
4
8
 
5
9
  const DEFAULT_ACCESSOR_VALUES = {
@@ -19,7 +23,7 @@ const PROP_CHECKS = {
19
23
  }
20
24
  };
21
25
 
22
- export default class Accessor implements AccessorObject {
26
+ export class Accessor implements AccessorObject {
23
27
  offset?: number;
24
28
  stride?: number;
25
29
  type?: number;
@@ -55,7 +59,7 @@ export default class Accessor implements AccessorObject {
55
59
  }
56
60
 
57
61
  constructor(...accessors: AccessorObject[]) {
58
- accessors.forEach((accessor) => this._assign(accessor)); // Merge in sequence
62
+ accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence
59
63
  Object.freeze(this);
60
64
  }
61
65
 
@@ -84,8 +88,8 @@ export default class Accessor implements AccessorObject {
84
88
  this.type = props.type;
85
89
 
86
90
  // Auto-deduce integer type?
87
- if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {
88
- this.integer = true;
91
+ if ((props.type as GL) === GL.INT || (props.type as GL) === GL.UNSIGNED_INT) {
92
+ this.integer = true;
89
93
  }
90
94
  }
91
95
  if (props.size !== undefined) {
@@ -148,10 +152,10 @@ export default class Accessor implements AccessorObject {
148
152
  if (this.divisor === undefined) delete this.divisor;
149
153
  if (this.normalized === undefined) delete this.normalized;
150
154
  if (this.integer === undefined) delete this.integer;
151
-
155
+
152
156
  if (this.buffer === undefined) delete this.buffer;
153
157
  if (this.index === undefined) delete this.index;
154
-
158
+
155
159
  return this;
156
160
  }
157
161
  }
@@ -0,0 +1,118 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {Device, Framebuffer, assert} from '@luma.gl/core';
6
+ import {WebGLDevice} from '../adapter/webgl-device';
7
+ import {withGLParameters} from '../context/state-tracker/with-parameters';
8
+
9
+ // Should collapse during minification
10
+ const GL_DEPTH_BUFFER_BIT = 0x00000100;
11
+ const GL_STENCIL_BUFFER_BIT = 0x00000400;
12
+ const GL_COLOR_BUFFER_BIT = 0x00004000;
13
+
14
+ const GL_COLOR = 0x1800;
15
+ const GL_DEPTH = 0x1801;
16
+ const GL_STENCIL = 0x1802;
17
+ const GL_DEPTH_STENCIL = 0x84f9;
18
+
19
+ // Should disappear if asserts are removed
20
+ const ERR_ARGUMENTS = 'clear: bad arguments';
21
+
22
+ /**
23
+ * Optionally clears depth, color and stencil buffers
24
+ * @deprecated Set clear color when creating a RenderPass.
25
+ */
26
+ export function clear(
27
+ device: Device,
28
+ options?: {framebuffer?: Framebuffer; color?: any; depth?: any; stencil?: any}
29
+ ): void {
30
+ const {framebuffer = null, color = null, depth = null, stencil = null} = options || {};
31
+ const parameters: any = {};
32
+
33
+ if (framebuffer) {
34
+ parameters.framebuffer = framebuffer;
35
+ }
36
+
37
+ let clearFlags = 0;
38
+
39
+ if (color) {
40
+ clearFlags |= GL_COLOR_BUFFER_BIT;
41
+ if (color !== true) {
42
+ parameters.clearColor = color;
43
+ }
44
+ }
45
+
46
+ if (depth) {
47
+ clearFlags |= GL_DEPTH_BUFFER_BIT;
48
+ if (depth !== true) {
49
+ parameters.clearDepth = depth;
50
+ }
51
+ }
52
+
53
+ if (stencil) {
54
+ clearFlags |= GL_STENCIL_BUFFER_BIT;
55
+ if (depth !== true) {
56
+ parameters.clearStencil = depth;
57
+ }
58
+ }
59
+
60
+ assert(clearFlags !== 0, ERR_ARGUMENTS);
61
+
62
+ // Temporarily set any clear "colors" and call clear
63
+ const gl = (device as WebGLDevice).gl;
64
+ withGLParameters(gl, parameters, () => {
65
+ gl.clear(clearFlags);
66
+ });
67
+ }
68
+
69
+ /**
70
+ * WebGL2 - clear a specific drawing buffer
71
+ * @deprecated Set clear color when creating a RenderPass
72
+ */
73
+ export function clearBuffer(
74
+ device: Device,
75
+ options?: {framebuffer?: Framebuffer; buffer?: any; drawBuffer?: any; value?: any}
76
+ ) {
77
+ const {
78
+ framebuffer = null,
79
+ buffer = GL_COLOR,
80
+ drawBuffer = 0,
81
+ value = [0, 0, 0, 0]
82
+ } = options || {};
83
+ const gl = (device as WebGLDevice).gl;
84
+ withGLParameters(gl, {framebuffer}, () => {
85
+ // Method selection per OpenGL ES 3 docs
86
+ switch (buffer) {
87
+ case GL_COLOR:
88
+ switch (value.constructor) {
89
+ case Int32Array:
90
+ gl.clearBufferiv(buffer, drawBuffer, value);
91
+ break;
92
+ case Uint32Array:
93
+ gl.clearBufferuiv(buffer, drawBuffer, value);
94
+ break;
95
+ case Float32Array:
96
+ default:
97
+ gl.clearBufferfv(buffer, drawBuffer, value);
98
+ }
99
+ break;
100
+
101
+ case GL_DEPTH:
102
+ gl.clearBufferfv(GL_DEPTH, 0, [value]);
103
+ break;
104
+
105
+ case GL_STENCIL:
106
+ gl.clearBufferiv(GL_STENCIL, 0, [value]);
107
+ break;
108
+
109
+ case GL_DEPTH_STENCIL:
110
+ const [depth, stencil] = value;
111
+ gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);
112
+ break;
113
+
114
+ default:
115
+ assert(false, ERR_ARGUMENTS);
116
+ }
117
+ });
118
+ }
@@ -0,0 +1,318 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {assert, Buffer, Texture, Framebuffer, FramebufferProps} from '@luma.gl/core';
6
+ import {GL} from '@luma.gl/constants';
7
+
8
+ import {WEBGLTextureView} from '../adapter/resources/webgl-texture-view';
9
+ import {WEBGLFramebuffer} from '../adapter/resources/webgl-framebuffer';
10
+ import {getGLTypeFromTypedArray, getTypedArrayFromGLType} from './typed-array-utils';
11
+ import {glFormatToComponents, glTypeToBytes} from './format-utils';
12
+ import {WEBGLBuffer} from '../adapter/resources/webgl-buffer';
13
+
14
+ /**
15
+ * Copies data from a type or a Texture object into ArrayBuffer object.
16
+ * App can provide targetPixelArray or have it auto allocated by this method
17
+ * newly allocated by this method unless provided by app.
18
+ * @deprecated Use CommandEncoder.copyTextureToBuffer and Buffer.read
19
+ * @note Slow requires roundtrip to GPU
20
+ *
21
+ * @param source
22
+ * @param options
23
+ * @returns pixel array,
24
+ */
25
+ export function readPixelsToArray(
26
+ source: Framebuffer | Texture,
27
+ options?: {
28
+ sourceX?: number;
29
+ sourceY?: number;
30
+ sourceFormat?: number;
31
+ sourceAttachment?: number;
32
+ target?: Uint8Array | Uint16Array | Float32Array;
33
+ // following parameters are auto deduced if not provided
34
+ sourceWidth?: number;
35
+ sourceHeight?: number;
36
+ sourceType?: number;
37
+ }
38
+ ): Uint8Array | Uint16Array | Float32Array {
39
+ const {
40
+ sourceX = 0,
41
+ sourceY = 0,
42
+ sourceFormat = GL.RGBA,
43
+ sourceAttachment = GL.COLOR_ATTACHMENT0 // TODO - support gl.readBuffer
44
+ } = options || {};
45
+ let {
46
+ target = null,
47
+ // following parameters are auto deduced if not provided
48
+ sourceWidth,
49
+ sourceHeight,
50
+ sourceType
51
+ } = options || {};
52
+
53
+ const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
54
+ assert(framebuffer);
55
+ const {gl, handle} = framebuffer as WEBGLFramebuffer;
56
+ sourceWidth = sourceWidth || framebuffer.width;
57
+ sourceHeight = sourceHeight || framebuffer.height;
58
+
59
+ // TODO - Set and unset gl.readBuffer
60
+ // if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {
61
+ // sourceAttachment = GL.FRONT;
62
+ // }
63
+
64
+ const attachment = sourceAttachment - GL.COLOR_ATTACHMENT0;
65
+ // assert(attachments[sourceAttachment]);
66
+
67
+ // Deduce the type from color attachment if not provided.
68
+ sourceType =
69
+ sourceType ||
70
+ (framebuffer.colorAttachments[attachment] as WEBGLTextureView)?.texture?.type ||
71
+ GL.UNSIGNED_BYTE;
72
+
73
+ // Deduce type and allocated pixelArray if needed
74
+ target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);
75
+
76
+ // Pixel array available, if necessary, deduce type from it.
77
+ sourceType = sourceType || getGLTypeFromTypedArray(target);
78
+
79
+ const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
80
+ gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
81
+ // @ts-expect-error
82
+ gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
83
+ if (deleteFramebuffer) {
84
+ framebuffer.destroy();
85
+ }
86
+ return target;
87
+ }
88
+
89
+ /**
90
+ * Copies data from a Framebuffer or a Texture object into a Buffer object.
91
+ * NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
92
+ * @deprecated Use CommandEncoder
93
+ * @param source
94
+ * @param options
95
+ */
96
+ export function readPixelsToBuffer(
97
+ source: Framebuffer | Texture,
98
+ options?: {
99
+ sourceX?: number;
100
+ sourceY?: number;
101
+ sourceFormat?: number;
102
+ target?: Buffer; // A new Buffer object is created when not provided.
103
+ targetByteOffset?: number; // byte offset in buffer object
104
+ // following parameters are auto deduced if not provided
105
+ sourceWidth?: number;
106
+ sourceHeight?: number;
107
+ sourceType?: number;
108
+ }
109
+ ): WEBGLBuffer {
110
+ const {
111
+ target,
112
+ sourceX = 0,
113
+ sourceY = 0,
114
+ sourceFormat = GL.RGBA,
115
+ targetByteOffset = 0
116
+ } = options || {};
117
+ // following parameters are auto deduced if not provided
118
+ let {sourceWidth, sourceHeight, sourceType} = options || {};
119
+ const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
120
+ assert(framebuffer);
121
+ sourceWidth = sourceWidth || framebuffer.width;
122
+ sourceHeight = sourceHeight || framebuffer.height;
123
+
124
+ // Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature
125
+ const webglFramebuffer = framebuffer as WEBGLFramebuffer;
126
+
127
+ // deduce type if not available.
128
+ sourceType = sourceType || GL.UNSIGNED_BYTE;
129
+
130
+ let webglBufferTarget = target as unknown as WEBGLBuffer | undefined;
131
+ if (!webglBufferTarget) {
132
+ // Create new buffer with enough size
133
+ const components = glFormatToComponents(sourceFormat);
134
+ const byteCount = glTypeToBytes(sourceType);
135
+ const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;
136
+ webglBufferTarget = webglFramebuffer.device.createBuffer({byteLength});
137
+ }
138
+
139
+ // TODO(donmccurdy): Do we have tests to confirm this is working?
140
+ const commandEncoder = source.device.createCommandEncoder();
141
+ commandEncoder.copyTextureToBuffer({
142
+ source: source as Texture,
143
+ width: sourceWidth,
144
+ height: sourceHeight,
145
+ origin: [sourceX, sourceY],
146
+ destination: webglBufferTarget,
147
+ byteOffset: targetByteOffset
148
+ });
149
+ commandEncoder.destroy();
150
+
151
+ if (deleteFramebuffer) {
152
+ framebuffer.destroy();
153
+ }
154
+
155
+ return webglBufferTarget;
156
+ }
157
+
158
+ /**
159
+ * Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)
160
+ * @deprecated Use CommandEncoder
161
+ */
162
+ // eslint-disable-next-line complexity, max-statements
163
+ export function copyToTexture(
164
+ source: Framebuffer | Texture,
165
+ target: Texture | GL,
166
+ options?: {
167
+ sourceX?: number;
168
+ sourceY?: number;
169
+
170
+ targetX?: number;
171
+ targetY?: number;
172
+ targetZ?: number;
173
+ targetMipmaplevel?: number;
174
+ targetInternalFormat?: number;
175
+
176
+ width?: number; // defaults to target width
177
+ height?: number; // defaults to target height
178
+ }
179
+ ): Texture {
180
+ const {
181
+ sourceX = 0,
182
+ sourceY = 0,
183
+ // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer
184
+ targetMipmaplevel = 0,
185
+ targetInternalFormat = GL.RGBA
186
+ } = options || {};
187
+ let {
188
+ targetX,
189
+ targetY,
190
+ targetZ,
191
+ width, // defaults to target width
192
+ height // defaults to target height
193
+ } = options || {};
194
+
195
+ const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
196
+ assert(framebuffer);
197
+ const webglFramebuffer = framebuffer as WEBGLFramebuffer;
198
+ const {device, handle} = webglFramebuffer;
199
+ const isSubCopy =
200
+ typeof targetX !== 'undefined' ||
201
+ typeof targetY !== 'undefined' ||
202
+ typeof targetZ !== 'undefined';
203
+ targetX = targetX || 0;
204
+ targetY = targetY || 0;
205
+ targetZ = targetZ || 0;
206
+ const prevHandle = device.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
207
+ // TODO - support gl.readBuffer (WebGL2 only)
208
+ // const prevBuffer = gl.readBuffer(attachment);
209
+ assert(target);
210
+ let texture = null;
211
+ let textureTarget: GL;
212
+ if (target instanceof Texture) {
213
+ texture = target;
214
+ width = Number.isFinite(width) ? width : texture.width;
215
+ height = Number.isFinite(height) ? height : texture.height;
216
+ texture.bind(0);
217
+ textureTarget = texture.target;
218
+ } else {
219
+ textureTarget = target;
220
+ }
221
+
222
+ if (!isSubCopy) {
223
+ device.gl.copyTexImage2D(
224
+ textureTarget,
225
+ targetMipmaplevel,
226
+ targetInternalFormat,
227
+ sourceX,
228
+ sourceY,
229
+ width,
230
+ height,
231
+ 0 /* border must be 0 */
232
+ );
233
+ } else {
234
+ switch (textureTarget) {
235
+ case GL.TEXTURE_2D:
236
+ case GL.TEXTURE_CUBE_MAP:
237
+ device.gl.copyTexSubImage2D(
238
+ textureTarget,
239
+ targetMipmaplevel,
240
+ targetX,
241
+ targetY,
242
+ sourceX,
243
+ sourceY,
244
+ width,
245
+ height
246
+ );
247
+ break;
248
+ case GL.TEXTURE_2D_ARRAY:
249
+ case GL.TEXTURE_3D:
250
+ device.gl.copyTexSubImage3D(
251
+ textureTarget,
252
+ targetMipmaplevel,
253
+ targetX,
254
+ targetY,
255
+ targetZ,
256
+ sourceX,
257
+ sourceY,
258
+ width,
259
+ height
260
+ );
261
+ break;
262
+ default:
263
+ }
264
+ }
265
+ if (texture) {
266
+ texture.unbind();
267
+ }
268
+ // @ts-expect-error
269
+ device.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
270
+ if (deleteFramebuffer) {
271
+ framebuffer.destroy();
272
+ }
273
+ return texture;
274
+ }
275
+
276
+ function getFramebuffer(source: Texture | Framebuffer): {
277
+ framebuffer: Framebuffer;
278
+ deleteFramebuffer: boolean;
279
+ } {
280
+ if (!(source instanceof Framebuffer)) {
281
+ return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};
282
+ }
283
+ return {framebuffer: source, deleteFramebuffer: false};
284
+ }
285
+
286
+ /**
287
+ * Wraps a given texture into a framebuffer object, that can be further used
288
+ * to read data from the texture object.
289
+ */
290
+ export function toFramebuffer(texture: Texture, props?: FramebufferProps): Framebuffer {
291
+ const {device, width, height, id} = texture;
292
+ const framebuffer = device.createFramebuffer({
293
+ ...props,
294
+ id: `framebuffer-for-${id}`,
295
+ width,
296
+ height,
297
+ colorAttachments: [texture]
298
+ });
299
+ return framebuffer;
300
+ }
301
+
302
+ function getPixelArray(
303
+ pixelArray,
304
+ type,
305
+ format,
306
+ width: number,
307
+ height: number
308
+ ): Uint8Array | Uint16Array | Float32Array {
309
+ if (pixelArray) {
310
+ return pixelArray;
311
+ }
312
+ // Allocate pixel array if not already available, using supplied type
313
+ type = type || GL.UNSIGNED_BYTE;
314
+ const ArrayType = getTypedArrayFromGLType(type, {clamped: false});
315
+ const components = glFormatToComponents(format);
316
+ // TODO - check for composite type (components = 1).
317
+ return new ArrayType(width * height * components) as Uint8Array | Uint16Array | Float32Array;
318
+ }
@@ -0,0 +1,47 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {assert} from '@luma.gl/core';
6
+ import {GL} from '@luma.gl/constants';
7
+
8
+ // Returns number of components in a specific readPixels WebGL format
9
+ export function glFormatToComponents(format) {
10
+ switch (format) {
11
+ case GL.ALPHA:
12
+ case GL.R32F:
13
+ case GL.RED:
14
+ return 1;
15
+ case GL.RG32F:
16
+ case GL.RG:
17
+ return 2;
18
+ case GL.RGB:
19
+ case GL.RGB32F:
20
+ return 3;
21
+ case GL.RGBA:
22
+ case GL.RGBA32F:
23
+ return 4;
24
+ // TODO: Add support for additional WebGL2 formats
25
+ default:
26
+ assert(false);
27
+ return 0;
28
+ }
29
+ }
30
+
31
+ // Return byte count for given readPixels WebGL type
32
+ export function glTypeToBytes(type) {
33
+ switch (type) {
34
+ case GL.UNSIGNED_BYTE:
35
+ return 1;
36
+ case GL.UNSIGNED_SHORT_5_6_5:
37
+ case GL.UNSIGNED_SHORT_4_4_4_4:
38
+ case GL.UNSIGNED_SHORT_5_5_5_1:
39
+ return 2;
40
+ case GL.FLOAT:
41
+ return 4;
42
+ // TODO: Add support for additional WebGL2 types
43
+ default:
44
+ assert(false);
45
+ return 0;
46
+ }
47
+ }
@@ -1,28 +1,20 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
2
4
 
3
- import {TypedArray} from '@luma.gl/api';
4
- import GL from '@luma.gl/constants';
5
- import {GLType} from '../types/webgl'
5
+ import {TypedArray, TypedArrayConstructor} from '@luma.gl/core';
6
+ import {GL, GLDataType, GLPixelType} from '@luma.gl/constants';
6
7
 
7
8
  const ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';
8
9
 
9
- type TypedArrayConstructor =
10
- | Float32ArrayConstructor
11
- | Uint16ArrayConstructor
12
- | Uint32ArrayConstructor
13
- | Uint8ArrayConstructor
14
- | Uint8ClampedArrayConstructor
15
- | Int8ArrayConstructor
16
- | Int16ArrayConstructor
17
- | Int32ArrayConstructor;
18
-
19
10
  /**
20
11
  * Converts TYPED ARRAYS to corresponding GL constant
21
12
  * Used to auto deduce gl parameter types
22
- * @param {*} arrayOrType
13
+ * @deprecated Use getDataTypeFromTypedArray
14
+ * @param arrayOrType
23
15
  * @returns
24
16
  */
25
- export function getGLTypeFromTypedArray(arrayOrType: TypedArray): GLType {
17
+ export function getGLTypeFromTypedArray(arrayOrType: TypedArray): GLDataType {
26
18
  // If typed array, look up constructor
27
19
  const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;
28
20
  switch (type) {
@@ -50,13 +42,14 @@ export function getGLTypeFromTypedArray(arrayOrType: TypedArray): GLType {
50
42
  /**
51
43
  * Converts GL constant to corresponding TYPED ARRAY
52
44
  * Used to auto deduce gl parameter types
53
- * @param {*} glType
54
- * @param {*} param1
45
+ * @deprecated Use getTypedArrayFromDataType
46
+ * @param glType
47
+ * @param param1
55
48
  * @returns
56
49
  */
57
50
  // eslint-disable-next-line complexity
58
51
  export function getTypedArrayFromGLType(
59
- glType: any,
52
+ glType: GLDataType | GLPixelType,
60
53
  options?: {
61
54
  clamped?: boolean;
62
55
  }
@@ -90,14 +83,14 @@ export function getTypedArrayFromGLType(
90
83
  * Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)
91
84
  * https: *stackoverflow.com/questions/41969562/
92
85
  * how-can-i-flip-the-result-of-webglrenderingcontext-readpixels
93
- * @param {*} param0
86
+ * @param param0
94
87
  */
95
- export function flipRows(options: {
96
- data: any;
97
- width: any;
98
- height: any;
88
+ export function flipRows(options: {
89
+ data: TypedArray;
90
+ width: number;
91
+ height: number;
99
92
  bytesPerPixel?: number;
100
- temp?: any;
93
+ temp?: Uint8Array;
101
94
  }): void {
102
95
  const {data, width, height, bytesPerPixel = 4, temp} = options;
103
96
  const bytesPerRow = width * bytesPerPixel;
@@ -116,12 +109,7 @@ export function getTypedArrayFromGLType(
116
109
  }
117
110
  }
118
111
 
119
-
120
- export function scalePixels(options: {
121
- data: any;
122
- width: any;
123
- height: any;
124
- }): {
112
+ export function scalePixels(options: {data: TypedArray; width: number; height: number}): {
125
113
  data: Uint8Array;
126
114
  width: number;
127
115
  height: number;
@@ -1,5 +1,8 @@
1
- // luma.gl, MIT license
2
- import {log, loadScript} from '@luma.gl/api';
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {log, loadScript} from '@luma.gl/core';
3
6
 
4
7
  /** Spector debug initialization options */
5
8
  type SpectorProps = {
@@ -23,6 +26,7 @@ let spector: any = null;
23
26
  let initialized: boolean = false;
24
27
 
25
28
  declare global {
29
+ // eslint-disable-next-line no-var
26
30
  var SPECTOR: any;
27
31
  }
28
32
 
@@ -31,8 +35,8 @@ export async function loadSpectorJS(props?: SpectorProps) {
31
35
  if (!globalThis.SPECTOR) {
32
36
  try {
33
37
  await loadScript(SPECTOR_CDN_URL);
34
- } catch(error) {
35
- log.warn(String(error))
38
+ } catch (error) {
39
+ log.warn(String(error));
36
40
  }
37
41
  }
38
42
  }
@@ -44,7 +48,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
44
48
  }
45
49
 
46
50
  if (!spector && globalThis.SPECTOR) {
47
- log.probe(LOG_LEVEL, "SPECTOR found and initialized")();
51
+ log.probe(LOG_LEVEL, 'SPECTOR found and initialized')();
48
52
  spector = new globalThis.SPECTOR.Spector();
49
53
  if (globalThis.luma) {
50
54
  globalThis.luma.spector = spector;
@@ -61,14 +65,16 @@ export function initializeSpectorJS(props?: SpectorProps) {
61
65
  // enables recording some extra information merged in the capture like texture memory sizes and formats
62
66
  spector.spyCanvases();
63
67
  // A callback when results are ready
64
- spector?.onCaptureStarted.add((capture: unknown) => log.info(`Spector capture started:`, capture)());
68
+ spector?.onCaptureStarted.add((capture: unknown) =>
69
+ log.info('Spector capture started:', capture)()
70
+ );
65
71
  spector?.onCapture.add((capture: unknown) => {
66
- log.info(`Spector capture complete:`, capture)();
72
+ log.info('Spector capture complete:', capture)();
67
73
  // Use undocumented Spector API to open the UI with our capture
68
74
  // See https://github.com/BabylonJS/Spector.js/blob/767ad1195a25b85a85c381f400eb50a979239eca/src/spector.ts#L124
69
- spector?.getResultUI()
75
+ spector?.getResultUI();
70
76
  spector?.resultView.display();
71
- spector?.resultView.addCapture(capture)
77
+ spector?.resultView.addCapture(capture);
72
78
  });
73
79
  }
74
80
 
@@ -82,7 +88,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
82
88
  // spector?.captureCanvas(props?.canvas);
83
89
  spector?.startCapture(props?.canvas, 500); // 500 commands
84
90
  new Promise(resolve => setTimeout(resolve, 2000)).then(_ => {
85
- log.info(`Spector capture stopped after 2 seconds`)();
91
+ log.info('Spector capture stopped after 2 seconds')();
86
92
  spector?.stopCapture();
87
93
  // spector?.displayUI();
88
94
  });