@luma.gl/webgl 8.5.9 → 8.6.0-alpha.3

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 (788) hide show
  1. package/LICENSE +8 -1
  2. package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
  3. package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
  4. package/dist/adapter/converters/set-device-parameters.js +124 -0
  5. package/dist/adapter/converters/set-device-parameters.js.map +1 -0
  6. package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
  7. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
  8. package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
  9. package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
  10. package/dist/adapter/device-helpers/device-features.d.ts +12 -0
  11. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
  12. package/dist/adapter/device-helpers/device-features.js +123 -0
  13. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  14. package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
  15. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
  16. package/dist/adapter/device-helpers/device-limits.js +90 -0
  17. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  18. package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
  19. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
  20. package/dist/adapter/device-helpers/get-device-info.js +44 -0
  21. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  22. package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
  23. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
  24. package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
  25. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  26. package/dist/adapter/webgl-device.d.ts +111 -0
  27. package/dist/adapter/webgl-device.d.ts.map +1 -0
  28. package/dist/adapter/webgl-device.js +208 -0
  29. package/dist/adapter/webgl-device.js.map +1 -0
  30. package/dist/adapter/webgl-shader.d.ts +18 -0
  31. package/dist/adapter/webgl-shader.d.ts.map +1 -0
  32. package/dist/adapter/webgl-shader.js +82 -0
  33. package/dist/adapter/webgl-shader.js.map +1 -0
  34. package/dist/bundle.d.ts +2 -0
  35. package/dist/bundle.d.ts.map +1 -0
  36. package/dist/bundle.js +5 -0
  37. package/dist/bundle.js.map +1 -0
  38. package/dist/classes/accessor.d.ts +28 -0
  39. package/dist/classes/accessor.d.ts.map +1 -0
  40. package/dist/classes/accessor.js +112 -0
  41. package/dist/classes/accessor.js.map +1 -0
  42. package/dist/classes/accessor.ts.disabled +159 -0
  43. package/dist/classes/clear.d.ts +17 -0
  44. package/dist/classes/clear.d.ts.map +1 -0
  45. package/{src → dist}/classes/clear.js +29 -23
  46. package/dist/classes/clear.js.map +1 -0
  47. package/dist/classes/copy-and-blit.d.ts +86 -0
  48. package/dist/classes/copy-and-blit.d.ts.map +1 -0
  49. package/dist/classes/copy-and-blit.js +338 -0
  50. package/dist/classes/copy-and-blit.js.map +1 -0
  51. package/dist/classes/framebuffer.d.ts +139 -0
  52. package/dist/classes/framebuffer.d.ts.map +1 -0
  53. package/dist/classes/framebuffer.js +656 -0
  54. package/dist/classes/framebuffer.js.map +1 -0
  55. package/dist/classes/program-configuration.d.ts +24 -0
  56. package/dist/classes/program-configuration.d.ts.map +1 -0
  57. package/dist/classes/program-configuration.js +73 -0
  58. package/dist/classes/program-configuration.js.map +1 -0
  59. package/dist/classes/program.d.ts +66 -0
  60. package/dist/classes/program.d.ts.map +1 -0
  61. package/dist/classes/program.js +379 -0
  62. package/dist/classes/program.js.map +1 -0
  63. package/dist/classes/query.d.ts +27 -0
  64. package/dist/classes/query.d.ts.map +1 -0
  65. package/dist/classes/query.js +145 -0
  66. package/dist/classes/query.js.map +1 -0
  67. package/dist/classes/renderbuffer-formats.d.ts +16 -0
  68. package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
  69. package/dist/classes/renderbuffer-formats.js +185 -0
  70. package/dist/classes/renderbuffer-formats.js.map +1 -0
  71. package/dist/classes/renderbuffer.d.ts +60 -0
  72. package/dist/classes/renderbuffer.d.ts.map +1 -0
  73. package/dist/classes/renderbuffer.js +128 -0
  74. package/dist/classes/renderbuffer.js.map +1 -0
  75. package/dist/classes/shader.d.ts +42 -0
  76. package/dist/classes/shader.d.ts.map +1 -0
  77. package/dist/classes/shader.js +118 -0
  78. package/dist/classes/shader.js.map +1 -0
  79. package/dist/classes/texture-2d.d.ts +9 -0
  80. package/dist/classes/texture-2d.d.ts.map +1 -0
  81. package/dist/classes/texture-2d.js +36 -0
  82. package/dist/classes/texture-2d.js.map +1 -0
  83. package/dist/classes/texture-3d.d.ts +29 -0
  84. package/dist/classes/texture-3d.d.ts.map +1 -0
  85. package/dist/classes/texture-3d.js +76 -0
  86. package/dist/classes/texture-3d.js.map +1 -0
  87. package/dist/classes/texture-cube.d.ts +28 -0
  88. package/dist/classes/texture-cube.d.ts.map +1 -0
  89. package/dist/classes/texture-cube.js +130 -0
  90. package/dist/classes/texture-cube.js.map +1 -0
  91. package/dist/classes/texture-formats.d.ts +37 -0
  92. package/dist/classes/texture-formats.d.ts.map +1 -0
  93. package/dist/classes/texture-formats.js +98 -0
  94. package/dist/classes/texture-formats.js.map +1 -0
  95. package/dist/classes/texture.d.ts +123 -0
  96. package/dist/classes/texture.d.ts.map +1 -0
  97. package/dist/classes/texture.js +786 -0
  98. package/dist/classes/texture.js.map +1 -0
  99. package/dist/classes/transform-feedback.d.ts +33 -0
  100. package/dist/classes/transform-feedback.d.ts.map +1 -0
  101. package/dist/classes/transform-feedback.js +198 -0
  102. package/dist/classes/transform-feedback.js.map +1 -0
  103. package/dist/classes/uniform-buffer-layout.d.ts +17 -0
  104. package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
  105. package/dist/classes/uniform-buffer-layout.js +104 -0
  106. package/dist/classes/uniform-buffer-layout.js.map +1 -0
  107. package/dist/classes/uniforms.d.ts +37 -0
  108. package/dist/classes/uniforms.d.ts.map +1 -0
  109. package/dist/classes/uniforms.js +250 -0
  110. package/dist/classes/uniforms.js.map +1 -0
  111. package/dist/classes/vertex-array-object.d.ts +76 -0
  112. package/dist/classes/vertex-array-object.d.ts.map +1 -0
  113. package/dist/classes/vertex-array-object.js +261 -0
  114. package/dist/classes/vertex-array-object.js.map +1 -0
  115. package/dist/classes/vertex-array.d.ts +75 -0
  116. package/dist/classes/vertex-array.d.ts.map +1 -0
  117. package/dist/classes/vertex-array.js +408 -0
  118. package/dist/classes/vertex-array.js.map +1 -0
  119. package/dist/classes/webgl-buffer.d.ts +100 -0
  120. package/dist/classes/webgl-buffer.d.ts.map +1 -0
  121. package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +100 -73
  122. package/dist/classes/webgl-buffer.js.map +1 -0
  123. package/dist/classes/webgl-resource.d.ts +56 -0
  124. package/dist/classes/webgl-resource.d.ts.map +1 -0
  125. package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +35 -52
  126. package/dist/classes/webgl-resource.js.map +1 -0
  127. package/dist/context/context/context-state.d.ts +18 -0
  128. package/dist/context/context/context-state.d.ts.map +1 -0
  129. package/dist/context/context/context-state.js +26 -0
  130. package/dist/context/context/context-state.js.map +1 -0
  131. package/dist/context/context/create-context.d.ts +40 -0
  132. package/dist/context/context/create-context.d.ts.map +1 -0
  133. package/dist/context/context/create-context.js +37 -0
  134. package/dist/context/context/create-context.js.map +1 -0
  135. package/dist/context/context/device-pixels.d.ts +25 -0
  136. package/dist/context/context/device-pixels.d.ts.map +1 -0
  137. package/dist/context/context/device-pixels.js +98 -0
  138. package/dist/context/context/device-pixels.js.map +1 -0
  139. package/dist/context/context/get-canvas.d.ts +13 -0
  140. package/dist/context/context/get-canvas.d.ts.map +1 -0
  141. package/dist/context/context/get-canvas.js +31 -0
  142. package/dist/context/context/get-canvas.js.map +1 -0
  143. package/dist/context/context/resize-context.d.ts +20 -0
  144. package/dist/context/context/resize-context.d.ts.map +1 -0
  145. package/dist/context/context/resize-context.js +15 -0
  146. package/dist/context/context/resize-context.js.map +1 -0
  147. package/dist/context/context/webgl-checks.d.ts +13 -0
  148. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  149. package/dist/context/context/webgl-checks.js +34 -0
  150. package/dist/context/context/webgl-checks.js.map +1 -0
  151. package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
  152. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  153. package/dist/context/parameters/unified-parameter-api.js +65 -0
  154. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  155. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  156. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  157. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  158. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  159. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  160. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  161. package/dist/context/parameters/webgl-parameters.js +2 -0
  162. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  163. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  164. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  165. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  166. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  167. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  168. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  169. package/dist/context/polyfill/polyfill-context.js +91 -0
  170. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  171. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  172. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  173. package/dist/context/polyfill/polyfill-table.js +160 -0
  174. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  175. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  176. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  177. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  178. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  179. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  180. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  181. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  182. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  183. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  184. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  185. package/dist/context/state-tracker/track-context-state.js +169 -0
  186. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  187. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  188. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  189. package/dist/context/state-tracker/with-parameters.js +36 -0
  190. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  191. package/dist/debug/debug-program-configuration.d.ts +2 -0
  192. package/dist/debug/debug-program-configuration.d.ts.map +1 -0
  193. package/dist/debug/debug-program-configuration.js +40 -0
  194. package/dist/debug/debug-program-configuration.js.map +1 -0
  195. package/dist/debug/debug-uniforms.d.ts +12 -0
  196. package/dist/debug/debug-uniforms.d.ts.map +1 -0
  197. package/dist/debug/debug-uniforms.js +108 -0
  198. package/dist/debug/debug-uniforms.js.map +1 -0
  199. package/dist/debug/debug-vertex-array.d.ts +5 -0
  200. package/dist/debug/debug-vertex-array.d.ts.map +1 -0
  201. package/dist/debug/debug-vertex-array.js +118 -0
  202. package/dist/debug/debug-vertex-array.js.map +1 -0
  203. package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
  204. package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
  205. package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
  206. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
  207. package/dist/es5/adapter/device-helpers/device-features.js +152 -0
  208. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
  209. package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
  210. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
  211. package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
  212. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
  213. package/dist/es5/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
  214. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
  215. package/dist/es5/adapter/webgl-device.js +279 -0
  216. package/dist/es5/adapter/webgl-device.js.map +1 -0
  217. package/dist/es5/adapter/webgl-shader.js +155 -0
  218. package/dist/es5/adapter/webgl-shader.js.map +1 -0
  219. package/dist/es5/bundle.js +2 -4
  220. package/dist/es5/bundle.js.map +1 -1
  221. package/dist/es5/classes/accessor.js +36 -38
  222. package/dist/es5/classes/accessor.js.map +1 -1
  223. package/dist/es5/classes/accessor.ts.disabled +159 -0
  224. package/dist/es5/classes/clear.js +17 -11
  225. package/dist/es5/classes/clear.js.map +1 -1
  226. package/dist/es5/classes/copy-and-blit.js +121 -117
  227. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  228. package/dist/es5/classes/framebuffer.js +435 -423
  229. package/dist/es5/classes/framebuffer.js.map +1 -1
  230. package/dist/es5/classes/program-configuration.js +44 -108
  231. package/dist/es5/classes/program-configuration.js.map +1 -1
  232. package/dist/es5/classes/program.js +108 -85
  233. package/dist/es5/classes/program.js.map +1 -1
  234. package/dist/es5/classes/query.js +58 -59
  235. package/dist/es5/classes/query.js.map +1 -1
  236. package/dist/es5/classes/renderbuffer-formats.js +79 -52
  237. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  238. package/dist/es5/classes/renderbuffer.js +129 -100
  239. package/dist/es5/classes/renderbuffer.js.map +1 -1
  240. package/dist/es5/classes/shader.js +70 -96
  241. package/dist/es5/classes/shader.js.map +1 -1
  242. package/dist/es5/classes/texture-2d.js +25 -21
  243. package/dist/es5/classes/texture-2d.js.map +1 -1
  244. package/dist/es5/classes/texture-3d.js +49 -29
  245. package/dist/es5/classes/texture-3d.js.map +1 -1
  246. package/dist/es5/classes/texture-cube.js +45 -36
  247. package/dist/es5/classes/texture-cube.js.map +1 -1
  248. package/dist/es5/classes/texture-formats.js +35 -33
  249. package/dist/es5/classes/texture-formats.js.map +1 -1
  250. package/dist/es5/classes/texture.js +213 -101
  251. package/dist/es5/classes/texture.js.map +1 -1
  252. package/dist/es5/classes/transform-feedback.js +37 -34
  253. package/dist/es5/classes/transform-feedback.js.map +1 -1
  254. package/dist/es5/classes/uniform-buffer-layout.js +4 -4
  255. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  256. package/dist/es5/classes/uniforms.js +73 -73
  257. package/dist/es5/classes/uniforms.js.map +1 -1
  258. package/dist/es5/classes/vertex-array-object.js +106 -149
  259. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  260. package/dist/es5/classes/vertex-array.js +52 -43
  261. package/dist/es5/classes/vertex-array.js.map +1 -1
  262. package/dist/es5/classes/{buffer.js → webgl-buffer.js} +120 -111
  263. package/dist/es5/classes/webgl-buffer.js.map +1 -0
  264. package/dist/es5/classes/{resource.js → webgl-resource.js} +78 -99
  265. package/dist/es5/classes/webgl-resource.js.map +1 -0
  266. package/dist/es5/context/context/context-state.js +31 -0
  267. package/dist/es5/context/context/context-state.js.map +1 -0
  268. package/dist/es5/context/context/create-context.js +57 -0
  269. package/dist/es5/context/context/create-context.js.map +1 -0
  270. package/dist/es5/context/context/device-pixels.js +115 -0
  271. package/dist/es5/context/context/device-pixels.js.map +1 -0
  272. package/dist/es5/context/context/get-canvas.js +40 -0
  273. package/dist/es5/context/context/get-canvas.js.map +1 -0
  274. package/dist/es5/context/context/resize-context.js +23 -0
  275. package/dist/es5/context/context/resize-context.js.map +1 -0
  276. package/dist/es5/context/context/webgl-checks.js +54 -0
  277. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  278. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  279. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  280. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  281. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  282. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  283. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  284. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  285. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  286. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  287. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  288. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  289. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  290. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  291. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  292. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  293. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  294. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  295. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  296. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  297. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  298. package/dist/es5/debug/debug-program-configuration.js +1 -1
  299. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  300. package/dist/es5/debug/debug-uniforms.js +18 -20
  301. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  302. package/dist/es5/debug/debug-vertex-array.js +16 -16
  303. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  304. package/dist/es5/helpers/get-program-bindings.js +274 -0
  305. package/dist/es5/helpers/get-program-bindings.js.map +1 -0
  306. package/dist/es5/helpers/program-bindings.js +2 -0
  307. package/dist/es5/helpers/program-bindings.js.map +1 -0
  308. package/dist/es5/index.js +159 -99
  309. package/dist/es5/index.js.map +1 -1
  310. package/dist/es5/init.js +21 -41
  311. package/dist/es5/init.js.map +1 -1
  312. package/dist/es5/types/accessor.d.ts +29 -0
  313. package/dist/es5/types.js +2 -0
  314. package/dist/es5/types.js.map +1 -0
  315. package/dist/es5/webgl-utils/attribute-utils.js +4 -4
  316. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  317. package/dist/es5/webgl-utils/constants-to-keys.js +3 -3
  318. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  319. package/dist/es5/webgl-utils/format-utils.js +21 -17
  320. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  321. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  322. package/dist/es5/webgl-utils/index.js +74 -0
  323. package/dist/es5/webgl-utils/index.js.map +1 -0
  324. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +72 -0
  325. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  326. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  327. package/dist/es5/webgl-utils/texture-utils.js +6 -4
  328. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  329. package/dist/es5/webgl-utils/typed-array-utils.js +39 -34
  330. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  331. package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
  332. package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
  333. package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
  334. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
  335. package/dist/esm/adapter/device-helpers/device-features.js +123 -0
  336. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
  337. package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
  338. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
  339. package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
  340. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
  341. package/dist/esm/adapter/device-helpers/is-old-ie.js +8 -0
  342. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
  343. package/dist/esm/adapter/webgl-device.js +208 -0
  344. package/dist/esm/adapter/webgl-device.js.map +1 -0
  345. package/dist/esm/adapter/webgl-shader.js +82 -0
  346. package/dist/esm/adapter/webgl-shader.js.map +1 -0
  347. package/dist/esm/bundle.js +2 -4
  348. package/dist/esm/bundle.js.map +1 -1
  349. package/dist/esm/classes/accessor.js +6 -6
  350. package/dist/esm/classes/accessor.js.map +1 -1
  351. package/dist/esm/classes/accessor.ts.disabled +159 -0
  352. package/dist/esm/classes/clear.js +19 -14
  353. package/dist/esm/classes/clear.js.map +1 -1
  354. package/dist/esm/classes/copy-and-blit.js +67 -64
  355. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  356. package/dist/esm/classes/framebuffer.js +341 -313
  357. package/dist/esm/classes/framebuffer.js.map +1 -1
  358. package/dist/esm/classes/program-configuration.js +25 -104
  359. package/dist/esm/classes/program-configuration.js.map +1 -1
  360. package/dist/esm/classes/program.js +98 -62
  361. package/dist/esm/classes/program.js.map +1 -1
  362. package/dist/esm/classes/query.js +20 -16
  363. package/dist/esm/classes/query.js.map +1 -1
  364. package/dist/esm/classes/renderbuffer-formats.js +72 -49
  365. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  366. package/dist/esm/classes/renderbuffer.js +86 -73
  367. package/dist/esm/classes/renderbuffer.js.map +1 -1
  368. package/dist/esm/classes/shader.js +47 -67
  369. package/dist/esm/classes/shader.js.map +1 -1
  370. package/dist/esm/classes/texture-2d.js +13 -9
  371. package/dist/esm/classes/texture-2d.js.map +1 -1
  372. package/dist/esm/classes/texture-3d.js +28 -16
  373. package/dist/esm/classes/texture-3d.js.map +1 -1
  374. package/dist/esm/classes/texture-cube.js +45 -31
  375. package/dist/esm/classes/texture-cube.js.map +1 -1
  376. package/dist/esm/classes/texture-formats.js +52 -51
  377. package/dist/esm/classes/texture-formats.js.map +1 -1
  378. package/dist/esm/classes/texture.js +174 -58
  379. package/dist/esm/classes/texture.js.map +1 -1
  380. package/dist/esm/classes/transform-feedback.js +26 -14
  381. package/dist/esm/classes/transform-feedback.js.map +1 -1
  382. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  383. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  384. package/dist/esm/classes/uniforms.js +111 -113
  385. package/dist/esm/classes/uniforms.js.map +1 -1
  386. package/dist/esm/classes/vertex-array-object.js +52 -89
  387. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  388. package/dist/esm/classes/vertex-array.js +52 -31
  389. package/dist/esm/classes/vertex-array.js.map +1 -1
  390. package/dist/esm/classes/webgl-buffer.js +382 -0
  391. package/dist/esm/classes/webgl-buffer.js.map +1 -0
  392. package/dist/esm/classes/webgl-resource.js +212 -0
  393. package/dist/esm/classes/webgl-resource.js.map +1 -0
  394. package/dist/esm/context/context/context-state.js +26 -0
  395. package/dist/esm/context/context/context-state.js.map +1 -0
  396. package/dist/esm/context/context/create-context.js +37 -0
  397. package/dist/esm/context/context/create-context.js.map +1 -0
  398. package/dist/esm/context/context/device-pixels.js +98 -0
  399. package/dist/esm/context/context/device-pixels.js.map +1 -0
  400. package/dist/esm/context/context/get-canvas.js +31 -0
  401. package/dist/esm/context/context/get-canvas.js.map +1 -0
  402. package/dist/esm/context/context/resize-context.js +15 -0
  403. package/dist/esm/context/context/resize-context.js.map +1 -0
  404. package/dist/esm/context/context/webgl-checks.js +34 -0
  405. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  406. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  407. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  408. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  409. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  410. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  411. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  412. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  413. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  414. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  415. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  416. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  417. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  418. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  419. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  420. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  421. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  422. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  423. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  424. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  425. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  426. package/dist/esm/debug/debug-program-configuration.js +4 -4
  427. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  428. package/dist/esm/debug/debug-uniforms.js +9 -9
  429. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  430. package/dist/esm/debug/debug-vertex-array.js +18 -16
  431. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  432. package/dist/esm/helpers/get-program-bindings.js +228 -0
  433. package/dist/esm/helpers/get-program-bindings.js.map +1 -0
  434. package/dist/esm/helpers/program-bindings.js +2 -0
  435. package/dist/esm/helpers/program-bindings.js.map +1 -0
  436. package/dist/esm/index.js +17 -15
  437. package/dist/esm/index.js.map +1 -1
  438. package/dist/esm/init.js +12 -28
  439. package/dist/esm/init.js.map +1 -1
  440. package/dist/esm/types/accessor.d.ts +29 -0
  441. package/dist/esm/types.js +2 -0
  442. package/dist/esm/types.js.map +1 -0
  443. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  444. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  445. package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
  446. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  447. package/dist/esm/webgl-utils/format-utils.js +16 -15
  448. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  449. package/dist/esm/webgl-utils/get-error.js +1 -1
  450. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  451. package/dist/esm/webgl-utils/index.js +5 -0
  452. package/dist/esm/webgl-utils/index.js.map +1 -0
  453. package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
  454. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  455. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  456. package/dist/esm/webgl-utils/texture-utils.js +4 -3
  457. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  458. package/dist/esm/webgl-utils/typed-array-utils.js +41 -36
  459. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  460. package/dist/helpers/get-program-bindings.d.ts +8 -0
  461. package/dist/helpers/get-program-bindings.d.ts.map +1 -0
  462. package/dist/helpers/get-program-bindings.js +228 -0
  463. package/dist/helpers/get-program-bindings.js.map +1 -0
  464. package/dist/helpers/program-bindings.d.ts +41 -0
  465. package/dist/helpers/program-bindings.d.ts.map +1 -0
  466. package/dist/helpers/program-bindings.js +2 -0
  467. package/dist/helpers/program-bindings.js.map +1 -0
  468. package/dist/index.d.ts +51 -0
  469. package/dist/index.d.ts.map +1 -0
  470. package/dist/index.js +37 -0
  471. package/dist/index.js.map +1 -0
  472. package/dist/init.d.ts +5 -0
  473. package/dist/init.d.ts.map +1 -0
  474. package/dist/init.js +33 -0
  475. package/dist/init.js.map +1 -0
  476. package/dist/types/accessor.d.ts +29 -0
  477. package/dist/types.d.ts +9 -0
  478. package/dist/types.d.ts.map +1 -0
  479. package/dist/types.js +2 -0
  480. package/dist/types.js.map +1 -0
  481. package/dist/webgl-utils/attribute-utils.d.ts +18 -0
  482. package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
  483. package/dist/webgl-utils/attribute-utils.js +182 -0
  484. package/dist/webgl-utils/attribute-utils.js.map +1 -0
  485. package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
  486. package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
  487. package/dist/webgl-utils/constants-to-keys.js +41 -0
  488. package/dist/webgl-utils/constants-to-keys.js.map +1 -0
  489. package/dist/webgl-utils/format-utils.d.ts +3 -0
  490. package/dist/webgl-utils/format-utils.d.ts.map +1 -0
  491. package/dist/webgl-utils/format-utils.js +45 -0
  492. package/dist/webgl-utils/format-utils.js.map +1 -0
  493. package/dist/webgl-utils/get-error.d.ts +3 -0
  494. package/dist/webgl-utils/get-error.d.ts.map +1 -0
  495. package/dist/webgl-utils/get-error.js +41 -0
  496. package/dist/webgl-utils/get-error.js.map +1 -0
  497. package/dist/webgl-utils/index.d.ts +5 -0
  498. package/dist/webgl-utils/index.d.ts.map +1 -0
  499. package/dist/webgl-utils/index.js +5 -0
  500. package/dist/webgl-utils/index.js.map +1 -0
  501. package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
  502. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
  503. package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
  504. package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  505. package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
  506. package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
  507. package/dist/webgl-utils/request-animation-frame.js +7 -0
  508. package/dist/webgl-utils/request-animation-frame.js.map +1 -0
  509. package/dist/webgl-utils/texture-utils.d.ts +15 -0
  510. package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
  511. package/dist/webgl-utils/texture-utils.js +48 -0
  512. package/dist/webgl-utils/texture-utils.js.map +1 -0
  513. package/dist/webgl-utils/typed-array-utils.d.ts +43 -0
  514. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
  515. package/{src → dist}/webgl-utils/typed-array-utils.js +45 -27
  516. package/dist/webgl-utils/typed-array-utils.js.map +1 -0
  517. package/package.json +9 -9
  518. package/src/.DS_Store +0 -0
  519. package/src/adapter/converters/set-device-parameters.ts +182 -0
  520. package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
  521. package/src/adapter/device-helpers/device-features.ts +227 -0
  522. package/src/adapter/device-helpers/device-limits.ts +150 -0
  523. package/src/adapter/device-helpers/get-device-info.ts +49 -0
  524. package/src/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.ts} +3 -3
  525. package/src/adapter/webgl-device.ts +406 -0
  526. package/src/adapter/webgl-shader.ts +84 -0
  527. package/src/bundle.ts +4 -0
  528. package/src/classes/accessor.js +2 -3
  529. package/src/classes/accessor.ts.disabled +159 -0
  530. package/src/classes/clear.ts +108 -0
  531. package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +143 -55
  532. package/src/classes/{framebuffer.js → framebuffer.ts} +381 -321
  533. package/src/classes/program-configuration.ts +77 -0
  534. package/src/classes/{program.js → program.ts} +111 -77
  535. package/src/classes/{query.js → query.ts} +31 -25
  536. package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
  537. package/src/classes/renderbuffer.ts +154 -0
  538. package/src/classes/shader.ts +129 -0
  539. package/src/classes/texture-2d.ts +35 -0
  540. package/src/classes/{texture-3d.js → texture-3d.ts} +48 -18
  541. package/src/classes/{texture-cube.js → texture-cube.ts} +52 -34
  542. package/src/classes/{texture-formats.js → texture-formats.ts} +10 -2
  543. package/src/classes/{texture.js → texture.ts} +223 -57
  544. package/src/classes/{transform-feedback.js → transform-feedback.ts} +34 -25
  545. package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
  546. package/src/classes/{uniforms.js → uniforms.ts} +123 -77
  547. package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +136 -114
  548. package/src/classes/{vertex-array.js → vertex-array.ts} +84 -59
  549. package/src/classes/{buffer.js → webgl-buffer.ts} +126 -50
  550. package/src/classes/{resource.js → webgl-resource.ts} +55 -46
  551. package/src/context/context/context-state.ts +39 -0
  552. package/src/context/context/create-context.ts +83 -0
  553. package/src/context/context/device-pixels.ts +147 -0
  554. package/src/context/context/get-canvas.ts +37 -0
  555. package/src/context/context/resize-context.ts +37 -0
  556. package/src/context/context/webgl-checks.ts +49 -0
  557. package/src/context/parameters/unified-parameter-api.ts +128 -0
  558. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  559. package/src/context/parameters/webgl-parameters.ts +197 -0
  560. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  561. package/src/context/polyfill/polyfill-context.ts +98 -0
  562. package/src/context/polyfill/polyfill-table.ts +162 -0
  563. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  564. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  565. package/src/context/state-tracker/track-context-state.ts +250 -0
  566. package/src/context/state-tracker/with-parameters.ts +50 -0
  567. package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
  568. package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
  569. package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +6 -5
  570. package/src/helpers/get-program-bindings.ts +244 -0
  571. package/src/helpers/program-bindings.ts +46 -0
  572. package/src/index.ts +133 -0
  573. package/src/{init.js → init.ts} +11 -25
  574. package/src/types/accessor.d.ts +29 -0
  575. package/src/{types.d.ts → types.ts} +1 -1
  576. package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
  577. package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
  578. package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
  579. package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
  580. package/src/webgl-utils/index.ts +12 -0
  581. package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
  582. package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
  583. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +14 -10
  584. package/src/webgl-utils/typed-array-utils.ts +137 -0
  585. package/dist/dist.js +0 -13555
  586. package/dist/dist.min.js +0 -1
  587. package/dist/es5/classes/buffer.d.ts +0 -84
  588. package/dist/es5/classes/buffer.js.map +0 -1
  589. package/dist/es5/classes/clear.d.ts +0 -11
  590. package/dist/es5/classes/copy-and-blit.d.ts +0 -101
  591. package/dist/es5/classes/framebuffer.d.ts +0 -96
  592. package/dist/es5/classes/program-configuration.d.ts +0 -15
  593. package/dist/es5/classes/program.d.ts +0 -44
  594. package/dist/es5/classes/query.d.ts +0 -21
  595. package/dist/es5/classes/renderbuffer.d.ts +0 -34
  596. package/dist/es5/classes/resource.d.ts +0 -47
  597. package/dist/es5/classes/resource.js.map +0 -1
  598. package/dist/es5/classes/shader.d.ts +0 -29
  599. package/dist/es5/classes/texture-2d.d.ts +0 -11
  600. package/dist/es5/classes/texture-3d.d.ts +0 -29
  601. package/dist/es5/classes/texture-cube.d.ts +0 -23
  602. package/dist/es5/classes/texture.d.ts +0 -80
  603. package/dist/es5/classes/transform-feedback.d.ts +0 -16
  604. package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
  605. package/dist/es5/classes/uniforms.d.ts +0 -63
  606. package/dist/es5/classes/vertex-array-object.d.ts +0 -25
  607. package/dist/es5/classes/vertex-array.d.ts +0 -37
  608. package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
  609. package/dist/es5/debug/debug-uniforms.d.ts +0 -11
  610. package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
  611. package/dist/es5/features/check-glsl-extension.js +0 -41
  612. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  613. package/dist/es5/features/check-old-ie.js.map +0 -1
  614. package/dist/es5/features/features.js +0 -99
  615. package/dist/es5/features/features.js.map +0 -1
  616. package/dist/es5/features/index.js +0 -64
  617. package/dist/es5/features/index.js.map +0 -1
  618. package/dist/es5/features/limits.js +0 -64
  619. package/dist/es5/features/limits.js.map +0 -1
  620. package/dist/es5/features/webgl-features-table.js +0 -64
  621. package/dist/es5/features/webgl-features-table.js.map +0 -1
  622. package/dist/es5/features/webgl-limits-table.js +0 -132
  623. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  624. package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
  625. package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
  626. package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
  627. package/dist/es5/glsl-utils/get-shader-name.js +0 -14
  628. package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
  629. package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
  630. package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
  631. package/dist/es5/glsl-utils/get-shader-version.js +0 -22
  632. package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
  633. package/dist/es5/glsl-utils/index.js +0 -48
  634. package/dist/es5/glsl-utils/index.js.map +0 -1
  635. package/dist/es5/index.d.ts +0 -71
  636. package/dist/es5/init.d.ts +0 -12
  637. package/dist/es5/types.d.ts +0 -8
  638. package/dist/es5/utils/array-utils-flat.js +0 -51
  639. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  640. package/dist/es5/utils/assert.d.ts +0 -1
  641. package/dist/es5/utils/assert.js +0 -13
  642. package/dist/es5/utils/assert.js.map +0 -1
  643. package/dist/es5/utils/check-props.js +0 -51
  644. package/dist/es5/utils/check-props.js.map +0 -1
  645. package/dist/es5/utils/format-value.js +0 -57
  646. package/dist/es5/utils/format-value.js.map +0 -1
  647. package/dist/es5/utils/is-old-ie.d.ts +0 -1
  648. package/dist/es5/utils/is-old-ie.js +0 -14
  649. package/dist/es5/utils/is-old-ie.js.map +0 -1
  650. package/dist/es5/utils/load-file.js +0 -50
  651. package/dist/es5/utils/load-file.js.map +0 -1
  652. package/dist/es5/utils/stub-methods.js +0 -25
  653. package/dist/es5/utils/stub-methods.js.map +0 -1
  654. package/dist/es5/utils/utils.d.ts +0 -13
  655. package/dist/es5/utils/utils.js +0 -36
  656. package/dist/es5/utils/utils.js.map +0 -1
  657. package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
  658. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  659. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  660. package/dist/esm/classes/buffer.d.ts +0 -84
  661. package/dist/esm/classes/buffer.js.map +0 -1
  662. package/dist/esm/classes/clear.d.ts +0 -11
  663. package/dist/esm/classes/copy-and-blit.d.ts +0 -101
  664. package/dist/esm/classes/framebuffer.d.ts +0 -96
  665. package/dist/esm/classes/program-configuration.d.ts +0 -15
  666. package/dist/esm/classes/program.d.ts +0 -44
  667. package/dist/esm/classes/query.d.ts +0 -21
  668. package/dist/esm/classes/renderbuffer.d.ts +0 -34
  669. package/dist/esm/classes/resource.d.ts +0 -47
  670. package/dist/esm/classes/resource.js.map +0 -1
  671. package/dist/esm/classes/shader.d.ts +0 -29
  672. package/dist/esm/classes/texture-2d.d.ts +0 -11
  673. package/dist/esm/classes/texture-3d.d.ts +0 -29
  674. package/dist/esm/classes/texture-cube.d.ts +0 -23
  675. package/dist/esm/classes/texture.d.ts +0 -80
  676. package/dist/esm/classes/transform-feedback.d.ts +0 -16
  677. package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
  678. package/dist/esm/classes/uniforms.d.ts +0 -63
  679. package/dist/esm/classes/vertex-array-object.d.ts +0 -25
  680. package/dist/esm/classes/vertex-array.d.ts +0 -37
  681. package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
  682. package/dist/esm/debug/debug-uniforms.d.ts +0 -11
  683. package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
  684. package/dist/esm/features/check-glsl-extension.js +0 -27
  685. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  686. package/dist/esm/features/check-old-ie.js.map +0 -1
  687. package/dist/esm/features/features.js +0 -66
  688. package/dist/esm/features/features.js.map +0 -1
  689. package/dist/esm/features/index.js +0 -5
  690. package/dist/esm/features/index.js.map +0 -1
  691. package/dist/esm/features/limits.js +0 -52
  692. package/dist/esm/features/limits.js.map +0 -1
  693. package/dist/esm/features/webgl-features-table.js +0 -71
  694. package/dist/esm/features/webgl-features-table.js.map +0 -1
  695. package/dist/esm/features/webgl-limits-table.js +0 -160
  696. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  697. package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
  698. package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
  699. package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
  700. package/dist/esm/glsl-utils/get-shader-name.js +0 -6
  701. package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
  702. package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
  703. package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
  704. package/dist/esm/glsl-utils/get-shader-version.js +0 -15
  705. package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
  706. package/dist/esm/glsl-utils/index.js +0 -5
  707. package/dist/esm/glsl-utils/index.js.map +0 -1
  708. package/dist/esm/index.d.ts +0 -71
  709. package/dist/esm/init.d.ts +0 -12
  710. package/dist/esm/types.d.ts +0 -8
  711. package/dist/esm/utils/array-utils-flat.js +0 -39
  712. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  713. package/dist/esm/utils/assert.d.ts +0 -1
  714. package/dist/esm/utils/assert.js +0 -6
  715. package/dist/esm/utils/assert.js.map +0 -1
  716. package/dist/esm/utils/check-props.js +0 -38
  717. package/dist/esm/utils/check-props.js.map +0 -1
  718. package/dist/esm/utils/format-value.js +0 -50
  719. package/dist/esm/utils/format-value.js.map +0 -1
  720. package/dist/esm/utils/is-old-ie.d.ts +0 -1
  721. package/dist/esm/utils/is-old-ie.js +0 -5
  722. package/dist/esm/utils/is-old-ie.js.map +0 -1
  723. package/dist/esm/utils/load-file.js +0 -30
  724. package/dist/esm/utils/load-file.js.map +0 -1
  725. package/dist/esm/utils/stub-methods.js +0 -17
  726. package/dist/esm/utils/stub-methods.js.map +0 -1
  727. package/dist/esm/utils/utils.d.ts +0 -13
  728. package/dist/esm/utils/utils.js +0 -22
  729. package/dist/esm/utils/utils.js.map +0 -1
  730. package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
  731. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  732. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  733. package/src/bundle.js +0 -8
  734. package/src/classes/buffer.d.ts +0 -84
  735. package/src/classes/clear.d.ts +0 -11
  736. package/src/classes/copy-and-blit.d.ts +0 -101
  737. package/src/classes/framebuffer.d.ts +0 -96
  738. package/src/classes/program-configuration.d.ts +0 -15
  739. package/src/classes/program-configuration.js +0 -123
  740. package/src/classes/program.d.ts +0 -44
  741. package/src/classes/query.d.ts +0 -21
  742. package/src/classes/renderbuffer.d.ts +0 -34
  743. package/src/classes/renderbuffer.js +0 -105
  744. package/src/classes/resource.d.ts +0 -47
  745. package/src/classes/shader.d.ts +0 -29
  746. package/src/classes/shader.js +0 -147
  747. package/src/classes/texture-2d.d.ts +0 -11
  748. package/src/classes/texture-2d.js +0 -30
  749. package/src/classes/texture-3d.d.ts +0 -29
  750. package/src/classes/texture-cube.d.ts +0 -23
  751. package/src/classes/texture.d.ts +0 -80
  752. package/src/classes/transform-feedback.d.ts +0 -16
  753. package/src/classes/uniform-buffer-layout.d.ts +0 -18
  754. package/src/classes/uniforms.d.ts +0 -63
  755. package/src/classes/vertex-array-object.d.ts +0 -25
  756. package/src/classes/vertex-array.d.ts +0 -37
  757. package/src/debug/debug-program-configuration.d.ts +0 -1
  758. package/src/debug/debug-uniforms.d.ts +0 -11
  759. package/src/debug/debug-vertex-array.d.ts +0 -1
  760. package/src/features/check-glsl-extension.js +0 -34
  761. package/src/features/features.js +0 -79
  762. package/src/features/index.js +0 -5
  763. package/src/features/limits.js +0 -65
  764. package/src/features/webgl-features-table.js +0 -104
  765. package/src/features/webgl-limits-table.js +0 -51
  766. package/src/glsl-utils/format-glsl-error.d.ts +0 -16
  767. package/src/glsl-utils/format-glsl-error.js +0 -107
  768. package/src/glsl-utils/get-shader-name.js +0 -7
  769. package/src/glsl-utils/get-shader-type-name.js +0 -13
  770. package/src/glsl-utils/get-shader-version.js +0 -12
  771. package/src/glsl-utils/index.js +0 -8
  772. package/src/index.d.ts +0 -71
  773. package/src/index.js +0 -70
  774. package/src/init.d.ts +0 -12
  775. package/src/utils/array-utils-flat.js +0 -56
  776. package/src/utils/assert.d.ts +0 -1
  777. package/src/utils/assert.js +0 -7
  778. package/src/utils/check-props.js +0 -68
  779. package/src/utils/format-value.js +0 -37
  780. package/src/utils/is-old-ie.d.ts +0 -1
  781. package/src/utils/is-old-ie.js +0 -6
  782. package/src/utils/load-file.js +0 -39
  783. package/src/utils/stub-methods.js +0 -20
  784. package/src/utils/utils.d.ts +0 -13
  785. package/src/utils/utils.js +0 -36
  786. package/src/webgl-utils/request-animation-frame.d.ts +0 -3
  787. package/src/webgl-utils/texture-utils.d.ts +0 -11
  788. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -9,113 +9,62 @@ exports.default = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
12
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
15
 
14
16
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
17
 
16
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
19
 
20
20
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
21
 
22
22
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
23
 
24
- var _resource = _interopRequireDefault(require("./resource"));
25
-
26
- var _buffer = _interopRequireDefault(require("./buffer"));
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
25
 
28
- var _gltools = require("@luma.gl/gltools");
26
+ var _api = require("@luma.gl/api");
29
27
 
30
- var _arrayUtilsFlat = require("../utils/array-utils-flat");
31
-
32
- var _assert = require("../utils/assert");
33
-
34
- var _probe = require("probe.gl");
35
-
36
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
28
+ var _constants = _interopRequireDefault(require("@luma.gl/constants"));
37
29
 
38
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
30
+ var _env = require("@probe.gl/env");
39
31
 
40
- var ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
32
+ var _webglDevice = _interopRequireDefault(require("../adapter/webgl-device"));
41
33
 
42
- var VertexArrayObject = function (_Resource) {
43
- (0, _inherits2.default)(VertexArrayObject, _Resource);
34
+ var _webglChecks = require("../context/context/webgl-checks");
44
35
 
45
- var _super = _createSuper(VertexArrayObject);
36
+ var _webglResource = _interopRequireDefault(require("./webgl-resource"));
46
37
 
47
- (0, _createClass2.default)(VertexArrayObject, null, [{
48
- key: "isSupported",
49
- value: function isSupported(gl) {
50
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
+ var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
51
39
 
52
- if (options.constantAttributeZero) {
53
- return (0, _gltools.isWebGL2)(gl) || (0, _probe.getBrowser)() === 'Chrome';
54
- }
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
55
41
 
56
- return true;
57
- }
58
- }, {
59
- key: "getDefaultArray",
60
- value: function getDefaultArray(gl) {
61
- gl.luma = gl.luma || {};
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
62
43
 
63
- if (!gl.luma.defaultVertexArray) {
64
- gl.luma.defaultVertexArray = new VertexArrayObject(gl, {
65
- handle: null,
66
- isDefaultArray: true
67
- });
68
- }
69
-
70
- return gl.luma.defaultVertexArray;
71
- }
72
- }, {
73
- key: "getMaxAttributes",
74
- value: function getMaxAttributes(gl) {
75
- VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(34921);
76
- return VertexArrayObject.MAX_ATTRIBUTES;
77
- }
78
- }, {
79
- key: "setConstant",
80
- value: function setConstant(gl, location, array) {
81
- switch (array.constructor) {
82
- case Float32Array:
83
- VertexArrayObject._setConstantFloatArray(gl, location, array);
84
-
85
- break;
44
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
86
45
 
87
- case Int32Array:
88
- VertexArrayObject._setConstantIntArray(gl, location, array);
46
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
89
47
 
90
- break;
91
-
92
- case Uint32Array:
93
- VertexArrayObject._setConstantUintArray(gl, location, array);
48
+ var ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
94
49
 
95
- break;
50
+ var VertexArrayObject = function (_WebGLResource) {
51
+ (0, _inherits2.default)(VertexArrayObject, _WebGLResource);
96
52
 
97
- default:
98
- (0, _assert.assert)(false);
99
- }
100
- }
101
- }]);
53
+ var _super = _createSuper(VertexArrayObject);
102
54
 
103
- function VertexArrayObject(gl) {
55
+ function VertexArrayObject(gl, props) {
104
56
  var _this;
105
57
 
106
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
107
58
  (0, _classCallCheck2.default)(this, VertexArrayObject);
108
- var id = opts.id || opts.program && opts.program.id;
109
- _this = _super.call(this, gl, Object.assign({}, opts, {
110
- id: id
111
- }));
59
+ _this = _super.call(this, _webglDevice.default.attach(gl), _objectSpread(_objectSpread({}, props), {}, {
60
+ id: (props === null || props === void 0 ? void 0 : props.id) || (props === null || props === void 0 ? void 0 : props.program) && (props === null || props === void 0 ? void 0 : props.program.id)
61
+ }), {});
62
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "buffer", null);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "bufferValue", null);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isDefaultArray", false);
112
65
  _this.buffer = null;
113
66
  _this.bufferValue = null;
114
- _this.isDefaultArray = opts.isDefaultArray || false;
115
- _this.gl2 = gl;
116
-
117
- _this.initialize(opts);
118
-
67
+ _this.isDefaultArray = (props === null || props === void 0 ? void 0 : props.isDefaultArray) || false;
119
68
  Object.seal((0, _assertThisInitialized2.default)(_this));
120
69
  return _this;
121
70
  }
@@ -132,15 +81,9 @@ var VertexArrayObject = function (_Resource) {
132
81
  return this;
133
82
  }
134
83
  }, {
135
- key: "initialize",
136
- value: function initialize() {
137
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
138
- return this.setProps(props);
139
- }
140
- }, {
141
- key: "setProps",
142
- value: function setProps(props) {
143
- return this;
84
+ key: "MAX_ATTRIBUTES",
85
+ get: function get() {
86
+ return VertexArrayObject.getMaxAttributes(this.gl);
144
87
  }
145
88
  }, {
146
89
  key: "setElementBuffer",
@@ -149,16 +92,16 @@ var VertexArrayObject = function (_Resource) {
149
92
 
150
93
  var elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
151
94
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
152
- (0, _assert.assert)(!elementBuffer || elementBuffer.target === 34963, ERR_ELEMENTS);
95
+ (0, _api.assert)(!elementBuffer || elementBuffer.target === _constants.default.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
153
96
  this.bind(function () {
154
- _this2.gl.bindBuffer(34963, elementBuffer ? elementBuffer.handle : null);
97
+ _this2.gl.bindBuffer(_constants.default.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
155
98
  });
156
99
  return this;
157
100
  }
158
101
  }, {
159
102
  key: "setBuffer",
160
103
  value: function setBuffer(location, buffer, accessor) {
161
- if (buffer.target === 34963) {
104
+ if (buffer.target === _constants.default.ELEMENT_ARRAY_BUFFER) {
162
105
  return this.setElementBuffer(buffer, accessor);
163
106
  }
164
107
 
@@ -173,10 +116,10 @@ var VertexArrayObject = function (_Resource) {
173
116
  gl2 = this.gl2;
174
117
  location = Number(location);
175
118
  this.bind(function () {
176
- gl.bindBuffer(34962, buffer.handle);
119
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
177
120
 
178
121
  if (integer) {
179
- (0, _assert.assert)((0, _gltools.isWebGL2)(gl));
122
+ (0, _api.assert)((0, _webglChecks.isWebGL2)(gl));
180
123
  gl2.vertexAttribIPointer(location, size, type, stride, offset);
181
124
  } else {
182
125
  gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
@@ -215,13 +158,13 @@ var VertexArrayObject = function (_Resource) {
215
158
  var byteLength = constantValue.byteLength * elementCount;
216
159
  var length = constantValue.length * elementCount;
217
160
  var updateNeeded = !this.buffer;
218
- this.buffer = this.buffer || new _buffer.default(this.gl, byteLength);
161
+ this.buffer = this.buffer || new _webglBuffer.default(this.gl, byteLength);
219
162
  updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);
220
163
  updateNeeded = updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);
221
164
 
222
165
  if (updateNeeded) {
223
- var typedArray = (0, _arrayUtilsFlat.getScratchArray)(value.constructor, length);
224
- (0, _arrayUtilsFlat.fillArray)({
166
+ var typedArray = (0, _api.getScratchArray)(value.constructor, length);
167
+ (0, _api.fillArray)({
225
168
  target: typedArray,
226
169
  source: constantValue,
227
170
  start: 0,
@@ -233,6 +176,16 @@ var VertexArrayObject = function (_Resource) {
233
176
 
234
177
  return this.buffer;
235
178
  }
179
+ }, {
180
+ key: "initialize",
181
+ value: function initialize(props) {
182
+ return this.setProps(props);
183
+ }
184
+ }, {
185
+ key: "setProps",
186
+ value: function setProps(props) {
187
+ return this;
188
+ }
236
189
  }, {
237
190
  key: "_normalizeConstantArrayValue",
238
191
  value: function _normalizeConstantArrayValue(arrayValue) {
@@ -260,13 +213,12 @@ var VertexArrayObject = function (_Resource) {
260
213
  }, {
261
214
  key: "_createHandle",
262
215
  value: function _createHandle() {
263
- var gl2 = this.gl;
264
- return gl2.createVertexArray();
216
+ return this.gl2.createVertexArray();
265
217
  }
266
218
  }, {
267
219
  key: "_deleteHandle",
268
- value: function _deleteHandle(handle) {
269
- this.gl2.deleteVertexArray(handle);
220
+ value: function _deleteHandle() {
221
+ this.gl2.deleteVertexArray(this.handle);
270
222
  return [this.elements];
271
223
  }
272
224
  }, {
@@ -280,10 +232,10 @@ var VertexArrayObject = function (_Resource) {
280
232
  var _this4 = this;
281
233
 
282
234
  var location = _ref.location;
283
- (0, _assert.assert)(Number.isFinite(location));
235
+ (0, _api.assert)(Number.isFinite(location));
284
236
  return this.bind(function () {
285
237
  switch (pname) {
286
- case 34373:
238
+ case _constants.default.VERTEX_ATTRIB_ARRAY_POINTER:
287
239
  return _this4.gl.getVertexAttribOffset(location, pname);
288
240
 
289
241
  default:
@@ -291,90 +243,95 @@ var VertexArrayObject = function (_Resource) {
291
243
  }
292
244
  });
293
245
  }
294
- }, {
295
- key: "MAX_ATTRIBUTES",
296
- get: function get() {
297
- return VertexArrayObject.getMaxAttributes(this.gl);
298
- }
299
246
  }], [{
300
- key: "_setConstantFloatArray",
301
- value: function _setConstantFloatArray(gl, location, array) {
302
- switch (array.length) {
303
- case 1:
304
- gl.vertexAttrib1fv(location, array);
305
- break;
306
-
307
- case 2:
308
- gl.vertexAttrib2fv(location, array);
309
- break;
310
-
311
- case 3:
312
- gl.vertexAttrib3fv(location, array);
313
- break;
247
+ key: "isSupported",
248
+ value: function isSupported(gl, options) {
249
+ if (options !== null && options !== void 0 && options.constantAttributeZero) {
250
+ return (0, _webglChecks.isWebGL2)(gl) || (0, _env.getBrowser)() === 'Chrome';
251
+ }
314
252
 
315
- case 4:
316
- gl.vertexAttrib4fv(location, array);
317
- break;
253
+ return true;
254
+ }
255
+ }, {
256
+ key: "getDefaultArray",
257
+ value: function getDefaultArray(gl) {
258
+ var webglDevice = _webglDevice.default.fromContext(gl);
318
259
 
319
- default:
320
- (0, _assert.assert)(false);
321
- }
260
+ webglDevice.defaultVertexArray = webglDevice.defaultVertexArray || new VertexArrayObject(gl, {
261
+ handle: null,
262
+ isDefaultArray: true
263
+ });
264
+ return webglDevice.defaultVertexArray;
322
265
  }
323
266
  }, {
324
- key: "_setConstantIntArray",
325
- value: function _setConstantIntArray(gl, location, array) {
326
- (0, _assert.assert)((0, _gltools.isWebGL2)(gl));
267
+ key: "getMaxAttributes",
268
+ value: function getMaxAttributes(gl) {
269
+ VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
270
+ return VertexArrayObject.MAX_ATTRIBUTES;
271
+ }
272
+ }, {
273
+ key: "setConstant",
274
+ value: function setConstant(gl, location, array) {
275
+ switch (array.constructor) {
276
+ case Float32Array:
277
+ VertexArrayObject._setConstantFloatArray(gl, location, array);
327
278
 
328
- switch (array.length) {
329
- case 1:
330
- gl.vertexAttribI1iv(location, array);
331
279
  break;
332
280
 
333
- case 2:
334
- gl.vertexAttribI2iv(location, array);
335
- break;
281
+ case Int32Array:
282
+ VertexArrayObject._setConstantIntArray((0, _webglChecks.assertWebGL2Context)(gl), location, array);
336
283
 
337
- case 3:
338
- gl.vertexAttribI3iv(location, array);
339
284
  break;
340
285
 
341
- case 4:
342
- gl.vertexAttribI4iv(location, array);
286
+ case Uint32Array:
287
+ VertexArrayObject._setConstantUintArray((0, _webglChecks.assertWebGL2Context)(gl), location, array);
288
+
343
289
  break;
344
290
 
345
291
  default:
346
- (0, _assert.assert)(false);
292
+ (0, _api.assert)(false);
347
293
  }
348
294
  }
349
295
  }, {
350
- key: "_setConstantUintArray",
351
- value: function _setConstantUintArray(gl, location, array) {
352
- (0, _assert.assert)((0, _gltools.isWebGL2)(gl));
353
-
296
+ key: "_setConstantFloatArray",
297
+ value: function _setConstantFloatArray(gl, location, array) {
354
298
  switch (array.length) {
355
299
  case 1:
356
- gl.vertexAttribI1uiv(location, array);
300
+ gl.vertexAttrib1fv(location, array);
357
301
  break;
358
302
 
359
303
  case 2:
360
- gl.vertexAttribI2uiv(location, array);
304
+ gl.vertexAttrib2fv(location, array);
361
305
  break;
362
306
 
363
307
  case 3:
364
- gl.vertexAttribI3uiv(location, array);
308
+ gl.vertexAttrib3fv(location, array);
365
309
  break;
366
310
 
367
311
  case 4:
368
- gl.vertexAttribI4uiv(location, array);
312
+ gl.vertexAttrib4fv(location, array);
369
313
  break;
370
314
 
371
315
  default:
372
- (0, _assert.assert)(false);
316
+ (0, _api.assert)(false);
373
317
  }
374
318
  }
319
+ }, {
320
+ key: "_setConstantIntArray",
321
+ value: function _setConstantIntArray(gl, location, array) {
322
+ (0, _api.assert)((0, _webglChecks.isWebGL2)(gl));
323
+ gl.vertexAttribI4iv(location, array);
324
+ }
325
+ }, {
326
+ key: "_setConstantUintArray",
327
+ value: function _setConstantUintArray(gl, location, array) {
328
+ (0, _api.assert)((0, _webglChecks.isWebGL2)(gl));
329
+ gl.vertexAttribI4uiv(location, array);
330
+ }
375
331
  }]);
376
332
  return VertexArrayObject;
377
- }(_resource.default);
333
+ }(_webglResource.default);
378
334
 
379
335
  exports.default = VertexArrayObject;
336
+ (0, _defineProperty2.default)(VertexArrayObject, "MAX_ATTRIBUTES", void 0);
380
337
  //# sourceMappingURL=vertex-array-object.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/vertex-array-object.js"],"names":["ERR_ELEMENTS","VertexArrayObject","gl","options","constantAttributeZero","luma","defaultVertexArray","handle","isDefaultArray","MAX_ATTRIBUTES","getParameter","location","array","constructor","Float32Array","_setConstantFloatArray","Int32Array","_setConstantIntArray","Uint32Array","_setConstantUintArray","opts","id","program","Object","assign","buffer","bufferValue","gl2","initialize","seal","delete","props","setProps","elementBuffer","target","bind","bindBuffer","accessor","setElementBuffer","size","type","stride","offset","normalized","integer","divisor","Number","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","enable","disablingAttributeZero","isSupported","disableVertexAttribArray","elementCount","value","constantValue","_normalizeConstantArrayValue","byteLength","length","updateNeeded","Buffer","reallocate","_compareConstantArrayValues","typedArray","source","start","count","subData","arrayValue","Array","isArray","v1","v2","i","createVertexArray","deleteVertexArray","elements","bindVertexArray","pname","isFinite","getVertexAttribOffset","getVertexAttrib","getMaxAttributes","vertexAttrib1fv","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttribI1iv","vertexAttribI2iv","vertexAttribI3iv","vertexAttribI4iv","vertexAttribI1uiv","vertexAttribI2uiv","vertexAttribI3uiv","vertexAttribI4uiv","Resource"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {getScratchArray, fillArray} from '../utils/array-utils-flat';\nimport {assert} from '../utils/assert';\nimport {getBrowser} from 'probe.gl';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\nexport default class VertexArrayObject extends Resource {\n static isSupported(gl, options = {}) {\n // Attribute 0 can not be disable on most desktop OpenGL based browsers\n // and on iOS Safari browser.\n if (options.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return true;\n }\n\n // Returns the global (null) vertex array object. Exists even when no extension available\n // TODO(Tarek): VAOs are now polyfilled. Deprecate this in 9.0\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n if (!gl.luma.defaultVertexArray) {\n gl.luma.defaultVertexArray = new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n }\n return gl.luma.defaultVertexArray;\n }\n\n static getMaxAttributes(gl) {\n // TODO - should be cached per context\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES =\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n // @ts-ignore\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n // Note: Constants are stored globally on the WebGL context, not the VAO\n // So they need to be updated before every render\n // TODO - use known type (in configuration or passed in) to allow non-typed arrays?\n // TODO - remember/cache values to avoid setting them unnecessarily?\n static setConstant(gl, location, array) {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(gl, location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(gl, location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // Create a VertexArray\n constructor(gl, opts = {}) {\n // Use program's id if program but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n super(gl, Object.assign({}, opts, {id}));\n\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts.isDefaultArray || false;\n\n /** @type {WebGL2RenderingContext} */\n this.gl2 = gl;\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n delete() {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n return this;\n }\n\n get MAX_ATTRIBUTES() {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n initialize(props = {}) {\n return this.setProps(props);\n }\n\n setProps(props) {\n // TODO: decide which props should be supported\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n // Set a location in vertex attributes array to a bufferk, enables the location, sets divisor\n setBuffer(location, buffer, accessor) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n // Enabling an attribute location makes it reference the currently bound buffer\n // Disabling an attribute location makes it reference the global constant value\n // TODO - handle single values for size 1 attributes?\n // TODO - convert classic arrays based on known type?\n enable(location, enable = true) {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(\n () =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n // Provide a means to create a buffer that is equivalent to a constant.\n // NOTE: Desktop OpenGL cannot disable attribute 0.\n // https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n // this-has-significant-performance-penalt\n getConstantBuffer(elementCount, value) {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl, location, array) {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantUintArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n /** @type {WebGL2RenderingContext} */\n // @ts-ignore\n const gl2 = this.gl;\n return gl2.createVertexArray();\n }\n\n _deleteHandle(handle) {\n this.gl2.deleteVertexArray(handle);\n // @ts-ignore\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle) {\n this.gl2.bindVertexArray(handle);\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n}\n"],"file":"vertex-array-object.js"}
1
+ {"version":3,"sources":["../../../src/classes/vertex-array-object.ts"],"names":["ERR_ELEMENTS","VertexArrayObject","gl","props","WebGLDevice","attach","id","program","buffer","bufferValue","isDefaultArray","Object","seal","delete","getMaxAttributes","elementBuffer","opts","target","GL","ELEMENT_ARRAY_BUFFER","bind","bindBuffer","handle","location","accessor","setElementBuffer","size","type","stride","offset","normalized","integer","divisor","gl2","Number","ARRAY_BUFFER","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","enable","disablingAttributeZero","isSupported","constantAttributeZero","disableVertexAttribArray","elementCount","value","constantValue","_normalizeConstantArrayValue","byteLength","length","updateNeeded","Buffer","reallocate","_compareConstantArrayValues","typedArray","constructor","source","start","count","subData","setProps","arrayValue","Array","isArray","Float32Array","v1","v2","i","createVertexArray","deleteVertexArray","elements","bindVertexArray","pname","isFinite","VERTEX_ATTRIB_ARRAY_POINTER","getVertexAttribOffset","getVertexAttrib","options","webglDevice","fromContext","defaultVertexArray","MAX_ATTRIBUTES","getParameter","MAX_VERTEX_ATTRIBS","array","_setConstantFloatArray","Int32Array","_setConstantIntArray","Uint32Array","_setConstantUintArray","vertexAttrib1fv","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttribI4iv","vertexAttribI4uiv","WebGLResource"],"mappings":"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","sourcesContent":["import type {NumberArray} from '@luma.gl/api';\nimport {assert, getScratchArray, fillArray} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getBrowser} from '@probe.gl/env';\nimport WebGLDevice from '../adapter/webgl-device';\nimport {assertWebGL2Context, isWebGL2} from '../context/context/webgl-checks';\nimport Program from './program';\nimport WebGLResource, {ResourceProps} from './webgl-resource';\nimport Buffer from './webgl-buffer';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\n/**\n * VertexArrayObject properties\n * @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers\n * and on iOS Safari browser.\n */\nexport type VertexArrayObjectProps = ResourceProps & {\n constantAttributeZero?: boolean;\n program?: Program;\n isDefaultArray?: boolean;\n};\n\nexport default class VertexArrayObject extends WebGLResource<VertexArrayObjectProps> {\n private static MAX_ATTRIBUTES: number;\n\n static isSupported(gl: WebGLRenderingContext | WebGL2RenderingContext, options?: VertexArrayObjectProps): boolean {\n if (options?.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return true;\n }\n\n /**\n * Returns the global (null) vertex array object. Exists even when no extension available.\n * @todo (Tarek): VAOs are now polyfilled. Deprecate this in 9.0\n */\n static getDefaultArray(gl: WebGLRenderingContext): VertexArrayObject {\n const webglDevice = WebGLDevice.fromContext(gl);\n webglDevice.defaultVertexArray = webglDevice.defaultVertexArray || \n new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n return webglDevice.defaultVertexArray;\n }\n\n /** Get maximum number of attributes in a vertex array */\n static getMaxAttributes(gl: WebGLRenderingContext): number {\n // TODO - should be cached per context\n VertexArrayObject.MAX_ATTRIBUTES =\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n /**\n * Set an attribute to a constant value\n * @param gl \n * @param location \n * @param array \n * \n * @note Constants are stored globally on the WebGL context, not the VAO\n * so they need to be updated before every render\n * @todo - use known type (in configuration or passed in) to allow non-typed arrays?\n * @todo - remember/cache values to avoid setting them unnecessarily?\n */\n static setConstant(gl: WebGLRenderingContext, location: any, array: any): void {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(assertWebGL2Context(gl), location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(assertWebGL2Context(gl), location, array);\n break;\n default:\n assert(false);\n }\n }\n\n private buffer: Buffer | null = null;\n private bufferValue = null;\n private isDefaultArray: boolean = false;\n\n // Create a VertexArray\n constructor(gl: WebGLRenderingContext, props?: VertexArrayObjectProps) {\n // Use program's id if program but no id is supplied\n super(WebGLDevice.attach(gl), {...props, id: props?.id || (props?.program && props?.program.id)}, {} as any);\n\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = props?.isDefaultArray || false;\n\n Object.seal(this);\n }\n\n delete(): this {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n return this;\n }\n\n get MAX_ATTRIBUTES(): number {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer: Buffer = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */\n setBuffer(location: number, buffer: Buffer, accessor: any): this {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n /**\n * Enabling an attribute location makes it reference the currently bound buffer\n * Disabling an attribute location makes it reference the global constant value\n * TODO - handle single values for size 1 attributes?\n * TODO - convert classic arrays based on known type?\n */ \n enable(location: number, enable = true): this {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(() =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n /**\n * Provide a means to create a buffer that is equivalent to a constant.\n * NOTE: Desktop OpenGL cannot disable attribute 0.\n * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n * this-has-significant-performance-penalty\n */ \n getConstantBuffer(elementCount: number, value): Buffer {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // DEPRECATED\n\n /** @deprecated this function has no effect */\n initialize(props?: VertexArrayObjectProps): this {\n return this.setProps(props);\n }\n\n /** @deprecated this function is not implemented */\n setProps(props: VertexArrayObjectProps): this {\n // TODO: decide which props should be supported\n return this;\n } \n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue: NumberArray) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2): boolean {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl: WebGLRenderingContext, location, array): void {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl: WebGL2RenderingContext, location, array) {\n assert(isWebGL2(gl));\n gl.vertexAttribI4iv(location, array);\n // switch (array.length) {\n // case 1:\n // gl.vertexAttribI1iv(location, array);\n // break;\n // case 2:\n // gl.vertexAttribI2iv(location, array);\n // break;\n // case 3:\n // gl.vertexAttribI3iv(location, array);\n // break;\n // case 4:\n // break;\n // default:\n // assert(false);\n // }\n }\n\n static _setConstantUintArray(gl: WebGL2RenderingContext, location, array) {\n assert(isWebGL2(gl));\n gl.vertexAttribI4uiv(location, array);\n // switch (array.length) {\n // case 1:\n // gl.vertexAttribI1uiv(location, array);\n // break;\n // case 2:\n // gl.vertexAttribI2uiv(location, array);\n // break;\n // case 3:\n // gl.vertexAttribI3uiv(location, array);\n // break;\n // case 4:\n // gl.vertexAttribI4uiv(location, array);\n // break;\n // default:\n // assert(false);\n // }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n return this.gl2.createVertexArray();\n }\n\n _deleteHandle(): void {\n this.gl2.deleteVertexArray(this.handle);\n // @ts-expect-error\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle): void {\n this.gl2.bindVertexArray(handle);\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname: number, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n}\n"],"file":"vertex-array-object.js"}