@luma.gl/webgl 8.5.8 → 8.6.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/dist/api/device2.d.ts +52 -0
  2. package/dist/api/device2.d.ts.map +1 -0
  3. package/dist/api/device2.js +23 -0
  4. package/dist/api/device2.js.map +1 -0
  5. package/dist/bundle.d.ts +2 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/bundle.js +5 -0
  8. package/dist/bundle.js.map +1 -0
  9. package/dist/classes/accessor.d.ts +28 -0
  10. package/dist/classes/accessor.d.ts.map +1 -0
  11. package/dist/classes/accessor.js +112 -0
  12. package/dist/classes/accessor.js.map +1 -0
  13. package/dist/classes/accessor.ts.disabled +159 -0
  14. package/dist/classes/clear.d.ts +17 -0
  15. package/dist/classes/clear.d.ts.map +1 -0
  16. package/{src → dist}/classes/clear.js +29 -23
  17. package/dist/classes/clear.js.map +1 -0
  18. package/dist/classes/copy-and-blit.d.ts +86 -0
  19. package/dist/classes/copy-and-blit.d.ts.map +1 -0
  20. package/dist/classes/copy-and-blit.js +338 -0
  21. package/dist/classes/copy-and-blit.js.map +1 -0
  22. package/dist/classes/framebuffer.d.ts +139 -0
  23. package/dist/classes/framebuffer.d.ts.map +1 -0
  24. package/dist/classes/framebuffer.js +656 -0
  25. package/dist/classes/framebuffer.js.map +1 -0
  26. package/dist/classes/program-configuration.d.ts +27 -0
  27. package/dist/classes/program-configuration.d.ts.map +1 -0
  28. package/dist/classes/program-configuration.js +160 -0
  29. package/dist/classes/program-configuration.js.map +1 -0
  30. package/dist/classes/program.d.ts +61 -0
  31. package/dist/classes/program.d.ts.map +1 -0
  32. package/dist/classes/program.js +370 -0
  33. package/dist/classes/program.js.map +1 -0
  34. package/dist/classes/query.d.ts +27 -0
  35. package/dist/classes/query.d.ts.map +1 -0
  36. package/dist/classes/query.js +145 -0
  37. package/dist/classes/query.js.map +1 -0
  38. package/dist/classes/renderbuffer-formats.d.ts +16 -0
  39. package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
  40. package/dist/classes/renderbuffer-formats.js +185 -0
  41. package/dist/classes/renderbuffer-formats.js.map +1 -0
  42. package/dist/classes/renderbuffer.d.ts +60 -0
  43. package/dist/classes/renderbuffer.d.ts.map +1 -0
  44. package/dist/classes/renderbuffer.js +128 -0
  45. package/dist/classes/renderbuffer.js.map +1 -0
  46. package/dist/classes/texture-2d.d.ts +9 -0
  47. package/dist/classes/texture-2d.d.ts.map +1 -0
  48. package/dist/classes/texture-2d.js +36 -0
  49. package/dist/classes/texture-2d.js.map +1 -0
  50. package/dist/classes/texture-3d.d.ts +29 -0
  51. package/dist/classes/texture-3d.d.ts.map +1 -0
  52. package/dist/classes/texture-3d.js +76 -0
  53. package/dist/classes/texture-3d.js.map +1 -0
  54. package/dist/classes/texture-cube.d.ts +28 -0
  55. package/dist/classes/texture-cube.d.ts.map +1 -0
  56. package/dist/classes/texture-cube.js +130 -0
  57. package/dist/classes/texture-cube.js.map +1 -0
  58. package/dist/classes/texture-formats.d.ts +37 -0
  59. package/dist/classes/texture-formats.d.ts.map +1 -0
  60. package/dist/classes/texture-formats.js +98 -0
  61. package/dist/classes/texture-formats.js.map +1 -0
  62. package/dist/classes/texture.d.ts +123 -0
  63. package/dist/classes/texture.d.ts.map +1 -0
  64. package/dist/classes/texture.js +786 -0
  65. package/dist/classes/texture.js.map +1 -0
  66. package/dist/classes/transform-feedback.d.ts +33 -0
  67. package/dist/classes/transform-feedback.d.ts.map +1 -0
  68. package/dist/classes/transform-feedback.js +198 -0
  69. package/dist/classes/transform-feedback.js.map +1 -0
  70. package/dist/classes/uniform-buffer-layout.d.ts +17 -0
  71. package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
  72. package/dist/classes/uniform-buffer-layout.js +104 -0
  73. package/dist/classes/uniform-buffer-layout.js.map +1 -0
  74. package/dist/classes/uniforms.d.ts +37 -0
  75. package/dist/classes/uniforms.d.ts.map +1 -0
  76. package/dist/classes/uniforms.js +250 -0
  77. package/dist/classes/uniforms.js.map +1 -0
  78. package/dist/classes/vertex-array-object.d.ts +75 -0
  79. package/dist/classes/vertex-array-object.d.ts.map +1 -0
  80. package/dist/classes/vertex-array-object.js +261 -0
  81. package/dist/classes/vertex-array-object.js.map +1 -0
  82. package/dist/classes/vertex-array.d.ts +75 -0
  83. package/dist/classes/vertex-array.d.ts.map +1 -0
  84. package/dist/classes/vertex-array.js +408 -0
  85. package/dist/classes/vertex-array.js.map +1 -0
  86. package/dist/classes/webgl-buffer.d.ts +100 -0
  87. package/dist/classes/webgl-buffer.d.ts.map +1 -0
  88. package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +100 -73
  89. package/dist/classes/webgl-buffer.js.map +1 -0
  90. package/dist/classes/webgl-resource.d.ts +56 -0
  91. package/dist/classes/webgl-resource.d.ts.map +1 -0
  92. package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +35 -52
  93. package/dist/classes/webgl-resource.js.map +1 -0
  94. package/dist/classes/webgl-shader.d.ts +53 -0
  95. package/dist/classes/webgl-shader.d.ts.map +1 -0
  96. package/dist/classes/webgl-shader.js +193 -0
  97. package/dist/classes/webgl-shader.js.map +1 -0
  98. package/dist/context/context/context-state.d.ts +18 -0
  99. package/dist/context/context/context-state.d.ts.map +1 -0
  100. package/dist/context/context/context-state.js +26 -0
  101. package/dist/context/context/context-state.js.map +1 -0
  102. package/dist/context/context/create-context.d.ts +40 -0
  103. package/dist/context/context/create-context.d.ts.map +1 -0
  104. package/dist/context/context/create-context.js +37 -0
  105. package/dist/context/context/create-context.js.map +1 -0
  106. package/dist/context/context/device-pixels.d.ts +25 -0
  107. package/dist/context/context/device-pixels.d.ts.map +1 -0
  108. package/dist/context/context/device-pixels.js +98 -0
  109. package/dist/context/context/device-pixels.js.map +1 -0
  110. package/dist/context/context/get-canvas.d.ts +13 -0
  111. package/dist/context/context/get-canvas.d.ts.map +1 -0
  112. package/dist/context/context/get-canvas.js +31 -0
  113. package/dist/context/context/get-canvas.js.map +1 -0
  114. package/dist/context/context/resize-context.d.ts +20 -0
  115. package/dist/context/context/resize-context.d.ts.map +1 -0
  116. package/dist/context/context/resize-context.js +15 -0
  117. package/dist/context/context/resize-context.js.map +1 -0
  118. package/dist/context/context/webgl-checks.d.ts +13 -0
  119. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  120. package/dist/context/context/webgl-checks.js +34 -0
  121. package/dist/context/context/webgl-checks.js.map +1 -0
  122. package/dist/context/parameters/unified-parameter-api.d.ts +30 -0
  123. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  124. package/dist/context/parameters/unified-parameter-api.js +65 -0
  125. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  126. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  127. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  128. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  129. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  130. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  131. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  132. package/dist/context/parameters/webgl-parameters.js +2 -0
  133. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  134. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  135. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  136. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  137. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  138. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  139. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  140. package/dist/context/polyfill/polyfill-context.js +91 -0
  141. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  142. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  143. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  144. package/dist/context/polyfill/polyfill-table.js +160 -0
  145. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  146. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  147. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  148. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  149. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  150. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  151. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  152. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  153. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  154. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  155. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  156. package/dist/context/state-tracker/track-context-state.js +169 -0
  157. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  158. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  159. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  160. package/dist/context/state-tracker/with-parameters.js +36 -0
  161. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  162. package/dist/debug/debug-program-configuration.d.ts +2 -0
  163. package/dist/debug/debug-program-configuration.d.ts.map +1 -0
  164. package/dist/debug/debug-program-configuration.js +40 -0
  165. package/dist/debug/debug-program-configuration.js.map +1 -0
  166. package/dist/debug/debug-uniforms.d.ts +12 -0
  167. package/dist/debug/debug-uniforms.d.ts.map +1 -0
  168. package/dist/debug/debug-uniforms.js +108 -0
  169. package/dist/debug/debug-uniforms.js.map +1 -0
  170. package/dist/debug/debug-vertex-array.d.ts +5 -0
  171. package/dist/debug/debug-vertex-array.d.ts.map +1 -0
  172. package/dist/debug/debug-vertex-array.js +118 -0
  173. package/dist/debug/debug-vertex-array.js.map +1 -0
  174. package/dist/device/check-glsl-extension.d.ts +4 -0
  175. package/dist/device/check-glsl-extension.d.ts.map +1 -0
  176. package/dist/device/check-glsl-extension.js +22 -0
  177. package/dist/device/check-glsl-extension.js.map +1 -0
  178. package/dist/device/device-features.d.ts +12 -0
  179. package/dist/device/device-features.d.ts.map +1 -0
  180. package/dist/device/device-features.js +123 -0
  181. package/dist/device/device-features.js.map +1 -0
  182. package/dist/device/device-limits.d.ts +51 -0
  183. package/dist/device/device-limits.d.ts.map +1 -0
  184. package/dist/device/device-limits.js +90 -0
  185. package/dist/device/device-limits.js.map +1 -0
  186. package/dist/device/get-device-info.d.ts +4 -0
  187. package/dist/device/get-device-info.d.ts.map +1 -0
  188. package/dist/device/get-device-info.js +44 -0
  189. package/dist/device/get-device-info.js.map +1 -0
  190. package/dist/device/webgl-device.d.ts +111 -0
  191. package/dist/device/webgl-device.d.ts.map +1 -0
  192. package/dist/device/webgl-device.js +208 -0
  193. package/dist/device/webgl-device.js.map +1 -0
  194. package/dist/es5/api/device2.js +42 -0
  195. package/dist/es5/api/device2.js.map +1 -0
  196. package/dist/es5/bundle.js +2 -4
  197. package/dist/es5/bundle.js.map +1 -1
  198. package/dist/es5/classes/accessor.js +36 -38
  199. package/dist/es5/classes/accessor.js.map +1 -1
  200. package/dist/es5/classes/accessor.ts.disabled +159 -0
  201. package/dist/es5/classes/clear.js +17 -11
  202. package/dist/es5/classes/clear.js.map +1 -1
  203. package/dist/es5/classes/copy-and-blit.js +121 -117
  204. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  205. package/dist/es5/classes/framebuffer.js +435 -423
  206. package/dist/es5/classes/framebuffer.js.map +1 -1
  207. package/dist/es5/classes/program-configuration.js +14 -11
  208. package/dist/es5/classes/program-configuration.js.map +1 -1
  209. package/dist/es5/classes/program.js +79 -67
  210. package/dist/es5/classes/program.js.map +1 -1
  211. package/dist/es5/classes/query.js +58 -59
  212. package/dist/es5/classes/query.js.map +1 -1
  213. package/dist/es5/classes/renderbuffer-formats.js +79 -52
  214. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  215. package/dist/es5/classes/renderbuffer.js +129 -100
  216. package/dist/es5/classes/renderbuffer.js.map +1 -1
  217. package/dist/es5/classes/texture-2d.js +25 -21
  218. package/dist/es5/classes/texture-2d.js.map +1 -1
  219. package/dist/es5/classes/texture-3d.js +49 -29
  220. package/dist/es5/classes/texture-3d.js.map +1 -1
  221. package/dist/es5/classes/texture-cube.js +45 -36
  222. package/dist/es5/classes/texture-cube.js.map +1 -1
  223. package/dist/es5/classes/texture-formats.js +35 -33
  224. package/dist/es5/classes/texture-formats.js.map +1 -1
  225. package/dist/es5/classes/texture.js +213 -101
  226. package/dist/es5/classes/texture.js.map +1 -1
  227. package/dist/es5/classes/transform-feedback.js +37 -34
  228. package/dist/es5/classes/transform-feedback.js.map +1 -1
  229. package/dist/es5/classes/uniform-buffer-layout.js +4 -4
  230. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  231. package/dist/es5/classes/uniforms.js +73 -73
  232. package/dist/es5/classes/uniforms.js.map +1 -1
  233. package/dist/es5/classes/vertex-array-object.js +106 -149
  234. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  235. package/dist/es5/classes/vertex-array.js +47 -38
  236. package/dist/es5/classes/vertex-array.js.map +1 -1
  237. package/dist/es5/classes/{buffer.js → webgl-buffer.js} +120 -111
  238. package/dist/es5/classes/webgl-buffer.js.map +1 -0
  239. package/dist/es5/classes/{resource.js → webgl-resource.js} +78 -99
  240. package/dist/es5/classes/webgl-resource.js.map +1 -0
  241. package/dist/es5/classes/webgl-shader.js +309 -0
  242. package/dist/es5/classes/webgl-shader.js.map +1 -0
  243. package/dist/es5/context/context/context-state.js +31 -0
  244. package/dist/es5/context/context/context-state.js.map +1 -0
  245. package/dist/es5/context/context/create-context.js +57 -0
  246. package/dist/es5/context/context/create-context.js.map +1 -0
  247. package/dist/es5/context/context/device-pixels.js +115 -0
  248. package/dist/es5/context/context/device-pixels.js.map +1 -0
  249. package/dist/es5/context/context/get-canvas.js +40 -0
  250. package/dist/es5/context/context/get-canvas.js.map +1 -0
  251. package/dist/es5/context/context/resize-context.js +23 -0
  252. package/dist/es5/context/context/resize-context.js.map +1 -0
  253. package/dist/es5/context/context/webgl-checks.js +54 -0
  254. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  255. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  256. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  257. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  258. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  259. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  260. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  261. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  262. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  263. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  264. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  265. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  266. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  267. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  268. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  269. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  270. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  271. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  272. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  273. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  274. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  275. package/dist/es5/debug/debug-program-configuration.js +1 -1
  276. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  277. package/dist/es5/debug/debug-uniforms.js +18 -20
  278. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  279. package/dist/es5/debug/debug-vertex-array.js +16 -16
  280. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  281. package/dist/es5/device/check-glsl-extension.js +33 -0
  282. package/dist/es5/device/check-glsl-extension.js.map +1 -0
  283. package/dist/es5/device/device-features.js +152 -0
  284. package/dist/es5/device/device-features.js.map +1 -0
  285. package/dist/es5/device/device-limits.js +64 -0
  286. package/dist/es5/device/device-limits.js.map +1 -0
  287. package/dist/es5/device/get-device-info.js +55 -0
  288. package/dist/es5/device/get-device-info.js.map +1 -0
  289. package/dist/es5/device/webgl-device.js +279 -0
  290. package/dist/es5/device/webgl-device.js.map +1 -0
  291. package/dist/es5/index.js +140 -96
  292. package/dist/es5/index.js.map +1 -1
  293. package/dist/es5/init.js +21 -41
  294. package/dist/es5/init.js.map +1 -1
  295. package/dist/es5/types.js +2 -0
  296. package/dist/es5/types.js.map +1 -0
  297. package/dist/es5/webgl-utils/attribute-utils.js +4 -4
  298. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  299. package/dist/es5/webgl-utils/constants-to-keys.js +3 -3
  300. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  301. package/dist/es5/webgl-utils/format-utils.js +21 -17
  302. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  303. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  304. package/dist/es5/webgl-utils/index.js +74 -0
  305. package/dist/es5/webgl-utils/index.js.map +1 -0
  306. package/dist/es5/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  307. package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
  308. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +72 -0
  309. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  310. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  311. package/dist/es5/webgl-utils/texture-utils.js +6 -4
  312. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  313. package/dist/es5/webgl-utils/typed-array-utils.js +39 -34
  314. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  315. package/dist/es5/webgl-utils/webgl-info.ts.disabled +135 -0
  316. package/dist/esm/api/device2.js +23 -0
  317. package/dist/esm/api/device2.js.map +1 -0
  318. package/dist/esm/bundle.js +2 -4
  319. package/dist/esm/bundle.js.map +1 -1
  320. package/dist/esm/classes/accessor.js +6 -6
  321. package/dist/esm/classes/accessor.js.map +1 -1
  322. package/dist/esm/classes/accessor.ts.disabled +159 -0
  323. package/dist/esm/classes/clear.js +19 -14
  324. package/dist/esm/classes/clear.js.map +1 -1
  325. package/dist/esm/classes/copy-and-blit.js +67 -64
  326. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  327. package/dist/esm/classes/framebuffer.js +341 -313
  328. package/dist/esm/classes/framebuffer.js.map +1 -1
  329. package/dist/esm/classes/program-configuration.js +18 -10
  330. package/dist/esm/classes/program-configuration.js.map +1 -1
  331. package/dist/esm/classes/program.js +71 -44
  332. package/dist/esm/classes/program.js.map +1 -1
  333. package/dist/esm/classes/query.js +20 -16
  334. package/dist/esm/classes/query.js.map +1 -1
  335. package/dist/esm/classes/renderbuffer-formats.js +72 -49
  336. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  337. package/dist/esm/classes/renderbuffer.js +86 -73
  338. package/dist/esm/classes/renderbuffer.js.map +1 -1
  339. package/dist/esm/classes/texture-2d.js +13 -9
  340. package/dist/esm/classes/texture-2d.js.map +1 -1
  341. package/dist/esm/classes/texture-3d.js +28 -16
  342. package/dist/esm/classes/texture-3d.js.map +1 -1
  343. package/dist/esm/classes/texture-cube.js +45 -31
  344. package/dist/esm/classes/texture-cube.js.map +1 -1
  345. package/dist/esm/classes/texture-formats.js +52 -51
  346. package/dist/esm/classes/texture-formats.js.map +1 -1
  347. package/dist/esm/classes/texture.js +174 -58
  348. package/dist/esm/classes/texture.js.map +1 -1
  349. package/dist/esm/classes/transform-feedback.js +26 -14
  350. package/dist/esm/classes/transform-feedback.js.map +1 -1
  351. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  352. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  353. package/dist/esm/classes/uniforms.js +111 -113
  354. package/dist/esm/classes/uniforms.js.map +1 -1
  355. package/dist/esm/classes/vertex-array-object.js +52 -89
  356. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  357. package/dist/esm/classes/vertex-array.js +50 -29
  358. package/dist/esm/classes/vertex-array.js.map +1 -1
  359. package/dist/esm/classes/webgl-buffer.js +382 -0
  360. package/dist/esm/classes/webgl-buffer.js.map +1 -0
  361. package/dist/esm/classes/webgl-resource.js +212 -0
  362. package/dist/esm/classes/webgl-resource.js.map +1 -0
  363. package/dist/esm/classes/webgl-shader.js +193 -0
  364. package/dist/esm/classes/webgl-shader.js.map +1 -0
  365. package/dist/esm/context/context/context-state.js +26 -0
  366. package/dist/esm/context/context/context-state.js.map +1 -0
  367. package/dist/esm/context/context/create-context.js +37 -0
  368. package/dist/esm/context/context/create-context.js.map +1 -0
  369. package/dist/esm/context/context/device-pixels.js +98 -0
  370. package/dist/esm/context/context/device-pixels.js.map +1 -0
  371. package/dist/esm/context/context/get-canvas.js +31 -0
  372. package/dist/esm/context/context/get-canvas.js.map +1 -0
  373. package/dist/esm/context/context/resize-context.js +15 -0
  374. package/dist/esm/context/context/resize-context.js.map +1 -0
  375. package/dist/esm/context/context/webgl-checks.js +34 -0
  376. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  377. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  378. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  379. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  380. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  381. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  382. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  383. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  384. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  385. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  386. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  387. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  388. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  389. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  390. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  391. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  392. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  393. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  394. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  395. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  396. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  397. package/dist/esm/debug/debug-program-configuration.js +4 -4
  398. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  399. package/dist/esm/debug/debug-uniforms.js +9 -9
  400. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  401. package/dist/esm/debug/debug-vertex-array.js +18 -16
  402. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  403. package/dist/esm/device/check-glsl-extension.js +22 -0
  404. package/dist/esm/device/check-glsl-extension.js.map +1 -0
  405. package/dist/esm/device/device-features.js +123 -0
  406. package/dist/esm/device/device-features.js.map +1 -0
  407. package/dist/esm/device/device-limits.js +90 -0
  408. package/dist/esm/device/device-limits.js.map +1 -0
  409. package/dist/esm/device/get-device-info.js +44 -0
  410. package/dist/esm/device/get-device-info.js.map +1 -0
  411. package/dist/esm/device/webgl-device.js +208 -0
  412. package/dist/esm/device/webgl-device.js.map +1 -0
  413. package/dist/esm/index.js +15 -15
  414. package/dist/esm/index.js.map +1 -1
  415. package/dist/esm/init.js +12 -28
  416. package/dist/esm/init.js.map +1 -1
  417. package/dist/esm/types.js +2 -0
  418. package/dist/esm/types.js.map +1 -0
  419. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  420. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  421. package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
  422. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  423. package/dist/esm/webgl-utils/format-utils.js +16 -15
  424. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  425. package/dist/esm/webgl-utils/get-error.js +1 -1
  426. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  427. package/dist/esm/webgl-utils/index.js +5 -0
  428. package/dist/esm/webgl-utils/index.js.map +1 -0
  429. package/dist/esm/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  430. package/dist/esm/webgl-utils/is-old-ie.js.map +1 -0
  431. package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
  432. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  433. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  434. package/dist/esm/webgl-utils/texture-utils.js +4 -3
  435. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  436. package/dist/esm/webgl-utils/typed-array-utils.js +41 -36
  437. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  438. package/dist/esm/webgl-utils/webgl-info.ts.disabled +135 -0
  439. package/dist/index.d.ts +49 -0
  440. package/dist/index.d.ts.map +1 -0
  441. package/dist/index.js +35 -0
  442. package/dist/index.js.map +1 -0
  443. package/dist/init.d.ts +5 -0
  444. package/dist/init.d.ts.map +1 -0
  445. package/dist/init.js +33 -0
  446. package/dist/init.js.map +1 -0
  447. package/dist/types.d.ts +9 -0
  448. package/dist/types.d.ts.map +1 -0
  449. package/dist/types.js +2 -0
  450. package/dist/types.js.map +1 -0
  451. package/dist/webgl-utils/attribute-utils.d.ts +18 -0
  452. package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
  453. package/dist/webgl-utils/attribute-utils.js +182 -0
  454. package/dist/webgl-utils/attribute-utils.js.map +1 -0
  455. package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
  456. package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
  457. package/dist/webgl-utils/constants-to-keys.js +41 -0
  458. package/dist/webgl-utils/constants-to-keys.js.map +1 -0
  459. package/dist/webgl-utils/format-utils.d.ts +3 -0
  460. package/dist/webgl-utils/format-utils.d.ts.map +1 -0
  461. package/dist/webgl-utils/format-utils.js +45 -0
  462. package/dist/webgl-utils/format-utils.js.map +1 -0
  463. package/dist/webgl-utils/get-error.d.ts +3 -0
  464. package/dist/webgl-utils/get-error.d.ts.map +1 -0
  465. package/dist/webgl-utils/get-error.js +41 -0
  466. package/dist/webgl-utils/get-error.js.map +1 -0
  467. package/dist/webgl-utils/index.d.ts +5 -0
  468. package/dist/webgl-utils/index.d.ts.map +1 -0
  469. package/dist/webgl-utils/index.js +5 -0
  470. package/dist/webgl-utils/index.js.map +1 -0
  471. package/dist/webgl-utils/is-old-ie.d.ts +2 -0
  472. package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
  473. package/dist/webgl-utils/is-old-ie.js +8 -0
  474. package/dist/webgl-utils/is-old-ie.js.map +1 -0
  475. package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
  476. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
  477. package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
  478. package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  479. package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
  480. package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
  481. package/dist/webgl-utils/request-animation-frame.js +7 -0
  482. package/dist/webgl-utils/request-animation-frame.js.map +1 -0
  483. package/dist/webgl-utils/texture-utils.d.ts +15 -0
  484. package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
  485. package/dist/webgl-utils/texture-utils.js +48 -0
  486. package/dist/webgl-utils/texture-utils.js.map +1 -0
  487. package/dist/webgl-utils/typed-array-utils.d.ts +43 -0
  488. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
  489. package/{src → dist}/webgl-utils/typed-array-utils.js +45 -27
  490. package/dist/webgl-utils/typed-array-utils.js.map +1 -0
  491. package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
  492. package/package.json +9 -9
  493. package/src/.DS_Store +0 -0
  494. package/src/api/device2.ts +71 -0
  495. package/src/bundle.ts +4 -0
  496. package/src/classes/accessor.js +2 -3
  497. package/src/classes/accessor.ts.disabled +159 -0
  498. package/src/classes/clear.ts +108 -0
  499. package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +143 -55
  500. package/src/classes/{framebuffer.js → framebuffer.ts} +381 -321
  501. package/src/classes/{program-configuration.js → program-configuration.ts} +19 -12
  502. package/src/classes/{program.js → program.ts} +66 -40
  503. package/src/classes/{query.js → query.ts} +31 -25
  504. package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
  505. package/src/classes/renderbuffer.ts +154 -0
  506. package/src/classes/texture-2d.ts +35 -0
  507. package/src/classes/{texture-3d.js → texture-3d.ts} +48 -18
  508. package/src/classes/{texture-cube.js → texture-cube.ts} +52 -34
  509. package/src/classes/{texture-formats.js → texture-formats.ts} +10 -2
  510. package/src/classes/{texture.js → texture.ts} +223 -57
  511. package/src/classes/{transform-feedback.js → transform-feedback.ts} +34 -25
  512. package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
  513. package/src/classes/{uniforms.js → uniforms.ts} +123 -77
  514. package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +133 -112
  515. package/src/classes/{vertex-array.js → vertex-array.ts} +74 -55
  516. package/src/classes/{buffer.js → webgl-buffer.ts} +126 -50
  517. package/src/classes/{resource.js → webgl-resource.ts} +55 -46
  518. package/src/classes/webgl-shader.ts +202 -0
  519. package/src/context/context/context-state.ts +39 -0
  520. package/src/context/context/create-context.ts +83 -0
  521. package/src/context/context/device-pixels.ts +147 -0
  522. package/src/context/context/get-canvas.ts +37 -0
  523. package/src/context/context/resize-context.ts +37 -0
  524. package/src/context/context/webgl-checks.ts +49 -0
  525. package/src/context/parameters/unified-parameter-api.ts +127 -0
  526. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  527. package/src/context/parameters/webgl-parameters.ts +197 -0
  528. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  529. package/src/context/polyfill/polyfill-context.ts +98 -0
  530. package/src/context/polyfill/polyfill-table.ts +162 -0
  531. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  532. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  533. package/src/context/state-tracker/track-context-state.ts +250 -0
  534. package/src/context/state-tracker/with-parameters.ts +50 -0
  535. package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
  536. package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
  537. package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +6 -5
  538. package/src/device/check-glsl-extension.ts +44 -0
  539. package/src/device/device-features.ts +227 -0
  540. package/src/device/device-limits.ts +150 -0
  541. package/src/device/get-device-info.ts +49 -0
  542. package/src/device/webgl-device.ts +406 -0
  543. package/src/index.ts +127 -0
  544. package/src/{init.js → init.ts} +11 -25
  545. package/src/{types.d.ts → types.ts} +1 -1
  546. package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
  547. package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
  548. package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
  549. package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
  550. package/src/webgl-utils/index.ts +12 -0
  551. package/src/{features/check-old-ie.js → webgl-utils/is-old-ie.ts} +3 -3
  552. package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
  553. package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
  554. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +14 -10
  555. package/src/webgl-utils/typed-array-utils.ts +137 -0
  556. package/src/webgl-utils/webgl-info.ts.disabled +135 -0
  557. package/dist/dist.js +0 -13710
  558. package/dist/dist.min.js +0 -1
  559. package/dist/es5/classes/buffer.d.ts +0 -84
  560. package/dist/es5/classes/buffer.js.map +0 -1
  561. package/dist/es5/classes/clear.d.ts +0 -11
  562. package/dist/es5/classes/copy-and-blit.d.ts +0 -101
  563. package/dist/es5/classes/framebuffer.d.ts +0 -96
  564. package/dist/es5/classes/program-configuration.d.ts +0 -15
  565. package/dist/es5/classes/program.d.ts +0 -44
  566. package/dist/es5/classes/query.d.ts +0 -21
  567. package/dist/es5/classes/renderbuffer.d.ts +0 -34
  568. package/dist/es5/classes/resource.d.ts +0 -47
  569. package/dist/es5/classes/resource.js.map +0 -1
  570. package/dist/es5/classes/shader.d.ts +0 -29
  571. package/dist/es5/classes/shader.js +0 -221
  572. package/dist/es5/classes/shader.js.map +0 -1
  573. package/dist/es5/classes/texture-2d.d.ts +0 -11
  574. package/dist/es5/classes/texture-3d.d.ts +0 -29
  575. package/dist/es5/classes/texture-cube.d.ts +0 -23
  576. package/dist/es5/classes/texture.d.ts +0 -80
  577. package/dist/es5/classes/transform-feedback.d.ts +0 -16
  578. package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
  579. package/dist/es5/classes/uniforms.d.ts +0 -63
  580. package/dist/es5/classes/vertex-array-object.d.ts +0 -25
  581. package/dist/es5/classes/vertex-array.d.ts +0 -37
  582. package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
  583. package/dist/es5/debug/debug-uniforms.d.ts +0 -11
  584. package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
  585. package/dist/es5/features/check-glsl-extension.js +0 -41
  586. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  587. package/dist/es5/features/check-old-ie.js.map +0 -1
  588. package/dist/es5/features/features.js +0 -99
  589. package/dist/es5/features/features.js.map +0 -1
  590. package/dist/es5/features/index.js +0 -64
  591. package/dist/es5/features/index.js.map +0 -1
  592. package/dist/es5/features/limits.js +0 -64
  593. package/dist/es5/features/limits.js.map +0 -1
  594. package/dist/es5/features/webgl-features-table.js +0 -64
  595. package/dist/es5/features/webgl-features-table.js.map +0 -1
  596. package/dist/es5/features/webgl-limits-table.js +0 -132
  597. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  598. package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
  599. package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
  600. package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
  601. package/dist/es5/glsl-utils/get-shader-name.js +0 -14
  602. package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
  603. package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
  604. package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
  605. package/dist/es5/glsl-utils/get-shader-version.js +0 -22
  606. package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
  607. package/dist/es5/glsl-utils/index.js +0 -48
  608. package/dist/es5/glsl-utils/index.js.map +0 -1
  609. package/dist/es5/index.d.ts +0 -71
  610. package/dist/es5/init.d.ts +0 -12
  611. package/dist/es5/types.d.ts +0 -8
  612. package/dist/es5/utils/array-utils-flat.js +0 -51
  613. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  614. package/dist/es5/utils/assert.d.ts +0 -1
  615. package/dist/es5/utils/assert.js +0 -13
  616. package/dist/es5/utils/assert.js.map +0 -1
  617. package/dist/es5/utils/check-props.js +0 -51
  618. package/dist/es5/utils/check-props.js.map +0 -1
  619. package/dist/es5/utils/format-value.js +0 -57
  620. package/dist/es5/utils/format-value.js.map +0 -1
  621. package/dist/es5/utils/is-old-ie.d.ts +0 -1
  622. package/dist/es5/utils/is-old-ie.js +0 -14
  623. package/dist/es5/utils/is-old-ie.js.map +0 -1
  624. package/dist/es5/utils/load-file.js +0 -50
  625. package/dist/es5/utils/load-file.js.map +0 -1
  626. package/dist/es5/utils/stub-methods.js +0 -25
  627. package/dist/es5/utils/stub-methods.js.map +0 -1
  628. package/dist/es5/utils/utils.d.ts +0 -13
  629. package/dist/es5/utils/utils.js +0 -36
  630. package/dist/es5/utils/utils.js.map +0 -1
  631. package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
  632. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  633. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  634. package/dist/esm/classes/buffer.d.ts +0 -84
  635. package/dist/esm/classes/buffer.js.map +0 -1
  636. package/dist/esm/classes/clear.d.ts +0 -11
  637. package/dist/esm/classes/copy-and-blit.d.ts +0 -101
  638. package/dist/esm/classes/framebuffer.d.ts +0 -96
  639. package/dist/esm/classes/program-configuration.d.ts +0 -15
  640. package/dist/esm/classes/program.d.ts +0 -44
  641. package/dist/esm/classes/query.d.ts +0 -21
  642. package/dist/esm/classes/renderbuffer.d.ts +0 -34
  643. package/dist/esm/classes/resource.d.ts +0 -47
  644. package/dist/esm/classes/resource.js.map +0 -1
  645. package/dist/esm/classes/shader.d.ts +0 -29
  646. package/dist/esm/classes/shader.js +0 -138
  647. package/dist/esm/classes/shader.js.map +0 -1
  648. package/dist/esm/classes/texture-2d.d.ts +0 -11
  649. package/dist/esm/classes/texture-3d.d.ts +0 -29
  650. package/dist/esm/classes/texture-cube.d.ts +0 -23
  651. package/dist/esm/classes/texture.d.ts +0 -80
  652. package/dist/esm/classes/transform-feedback.d.ts +0 -16
  653. package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
  654. package/dist/esm/classes/uniforms.d.ts +0 -63
  655. package/dist/esm/classes/vertex-array-object.d.ts +0 -25
  656. package/dist/esm/classes/vertex-array.d.ts +0 -37
  657. package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
  658. package/dist/esm/debug/debug-uniforms.d.ts +0 -11
  659. package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
  660. package/dist/esm/features/check-glsl-extension.js +0 -27
  661. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  662. package/dist/esm/features/check-old-ie.js.map +0 -1
  663. package/dist/esm/features/features.js +0 -66
  664. package/dist/esm/features/features.js.map +0 -1
  665. package/dist/esm/features/index.js +0 -5
  666. package/dist/esm/features/index.js.map +0 -1
  667. package/dist/esm/features/limits.js +0 -52
  668. package/dist/esm/features/limits.js.map +0 -1
  669. package/dist/esm/features/webgl-features-table.js +0 -71
  670. package/dist/esm/features/webgl-features-table.js.map +0 -1
  671. package/dist/esm/features/webgl-limits-table.js +0 -160
  672. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  673. package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
  674. package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
  675. package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
  676. package/dist/esm/glsl-utils/get-shader-name.js +0 -6
  677. package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
  678. package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
  679. package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
  680. package/dist/esm/glsl-utils/get-shader-version.js +0 -15
  681. package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
  682. package/dist/esm/glsl-utils/index.js +0 -5
  683. package/dist/esm/glsl-utils/index.js.map +0 -1
  684. package/dist/esm/index.d.ts +0 -71
  685. package/dist/esm/init.d.ts +0 -12
  686. package/dist/esm/types.d.ts +0 -8
  687. package/dist/esm/utils/array-utils-flat.js +0 -39
  688. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  689. package/dist/esm/utils/assert.d.ts +0 -1
  690. package/dist/esm/utils/assert.js +0 -6
  691. package/dist/esm/utils/assert.js.map +0 -1
  692. package/dist/esm/utils/check-props.js +0 -38
  693. package/dist/esm/utils/check-props.js.map +0 -1
  694. package/dist/esm/utils/format-value.js +0 -50
  695. package/dist/esm/utils/format-value.js.map +0 -1
  696. package/dist/esm/utils/is-old-ie.d.ts +0 -1
  697. package/dist/esm/utils/is-old-ie.js +0 -5
  698. package/dist/esm/utils/is-old-ie.js.map +0 -1
  699. package/dist/esm/utils/load-file.js +0 -30
  700. package/dist/esm/utils/load-file.js.map +0 -1
  701. package/dist/esm/utils/stub-methods.js +0 -17
  702. package/dist/esm/utils/stub-methods.js.map +0 -1
  703. package/dist/esm/utils/utils.d.ts +0 -13
  704. package/dist/esm/utils/utils.js +0 -22
  705. package/dist/esm/utils/utils.js.map +0 -1
  706. package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
  707. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  708. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  709. package/src/bundle.js +0 -8
  710. package/src/classes/buffer.d.ts +0 -84
  711. package/src/classes/clear.d.ts +0 -11
  712. package/src/classes/copy-and-blit.d.ts +0 -101
  713. package/src/classes/framebuffer.d.ts +0 -96
  714. package/src/classes/program-configuration.d.ts +0 -15
  715. package/src/classes/program.d.ts +0 -44
  716. package/src/classes/query.d.ts +0 -21
  717. package/src/classes/renderbuffer.d.ts +0 -34
  718. package/src/classes/renderbuffer.js +0 -105
  719. package/src/classes/resource.d.ts +0 -47
  720. package/src/classes/shader.d.ts +0 -29
  721. package/src/classes/shader.js +0 -147
  722. package/src/classes/texture-2d.d.ts +0 -11
  723. package/src/classes/texture-2d.js +0 -30
  724. package/src/classes/texture-3d.d.ts +0 -29
  725. package/src/classes/texture-cube.d.ts +0 -23
  726. package/src/classes/texture.d.ts +0 -80
  727. package/src/classes/transform-feedback.d.ts +0 -16
  728. package/src/classes/uniform-buffer-layout.d.ts +0 -18
  729. package/src/classes/uniforms.d.ts +0 -63
  730. package/src/classes/vertex-array-object.d.ts +0 -25
  731. package/src/classes/vertex-array.d.ts +0 -37
  732. package/src/debug/debug-program-configuration.d.ts +0 -1
  733. package/src/debug/debug-uniforms.d.ts +0 -11
  734. package/src/debug/debug-vertex-array.d.ts +0 -1
  735. package/src/features/check-glsl-extension.js +0 -34
  736. package/src/features/features.js +0 -79
  737. package/src/features/index.js +0 -5
  738. package/src/features/limits.js +0 -65
  739. package/src/features/webgl-features-table.js +0 -104
  740. package/src/features/webgl-limits-table.js +0 -51
  741. package/src/glsl-utils/format-glsl-error.d.ts +0 -16
  742. package/src/glsl-utils/format-glsl-error.js +0 -107
  743. package/src/glsl-utils/get-shader-name.js +0 -7
  744. package/src/glsl-utils/get-shader-type-name.js +0 -13
  745. package/src/glsl-utils/get-shader-version.js +0 -12
  746. package/src/glsl-utils/index.js +0 -8
  747. package/src/index.d.ts +0 -71
  748. package/src/index.js +0 -70
  749. package/src/init.d.ts +0 -12
  750. package/src/utils/array-utils-flat.js +0 -56
  751. package/src/utils/assert.d.ts +0 -1
  752. package/src/utils/assert.js +0 -7
  753. package/src/utils/check-props.js +0 -68
  754. package/src/utils/format-value.js +0 -37
  755. package/src/utils/is-old-ie.d.ts +0 -1
  756. package/src/utils/is-old-ie.js +0 -6
  757. package/src/utils/load-file.js +0 -39
  758. package/src/utils/stub-methods.js +0 -20
  759. package/src/utils/utils.d.ts +0 -13
  760. package/src/utils/utils.js +0 -36
  761. package/src/webgl-utils/request-animation-frame.d.ts +0 -3
  762. package/src/webgl-utils/texture-utils.d.ts +0 -11
  763. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/classes/vertex-array-object.ts"],"names":["assert","getScratchArray","fillArray","GL","getBrowser","WebGLDevice","assertWebGL2Context","isWebGL2","WebGLResource","Buffer","ERR_ELEMENTS","VertexArrayObject","isSupported","gl","options","constantAttributeZero","getDefaultArray","webglDevice","fromContext","defaultVertexArray","handle","isDefaultArray","getMaxAttributes","MAX_ATTRIBUTES","getParameter","MAX_VERTEX_ATTRIBS","setConstant","location","array","constructor","Float32Array","_setConstantFloatArray","Int32Array","_setConstantIntArray","Uint32Array","_setConstantUintArray","opts","attach","id","program","buffer","bufferValue","Object","seal","delete","setElementBuffer","elementBuffer","target","ELEMENT_ARRAY_BUFFER","bind","bindBuffer","setBuffer","accessor","size","type","stride","offset","normalized","integer","divisor","gl2","Number","ARRAY_BUFFER","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","enable","disablingAttributeZero","disableVertexAttribArray","getConstantBuffer","elementCount","value","constantValue","_normalizeConstantArrayValue","byteLength","length","updateNeeded","reallocate","_compareConstantArrayValues","typedArray","source","start","count","subData","initialize","props","setProps","arrayValue","Array","isArray","v1","v2","i","vertexAttrib1fv","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttribI4iv","vertexAttribI4uiv","_createHandle","createVertexArray","_deleteHandle","deleteVertexArray","elements","_bindHandle","bindVertexArray","_getParameter","pname","isFinite","VERTEX_ATTRIB_ARRAY_POINTER","getVertexAttribOffset","getVertexAttrib"],"mappings":"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","sourcesContent":["import {assert, getScratchArray, fillArray} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getBrowser} from '@probe.gl/env';\nimport WebGLDevice from '../device/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, opts?: VertexArrayObjectProps) {\n // Use program's id if program but no id is supplied\n super(WebGLDevice.attach(gl), {...opts, id: opts?.id || (opts?.program && opts?.program.id)}, {} as any);\n\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts?.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 = 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, buffer, accessor): 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, 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) {\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"}
@@ -0,0 +1,75 @@
1
+ import Accessor from './accessor';
2
+ import Buffer from './webgl-buffer';
3
+ import Program from './program';
4
+ import ProgramConfiguration from './program-configuration';
5
+ import VertexArrayObject from './vertex-array-object';
6
+ export declare type VertexArrayProps = {
7
+ id?: string;
8
+ program?: Program;
9
+ configuration?: ProgramConfiguration;
10
+ attributes?: Record<string, any>;
11
+ elements?: any;
12
+ bindOnUse?: boolean;
13
+ };
14
+ export declare type DrawParams = {
15
+ elementCount: number;
16
+ indexType: Uint16ArrayConstructor | Uint32ArrayConstructor;
17
+ indexOffset: number;
18
+ isIndexed: boolean;
19
+ isInstanced: boolean;
20
+ indexCount: number;
21
+ vertexCount: number;
22
+ instanceCount: number;
23
+ };
24
+ export default class VertexArray {
25
+ id: string;
26
+ gl: WebGLRenderingContext;
27
+ readonly attributes: object;
28
+ vertexArrayObject: VertexArrayObject;
29
+ accessors: Accessor[];
30
+ configuration: ProgramConfiguration | null;
31
+ elements: any;
32
+ elementsAccessor: any;
33
+ values: any;
34
+ unused: any;
35
+ drawParams: any;
36
+ buffer: any;
37
+ bindOnUse: boolean;
38
+ constructor(gl: WebGLRenderingContext, props?: VertexArrayProps);
39
+ delete(): void;
40
+ initialize(props?: VertexArrayProps): this;
41
+ reset(): this;
42
+ setProps(props: VertexArrayProps): this;
43
+ clearDrawParams(): void;
44
+ getDrawParams(): DrawParams;
45
+ setAttributes(attributes: any): this;
46
+ setElementBuffer(elementBuffer?: Buffer | null, accessor?: {}): this;
47
+ setBuffer(locationOrName: any, buffer: Buffer, appAccessor?: {}): this;
48
+ setConstant(locationOrName: any, arrayValue: any, appAccessor?: {}): this;
49
+ unbindBuffers(): this;
50
+ bindBuffers(): this;
51
+ bindForDraw(vertexCount: any, instanceCount: any, func: any): any;
52
+ _resolveLocationAndAccessor(locationOrName: any, value: any, valueAccessor: any, appAccessor: any): {
53
+ location: number;
54
+ accessor: any;
55
+ } | {
56
+ location: any;
57
+ accessor: Accessor;
58
+ };
59
+ _getAttributeInfo(attributeName: any): any;
60
+ _getAttributeIndex(locationOrName: any): {
61
+ location: number;
62
+ name?: undefined;
63
+ } | {
64
+ location: any;
65
+ name: any;
66
+ };
67
+ _setAttribute(locationOrName: any, value: any): void;
68
+ _setConstantAttributes(vertexCount: any, instanceCount: any): void;
69
+ _setConstantAttributeZero(constant: any, elementCount: number): void;
70
+ _setConstantAttribute(location: any, constant: any): void;
71
+ _updateDrawParams(): DrawParams;
72
+ _updateDrawParamsForLocation(drawParams: DrawParams, location: any): void;
73
+ setElements(elementBuffer?: any, accessor?: {}): this;
74
+ }
75
+ //# sourceMappingURL=vertex-array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex-array.d.ts","sourceRoot":"","sources":["../../src/classes/vertex-array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,408 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { log, assert } from '@luma.gl/api';
3
+ import GL from '@luma.gl/constants';
4
+ import Accessor from './accessor';
5
+ import Buffer from './webgl-buffer';
6
+ import VertexArrayObject from './vertex-array-object';
7
+ const ERR_ATTRIBUTE_TYPE = 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';
8
+ const MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;
9
+ export default class VertexArray {
10
+ constructor(gl, props) {
11
+ _defineProperty(this, "id", void 0);
12
+
13
+ _defineProperty(this, "gl", void 0);
14
+
15
+ _defineProperty(this, "attributes", {});
16
+
17
+ _defineProperty(this, "vertexArrayObject", void 0);
18
+
19
+ _defineProperty(this, "accessors", []);
20
+
21
+ _defineProperty(this, "configuration", null);
22
+
23
+ _defineProperty(this, "elements", null);
24
+
25
+ _defineProperty(this, "elementsAccessor", null);
26
+
27
+ _defineProperty(this, "values", null);
28
+
29
+ _defineProperty(this, "unused", null);
30
+
31
+ _defineProperty(this, "drawParams", null);
32
+
33
+ _defineProperty(this, "buffer", null);
34
+
35
+ _defineProperty(this, "bindOnUse", false);
36
+
37
+ const 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);
38
+ this.vertexArrayObject = new VertexArrayObject(gl);
39
+ this.id = id;
40
+ this.gl = gl;
41
+ this.configuration = null;
42
+ this.initialize(props);
43
+ Object.seal(this);
44
+ }
45
+
46
+ delete() {
47
+ if (this.buffer) {
48
+ this.buffer.delete();
49
+ }
50
+
51
+ this.vertexArrayObject.delete();
52
+ }
53
+
54
+ initialize(props) {
55
+ this.reset();
56
+ this.configuration = null;
57
+ this.bindOnUse = false;
58
+ return this.setProps(props || {});
59
+ }
60
+
61
+ reset() {
62
+ this.elements = null;
63
+ this.elementsAccessor = null;
64
+ const {
65
+ MAX_ATTRIBUTES
66
+ } = this.vertexArrayObject;
67
+ this.values = new Array(MAX_ATTRIBUTES).fill(null);
68
+ this.accessors = new Array(MAX_ATTRIBUTES).fill(null);
69
+ this.unused = {};
70
+ this.drawParams = null;
71
+ return this;
72
+ }
73
+
74
+ setProps(props) {
75
+ if ('program' in props) {
76
+ this.configuration = props.program && props.program.configuration;
77
+ }
78
+
79
+ if ('configuration' in props) {
80
+ this.configuration = props.configuration;
81
+ }
82
+
83
+ if ('attributes' in props) {
84
+ this.setAttributes(props.attributes);
85
+ }
86
+
87
+ if ('elements' in props) {
88
+ this.setElementBuffer(props.elements);
89
+ }
90
+
91
+ if ('bindOnUse' in props) {
92
+ props = props.bindOnUse;
93
+ }
94
+
95
+ return this;
96
+ }
97
+
98
+ clearDrawParams() {
99
+ this.drawParams = null;
100
+ }
101
+
102
+ getDrawParams() {
103
+ this.drawParams = this.drawParams || this._updateDrawParams();
104
+ return this.drawParams;
105
+ }
106
+
107
+ setAttributes(attributes) {
108
+ Object.assign(this.attributes, attributes);
109
+ this.vertexArrayObject.bind(() => {
110
+ for (const locationOrName in attributes) {
111
+ const value = attributes[locationOrName];
112
+
113
+ this._setAttribute(locationOrName, value);
114
+ }
115
+
116
+ this.gl.bindBuffer(GL.ARRAY_BUFFER, null);
117
+ });
118
+ return this;
119
+ }
120
+
121
+ setElementBuffer(elementBuffer = null, accessor = {}) {
122
+ this.elements = elementBuffer;
123
+ this.elementsAccessor = accessor;
124
+ this.clearDrawParams();
125
+ this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);
126
+ return this;
127
+ }
128
+
129
+ setBuffer(locationOrName, buffer, appAccessor = {}) {
130
+ if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
131
+ this.setElementBuffer(buffer, appAccessor);
132
+ return this;
133
+ }
134
+
135
+ const {
136
+ location,
137
+ accessor
138
+ } = this._resolveLocationAndAccessor(locationOrName, buffer, buffer.accessor, appAccessor);
139
+
140
+ if (location >= 0) {
141
+ this.values[location] = buffer;
142
+ this.accessors[location] = accessor;
143
+ this.clearDrawParams();
144
+ this.vertexArrayObject.setBuffer(location, buffer, accessor);
145
+ }
146
+
147
+ return this;
148
+ }
149
+
150
+ setConstant(locationOrName, arrayValue, appAccessor = {}) {
151
+ const {
152
+ location,
153
+ accessor
154
+ } = this._resolveLocationAndAccessor(locationOrName, arrayValue, {
155
+ size: arrayValue.length,
156
+ ...appAccessor
157
+ });
158
+
159
+ if (location >= 0) {
160
+ arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);
161
+ this.values[location] = arrayValue;
162
+ this.accessors[location] = accessor;
163
+ this.clearDrawParams();
164
+ this.vertexArrayObject.enable(location, false);
165
+ }
166
+
167
+ return this;
168
+ }
169
+
170
+ unbindBuffers() {
171
+ this.vertexArrayObject.bind(() => {
172
+ if (this.elements) {
173
+ this.vertexArrayObject.setElementBuffer(null);
174
+ }
175
+
176
+ this.buffer = this.buffer || new Buffer(this.gl, {
177
+ accessor: {
178
+ size: 4
179
+ }
180
+ });
181
+
182
+ for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {
183
+ if (this.values[location] instanceof Buffer) {
184
+ this.gl.disableVertexAttribArray(location);
185
+ this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);
186
+ this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);
187
+ }
188
+ }
189
+ });
190
+ return this;
191
+ }
192
+
193
+ bindBuffers() {
194
+ this.vertexArrayObject.bind(() => {
195
+ if (this.elements) {
196
+ this.setElementBuffer(this.elements);
197
+ }
198
+
199
+ for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {
200
+ const buffer = this.values[location];
201
+
202
+ if (buffer instanceof Buffer) {
203
+ this.setBuffer(location, buffer);
204
+ }
205
+ }
206
+ });
207
+ return this;
208
+ }
209
+
210
+ bindForDraw(vertexCount, instanceCount, func) {
211
+ let value;
212
+ this.vertexArrayObject.bind(() => {
213
+ this._setConstantAttributes(vertexCount, instanceCount);
214
+
215
+ value = func();
216
+ });
217
+ return value;
218
+ }
219
+
220
+ _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {
221
+ const INVALID_RESULT = {
222
+ location: -1,
223
+ accessor: null
224
+ };
225
+
226
+ const {
227
+ location,
228
+ name
229
+ } = this._getAttributeIndex(locationOrName);
230
+
231
+ if (!Number.isFinite(location) || location < 0) {
232
+ this.unused[locationOrName] = value;
233
+ log.once(3, () => "unused value ".concat(locationOrName, " in ").concat(this.id))();
234
+ return INVALID_RESULT;
235
+ }
236
+
237
+ const accessInfo = this._getAttributeInfo(name || location);
238
+
239
+ if (!accessInfo) {
240
+ return INVALID_RESULT;
241
+ }
242
+
243
+ const currentAccessor = this.accessors[location] || {};
244
+ const accessor = Accessor.resolve(accessInfo.accessor, currentAccessor, valueAccessor, appAccessor);
245
+ const {
246
+ size,
247
+ type
248
+ } = accessor;
249
+ assert(Number.isFinite(size) && Number.isFinite(type));
250
+ return {
251
+ location,
252
+ accessor
253
+ };
254
+ }
255
+
256
+ _getAttributeInfo(attributeName) {
257
+ return this.configuration && this.configuration.getAttributeInfo(attributeName);
258
+ }
259
+
260
+ _getAttributeIndex(locationOrName) {
261
+ const location = Number(locationOrName);
262
+
263
+ if (Number.isFinite(location)) {
264
+ return {
265
+ location
266
+ };
267
+ }
268
+
269
+ const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);
270
+ const name = multiLocation ? multiLocation[1] : locationOrName;
271
+ const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;
272
+
273
+ if (this.configuration) {
274
+ return {
275
+ location: this.configuration.getAttributeLocation(name) + locationOffset,
276
+ name
277
+ };
278
+ }
279
+
280
+ return {
281
+ location: -1
282
+ };
283
+ }
284
+
285
+ _setAttribute(locationOrName, value) {
286
+ if (value instanceof Buffer) {
287
+ this.setBuffer(locationOrName, value);
288
+ } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {
289
+ const buffer = value[0];
290
+ const accessor = value[1];
291
+ this.setBuffer(locationOrName, buffer, accessor);
292
+ } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {
293
+ const constant = value;
294
+ this.setConstant(locationOrName, constant);
295
+ } else if (value.buffer instanceof Buffer) {
296
+ const accessor = value;
297
+ this.setBuffer(locationOrName, accessor.buffer, accessor);
298
+ } else {
299
+ throw new Error(ERR_ATTRIBUTE_TYPE);
300
+ }
301
+ }
302
+
303
+ _setConstantAttributes(vertexCount, instanceCount) {
304
+ const elementCount = Math.max(vertexCount | 0, instanceCount | 0);
305
+ let constant = this.values[0];
306
+
307
+ if (ArrayBuffer.isView(constant)) {
308
+ this._setConstantAttributeZero(constant, elementCount);
309
+ }
310
+
311
+ for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {
312
+ constant = this.values[location];
313
+
314
+ if (ArrayBuffer.isView(constant)) {
315
+ this._setConstantAttribute(location, constant);
316
+ }
317
+ }
318
+ }
319
+
320
+ _setConstantAttributeZero(constant, elementCount) {
321
+ if (VertexArrayObject.isSupported(this.gl, {
322
+ constantAttributeZero: true
323
+ })) {
324
+ this._setConstantAttribute(0, constant);
325
+
326
+ return;
327
+ }
328
+
329
+ const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);
330
+ this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);
331
+ }
332
+
333
+ _setConstantAttribute(location, constant) {
334
+ VertexArrayObject.setConstant(this.gl, location, constant);
335
+ }
336
+
337
+ _updateDrawParams() {
338
+ const drawParams = {
339
+ elementCount: 0,
340
+ indexType: Uint16Array,
341
+ indexOffset: 0,
342
+ isIndexed: false,
343
+ isInstanced: false,
344
+ indexCount: Infinity,
345
+ vertexCount: Infinity,
346
+ instanceCount: Infinity
347
+ };
348
+
349
+ for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {
350
+ this._updateDrawParamsForLocation(drawParams, location);
351
+ }
352
+
353
+ if (this.elements) {
354
+ drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);
355
+ drawParams.isIndexed = true;
356
+ drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;
357
+ drawParams.indexOffset = this.elementsAccessor.offset || 0;
358
+ }
359
+
360
+ if (drawParams.indexCount === Infinity) {
361
+ drawParams.indexCount = 0;
362
+ }
363
+
364
+ if (drawParams.vertexCount === Infinity) {
365
+ drawParams.vertexCount = 0;
366
+ }
367
+
368
+ if (drawParams.instanceCount === Infinity) {
369
+ drawParams.instanceCount = 0;
370
+ }
371
+
372
+ return drawParams;
373
+ }
374
+
375
+ _updateDrawParamsForLocation(drawParams, location) {
376
+ const value = this.values[location];
377
+ const accessor = this.accessors[location];
378
+
379
+ if (!value) {
380
+ return;
381
+ }
382
+
383
+ const {
384
+ divisor
385
+ } = accessor;
386
+ const isInstanced = divisor > 0;
387
+ drawParams.isInstanced = drawParams.isInstanced || isInstanced;
388
+
389
+ if (value instanceof Buffer) {
390
+ const buffer = value;
391
+
392
+ if (isInstanced) {
393
+ const instanceCount = buffer.getVertexCount(accessor);
394
+ drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);
395
+ } else {
396
+ const vertexCount = buffer.getVertexCount(accessor);
397
+ drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);
398
+ }
399
+ }
400
+ }
401
+
402
+ setElements(elementBuffer = null, accessor = {}) {
403
+ log.deprecated('setElements', 'setElementBuffer')();
404
+ return this.setElementBuffer(elementBuffer, accessor);
405
+ }
406
+
407
+ }
408
+ //# sourceMappingURL=vertex-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/classes/vertex-array.ts"],"names":["log","assert","GL","Accessor","Buffer","VertexArrayObject","ERR_ATTRIBUTE_TYPE","MULTI_LOCATION_ATTRIBUTE_REGEXP","VertexArray","constructor","gl","props","id","program","vertexArrayObject","configuration","initialize","Object","seal","delete","buffer","reset","bindOnUse","setProps","elements","elementsAccessor","MAX_ATTRIBUTES","values","Array","fill","accessors","unused","drawParams","setAttributes","attributes","setElementBuffer","clearDrawParams","getDrawParams","_updateDrawParams","assign","bind","locationOrName","value","_setAttribute","bindBuffer","ARRAY_BUFFER","elementBuffer","accessor","setBuffer","appAccessor","target","ELEMENT_ARRAY_BUFFER","location","_resolveLocationAndAccessor","setConstant","arrayValue","size","length","_normalizeConstantArrayValue","enable","unbindBuffers","disableVertexAttribArray","handle","vertexAttribPointer","FLOAT","bindBuffers","bindForDraw","vertexCount","instanceCount","func","_setConstantAttributes","valueAccessor","INVALID_RESULT","name","_getAttributeIndex","Number","isFinite","once","accessInfo","_getAttributeInfo","currentAccessor","resolve","type","attributeName","getAttributeInfo","multiLocation","exec","locationOffset","getAttributeLocation","isArray","ArrayBuffer","isView","constant","Error","elementCount","Math","max","_setConstantAttributeZero","_setConstantAttribute","isSupported","constantAttributeZero","getConstantBuffer","indexType","Uint16Array","indexOffset","isIndexed","isInstanced","indexCount","Infinity","_updateDrawParamsForLocation","getElementCount","offset","divisor","getVertexCount","min","setElements","deprecated"],"mappings":"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","sourcesContent":["import {log, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport Accessor from './accessor';\nimport Buffer from './webgl-buffer';\nimport Program from './program'; \nimport ProgramConfiguration from './program-configuration';\nimport VertexArrayObject, {VertexArrayObjectProps} from './vertex-array-object';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nexport type VertexArrayProps = {\n id?: string;\n program?: Program;\n configuration?: ProgramConfiguration;\n attributes?: Record<string, any>;\n elements?: any;\n bindOnUse?: boolean;\n};\n\nexport type DrawParams = {\n elementCount: number;\n indexType: Uint16ArrayConstructor | Uint32ArrayConstructor;\n indexOffset: number;\n isIndexed: boolean;\n isInstanced: boolean;\n indexCount: number;\n vertexCount: number;\n instanceCount: number;\n};\n\nexport default class VertexArray {\n id: string;\n gl: WebGLRenderingContext;\n readonly attributes: object = {};\n\n vertexArrayObject: VertexArrayObject;\n accessors: Accessor[] = [];\n configuration: ProgramConfiguration | null = null;\n\n // Extracted information\n elements = null;\n elementsAccessor = null;\n values = null;\n unused = null;\n drawParams = null;\n buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n \n bindOnUse = false;\n\n constructor(gl: WebGLRenderingContext, props?: VertexArrayProps) {\n // Use program's id if program is supplied but no id is supplied\n const id = props?.id || (props?.program && props?.program.id);\n // super(gl, Object.assign({}, props, {id}));\n\n this.vertexArrayObject = new VertexArrayObject(gl);\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n this.initialize(props);\n Object.seal(this);\n }\n\n delete(): void {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize(props?: VertexArrayProps) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props || {});\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props: VertexArrayProps) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n // @ts-expect-error\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams(): void {\n this.drawParams = null;\n }\n\n getDrawParams(): DrawParams {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes): this {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\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: Buffer | null = null, accessor = {}): this {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer: Buffer, appAccessor = {}): this {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n this.setElementBuffer(buffer, appAccessor);\n return this;\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}): this {\n // @ts-expect-error\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n {size: arrayValue.length, ...appAccessor}\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers(): this {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers(): this {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value): void {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount): void {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount: number): void {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant): void {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams(): DrawParams {\n const drawParams = {\n elementCount: 0,\n indexType: Uint16Array,\n indexOffset: 0,\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams: DrawParams, location): void {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n"],"file":"vertex-array.js"}