@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
@@ -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","props","attach","id","program","buffer","bufferValue","Object","seal","delete","setElementBuffer","elementBuffer","opts","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","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 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"}
@@ -0,0 +1,75 @@
1
+ import Accessor from './accessor';
2
+ import Buffer from './webgl-buffer';
3
+ import Program from './program';
4
+ import type { AttributeBinding } from '../helpers/program-bindings';
5
+ import ProgramConfiguration from './program-configuration';
6
+ import VertexArrayObject from './vertex-array-object';
7
+ export declare type VertexArrayProps = {
8
+ id?: string;
9
+ program?: Program;
10
+ configuration?: ProgramConfiguration;
11
+ attributes?: Record<string, any>;
12
+ elements?: any;
13
+ bindOnUse?: boolean;
14
+ };
15
+ export declare type DrawParams = {
16
+ elementCount: number;
17
+ indexType: Uint16ArrayConstructor | Uint32ArrayConstructor;
18
+ indexOffset: number;
19
+ isIndexed: boolean;
20
+ isInstanced: boolean;
21
+ indexCount: number;
22
+ vertexCount: number;
23
+ instanceCount: number;
24
+ };
25
+ export default class VertexArray {
26
+ id: string;
27
+ gl: WebGLRenderingContext;
28
+ readonly attributes: object;
29
+ vertexArrayObject: VertexArrayObject;
30
+ accessors: Accessor[];
31
+ configuration: ProgramConfiguration | null;
32
+ elements: any;
33
+ elementsAccessor: any;
34
+ values: any;
35
+ unused: any;
36
+ drawParams: any;
37
+ buffer: any;
38
+ bindOnUse: boolean;
39
+ constructor(gl: WebGLRenderingContext, props?: VertexArrayProps);
40
+ delete(): void;
41
+ initialize(props?: VertexArrayProps): this;
42
+ reset(): this;
43
+ setProps(props: VertexArrayProps): this;
44
+ clearDrawParams(): void;
45
+ getDrawParams(): DrawParams;
46
+ setAttributes(attributes: any): this;
47
+ setElementBuffer(elementBuffer?: Buffer | null, accessor?: {}): this;
48
+ setBuffer(locationOrName: number | string, buffer: Buffer, appAccessor?: {}): this;
49
+ setConstant(locationOrName: any, arrayValue: any, appAccessor?: {}): this;
50
+ unbindBuffers(): this;
51
+ bindBuffers(): this;
52
+ bindForDraw(vertexCount: any, instanceCount: any, func: any): any;
53
+ _resolveLocationAndAccessor(locationOrName: any, value: any, valueAccessor: any, appAccessor: any): {
54
+ location: number;
55
+ accessor: any;
56
+ };
57
+ _getAttributeInfo(attributeName: string | number): AttributeBinding;
58
+ _getAttributeIndex(locationOrName: number | string): {
59
+ location: number;
60
+ name?: string;
61
+ };
62
+ _setAttribute(locationOrName: number | string, value: Buffer): void;
63
+ _setAttribute(locationOrName: number | string, value: [Buffer, any]): void;
64
+ _setAttribute(locationOrName: number | string, value: ArrayBuffer | any[]): void;
65
+ _setAttribute(locationOrName: number | string, value: {
66
+ value: Buffer;
67
+ }): void;
68
+ _setConstantAttributes(vertexCount: number, instanceCount: number): void;
69
+ _setConstantAttributeZero(constant: any, elementCount: number): void;
70
+ _setConstantAttribute(location: number | string, 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(String(locationOrName));
270
+ const name = multiLocation ? multiLocation[1] : String(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","String","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 type {AttributeBinding} from '../helpers/program-bindings'\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: number | string, 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: string | number): AttributeBinding {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName: number | string): {location: number, name?: string} {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(String(locationOrName));\n const name = multiLocation ? multiLocation[1] : String(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: number | string, value: Buffer): void;\n _setAttribute(locationOrName: number | string, value: [Buffer, any]): void;\n _setAttribute(locationOrName: number | string, value: ArrayBuffer | any[]): void;\n _setAttribute(locationOrName: number | string, value: {value: Buffer}): void;\n\n _setAttribute(locationOrName: number | string, 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: number, instanceCount: number): 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: number | string, 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"}