@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.51

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 (527) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +101 -73
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +74 -111
  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 +309 -346
  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 +17 -23
  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 +31 -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 +87 -143
  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 -11
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +60 -88
  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 -24
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -173
  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 +99 -11
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  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 -43
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +62 -42
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +137 -256
  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 +10 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +76 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +219 -129
  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 +191 -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 +40 -0
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  144. package/dist/context/context/create-browser-context.js +53 -0
  145. package/dist/context/context/create-browser-context.js.map +1 -0
  146. package/dist/context/context/create-headless-context.d.ts +9 -0
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  148. package/dist/context/context/create-headless-context.js +42 -0
  149. package/dist/context/context/create-headless-context.js.map +1 -0
  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 +8 -20
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +15 -39
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -19
  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 +22 -30
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +18 -41
  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 +26 -62
  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 +8624 -0
  198. package/dist/index.cjs +6570 -0
  199. package/dist/index.d.ts +26 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -26
  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 +144 -41
  209. package/src/adapter/converters/sampler-parameters.ts +103 -41
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +268 -195
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +14 -3
  214. package/src/adapter/device-helpers/device-limits.ts +5 -3
  215. package/src/adapter/device-helpers/get-device-info.ts +53 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  218. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  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-render-pipeline.ts.swp +0 -0
  226. package/src/adapter/resources/webgl-buffer.ts +67 -62
  227. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  228. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  229. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  230. package/src/adapter/resources/webgl-framebuffer.ts +90 -134
  231. package/src/adapter/resources/webgl-render-pass.ts +166 -4
  232. package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
  233. package/src/adapter/resources/webgl-sampler.ts +16 -10
  234. package/src/adapter/resources/webgl-shader.ts +33 -27
  235. package/src/adapter/resources/webgl-texture.ts +138 -99
  236. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  237. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  238. package/src/adapter/webgl-canvas-context.ts +16 -14
  239. package/src/adapter/webgl-device.ts +328 -79
  240. package/src/classic/accessor.ts +8 -18
  241. package/src/classic/clear.ts +113 -0
  242. package/src/classic/copy-and-blit.ts +311 -0
  243. package/src/classic/format-utils.ts +46 -0
  244. package/src/classic/typed-array-utils.ts +21 -27
  245. package/src/context/context/create-browser-context.ts +140 -0
  246. package/src/context/context/create-headless-context.ts +51 -0
  247. package/src/context/context/webgl-checks.ts +3 -1
  248. package/src/context/debug/spector.ts +9 -6
  249. package/src/context/debug/webgl-developer-tools.ts +23 -15
  250. package/src/context/parameters/unified-parameter-api.ts +23 -14
  251. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  252. package/src/context/polyfill/context-data.ts +30 -0
  253. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  254. package/src/context/polyfill/polyfill-context.ts +10 -9
  255. package/src/context/polyfill/polyfill-table.ts +21 -16
  256. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  257. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  258. package/src/context/state-tracker/track-context-state.ts +14 -11
  259. package/src/context/state-tracker/with-parameters.ts +13 -4
  260. package/src/index.ts +70 -35
  261. package/src/types.ts +5 -0
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  263. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  264. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  265. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  266. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  267. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  268. package/dist/adapter/helpers/attribute-utils.js +0 -81
  269. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  270. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  271. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  272. package/dist/adapter/helpers/uniforms.js +0 -99
  273. package/dist/adapter/helpers/uniforms.js.map +0 -1
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  275. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  277. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  278. package/dist/bundle.d.ts +0 -2
  279. package/dist/bundle.d.ts.map +0 -1
  280. package/dist/bundle.js +0 -5
  281. package/dist/bundle.js.map +0 -1
  282. package/dist/classic/buffer.d.ts +0 -95
  283. package/dist/classic/buffer.d.ts.map +0 -1
  284. package/dist/classic/buffer.js +0 -384
  285. package/dist/classic/buffer.js.map +0 -1
  286. package/dist/context/context/context-state.d.ts +0 -18
  287. package/dist/context/context/context-state.d.ts.map +0 -1
  288. package/dist/context/context/context-state.js +0 -26
  289. package/dist/context/context/context-state.js.map +0 -1
  290. package/dist/context/context/create-context.d.ts +0 -41
  291. package/dist/context/context/create-context.d.ts.map +0 -1
  292. package/dist/context/context/create-context.js +0 -49
  293. package/dist/context/context/create-context.js.map +0 -1
  294. package/dist/context/context/device-pixels.d.ts +0 -25
  295. package/dist/context/context/device-pixels.d.ts.map +0 -1
  296. package/dist/context/context/device-pixels.js +0 -98
  297. package/dist/context/context/device-pixels.js.map +0 -1
  298. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  299. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  300. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  301. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  302. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  303. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  305. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  307. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  308. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  309. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  310. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  311. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  313. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  315. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  316. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  317. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  318. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  319. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  320. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  321. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  322. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  323. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  324. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  325. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  326. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  327. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  328. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  329. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  330. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  331. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  333. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  335. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  337. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  339. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  341. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  343. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  345. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  347. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  349. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  351. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  353. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  354. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  355. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  356. package/dist/es5/adapter/webgl-device.js +0 -399
  357. package/dist/es5/adapter/webgl-device.js.map +0 -1
  358. package/dist/es5/bundle.js +0 -7
  359. package/dist/es5/bundle.js.map +0 -1
  360. package/dist/es5/classic/accessor.js +0 -181
  361. package/dist/es5/classic/accessor.js.map +0 -1
  362. package/dist/es5/classic/buffer.js +0 -470
  363. package/dist/es5/classic/buffer.js.map +0 -1
  364. package/dist/es5/classic/typed-array-utils.js +0 -126
  365. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  366. package/dist/es5/context/context/context-state.js +0 -31
  367. package/dist/es5/context/context/context-state.js.map +0 -1
  368. package/dist/es5/context/context/create-context.js +0 -69
  369. package/dist/es5/context/context/create-context.js.map +0 -1
  370. package/dist/es5/context/context/device-pixels.js +0 -115
  371. package/dist/es5/context/context/device-pixels.js.map +0 -1
  372. package/dist/es5/context/context/webgl-checks.js +0 -54
  373. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  374. package/dist/es5/context/debug/spector.js +0 -133
  375. package/dist/es5/context/debug/spector.js.map +0 -1
  376. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  377. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  378. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  379. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  380. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  381. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  382. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  383. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  384. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  385. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  386. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  387. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  389. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  390. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  391. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  392. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  393. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  394. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  395. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  396. package/dist/es5/index.js +0 -276
  397. package/dist/es5/index.js.map +0 -1
  398. package/dist/es5/init.js +0 -10
  399. package/dist/es5/init.js.map +0 -1
  400. package/dist/es5/types/webgl.js +0 -6
  401. package/dist/es5/types/webgl.js.map +0 -1
  402. package/dist/es5/types.js +0 -2
  403. package/dist/es5/types.js.map +0 -1
  404. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  405. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  406. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  407. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  408. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  409. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  411. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  413. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  414. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  415. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  416. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  417. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  419. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  421. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  422. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  423. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  424. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  425. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  426. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  427. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  428. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  429. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  430. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  431. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  432. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  433. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  434. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  435. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  436. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  437. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  439. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  441. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  443. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  445. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  447. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  449. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  451. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  453. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  455. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  457. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-texture.js +0 -833
  459. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  460. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  461. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  462. package/dist/esm/adapter/webgl-device.js +0 -280
  463. package/dist/esm/adapter/webgl-device.js.map +0 -1
  464. package/dist/esm/bundle.js +0 -5
  465. package/dist/esm/bundle.js.map +0 -1
  466. package/dist/esm/classic/accessor.js +0 -144
  467. package/dist/esm/classic/accessor.js.map +0 -1
  468. package/dist/esm/classic/buffer.js +0 -384
  469. package/dist/esm/classic/buffer.js.map +0 -1
  470. package/dist/esm/classic/typed-array-utils.js +0 -112
  471. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  472. package/dist/esm/context/context/context-state.js +0 -26
  473. package/dist/esm/context/context/context-state.js.map +0 -1
  474. package/dist/esm/context/context/create-context.js +0 -49
  475. package/dist/esm/context/context/create-context.js.map +0 -1
  476. package/dist/esm/context/context/device-pixels.js +0 -98
  477. package/dist/esm/context/context/device-pixels.js.map +0 -1
  478. package/dist/esm/context/context/webgl-checks.js +0 -34
  479. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  480. package/dist/esm/context/debug/spector.js +0 -76
  481. package/dist/esm/context/debug/spector.js.map +0 -1
  482. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  483. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  484. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  485. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  487. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  489. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  490. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  491. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  492. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  493. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  495. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  496. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  497. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  498. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  499. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  500. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  501. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  502. package/dist/esm/index.js +0 -27
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/init.js +0 -4
  505. package/dist/esm/init.js.map +0 -1
  506. package/dist/esm/types/webgl.js +0 -2
  507. package/dist/esm/types/webgl.js.map +0 -1
  508. package/dist/esm/types.js +0 -2
  509. package/dist/esm/types.js.map +0 -1
  510. package/dist/init.d.ts +0 -2
  511. package/dist/init.d.ts.map +0 -1
  512. package/dist/init.js +0 -4
  513. package/dist/init.js.map +0 -1
  514. package/dist/types/webgl.d.ts +0 -145
  515. package/dist/types/webgl.d.ts.map +0 -1
  516. package/dist/types/webgl.js +0 -2
  517. package/dist/types/webgl.js.map +0 -1
  518. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  519. package/src/adapter/helpers/attribute-utils.ts +0 -61
  520. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  521. package/src/bundle.ts +0 -4
  522. package/src/classic/buffer.ts +0 -474
  523. package/src/context/context/context-state.ts +0 -41
  524. package/src/context/context/create-context.ts +0 -110
  525. package/src/context/context/device-pixels.ts +0 -152
  526. package/src/init.ts +0 -4
  527. package/src/types/webgl.ts +0 -284
@@ -1,5 +1,8 @@
1
- import {assert} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {assert} from '@luma.gl/core';
5
+ import {GL} from '@luma.gl/constants';
3
6
 
4
7
  // Resolve a WebGL enumeration name (returns itself if already a number)
5
8
  export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
@@ -16,30 +19,8 @@ export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
16
19
 
17
20
  // Look up string, after removing any 'GL.' or 'gl.' prefix
18
21
  name = name.replace(/^.*\./, '');
22
+ // @ts-ignore expect-error depends on settings
19
23
  const value = gl[name];
20
24
  assert(value !== undefined, `Accessing undefined constant GL.${name}`);
21
25
  return value;
22
26
  }
23
-
24
- export function getKey(gl: WebGLRenderingContext, value: any): string {
25
- // @ts-expect-error
26
- gl = gl.gl || gl;
27
- value = Number(value);
28
- for (const key in gl) {
29
- if (gl[key] === value) {
30
- return `GL.${key}`;
31
- }
32
- }
33
- return String(value);
34
- }
35
-
36
- export function getKeyType(gl: WebGLRenderingContext, value: any): string {
37
- assert(value !== undefined, 'undefined key');
38
- value = Number(value);
39
- for (const key in gl) {
40
- if (gl[key] === value) {
41
- return `GL.${key}`;
42
- }
43
- }
44
- return String(value);
45
- }
@@ -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,33 @@
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
3
+
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';
5
8
 
6
9
  const DEBUG_DATA_LENGTH = 10;
7
10
 
8
11
  /** WebGL Buffer interface */
9
- export default class WEBGLBuffer extends Buffer {
12
+ export class WEBGLBuffer extends Buffer {
10
13
  readonly device: WebGLDevice;
11
14
  readonly gl: WebGLRenderingContext;
12
15
  readonly gl2: WebGL2RenderingContext | null;
13
16
  readonly handle: WebGLBuffer;
14
- readonly target: number;
15
17
 
18
+ /** Target in OpenGL defines the type of buffer */
19
+ readonly glTarget: GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
20
+ /** Usage is a hint on how frequently the buffer will be updates */
21
+ readonly glUsage: GL.STATIC_DRAW | GL.DYNAMIC_DRAW;
22
+ /** Index type is needed when issuing draw calls, so we pre-compute it */
23
+ readonly glIndexType: GL.UNSIGNED_SHORT | GL.UNSIGNED_INT = GL.UNSIGNED_SHORT;
24
+
25
+ /** Number of bytes allocated on the GPU for this buffer */
16
26
  byteLength: number;
27
+ /** Number of bytes used */
17
28
  bytesUsed: number;
18
- debugData: ArrayBuffer;
19
-
20
- webglUsage: number;
21
-
22
- accessor: {};
29
+ /** A partial CPU-side copy of the data in this buffer, for debugging purposes */
30
+ debugData: ArrayBuffer | null = null;
23
31
 
24
32
  constructor(device: WebGLDevice, props: BufferProps = {}) {
25
33
  super(device, props);
@@ -28,18 +36,17 @@ export default class WEBGLBuffer extends Buffer {
28
36
  this.gl = this.device.gl;
29
37
  this.gl2 = this.device.gl2;
30
38
 
31
- const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;
39
+ const handle = typeof props === 'object' ? props.handle : undefined;
32
40
  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);
41
+ device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data});
42
+
43
+ // - In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
44
+ // otherwise buffer type will lock to generic (non-element) buffer
45
+ // - In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
46
+ this.glTarget = getWebGLTarget(this.props.usage);
47
+ this.glUsage = getWebGLUsage(this.props.usage);
48
+ this.glIndexType = this.props.indexType === 'uint32' ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;
49
+
43
50
  this.debugData = null;
44
51
 
45
52
  // Set data: (re)initializes the buffer
@@ -48,25 +55,23 @@ export default class WEBGLBuffer extends Buffer {
48
55
  } else {
49
56
  this._initWithByteLength(props.byteLength || 0);
50
57
  }
51
-
52
- // Deprecated: Merge main props and accessor
53
- // this.accessor = {...props.accessor};
54
-
55
- // Object.seal(this);
56
58
  }
57
59
 
58
- // PRIVATE METHODS
60
+ // PRIVATE METHODS
59
61
 
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
+ /** Allocate a new buffer and initialize to contents of typed array */
63
+ _initWithData(
64
+ data,
65
+ byteOffset: number = 0,
66
+ byteLength: number = data.byteLength + byteOffset
67
+ ): this {
62
68
  assert(ArrayBuffer.isView(data));
63
69
 
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);
70
+ const glTarget = this._getWriteTarget();
71
+ this.gl.bindBuffer(glTarget, this.handle);
72
+ this.gl.bufferData(glTarget, byteLength, this.glUsage);
73
+ this.gl.bufferSubData(glTarget, byteOffset, data);
74
+ this.gl.bindBuffer(glTarget, null);
70
75
 
71
76
  this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
72
77
  this.bytesUsed = byteLength;
@@ -88,11 +93,11 @@ export default class WEBGLBuffer extends Buffer {
88
93
  data = new Float32Array(0);
89
94
  }
90
95
 
91
- const target = this._getWriteTarget();
96
+ const glTarget = this._getWriteTarget();
92
97
 
93
- this.gl.bindBuffer(target, this.handle);
94
- this.gl.bufferData(target, data, this.webglUsage);
95
- this.gl.bindBuffer(target, null);
98
+ this.gl.bindBuffer(glTarget, this.handle);
99
+ this.gl.bufferData(glTarget, data, this.glUsage);
100
+ this.gl.bindBuffer(glTarget, null);
96
101
 
97
102
  this.debugData = null;
98
103
  this.bytesUsed = byteLength;
@@ -101,46 +106,43 @@ export default class WEBGLBuffer extends Buffer {
101
106
  return this;
102
107
  }
103
108
 
104
- destroy(): void {
105
- if (this.handle) {
109
+ override destroy(): void {
110
+ if (!this.destroyed && this.handle) {
106
111
  this.removeStats();
107
112
  this.trackDeallocatedMemory();
108
113
  this.gl.deleteBuffer(this.handle);
114
+ this.destroyed = true;
109
115
  // @ts-expect-error
110
116
  this.handle = null;
111
117
  }
112
118
  }
113
119
 
114
- write(data: ArrayBufferView, byteOffset: number = 0): void {
120
+ override write(data: ArrayBufferView, byteOffset: number = 0): void {
115
121
  const srcOffset = 0;
116
- const byteLength = data.byteLength;
122
+ const byteLength = undefined; // data.byteLength;
117
123
 
118
124
  // Create the buffer - binding it here for the first time locks the type
119
125
  // 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);
126
+ const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
127
+ this.gl.bindBuffer(glTarget, this.handle);
122
128
  // WebGL2: subData supports additional srcOffset and length parameters
123
129
  if (srcOffset !== 0 || byteLength !== undefined) {
124
130
  this.device.assertWebGL2();
125
-
126
- // @ts-expect-error
127
- this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
131
+ this.gl2.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);
128
132
  } else {
129
- this.gl.bufferSubData(target, byteOffset, data);
133
+ this.gl.bufferSubData(glTarget, byteOffset, data);
130
134
  }
131
- this.gl.bindBuffer(target, null);
135
+ this.gl.bindBuffer(glTarget, null);
132
136
 
133
137
  // TODO - update local `data` if offsets are right
134
138
  // this.debugData = data.slice(byteOffset, 40);
135
139
  }
136
140
 
137
141
  /** Read data from the buffer */
138
- async readAsync(
139
- byteOffset: number = 0,
140
- byteLength?: number
141
- ): Promise<ArrayBuffer> {
142
+ override async readAsync(byteOffset = 0, byteLength?: number): Promise<Uint8Array> {
142
143
  this.device.assertWebGL2();
143
144
 
145
+ byteLength = byteLength ?? this.byteLength;
144
146
  const data = new Uint8Array(byteLength);
145
147
  const dstOffset = 0;
146
148
 
@@ -162,13 +164,13 @@ export default class WEBGLBuffer extends Buffer {
162
164
  }
163
165
 
164
166
  _getWriteTarget() {
165
- return this.target;
166
- // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
167
+ return this.glTarget;
168
+ // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
167
169
  }
168
170
 
169
171
  _getReadTarget() {
170
- return this.target;
171
- return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
172
+ return this.glTarget;
173
+ // return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.glTarget;
172
174
  }
173
175
  }
174
176
 
@@ -183,7 +185,9 @@ export default class WEBGLBuffer extends Buffer {
183
185
  // static INDIRECT = 0x0100;
184
186
  // static QUERY_RESOLVE = 0x0200;
185
187
 
186
- function getWebGLTarget(usage: number): GL {
188
+ function getWebGLTarget(
189
+ usage: number
190
+ ): GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER {
187
191
  if (usage & Buffer.INDEX) {
188
192
  return GL.ELEMENT_ARRAY_BUFFER;
189
193
  }
@@ -205,7 +209,8 @@ function getWebGLTarget(usage: number): GL {
205
209
  return GL.ARRAY_BUFFER;
206
210
  }
207
211
 
208
- function getWebGLUsage(usage: number): GL {
212
+ /** @todo usage is not passed correctly */
213
+ function getWebGLUsage(usage: number): GL.STATIC_DRAW | GL.DYNAMIC_DRAW {
209
214
  if (usage & Buffer.INDEX) {
210
215
  return GL.STATIC_DRAW;
211
216
  }
@@ -215,5 +220,5 @@ function getWebGLUsage(usage: number): GL {
215
220
  if (usage & Buffer.UNIFORM) {
216
221
  return GL.DYNAMIC_DRAW;
217
222
  }
218
- return GL.DYNAMIC_DRAW;
223
+ return GL.STATIC_DRAW;
219
224
  }