@luma.gl/webgl 9.0.0-alpha.8 → 9.0.0-beta.1

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 (525) 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 +89 -74
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +29 -180
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +306 -343
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +9 -25
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +49 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +58 -138
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +67 -101
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -175
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +98 -12
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -44
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +51 -31
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +123 -244
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +12 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +92 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +205 -158
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +192 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +17 -18
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  144. package/dist/context/context/create-browser-context.js +11 -19
  145. package/dist/context/context/create-browser-context.js.map +1 -1
  146. package/dist/context/context/create-headless-context.d.ts +1 -1
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  148. package/dist/context/context/create-headless-context.js +6 -7
  149. package/dist/context/context/create-headless-context.js.map +1 -1
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +7 -19
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +18 -41
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -17
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +27 -31
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +17 -40
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +25 -61
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +9344 -0
  198. package/dist/index.cjs +6556 -0
  199. package/dist/index.d.ts +23 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -27
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +120 -43
  209. package/src/adapter/converters/sampler-parameters.ts +54 -126
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +265 -192
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +5 -2
  214. package/src/adapter/device-helpers/device-limits.ts +4 -2
  215. package/src/adapter/device-helpers/get-device-info.ts +72 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
  218. package/src/adapter/helpers/get-shader-layout.ts +87 -131
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/webgl-buffer.ts +101 -106
  226. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  227. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  228. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  229. package/src/adapter/resources/webgl-framebuffer.ts +86 -133
  230. package/src/adapter/resources/webgl-render-pass.ts +165 -4
  231. package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
  232. package/src/adapter/resources/webgl-sampler.ts +12 -8
  233. package/src/adapter/resources/webgl-shader.ts +32 -27
  234. package/src/adapter/resources/webgl-texture.ts +117 -91
  235. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  236. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  237. package/src/adapter/webgl-canvas-context.ts +18 -13
  238. package/src/adapter/webgl-device.ts +327 -92
  239. package/src/classic/accessor.ts +8 -5
  240. package/src/classic/clear.ts +113 -0
  241. package/src/classic/copy-and-blit.ts +312 -0
  242. package/src/classic/format-utils.ts +46 -0
  243. package/src/classic/typed-array-utils.ts +19 -27
  244. package/src/context/context/create-browser-context.ts +53 -31
  245. package/src/context/context/create-headless-context.ts +5 -2
  246. package/src/context/context/webgl-checks.ts +3 -1
  247. package/src/context/debug/spector.ts +8 -5
  248. package/src/context/debug/webgl-developer-tools.ts +26 -17
  249. package/src/context/parameters/unified-parameter-api.ts +15 -9
  250. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  251. package/src/context/polyfill/context-data.ts +30 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  253. package/src/context/polyfill/polyfill-context.ts +15 -8
  254. package/src/context/polyfill/polyfill-table.ts +20 -15
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  256. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  257. package/src/context/state-tracker/track-context-state.ts +13 -10
  258. package/src/context/state-tracker/with-parameters.ts +13 -4
  259. package/src/index.ts +65 -39
  260. package/src/types.ts +5 -0
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  263. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  264. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  265. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  266. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  267. package/dist/adapter/helpers/attribute-utils.js +0 -81
  268. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  270. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  271. package/dist/adapter/helpers/uniforms.js +0 -99
  272. package/dist/adapter/helpers/uniforms.js.map +0 -1
  273. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  275. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  276. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  277. package/dist/bundle.d.ts +0 -2
  278. package/dist/bundle.d.ts.map +0 -1
  279. package/dist/bundle.js +0 -5
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/classic/buffer.d.ts +0 -95
  282. package/dist/classic/buffer.d.ts.map +0 -1
  283. package/dist/classic/buffer.js +0 -392
  284. package/dist/classic/buffer.js.map +0 -1
  285. package/dist/context/context/context-state.d.ts +0 -18
  286. package/dist/context/context/context-state.d.ts.map +0 -1
  287. package/dist/context/context/context-state.js +0 -26
  288. package/dist/context/context/context-state.js.map +0 -1
  289. package/dist/context/context/device-pixels.d.ts +0 -25
  290. package/dist/context/context/device-pixels.d.ts.map +0 -1
  291. package/dist/context/context/device-pixels.js +0 -103
  292. package/dist/context/context/device-pixels.js.map +0 -1
  293. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  294. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  295. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  296. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  297. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  298. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  299. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  300. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  301. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  302. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  303. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  304. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  305. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  306. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  307. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  308. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  309. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  310. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  311. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  312. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  313. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  314. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  315. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  316. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  317. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  318. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  319. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  320. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  321. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  322. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  323. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  324. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  325. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  326. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  327. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  328. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  329. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  330. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  331. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  332. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  333. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  334. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  335. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  336. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  338. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  339. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  340. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  341. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  342. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  343. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  344. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  345. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  346. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  347. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  348. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  349. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  350. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  351. package/dist/es5/adapter/webgl-device.js +0 -463
  352. package/dist/es5/adapter/webgl-device.js.map +0 -1
  353. package/dist/es5/bundle.js +0 -7
  354. package/dist/es5/bundle.js.map +0 -1
  355. package/dist/es5/classic/accessor.js +0 -181
  356. package/dist/es5/classic/accessor.js.map +0 -1
  357. package/dist/es5/classic/buffer.js +0 -478
  358. package/dist/es5/classic/buffer.js.map +0 -1
  359. package/dist/es5/classic/typed-array-utils.js +0 -126
  360. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  361. package/dist/es5/context/context/context-state.js +0 -31
  362. package/dist/es5/context/context/context-state.js.map +0 -1
  363. package/dist/es5/context/context/create-browser-context.js +0 -83
  364. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  365. package/dist/es5/context/context/create-headless-context.js +0 -60
  366. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  367. package/dist/es5/context/context/device-pixels.js +0 -121
  368. package/dist/es5/context/context/device-pixels.js.map +0 -1
  369. package/dist/es5/context/context/webgl-checks.js +0 -54
  370. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  371. package/dist/es5/context/debug/spector.js +0 -133
  372. package/dist/es5/context/debug/spector.js.map +0 -1
  373. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  374. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  375. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  376. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  377. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  378. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  379. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  380. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  381. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  382. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  383. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  384. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  385. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  386. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  387. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  388. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  389. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  390. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  391. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  392. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  393. package/dist/es5/index.js +0 -290
  394. package/dist/es5/index.js.map +0 -1
  395. package/dist/es5/init.js +0 -10
  396. package/dist/es5/init.js.map +0 -1
  397. package/dist/es5/types/webgl.js +0 -6
  398. package/dist/es5/types/webgl.js.map +0 -1
  399. package/dist/es5/types.js +0 -2
  400. package/dist/es5/types.js.map +0 -1
  401. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  402. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  403. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  404. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  405. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  406. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  407. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  408. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  409. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  410. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  411. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  412. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  413. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  414. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  415. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  416. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  417. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  418. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  419. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  420. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  421. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  422. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  423. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  424. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  425. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  426. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  427. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  428. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  429. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  430. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  431. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  432. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  433. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  434. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  435. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  436. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  437. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  438. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  439. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  440. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  441. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  442. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  443. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  444. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  445. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  446. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  447. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  448. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  449. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  450. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  451. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  452. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  453. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  454. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  455. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  456. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  457. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  458. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  459. package/dist/esm/adapter/webgl-device.js +0 -337
  460. package/dist/esm/adapter/webgl-device.js.map +0 -1
  461. package/dist/esm/bundle.js +0 -5
  462. package/dist/esm/bundle.js.map +0 -1
  463. package/dist/esm/classic/accessor.js +0 -144
  464. package/dist/esm/classic/accessor.js.map +0 -1
  465. package/dist/esm/classic/buffer.js +0 -392
  466. package/dist/esm/classic/buffer.js.map +0 -1
  467. package/dist/esm/classic/typed-array-utils.js +0 -112
  468. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  469. package/dist/esm/context/context/context-state.js +0 -26
  470. package/dist/esm/context/context/context-state.js.map +0 -1
  471. package/dist/esm/context/context/create-browser-context.js +0 -61
  472. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  473. package/dist/esm/context/context/create-headless-context.js +0 -43
  474. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  475. package/dist/esm/context/context/device-pixels.js +0 -103
  476. package/dist/esm/context/context/device-pixels.js.map +0 -1
  477. package/dist/esm/context/context/webgl-checks.js +0 -34
  478. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  479. package/dist/esm/context/debug/spector.js +0 -76
  480. package/dist/esm/context/debug/spector.js.map +0 -1
  481. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  482. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  483. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  484. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  485. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  487. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  489. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  490. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  491. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  492. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  493. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  495. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  496. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  497. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  498. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  499. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  500. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  501. package/dist/esm/index.js +0 -28
  502. package/dist/esm/index.js.map +0 -1
  503. package/dist/esm/init.js +0 -4
  504. package/dist/esm/init.js.map +0 -1
  505. package/dist/esm/types/webgl.js +0 -2
  506. package/dist/esm/types/webgl.js.map +0 -1
  507. package/dist/esm/types.js +0 -2
  508. package/dist/esm/types.js.map +0 -1
  509. package/dist/init.d.ts +0 -2
  510. package/dist/init.d.ts.map +0 -1
  511. package/dist/init.js +0 -4
  512. package/dist/init.js.map +0 -1
  513. package/dist/types/webgl.d.ts +0 -145
  514. package/dist/types/webgl.d.ts.map +0 -1
  515. package/dist/types/webgl.js +0 -2
  516. package/dist/types/webgl.js.map +0 -1
  517. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  518. package/src/adapter/helpers/attribute-utils.ts +0 -61
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/classic/buffer.ts +0 -474
  522. package/src/context/context/context-state.ts +0 -41
  523. package/src/context/context/device-pixels.ts +0 -158
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -284
@@ -1,29 +1,20 @@
1
- /* eslint-disable no-inline-comments */
2
- import {assert, ResourceProps} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import WebGLDevice from '../webgl-device';
5
- import WebGLResource from './webgl-resource';
6
- import {
7
- isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel
8
- } from '../converters/renderbuffer-formats';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {assert, ResourceProps, TextureFormat} from '@luma.gl/core';
5
+ import {GL} from '@luma.gl/constants';
6
+ import {WebGLDevice} from '../webgl-device';
7
+ import {WebGLResource} from './webgl-resource';
8
+ import {isRenderbufferFormatSupported} from '../converters/texture-formats';
9
+ import {convertTextureFormatToGL, getTextureFormatBytesPerPixel} from '../converters/texture-formats';
9
10
 
10
11
  export type RenderbufferProps = ResourceProps & {
11
- format: number;
12
+ format: TextureFormat;
12
13
  width?: number;
13
14
  height?: number;
14
15
  samples?: number;
15
16
  };
16
17
 
17
- const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
18
- id: undefined,
19
- handle: undefined,
20
- userData: undefined,
21
- format: 0,
22
- width: 1,
23
- height: 1,
24
- samples: 0
25
- };
26
-
27
18
  /**
28
19
  * Renderbuffers are GPU objects that contain images.
29
20
  * In contrast to Textures they are optimized for use as render targets, with Framebuffers.
@@ -34,36 +25,54 @@ const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
34
25
  * use Textures instead.
35
26
  * Renderbuffer objects also natively accommodate Multisampling (MSAA).
36
27
  */
37
- export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
38
- get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
28
+ export class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
29
+ static override readonly defaultProps: Required<RenderbufferProps> = {
30
+ id: undefined,
31
+ handle: undefined,
32
+ userData: undefined,
33
+ format: undefined, // 'depth16unorm'
34
+ width: 1,
35
+ height: 1,
36
+ samples: 0
37
+ };
38
+
39
+ override get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
39
40
 
40
41
  get width(): number { return this.props.width; }
41
42
  get height(): number { return this.props.height; }
42
- get format(): number { return this.props.format; }
43
+ get format(): TextureFormat { return this.props.format; }
43
44
  get samples(): number { return this.props.samples; }
45
+ get attachment() { return }
44
46
 
45
- static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
46
- return !options.format || isRenderbufferFormatSupported(gl, options.format);
47
+ /** WebGL format constant */
48
+ glFormat: GL;
49
+
50
+ static isTextureFormatSupported(device: WebGLDevice, format: TextureFormat): boolean {
51
+ return isRenderbufferFormatSupported(device.gl, format);
47
52
  }
48
53
 
49
54
  constructor(device: WebGLDevice, props: RenderbufferProps) {
50
- super(device, props, DEFAULT_RENDERBUFFER_PROPS);
55
+ // TODO - remove temporary sanity check
56
+ if (typeof props.format === 'number') {
57
+ throw new Error('Renderbuffer');
58
+ }
59
+ super(device, props, WEBGLRenderbuffer.defaultProps);
60
+ this.glFormat = convertTextureFormatToGL(this.props.format, device.isWebGL2);
51
61
  this._initialize(this.props);
52
62
  }
53
63
 
54
- resize(size: {width: number, height: number}): this {
64
+ resize(size: {width: number, height: number}): void {
55
65
  // Don't resize if width/height haven't changed
56
66
  if (size.width !== this.width || size.height !== this.height) {
57
67
  Object.assign(this.props, {...size, format: this.format, samples: this.samples});
58
68
  this._initialize(this.props);
59
69
  }
60
- return this;
61
70
  }
62
71
 
63
72
  // PRIVATE METHODS
64
73
 
65
74
  /** Creates and initializes a renderbuffer object's data store */
66
- protected _initialize(props: Required<RenderbufferProps>) {
75
+ protected _initialize(props: Required<RenderbufferProps>): void {
67
76
  const {format, width, height, samples} = props;
68
77
  assert(format, 'Needs format');
69
78
 
@@ -72,33 +81,30 @@ export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps>
72
81
  this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
73
82
 
74
83
  if (samples !== 0 && this.device.isWebGL2) {
75
- // @ts-expect-error
76
- this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
84
+ this.gl2.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, this.glFormat, width, height);
77
85
  } else {
78
- this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);
86
+ this.gl.renderbufferStorage(GL.RENDERBUFFER, this.glFormat, width, height);
79
87
  }
80
88
 
81
89
  this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
82
90
 
83
91
  this.trackAllocatedMemory(
84
- width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)
92
+ width * height * (samples || 1) * getTextureFormatBytesPerPixel(this.glFormat, this.device.isWebGL2)
85
93
  );
86
-
87
- return this;
88
94
  }
89
95
 
90
96
  // RESOURCE IMPLEMENTATION
91
97
 
92
- _createHandle() {
98
+ override _createHandle() {
93
99
  return this.gl.createRenderbuffer();
94
100
  }
95
101
 
96
- _deleteHandle(): void {
102
+ override _deleteHandle(): void {
97
103
  this.gl.deleteRenderbuffer(this.handle);
98
104
  this.trackDeallocatedMemory();
99
105
  }
100
106
 
101
- _bindHandle(handle: WEBGLRenderbuffer): void {
107
+ override _bindHandle(handle: WEBGLRenderbuffer): void {
102
108
  this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
103
109
  }
104
110
  }
@@ -1,21 +1,21 @@
1
1
  // luma.gl, MIT license
2
- import {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/api';
3
- import type {Device, ResourceProps} from '@luma.gl/api';
4
- import GL from '@luma.gl/constants';
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/core';
5
+ import type {Device, ResourceProps} from '@luma.gl/core';
6
+ import {GL} from '@luma.gl/constants';
5
7
  import {isWebGL2, assertWebGLContext} from '../../context/context/webgl-checks';
6
- import WebGLDevice from '../webgl-device';
8
+ import {WebGLDevice} from '../webgl-device';
7
9
 
8
10
  // Requires full GL enum to be bundled... Make these bindings dependent on dynamic import (debug)?
9
- import {getKey, getKeyValue} from './constants-to-keys';
11
+ import {getKeyValue} from './constants-to-keys';
10
12
 
11
13
  const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
12
14
 
13
15
  /**
14
16
  * Base class for WebGL object wrappers
15
17
  */
16
- export default abstract class WebGLResource<Props> extends Resource<Props> {
17
- id: string;
18
- userData: any;
18
+ export abstract class WebGLResource<Props extends ResourceProps> extends Resource<Props> {
19
19
  readonly device: WebGLDevice;
20
20
  readonly gl: WebGLRenderingContext;
21
21
  readonly gl2: WebGL2RenderingContext;
@@ -34,12 +34,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
34
34
  assertWebGLContext(gl);
35
35
 
36
36
  // extends
37
- // @ts-expect-error
38
- const {id, userData = {}} = props || {};
37
+ const {id} = props || {};
39
38
  this.gl = gl;
40
39
  this.gl2 = gl as WebGL2RenderingContext;
41
40
  this.id = id || uid(this.constructor.name);
42
- this.userData = userData;
43
41
 
44
42
  // Set the handle
45
43
  // If handle was provided, use it, otherwise create a new handle
@@ -48,7 +46,6 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
48
46
  // this.glCount = glGetContextLossCount(this.gl);
49
47
 
50
48
  // Default VertexArray needs to be created with null handle, so compare against undefined
51
- // @ts-expect-error
52
49
  this._handle = props?.handle;
53
50
  if (this._handle === undefined) {
54
51
  this._handle = this._createHandle();
@@ -57,7 +54,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
57
54
  this.byteLength = 0;
58
55
  }
59
56
 
60
- toString(): string {
57
+ override toString(): string {
61
58
  return `${this.constructor.name}(${this.id})`;
62
59
  }
63
60
 
@@ -74,11 +71,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
74
71
  return this._handle;
75
72
  }
76
73
 
77
- destroy(): void {
78
- this.delete();
79
- }
80
-
81
- delete({deleteChildren = false} = {}) {
74
+ override delete({deleteChildren = false} = {}) {
82
75
  // Delete this object, and get refs to any children
83
76
  // @ts-expect-error
84
77
  const children = this._handle && this._deleteHandle(this._handle);
@@ -91,7 +84,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
91
84
  // @ts-expect-error
92
85
  if (children && deleteChildren) {
93
86
  // @ts-expect-error
94
- children.filter(Boolean).forEach((child) => child.delete());
87
+ children.filter(Boolean).forEach((child) => child.destroy());
95
88
  }
96
89
 
97
90
  return this;
@@ -130,7 +123,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
130
123
  * @param name
131
124
  * @return param
132
125
  */
133
- getParameter(pname: number, props = {}): any {
126
+ getParameter(pname: number, props: any = {}): any {
134
127
  pname = getKeyValue(this.gl, pname);
135
128
  assert(pname);
136
129
 
@@ -163,7 +156,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
163
156
  // Many resources support a getParameter call -
164
157
  // getParameters will get all parameters - slow but useful for debugging
165
158
  // eslint-disable-next-line complexity
166
- getParameters(options: {parameters?, keys?} = {}) {
159
+ getParameters(options: {parameters?: any, keys?: any} = {}) {
167
160
  const {parameters, keys} = options;
168
161
 
169
162
  // Get parameter definitions for this Resource
@@ -188,10 +181,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
188
181
  (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
189
182
 
190
183
  if (parameterAvailable) {
191
- const key = keys ? getKey(this.gl, pname) : pname;
184
+ const key = keys ? this.device.getGLKey(pname) : pname;
192
185
  values[key] = this.getParameter(pname, options);
193
186
  if (keys && parameter.type === 'GLenum') {
194
- values[key] = getKey(this.gl, values[key]);
187
+ values[key] = this.device.getGLKey(values[key]);
195
188
  }
196
189
  }
197
190
  }
@@ -1,25 +1,29 @@
1
- import type {BufferProps} from '@luma.gl/api';
2
- import {Buffer, assert} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import WebGLDevice from '../webgl-device';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
5
3
 
6
- const DEBUG_DATA_LENGTH = 10;
4
+ import type {BufferProps} from '@luma.gl/core';
5
+ import {Buffer, assert} from '@luma.gl/core';
6
+ import {GL} from '@luma.gl/constants';
7
+ import {WebGLDevice} from '../webgl-device';
7
8
 
8
9
  /** WebGL Buffer interface */
9
- export default class WEBGLBuffer extends Buffer {
10
+ export class WEBGLBuffer extends Buffer {
10
11
  readonly device: WebGLDevice;
11
12
  readonly gl: WebGLRenderingContext;
12
13
  readonly gl2: WebGL2RenderingContext | null;
13
14
  readonly handle: WebGLBuffer;
14
- readonly target: number;
15
15
 
16
+ /** Target in OpenGL defines the type of buffer */
17
+ readonly glTarget: GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
18
+ /** Usage is a hint on how frequently the buffer will be updates */
19
+ readonly glUsage: GL.STATIC_DRAW | GL.DYNAMIC_DRAW;
20
+ /** Index type is needed when issuing draw calls, so we pre-compute it */
21
+ readonly glIndexType: GL.UNSIGNED_SHORT | GL.UNSIGNED_INT = GL.UNSIGNED_SHORT;
22
+
23
+ /** Number of bytes allocated on the GPU for this buffer */
16
24
  byteLength: number;
25
+ /** Number of bytes used */
17
26
  bytesUsed: number;
18
- debugData: ArrayBuffer | null = null;
19
-
20
- webglUsage: number;
21
-
22
- accessor: {};
23
27
 
24
28
  constructor(device: WebGLDevice, props: BufferProps = {}) {
25
29
  super(device, props);
@@ -28,19 +32,16 @@ export default class WEBGLBuffer extends Buffer {
28
32
  this.gl = this.device.gl;
29
33
  this.gl2 = this.device.gl2;
30
34
 
31
- const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;
35
+ const handle = typeof props === 'object' ? props.handle : undefined;
32
36
  this.handle = handle || this.gl.createBuffer();
33
- // @ts-expect-error Add metadata for spector
34
- this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
35
-
36
- // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
37
- // otherwise buffer type will lock to generic (non-element) buffer
38
- // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
39
- // @ts-expect-error Hack - Checking for subclass prop
40
- this.target = this.props.target || getWebGLTarget(this.props.usage);
41
- // @ts-expect-error Hack - Checking for subclass prop
42
- this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
43
- this.debugData = null;
37
+ device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data});
38
+
39
+ // - In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
40
+ // otherwise buffer type will lock to generic (non-element) buffer
41
+ // - In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
42
+ this.glTarget = getWebGLTarget(this.props.usage);
43
+ this.glUsage = getWebGLUsage(this.props.usage);
44
+ this.glIndexType = this.props.indexType === 'uint32' ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;
44
45
 
45
46
  // Set data: (re)initializes the buffer
46
47
  if (props.data) {
@@ -48,32 +49,28 @@ export default class WEBGLBuffer extends Buffer {
48
49
  } else {
49
50
  this._initWithByteLength(props.byteLength || 0);
50
51
  }
51
-
52
- // Deprecated: Merge main props and accessor
53
- // this.accessor = {...props.accessor};
54
-
55
- // Object.seal(this);
56
52
  }
57
53
 
58
- // PRIVATE METHODS
59
-
60
- // Allocate a new buffer and initialize to contents of typed array
61
- _initWithData(data, byteOffset: number = 0, byteLength: number = data.byteLength + byteOffset): this {
62
- assert(ArrayBuffer.isView(data));
54
+ // PRIVATE METHODS
63
55
 
64
- const target = this._getWriteTarget();
65
-
66
- this.gl.bindBuffer(target, this.handle);
67
- this.gl.bufferData(target, byteLength, this.webglUsage);
68
- this.gl.bufferSubData(target, byteOffset, data);
69
- this.gl.bindBuffer(target, null);
56
+ /** Allocate a new buffer and initialize to contents of typed array */
57
+ _initWithData(
58
+ data: ArrayBuffer | ArrayBufferView,
59
+ byteOffset: number = 0,
60
+ byteLength: number = data.byteLength + byteOffset
61
+ ): void {
62
+ // const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
63
+ const glTarget = this.glTarget;
64
+ this.gl.bindBuffer(glTarget, this.handle);
65
+ this.gl.bufferData(glTarget, byteLength, this.glUsage);
66
+ this.gl.bufferSubData(glTarget, byteOffset, data);
67
+ this.gl.bindBuffer(glTarget, null);
70
68
 
71
- this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
72
69
  this.bytesUsed = byteLength;
73
70
  this.byteLength = byteLength;
74
- this.trackAllocatedMemory(byteLength);
75
71
 
76
- return this;
72
+ this._setDebugData(data, byteOffset, byteLength);
73
+ this.trackAllocatedMemory(byteLength);
77
74
  }
78
75
 
79
76
  // Allocate a GPU buffer of specified size.
@@ -88,59 +85,63 @@ export default class WEBGLBuffer extends Buffer {
88
85
  data = new Float32Array(0);
89
86
  }
90
87
 
91
- const target = this._getWriteTarget();
88
+ // const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
89
+ const glTarget = this.glTarget;
92
90
 
93
- this.gl.bindBuffer(target, this.handle);
94
- this.gl.bufferData(target, data, this.webglUsage);
95
- this.gl.bindBuffer(target, null);
91
+ this.gl.bindBuffer(glTarget, this.handle);
92
+ this.gl.bufferData(glTarget, data, this.glUsage);
93
+ this.gl.bindBuffer(glTarget, null);
96
94
 
97
- this.debugData = null;
98
95
  this.bytesUsed = byteLength;
99
96
  this.byteLength = byteLength;
100
97
 
98
+ this._setDebugData(null, 0, byteLength);
99
+ this.trackAllocatedMemory(byteLength);
100
+
101
101
  return this;
102
102
  }
103
103
 
104
- destroy(): void {
105
- if (this.handle) {
104
+ override destroy(): void {
105
+ if (!this.destroyed && this.handle) {
106
106
  this.removeStats();
107
107
  this.trackDeallocatedMemory();
108
108
  this.gl.deleteBuffer(this.handle);
109
- // this.handle = null;
110
109
  this.destroyed = true;
110
+ // @ts-expect-error
111
+ this.handle = null;
111
112
  }
112
113
  }
113
114
 
114
- write(data: ArrayBufferView, byteOffset: number = 0): void {
115
+ override write(data: ArrayBufferView, byteOffset: number = 0): void {
115
116
  const srcOffset = 0;
116
- const byteLength = data.byteLength;
117
+ const byteLength = undefined; // data.byteLength;
117
118
 
118
119
  // Create the buffer - binding it here for the first time locks the type
119
120
  // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
120
- const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
121
- this.gl.bindBuffer(target, this.handle);
121
+ const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
122
+ this.gl.bindBuffer(glTarget, this.handle);
122
123
  // WebGL2: subData supports additional srcOffset and length parameters
123
124
  if (srcOffset !== 0 || byteLength !== undefined) {
124
125
  this.device.assertWebGL2();
125
-
126
- // @ts-expect-error
127
- this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
126
+ this.gl2.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);
128
127
  } else {
129
- this.gl.bufferSubData(target, byteOffset, data);
128
+ this.gl.bufferSubData(glTarget, byteOffset, data);
130
129
  }
131
- this.gl.bindBuffer(target, null);
130
+ this.gl.bindBuffer(glTarget, null);
132
131
 
133
- // TODO - update local `data` if offsets are right
134
- // this.debugData = data.slice(byteOffset, 40);
132
+ this._setDebugData(data, byteOffset, data.byteLength);
135
133
  }
136
134
 
137
- /** Read data from the buffer */
138
- async readAsync(
139
- byteOffset: number = 0,
140
- byteLength?: number
141
- ): Promise<ArrayBuffer> {
135
+ /** Asynchronously read data from the buffer */
136
+ override async readAsync(byteOffset = 0, byteLength?: number): Promise<Uint8Array> {
137
+ return this.readSyncWebGL2(byteOffset, byteLength);
138
+ }
139
+
140
+ /** Synchronously read data from the buffer. WebGL only. */
141
+ override readSyncWebGL2(byteOffset = 0, byteLength?: number): Uint8Array {
142
142
  this.device.assertWebGL2();
143
143
 
144
+ byteLength = byteLength ?? this.byteLength - byteOffset;
144
145
  const data = new Uint8Array(byteLength);
145
146
  const dstOffset = 0;
146
147
 
@@ -149,41 +150,40 @@ export default class WEBGLBuffer extends Buffer {
149
150
  this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
150
151
  this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
151
152
 
152
- // TODO - update local `data` if offsets are 0
153
- // this.debugData = null;
153
+ // Update local `data` if offsets are 0
154
+ this._setDebugData(data, byteOffset, byteLength);
154
155
 
155
156
  return data;
156
157
  }
157
-
158
- // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)
159
-
160
- _invalidateDebugData() {
161
- this.debugData = null;
162
- }
163
-
164
- _getWriteTarget() {
165
- return this.target;
166
- // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
167
- }
168
-
169
- _getReadTarget() {
170
- return this.target;
171
- return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
172
- }
173
158
  }
174
159
 
175
- // static MAP_READ = 0x01;
176
- // static MAP_WRITE = 0x02;
177
- // static COPY_SRC = 0x0004;
178
- // static COPY_DST = 0x0008;
179
- // static INDEX = 0x0010;
180
- // static VERTEX = 0x0020;
181
- // static UNIFORM = 0x0040;
182
- // static STORAGE = 0x0080;
183
- // static INDIRECT = 0x0100;
184
- // static QUERY_RESOLVE = 0x0200;
185
-
186
- function getWebGLTarget(usage: number): GL {
160
+ /**
161
+ * Returns a WebGL buffer target
162
+ *
163
+ * @param usage
164
+ * static MAP_READ = 0x01;
165
+ * static MAP_WRITE = 0x02;
166
+ * static COPY_SRC = 0x0004;
167
+ * static COPY_DST = 0x0008;
168
+ * static INDEX = 0x0010;
169
+ * static VERTEX = 0x0020;
170
+ * static UNIFORM = 0x0040;
171
+ * static STORAGE = 0x0080;
172
+ * static INDIRECT = 0x0100;
173
+ * static QUERY_RESOLVE = 0x0200;
174
+ *
175
+ * @returns WebGL buffer targe
176
+ *
177
+ * Buffer bind points in WebGL2
178
+ * gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
179
+ * gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
180
+ * gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
181
+ * gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
182
+ * gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
183
+ */
184
+ function getWebGLTarget(
185
+ usage: number
186
+ ): GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER {
187
187
  if (usage & Buffer.INDEX) {
188
188
  return GL.ELEMENT_ARRAY_BUFFER;
189
189
  }
@@ -194,18 +194,13 @@ function getWebGLTarget(usage: number): GL {
194
194
  return GL.UNIFORM_BUFFER;
195
195
  }
196
196
 
197
- // gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
198
- // gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
199
- // gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
200
- // gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
201
- // gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
202
-
203
197
  // Binding a buffer for the first time locks the type
204
- // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
198
+ // In WebGL2, we can use GL.COPY_WRITE_BUFFER to avoid locking the type
205
199
  return GL.ARRAY_BUFFER;
206
200
  }
207
201
 
208
- function getWebGLUsage(usage: number): GL {
202
+ /** @todo usage is not passed correctly */
203
+ function getWebGLUsage(usage: number): GL.STATIC_DRAW | GL.DYNAMIC_DRAW {
209
204
  if (usage & Buffer.INDEX) {
210
205
  return GL.STATIC_DRAW;
211
206
  }
@@ -215,5 +210,5 @@ function getWebGLUsage(usage: number): GL {
215
210
  if (usage & Buffer.UNIFORM) {
216
211
  return GL.DYNAMIC_DRAW;
217
212
  }
218
- return GL.DYNAMIC_DRAW;
213
+ return GL.STATIC_DRAW;
219
214
  }