@luma.gl/webgl 8.5.10 → 8.6.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +5 -0
  4. package/dist/bundle.js.map +1 -0
  5. package/dist/classes/accessor.d.ts +28 -0
  6. package/dist/classes/accessor.d.ts.map +1 -0
  7. package/dist/classes/accessor.js +112 -0
  8. package/dist/classes/accessor.js.map +1 -0
  9. package/dist/classes/accessor.ts.disabled +159 -0
  10. package/dist/classes/clear.d.ts +16 -0
  11. package/dist/classes/clear.d.ts.map +1 -0
  12. package/dist/classes/clear.js +102 -0
  13. package/dist/classes/clear.js.map +1 -0
  14. package/dist/classes/copy-and-blit.d.ts +69 -0
  15. package/dist/classes/copy-and-blit.d.ts.map +1 -0
  16. package/dist/classes/copy-and-blit.js +333 -0
  17. package/dist/classes/copy-and-blit.js.map +1 -0
  18. package/dist/classes/framebuffer.d.ts +130 -0
  19. package/dist/classes/framebuffer.d.ts.map +1 -0
  20. package/dist/classes/framebuffer.js +656 -0
  21. package/dist/classes/framebuffer.js.map +1 -0
  22. package/dist/classes/program-configuration.d.ts +27 -0
  23. package/dist/classes/program-configuration.d.ts.map +1 -0
  24. package/dist/classes/program-configuration.js +160 -0
  25. package/dist/classes/program-configuration.js.map +1 -0
  26. package/dist/classes/program.d.ts +61 -0
  27. package/dist/classes/program.d.ts.map +1 -0
  28. package/dist/classes/program.js +368 -0
  29. package/dist/classes/program.js.map +1 -0
  30. package/dist/classes/query.d.ts +27 -0
  31. package/dist/classes/query.d.ts.map +1 -0
  32. package/dist/classes/query.js +144 -0
  33. package/dist/classes/query.js.map +1 -0
  34. package/dist/classes/renderbuffer-formats.d.ts +16 -0
  35. package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
  36. package/dist/classes/renderbuffer-formats.js +185 -0
  37. package/dist/classes/renderbuffer-formats.js.map +1 -0
  38. package/dist/classes/renderbuffer.d.ts +60 -0
  39. package/dist/classes/renderbuffer.d.ts.map +1 -0
  40. package/dist/classes/renderbuffer.js +127 -0
  41. package/dist/classes/renderbuffer.js.map +1 -0
  42. package/dist/classes/texture-2d.d.ts +8 -0
  43. package/dist/classes/texture-2d.d.ts.map +1 -0
  44. package/dist/classes/texture-2d.js +39 -0
  45. package/dist/classes/texture-2d.js.map +1 -0
  46. package/dist/classes/texture-3d.d.ts +28 -0
  47. package/dist/classes/texture-3d.d.ts.map +1 -0
  48. package/dist/classes/texture-3d.js +67 -0
  49. package/dist/classes/texture-3d.js.map +1 -0
  50. package/dist/classes/texture-cube.d.ts +27 -0
  51. package/dist/classes/texture-cube.d.ts.map +1 -0
  52. package/dist/classes/texture-cube.js +131 -0
  53. package/dist/classes/texture-cube.js.map +1 -0
  54. package/dist/classes/texture-formats.d.ts +37 -0
  55. package/dist/classes/texture-formats.d.ts.map +1 -0
  56. package/dist/classes/texture-formats.js +98 -0
  57. package/dist/classes/texture-formats.js.map +1 -0
  58. package/dist/classes/texture.d.ts +118 -0
  59. package/dist/classes/texture.d.ts.map +1 -0
  60. package/dist/classes/texture.js +785 -0
  61. package/dist/classes/texture.js.map +1 -0
  62. package/dist/classes/transform-feedback.d.ts +33 -0
  63. package/dist/classes/transform-feedback.d.ts.map +1 -0
  64. package/dist/classes/transform-feedback.js +197 -0
  65. package/dist/classes/transform-feedback.js.map +1 -0
  66. package/dist/classes/uniform-buffer-layout.d.ts +17 -0
  67. package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
  68. package/dist/classes/uniform-buffer-layout.js +104 -0
  69. package/dist/classes/uniform-buffer-layout.js.map +1 -0
  70. package/dist/classes/uniforms.d.ts +38 -0
  71. package/dist/classes/uniforms.d.ts.map +1 -0
  72. package/dist/classes/uniforms.js +251 -0
  73. package/dist/classes/uniforms.js.map +1 -0
  74. package/dist/classes/vertex-array-object.d.ts +75 -0
  75. package/dist/classes/vertex-array-object.d.ts.map +1 -0
  76. package/dist/classes/vertex-array-object.js +262 -0
  77. package/dist/classes/vertex-array-object.js.map +1 -0
  78. package/dist/classes/vertex-array.d.ts +75 -0
  79. package/dist/classes/vertex-array.d.ts.map +1 -0
  80. package/dist/classes/vertex-array.js +409 -0
  81. package/dist/classes/vertex-array.js.map +1 -0
  82. package/dist/classes/webgl-buffer.d.ts +98 -0
  83. package/dist/classes/webgl-buffer.d.ts.map +1 -0
  84. package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +97 -73
  85. package/dist/classes/webgl-buffer.js.map +1 -0
  86. package/dist/classes/webgl-resource.d.ts +54 -0
  87. package/dist/classes/webgl-resource.d.ts.map +1 -0
  88. package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +31 -52
  89. package/dist/classes/webgl-resource.js.map +1 -0
  90. package/dist/classes/webgl-shader.d.ts +51 -0
  91. package/dist/classes/webgl-shader.d.ts.map +1 -0
  92. package/dist/classes/webgl-shader.js +190 -0
  93. package/dist/classes/webgl-shader.js.map +1 -0
  94. package/dist/context/gl-context.d.ts +15 -0
  95. package/dist/context/gl-context.d.ts.map +1 -0
  96. package/dist/context/gl-context.js +32 -0
  97. package/dist/context/gl-context.js.map +1 -0
  98. package/dist/context/luma-context-data.d.ts +31 -0
  99. package/dist/context/luma-context-data.d.ts.map +1 -0
  100. package/dist/context/luma-context-data.js +5 -0
  101. package/dist/context/luma-context-data.js.map +1 -0
  102. package/dist/debug/debug-program-configuration.d.ts +2 -0
  103. package/dist/debug/debug-program-configuration.d.ts.map +1 -0
  104. package/dist/debug/debug-program-configuration.js +40 -0
  105. package/dist/debug/debug-program-configuration.js.map +1 -0
  106. package/dist/debug/debug-uniforms.d.ts +12 -0
  107. package/dist/debug/debug-uniforms.d.ts.map +1 -0
  108. package/dist/debug/debug-uniforms.js +108 -0
  109. package/dist/debug/debug-uniforms.js.map +1 -0
  110. package/dist/debug/debug-vertex-array.d.ts +5 -0
  111. package/dist/debug/debug-vertex-array.d.ts.map +1 -0
  112. package/dist/debug/debug-vertex-array.js +118 -0
  113. package/dist/debug/debug-vertex-array.js.map +1 -0
  114. package/dist/es5/bundle.js +3 -5
  115. package/dist/es5/bundle.js.map +1 -1
  116. package/dist/es5/classes/accessor.js +76 -108
  117. package/dist/es5/classes/accessor.js.map +1 -1
  118. package/dist/es5/classes/accessor.ts.disabled +159 -0
  119. package/dist/es5/classes/clear.js +33 -48
  120. package/dist/es5/classes/clear.js.map +1 -1
  121. package/dist/es5/classes/copy-and-blit.js +177 -192
  122. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  123. package/dist/es5/classes/framebuffer.js +538 -655
  124. package/dist/es5/classes/framebuffer.js.map +1 -1
  125. package/dist/es5/classes/program-configuration.js +127 -141
  126. package/dist/es5/classes/program-configuration.js.map +1 -1
  127. package/dist/es5/classes/program.js +294 -358
  128. package/dist/es5/classes/program.js.map +1 -1
  129. package/dist/es5/classes/query.js +115 -181
  130. package/dist/es5/classes/query.js.map +1 -1
  131. package/dist/es5/classes/renderbuffer-formats.js +186 -121
  132. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  133. package/dist/es5/classes/renderbuffer.js +104 -128
  134. package/dist/es5/classes/renderbuffer.js.map +1 -1
  135. package/dist/es5/classes/texture-2d.js +16 -39
  136. package/dist/es5/classes/texture-2d.js.map +1 -1
  137. package/dist/es5/classes/texture-3d.js +50 -89
  138. package/dist/es5/classes/texture-3d.js.map +1 -1
  139. package/dist/es5/classes/texture-cube.js +112 -162
  140. package/dist/es5/classes/texture-cube.js.map +1 -1
  141. package/dist/es5/classes/texture-formats.js +73 -42
  142. package/dist/es5/classes/texture-formats.js.map +1 -1
  143. package/dist/es5/classes/texture.js +670 -673
  144. package/dist/es5/classes/texture.js.map +1 -1
  145. package/dist/es5/classes/transform-feedback.js +150 -203
  146. package/dist/es5/classes/transform-feedback.js.map +1 -1
  147. package/dist/es5/classes/uniform-buffer-layout.js +89 -103
  148. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  149. package/dist/es5/classes/uniforms.js +134 -93
  150. package/dist/es5/classes/uniforms.js.map +1 -1
  151. package/dist/es5/classes/vertex-array-object.js +204 -306
  152. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  153. package/dist/es5/classes/vertex-array.js +317 -353
  154. package/dist/es5/classes/vertex-array.js.map +1 -1
  155. package/dist/es5/classes/webgl-buffer.js +391 -0
  156. package/dist/es5/classes/webgl-buffer.js.map +1 -0
  157. package/dist/es5/classes/webgl-resource.js +217 -0
  158. package/dist/es5/classes/webgl-resource.js.map +1 -0
  159. package/dist/es5/classes/webgl-shader.js +213 -0
  160. package/dist/es5/classes/webgl-shader.js.map +1 -0
  161. package/dist/es5/context/gl-context.js +46 -0
  162. package/dist/es5/context/gl-context.js.map +1 -0
  163. package/dist/es5/context/luma-context-data.js +12 -0
  164. package/dist/es5/context/luma-context-data.js.map +1 -0
  165. package/dist/es5/debug/debug-program-configuration.js +20 -48
  166. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  167. package/dist/es5/debug/debug-uniforms.js +72 -114
  168. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  169. package/dist/es5/debug/debug-vertex-array.js +56 -51
  170. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  171. package/dist/es5/features/check-glsl-extension.js +9 -10
  172. package/dist/es5/features/check-glsl-extension.js.map +1 -1
  173. package/dist/es5/features/check-old-ie.js +5 -6
  174. package/dist/es5/features/check-old-ie.js.map +1 -1
  175. package/dist/es5/features/features.js +23 -37
  176. package/dist/es5/features/features.js.map +1 -1
  177. package/dist/es5/features/index.js +8 -8
  178. package/dist/es5/features/index.js.map +1 -1
  179. package/dist/es5/features/limits.js +36 -28
  180. package/dist/es5/features/limits.js.map +1 -1
  181. package/dist/es5/features/webgl-features-table.js +35 -15
  182. package/dist/es5/features/webgl-features-table.js.map +1 -1
  183. package/dist/es5/features/webgl-limits-table.js +160 -120
  184. package/dist/es5/features/webgl-limits-table.js.map +1 -1
  185. package/dist/es5/index.js +144 -90
  186. package/dist/es5/index.js.map +1 -1
  187. package/dist/es5/init.js +12 -36
  188. package/dist/es5/init.js.map +1 -1
  189. package/dist/es5/types.js +2 -0
  190. package/dist/es5/types.js.map +1 -0
  191. package/dist/es5/utils/array-utils-flat.js +13 -14
  192. package/dist/es5/utils/array-utils-flat.js.map +1 -1
  193. package/dist/es5/utils/assert.js +1 -1
  194. package/dist/es5/utils/assert.js.map +1 -1
  195. package/dist/es5/utils/check-props.js +20 -21
  196. package/dist/es5/utils/check-props.js.map +1 -1
  197. package/dist/es5/utils/format-value.js +14 -14
  198. package/dist/es5/utils/format-value.js.map +1 -1
  199. package/dist/es5/utils/index.js +68 -0
  200. package/dist/es5/utils/index.js.map +1 -0
  201. package/dist/es5/utils/is-old-ie.js +2 -3
  202. package/dist/es5/utils/is-old-ie.js.map +1 -1
  203. package/dist/es5/utils/load-file.js +11 -18
  204. package/dist/es5/utils/load-file.js.map +1 -1
  205. package/dist/es5/utils/stub-methods.js +4 -4
  206. package/dist/es5/utils/stub-methods.js.map +1 -1
  207. package/dist/es5/utils/utils.js +5 -10
  208. package/dist/es5/utils/utils.js.map +1 -1
  209. package/dist/es5/webgl-utils/attribute-utils.js +87 -74
  210. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  211. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  212. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  213. package/dist/es5/webgl-utils/format-utils.js +21 -17
  214. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  215. package/dist/es5/webgl-utils/get-error.js +18 -18
  216. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  217. package/dist/es5/webgl-utils/index.js +74 -0
  218. package/dist/es5/webgl-utils/index.js.map +1 -0
  219. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +44 -0
  220. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  221. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  222. package/dist/es5/webgl-utils/texture-utils.js +35 -29
  223. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  224. package/dist/es5/webgl-utils/typed-array-utils.js +51 -47
  225. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  226. package/dist/esm/bundle.js +2 -4
  227. package/dist/esm/bundle.js.map +1 -1
  228. package/dist/esm/classes/accessor.js +7 -7
  229. package/dist/esm/classes/accessor.js.map +1 -1
  230. package/dist/esm/classes/accessor.ts.disabled +159 -0
  231. package/dist/esm/classes/clear.js +15 -13
  232. package/dist/esm/classes/clear.js.map +1 -1
  233. package/dist/esm/classes/copy-and-blit.js +41 -43
  234. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  235. package/dist/esm/classes/framebuffer.js +336 -308
  236. package/dist/esm/classes/framebuffer.js.map +1 -1
  237. package/dist/esm/classes/program-configuration.js +17 -9
  238. package/dist/esm/classes/program-configuration.js.map +1 -1
  239. package/dist/esm/classes/program.js +69 -44
  240. package/dist/esm/classes/program.js.map +1 -1
  241. package/dist/esm/classes/query.js +17 -14
  242. package/dist/esm/classes/query.js.map +1 -1
  243. package/dist/esm/classes/renderbuffer-formats.js +72 -49
  244. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  245. package/dist/esm/classes/renderbuffer.js +84 -72
  246. package/dist/esm/classes/renderbuffer.js.map +1 -1
  247. package/dist/esm/classes/texture-2d.js +10 -3
  248. package/dist/esm/classes/texture-2d.js.map +1 -1
  249. package/dist/esm/classes/texture-3d.js +14 -11
  250. package/dist/esm/classes/texture-3d.js.map +1 -1
  251. package/dist/esm/classes/texture-cube.js +43 -28
  252. package/dist/esm/classes/texture-cube.js.map +1 -1
  253. package/dist/esm/classes/texture-formats.js +51 -50
  254. package/dist/esm/classes/texture-formats.js.map +1 -1
  255. package/dist/esm/classes/texture.js +164 -49
  256. package/dist/esm/classes/texture.js.map +1 -1
  257. package/dist/esm/classes/transform-feedback.js +24 -13
  258. package/dist/esm/classes/transform-feedback.js.map +1 -1
  259. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  260. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  261. package/dist/esm/classes/uniforms.js +111 -112
  262. package/dist/esm/classes/uniforms.js.map +1 -1
  263. package/dist/esm/classes/vertex-array-object.js +52 -88
  264. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  265. package/dist/esm/classes/vertex-array.js +50 -28
  266. package/dist/esm/classes/vertex-array.js.map +1 -1
  267. package/dist/esm/classes/webgl-buffer.js +379 -0
  268. package/dist/esm/classes/webgl-buffer.js.map +1 -0
  269. package/dist/esm/classes/webgl-resource.js +208 -0
  270. package/dist/esm/classes/webgl-resource.js.map +1 -0
  271. package/dist/esm/classes/webgl-shader.js +190 -0
  272. package/dist/esm/classes/webgl-shader.js.map +1 -0
  273. package/dist/esm/context/gl-context.js +32 -0
  274. package/dist/esm/context/gl-context.js.map +1 -0
  275. package/dist/esm/context/luma-context-data.js +5 -0
  276. package/dist/esm/context/luma-context-data.js.map +1 -0
  277. package/dist/esm/debug/debug-program-configuration.js +4 -4
  278. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  279. package/dist/esm/debug/debug-uniforms.js +9 -9
  280. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  281. package/dist/esm/debug/debug-vertex-array.js +19 -17
  282. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  283. package/dist/esm/features/check-glsl-extension.js +4 -4
  284. package/dist/esm/features/check-glsl-extension.js.map +1 -1
  285. package/dist/esm/features/check-old-ie.js.map +1 -1
  286. package/dist/esm/features/features.js +14 -13
  287. package/dist/esm/features/features.js.map +1 -1
  288. package/dist/esm/features/index.js.map +1 -1
  289. package/dist/esm/features/limits.js +25 -22
  290. package/dist/esm/features/limits.js.map +1 -1
  291. package/dist/esm/features/webgl-features-table.js +6 -6
  292. package/dist/esm/features/webgl-features-table.js.map +1 -1
  293. package/dist/esm/features/webgl-limits-table.js +43 -42
  294. package/dist/esm/features/webgl-limits-table.js.map +1 -1
  295. package/dist/esm/index.js +13 -15
  296. package/dist/esm/index.js.map +1 -1
  297. package/dist/esm/init.js +4 -23
  298. package/dist/esm/init.js.map +1 -1
  299. package/dist/esm/types.js +2 -0
  300. package/dist/esm/types.js.map +1 -0
  301. package/dist/esm/utils/array-utils-flat.js.map +1 -1
  302. package/dist/esm/utils/assert.js +1 -1
  303. package/dist/esm/utils/assert.js.map +1 -1
  304. package/dist/esm/utils/check-props.js +4 -4
  305. package/dist/esm/utils/check-props.js.map +1 -1
  306. package/dist/esm/utils/format-value.js +4 -4
  307. package/dist/esm/utils/format-value.js.map +1 -1
  308. package/dist/esm/utils/index.js +7 -0
  309. package/dist/esm/utils/index.js.map +1 -0
  310. package/dist/esm/utils/is-old-ie.js +1 -1
  311. package/dist/esm/utils/is-old-ie.js.map +1 -1
  312. package/dist/esm/utils/load-file.js +2 -2
  313. package/dist/esm/utils/load-file.js.map +1 -1
  314. package/dist/esm/utils/stub-methods.js +2 -3
  315. package/dist/esm/utils/stub-methods.js.map +1 -1
  316. package/dist/esm/utils/utils.js +1 -3
  317. package/dist/esm/utils/utils.js.map +1 -1
  318. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  319. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  320. package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
  321. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  322. package/dist/esm/webgl-utils/format-utils.js +16 -15
  323. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  324. package/dist/esm/webgl-utils/get-error.js +1 -1
  325. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  326. package/dist/esm/webgl-utils/index.js +5 -0
  327. package/dist/esm/webgl-utils/index.js.map +1 -0
  328. package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
  329. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  330. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  331. package/dist/esm/webgl-utils/texture-utils.js +4 -3
  332. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  333. package/dist/esm/webgl-utils/typed-array-utils.js +19 -18
  334. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  335. package/dist/features/check-glsl-extension.d.ts +2 -0
  336. package/dist/features/check-glsl-extension.d.ts.map +1 -0
  337. package/dist/features/check-glsl-extension.js +27 -0
  338. package/dist/features/check-glsl-extension.js.map +1 -0
  339. package/dist/features/check-old-ie.d.ts +2 -0
  340. package/dist/features/check-old-ie.d.ts.map +1 -0
  341. package/dist/features/check-old-ie.js +8 -0
  342. package/dist/features/check-old-ie.js.map +1 -0
  343. package/dist/features/features.d.ts +6 -0
  344. package/dist/features/features.d.ts.map +1 -0
  345. package/dist/features/features.js +67 -0
  346. package/dist/features/features.js.map +1 -0
  347. package/dist/features/index.d.ts +5 -0
  348. package/dist/features/index.d.ts.map +1 -0
  349. package/dist/features/index.js +5 -0
  350. package/dist/features/index.js.map +1 -0
  351. package/dist/features/limits.d.ts +28 -0
  352. package/dist/features/limits.d.ts.map +1 -0
  353. package/dist/features/limits.js +55 -0
  354. package/dist/features/limits.js.map +1 -0
  355. package/dist/features/webgl-features-table.d.ts +30 -0
  356. package/dist/features/webgl-features-table.d.ts.map +1 -0
  357. package/dist/features/webgl-features-table.js +71 -0
  358. package/dist/features/webgl-features-table.js.map +1 -0
  359. package/dist/features/webgl-limits-table.d.ts +161 -0
  360. package/dist/features/webgl-limits-table.d.ts.map +1 -0
  361. package/dist/features/webgl-limits-table.js +161 -0
  362. package/dist/features/webgl-limits-table.js.map +1 -0
  363. package/dist/index.d.ts +33 -0
  364. package/dist/index.d.ts.map +1 -0
  365. package/dist/index.js +33 -0
  366. package/dist/index.js.map +1 -0
  367. package/dist/init.d.ts +5 -0
  368. package/dist/init.d.ts.map +1 -0
  369. package/dist/init.js +30 -0
  370. package/dist/init.js.map +1 -0
  371. package/dist/types.d.ts +9 -0
  372. package/dist/types.d.ts.map +1 -0
  373. package/dist/types.js +2 -0
  374. package/dist/types.js.map +1 -0
  375. package/dist/utils/array-utils-flat.d.ts +9 -0
  376. package/dist/utils/array-utils-flat.d.ts.map +1 -0
  377. package/dist/utils/array-utils-flat.js +39 -0
  378. package/dist/utils/array-utils-flat.js.map +1 -0
  379. package/dist/utils/assert.d.ts +2 -0
  380. package/dist/utils/assert.d.ts.map +1 -0
  381. package/dist/utils/assert.js +6 -0
  382. package/dist/utils/assert.js.map +1 -0
  383. package/dist/utils/check-props.d.ts +2 -0
  384. package/dist/utils/check-props.d.ts.map +1 -0
  385. package/dist/utils/check-props.js +38 -0
  386. package/dist/utils/check-props.js.map +1 -0
  387. package/dist/utils/format-value.d.ts +5 -0
  388. package/dist/utils/format-value.d.ts.map +1 -0
  389. package/dist/utils/format-value.js +50 -0
  390. package/dist/utils/format-value.js.map +1 -0
  391. package/dist/utils/index.d.ts +7 -0
  392. package/dist/utils/index.d.ts.map +1 -0
  393. package/dist/utils/index.js +7 -0
  394. package/dist/utils/index.js.map +1 -0
  395. package/dist/utils/is-old-ie.d.ts +4 -0
  396. package/dist/utils/is-old-ie.d.ts.map +1 -0
  397. package/dist/utils/is-old-ie.js +5 -0
  398. package/dist/utils/is-old-ie.js.map +1 -0
  399. package/dist/utils/load-file.d.ts +4 -0
  400. package/dist/utils/load-file.d.ts.map +1 -0
  401. package/dist/utils/load-file.js +30 -0
  402. package/dist/utils/load-file.js.map +1 -0
  403. package/dist/utils/stub-methods.d.ts +2 -0
  404. package/dist/utils/stub-methods.d.ts.map +1 -0
  405. package/dist/utils/stub-methods.js +16 -0
  406. package/dist/utils/stub-methods.js.map +1 -0
  407. package/dist/utils/utils.d.ts +15 -0
  408. package/dist/utils/utils.d.ts.map +1 -0
  409. package/dist/utils/utils.js +20 -0
  410. package/dist/utils/utils.js.map +1 -0
  411. package/dist/webgl-utils/attribute-utils.d.ts +18 -0
  412. package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
  413. package/dist/webgl-utils/attribute-utils.js +182 -0
  414. package/dist/webgl-utils/attribute-utils.js.map +1 -0
  415. package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
  416. package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
  417. package/dist/webgl-utils/constants-to-keys.js +41 -0
  418. package/dist/webgl-utils/constants-to-keys.js.map +1 -0
  419. package/dist/webgl-utils/format-utils.d.ts +3 -0
  420. package/dist/webgl-utils/format-utils.d.ts.map +1 -0
  421. package/dist/webgl-utils/format-utils.js +45 -0
  422. package/dist/webgl-utils/format-utils.js.map +1 -0
  423. package/dist/webgl-utils/get-error.d.ts +3 -0
  424. package/dist/webgl-utils/get-error.d.ts.map +1 -0
  425. package/dist/webgl-utils/get-error.js +41 -0
  426. package/dist/webgl-utils/get-error.js.map +1 -0
  427. package/dist/webgl-utils/index.d.ts +5 -0
  428. package/dist/webgl-utils/index.d.ts.map +1 -0
  429. package/dist/webgl-utils/index.js +5 -0
  430. package/dist/webgl-utils/index.js.map +1 -0
  431. package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
  432. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
  433. package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
  434. package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  435. package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
  436. package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
  437. package/dist/webgl-utils/request-animation-frame.js +7 -0
  438. package/dist/webgl-utils/request-animation-frame.js.map +1 -0
  439. package/dist/webgl-utils/texture-utils.d.ts +11 -0
  440. package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
  441. package/dist/webgl-utils/texture-utils.js +48 -0
  442. package/dist/webgl-utils/texture-utils.js.map +1 -0
  443. package/dist/webgl-utils/typed-array-utils.d.ts +36 -0
  444. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
  445. package/dist/webgl-utils/typed-array-utils.js +108 -0
  446. package/dist/webgl-utils/typed-array-utils.js.map +1 -0
  447. package/package.json +9 -8
  448. package/src/bundle.ts +4 -0
  449. package/src/classes/accessor.js +3 -4
  450. package/src/classes/accessor.ts.disabled +159 -0
  451. package/src/classes/{clear.js → clear.ts} +13 -9
  452. package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +113 -22
  453. package/src/classes/{framebuffer.js → framebuffer.ts} +355 -298
  454. package/src/classes/{program-configuration.js → program-configuration.ts} +18 -11
  455. package/src/classes/{program.js → program.ts} +56 -36
  456. package/src/classes/{query.js → query.ts} +28 -22
  457. package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
  458. package/src/classes/renderbuffer.ts +153 -0
  459. package/src/classes/{texture-2d.js → texture-2d.ts} +15 -5
  460. package/src/classes/{texture-3d.js → texture-3d.ts} +35 -10
  461. package/src/classes/{texture-cube.js → texture-cube.ts} +46 -28
  462. package/src/classes/{texture-formats.js → texture-formats.ts} +9 -1
  463. package/src/classes/{texture.js → texture.ts} +204 -37
  464. package/src/classes/{transform-feedback.js → transform-feedback.ts} +22 -14
  465. package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
  466. package/src/classes/{uniforms.js → uniforms.ts} +122 -70
  467. package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +132 -107
  468. package/src/classes/{vertex-array.js → vertex-array.ts} +74 -54
  469. package/src/classes/{buffer.js → webgl-buffer.ts} +125 -51
  470. package/src/classes/{resource.js → webgl-resource.ts} +43 -36
  471. package/src/classes/webgl-shader.ts +200 -0
  472. package/src/context/gl-context.ts +31 -0
  473. package/src/context/luma-context-data.ts +27 -0
  474. package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
  475. package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
  476. package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +7 -4
  477. package/src/features/{check-glsl-extension.js → check-glsl-extension.ts} +1 -1
  478. package/src/features/{check-old-ie.js → check-old-ie.ts} +0 -0
  479. package/src/features/{features.js → features.ts} +14 -13
  480. package/src/features/{index.js → index.ts} +0 -0
  481. package/src/features/{limits.js → limits.ts} +18 -17
  482. package/src/features/{webgl-features-table.js → webgl-features-table.ts} +0 -0
  483. package/src/features/{webgl-limits-table.js → webgl-limits-table.ts} +0 -0
  484. package/{dist/es5/index.d.ts → src/index.ts} +18 -16
  485. package/src/{init.js → init.ts} +1 -18
  486. package/{dist/es5/types.d.ts → src/types.ts} +0 -0
  487. package/src/utils/{array-utils-flat.js → array-utils-flat.ts} +0 -0
  488. package/src/utils/{assert.js → assert.ts} +1 -1
  489. package/src/utils/{check-props.js → check-props.ts} +0 -0
  490. package/src/utils/{format-value.js → format-value.ts} +2 -2
  491. package/src/utils/index.ts +6 -0
  492. package/src/utils/{is-old-ie.js → is-old-ie.ts} +1 -1
  493. package/src/utils/{load-file.js → load-file.ts} +3 -2
  494. package/src/utils/{stub-methods.js → stub-methods.ts} +1 -1
  495. package/src/utils/utils.ts +35 -0
  496. package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
  497. package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
  498. package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
  499. package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
  500. package/src/webgl-utils/index.ts +12 -0
  501. package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
  502. package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
  503. package/src/webgl-utils/texture-utils.js +2 -1
  504. package/dist/dist.js +0 -13555
  505. package/dist/dist.min.js +0 -1
  506. package/dist/es5/classes/buffer.d.ts +0 -84
  507. package/dist/es5/classes/buffer.js +0 -453
  508. package/dist/es5/classes/buffer.js.map +0 -1
  509. package/dist/es5/classes/clear.d.ts +0 -11
  510. package/dist/es5/classes/copy-and-blit.d.ts +0 -101
  511. package/dist/es5/classes/framebuffer.d.ts +0 -96
  512. package/dist/es5/classes/program-configuration.d.ts +0 -15
  513. package/dist/es5/classes/program.d.ts +0 -44
  514. package/dist/es5/classes/query.d.ts +0 -21
  515. package/dist/es5/classes/renderbuffer.d.ts +0 -34
  516. package/dist/es5/classes/resource.d.ts +0 -47
  517. package/dist/es5/classes/resource.js +0 -308
  518. package/dist/es5/classes/resource.js.map +0 -1
  519. package/dist/es5/classes/shader.d.ts +0 -29
  520. package/dist/es5/classes/shader.js +0 -221
  521. package/dist/es5/classes/shader.js.map +0 -1
  522. package/dist/es5/classes/texture-2d.d.ts +0 -11
  523. package/dist/es5/classes/texture-3d.d.ts +0 -29
  524. package/dist/es5/classes/texture-cube.d.ts +0 -23
  525. package/dist/es5/classes/texture.d.ts +0 -80
  526. package/dist/es5/classes/transform-feedback.d.ts +0 -16
  527. package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
  528. package/dist/es5/classes/uniforms.d.ts +0 -63
  529. package/dist/es5/classes/vertex-array-object.d.ts +0 -25
  530. package/dist/es5/classes/vertex-array.d.ts +0 -37
  531. package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
  532. package/dist/es5/debug/debug-uniforms.d.ts +0 -11
  533. package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
  534. package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
  535. package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
  536. package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
  537. package/dist/es5/glsl-utils/get-shader-name.js +0 -14
  538. package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
  539. package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
  540. package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
  541. package/dist/es5/glsl-utils/get-shader-version.js +0 -22
  542. package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
  543. package/dist/es5/glsl-utils/index.js +0 -48
  544. package/dist/es5/glsl-utils/index.js.map +0 -1
  545. package/dist/es5/init.d.ts +0 -12
  546. package/dist/es5/utils/assert.d.ts +0 -1
  547. package/dist/es5/utils/is-old-ie.d.ts +0 -1
  548. package/dist/es5/utils/utils.d.ts +0 -13
  549. package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
  550. package/dist/esm/classes/buffer.d.ts +0 -84
  551. package/dist/esm/classes/buffer.js.map +0 -1
  552. package/dist/esm/classes/clear.d.ts +0 -11
  553. package/dist/esm/classes/copy-and-blit.d.ts +0 -101
  554. package/dist/esm/classes/framebuffer.d.ts +0 -96
  555. package/dist/esm/classes/program-configuration.d.ts +0 -15
  556. package/dist/esm/classes/program.d.ts +0 -44
  557. package/dist/esm/classes/query.d.ts +0 -21
  558. package/dist/esm/classes/renderbuffer.d.ts +0 -34
  559. package/dist/esm/classes/resource.d.ts +0 -47
  560. package/dist/esm/classes/resource.js.map +0 -1
  561. package/dist/esm/classes/shader.d.ts +0 -29
  562. package/dist/esm/classes/shader.js +0 -138
  563. package/dist/esm/classes/shader.js.map +0 -1
  564. package/dist/esm/classes/texture-2d.d.ts +0 -11
  565. package/dist/esm/classes/texture-3d.d.ts +0 -29
  566. package/dist/esm/classes/texture-cube.d.ts +0 -23
  567. package/dist/esm/classes/texture.d.ts +0 -80
  568. package/dist/esm/classes/transform-feedback.d.ts +0 -16
  569. package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
  570. package/dist/esm/classes/uniforms.d.ts +0 -63
  571. package/dist/esm/classes/vertex-array-object.d.ts +0 -25
  572. package/dist/esm/classes/vertex-array.d.ts +0 -37
  573. package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
  574. package/dist/esm/debug/debug-uniforms.d.ts +0 -11
  575. package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
  576. package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
  577. package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
  578. package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
  579. package/dist/esm/glsl-utils/get-shader-name.js +0 -6
  580. package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
  581. package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
  582. package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
  583. package/dist/esm/glsl-utils/get-shader-version.js +0 -15
  584. package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
  585. package/dist/esm/glsl-utils/index.js +0 -5
  586. package/dist/esm/glsl-utils/index.js.map +0 -1
  587. package/dist/esm/index.d.ts +0 -71
  588. package/dist/esm/init.d.ts +0 -12
  589. package/dist/esm/types.d.ts +0 -8
  590. package/dist/esm/utils/assert.d.ts +0 -1
  591. package/dist/esm/utils/is-old-ie.d.ts +0 -1
  592. package/dist/esm/utils/utils.d.ts +0 -13
  593. package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
  594. package/src/bundle.js +0 -8
  595. package/src/classes/buffer.d.ts +0 -84
  596. package/src/classes/clear.d.ts +0 -11
  597. package/src/classes/copy-and-blit.d.ts +0 -101
  598. package/src/classes/framebuffer.d.ts +0 -96
  599. package/src/classes/program-configuration.d.ts +0 -15
  600. package/src/classes/program.d.ts +0 -44
  601. package/src/classes/query.d.ts +0 -21
  602. package/src/classes/renderbuffer.d.ts +0 -34
  603. package/src/classes/renderbuffer.js +0 -105
  604. package/src/classes/resource.d.ts +0 -47
  605. package/src/classes/shader.d.ts +0 -29
  606. package/src/classes/shader.js +0 -147
  607. package/src/classes/texture-2d.d.ts +0 -11
  608. package/src/classes/texture-3d.d.ts +0 -29
  609. package/src/classes/texture-cube.d.ts +0 -23
  610. package/src/classes/texture.d.ts +0 -80
  611. package/src/classes/transform-feedback.d.ts +0 -16
  612. package/src/classes/uniform-buffer-layout.d.ts +0 -18
  613. package/src/classes/uniforms.d.ts +0 -63
  614. package/src/classes/vertex-array-object.d.ts +0 -25
  615. package/src/classes/vertex-array.d.ts +0 -37
  616. package/src/debug/debug-program-configuration.d.ts +0 -1
  617. package/src/debug/debug-uniforms.d.ts +0 -11
  618. package/src/debug/debug-vertex-array.d.ts +0 -1
  619. package/src/glsl-utils/format-glsl-error.d.ts +0 -16
  620. package/src/glsl-utils/format-glsl-error.js +0 -107
  621. package/src/glsl-utils/get-shader-name.js +0 -7
  622. package/src/glsl-utils/get-shader-type-name.js +0 -13
  623. package/src/glsl-utils/get-shader-version.js +0 -12
  624. package/src/glsl-utils/index.js +0 -8
  625. package/src/index.d.ts +0 -71
  626. package/src/index.js +0 -70
  627. package/src/init.d.ts +0 -12
  628. package/src/types.d.ts +0 -8
  629. package/src/utils/assert.d.ts +0 -1
  630. package/src/utils/is-old-ie.d.ts +0 -1
  631. package/src/utils/utils.d.ts +0 -13
  632. package/src/utils/utils.js +0 -36
  633. package/src/webgl-utils/request-animation-frame.d.ts +0 -3
@@ -1,10 +1,11 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  import {log} from '@luma.gl/gltools';
3
3
  import Accessor from './accessor';
4
- import Buffer from './buffer';
5
- import VertexArrayObject from './vertex-array-object';
6
- import {assert} from '../utils/assert';
7
- import {stubRemovedMethods} from '../utils/stub-methods';
4
+ import Buffer from './webgl-buffer';
5
+ import Program from './program';
6
+ import ProgramConfiguration from './program-configuration';
7
+ import VertexArrayObject, {VertexArrayObjectProps} from './vertex-array-object';
8
+ import {assert, stubRemovedMethods} from '../utils';
8
9
 
9
10
  const ERR_ATTRIBUTE_TYPE =
10
11
  'VertexArray: attributes must be Buffers or constants (i.e. typed array)';
@@ -14,48 +15,61 @@ const ERR_ATTRIBUTE_TYPE =
14
15
  // in vertex-array.md
15
16
  const MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;
16
17
 
17
- const DEPRECATIONS_V6 = [
18
- 'setBuffers',
19
- 'setGeneric',
20
- 'clearBindings',
21
- 'setLocations',
22
- 'setGenericValues',
23
- 'setDivisor',
24
- 'enable',
25
- 'disable'
26
- ];
18
+ export type VertexArrayProps = {
19
+ id?: string;
20
+ program?: Program;
21
+ configuration?: ProgramConfiguration;
22
+ attributes?: any[];
23
+ elements?: any;
24
+ bindOnUse?: boolean;
25
+ };
26
+
27
+ export type DrawParams = {
28
+ elementCount: number;
29
+ indexType: Uint16ArrayConstructor | Uint32ArrayConstructor;
30
+ indexOffset: number;
31
+ isIndexed: boolean;
32
+ isInstanced: boolean;
33
+ indexCount: number;
34
+ vertexCount: number;
35
+ instanceCount: number;
36
+ };
27
37
 
28
38
  export default class VertexArray {
29
- constructor(gl, opts = {}) {
39
+ id: string;
40
+ gl: WebGLRenderingContext;
41
+ readonly attributes: object = {};
42
+
43
+ vertexArrayObject: VertexArrayObject;
44
+ accessors: Accessor[] = [];
45
+ configuration: ProgramConfiguration | null = null;
46
+
47
+ // Extracted information
48
+ elements = null;
49
+ elementsAccessor = null;
50
+ values = null;
51
+ unused = null;
52
+ drawParams = null;
53
+ buffer = null; // For attribute 0 on desktops, and created when unbinding buffers
54
+
55
+ bindOnUse = false;
56
+
57
+ constructor(gl: WebGLRenderingContext, props?: VertexArrayProps) {
30
58
  // Use program's id if program is supplied but no id is supplied
31
- const id = opts.id || (opts.program && opts.program.id);
32
- // super(gl, Object.assign({}, opts, {id}));
59
+ const id = props?.id || (props?.program && props?.program.id);
60
+ // super(gl, Object.assign({}, props, {id}));
61
+
62
+ this.vertexArrayObject = new VertexArrayObject(gl);
33
63
 
34
64
  this.id = id;
35
65
  this.gl = gl;
36
66
  this.configuration = null;
37
67
 
38
- // Extracted information
39
- this.elements = null;
40
- this.elementsAccessor = null;
41
- this.values = null;
42
- this.accessors = null;
43
- this.unused = null;
44
- this.drawParams = null;
45
- this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers
46
-
47
- this.attributes = {};
48
-
49
- this.vertexArrayObject = new VertexArrayObject(gl);
50
-
51
- // Issue errors when using removed methods
52
- stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);
53
-
54
- this.initialize(opts);
68
+ this.initialize(props);
55
69
  Object.seal(this);
56
70
  }
57
71
 
58
- delete() {
72
+ delete(): void {
59
73
  if (this.buffer) {
60
74
  this.buffer.delete();
61
75
  }
@@ -63,11 +77,11 @@ export default class VertexArray {
63
77
  this.vertexArrayObject.delete();
64
78
  }
65
79
 
66
- initialize(props = {}) {
80
+ initialize(props?: VertexArrayProps) {
67
81
  this.reset();
68
82
  this.configuration = null;
69
83
  this.bindOnUse = false;
70
- return this.setProps(props);
84
+ return this.setProps(props || {});
71
85
  }
72
86
 
73
87
  // Resets all attributes (to default valued constants)
@@ -87,7 +101,7 @@ export default class VertexArray {
87
101
  return this;
88
102
  }
89
103
 
90
- setProps(props) {
104
+ setProps(props: VertexArrayProps) {
91
105
  if ('program' in props) {
92
106
  this.configuration = props.program && props.program.configuration;
93
107
  }
@@ -101,17 +115,18 @@ export default class VertexArray {
101
115
  this.setElementBuffer(props.elements);
102
116
  }
103
117
  if ('bindOnUse' in props) {
118
+ // @ts-expect-error
104
119
  props = props.bindOnUse;
105
120
  }
106
121
  return this;
107
122
  }
108
123
 
109
124
  // Automatically called if buffers changed through VertexArray API
110
- clearDrawParams() {
125
+ clearDrawParams(): void {
111
126
  this.drawParams = null;
112
127
  }
113
128
 
114
- getDrawParams() {
129
+ getDrawParams(): DrawParams {
115
130
  // Auto deduced draw parameters
116
131
  this.drawParams = this.drawParams || this._updateDrawParams();
117
132
 
@@ -125,7 +140,7 @@ export default class VertexArray {
125
140
  // {attributeName: buffer}
126
141
  // {attributeName: [buffer, accessor]}
127
142
  // {attributeName: (typed) array} => constant
128
- setAttributes(attributes) {
143
+ setAttributes(attributes): this {
129
144
  Object.assign(this.attributes, attributes);
130
145
  this.vertexArrayObject.bind(() => {
131
146
  for (const locationOrName in attributes) {
@@ -141,7 +156,7 @@ export default class VertexArray {
141
156
 
142
157
  // Set (bind) an elements buffer, for indexed rendering.
143
158
  // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
144
- setElementBuffer(elementBuffer = null, accessor = {}) {
159
+ setElementBuffer(elementBuffer: Buffer | null = null, accessor = {}): this {
145
160
  this.elements = elementBuffer; // Save value for debugging
146
161
  this.elementsAccessor = accessor;
147
162
  this.clearDrawParams();
@@ -151,10 +166,11 @@ export default class VertexArray {
151
166
  }
152
167
 
153
168
  // Set a location in vertex attributes array to a buffer
154
- setBuffer(locationOrName, buffer, appAccessor = {}) {
169
+ setBuffer(locationOrName, buffer: Buffer, appAccessor = {}): this {
155
170
  // Check target
156
171
  if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
157
- return this.setElementBuffer(buffer, appAccessor);
172
+ this.setElementBuffer(buffer, appAccessor);
173
+ return this;
158
174
  }
159
175
 
160
176
  const {location, accessor} = this._resolveLocationAndAccessor(
@@ -175,13 +191,14 @@ export default class VertexArray {
175
191
  }
176
192
 
177
193
  // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)
178
- setConstant(locationOrName, arrayValue, appAccessor = {}) {
194
+ setConstant(locationOrName, arrayValue, appAccessor = {}): this {
195
+ // @ts-expect-error
179
196
  const {location, accessor} = this._resolveLocationAndAccessor(
180
197
  locationOrName,
181
198
  arrayValue,
182
199
  // Ensure that size isn't taken from program for multi-column
183
200
  // attributes
184
- Object.assign({size: arrayValue.length}, appAccessor)
201
+ {size: arrayValue.length, ...appAccessor}
185
202
  );
186
203
 
187
204
  if (location >= 0) {
@@ -203,7 +220,7 @@ export default class VertexArray {
203
220
 
204
221
  // Workaround for Chrome TransformFeedback binding issue
205
222
  // If required, unbind temporarily to avoid conflicting with TransformFeedback
206
- unbindBuffers() {
223
+ unbindBuffers(): this {
207
224
  this.vertexArrayObject.bind(() => {
208
225
  if (this.elements) {
209
226
  this.vertexArrayObject.setElementBuffer(null);
@@ -228,7 +245,7 @@ export default class VertexArray {
228
245
 
229
246
  // Workaround for Chrome TransformFeedback binding issue
230
247
  // If required, rebind rebind after temporary unbind
231
- bindBuffers() {
248
+ bindBuffers(): this {
232
249
  this.vertexArrayObject.bind(() => {
233
250
  if (this.elements) {
234
251
  this.setElementBuffer(this.elements);
@@ -325,7 +342,7 @@ export default class VertexArray {
325
342
  return {location: -1};
326
343
  }
327
344
 
328
- _setAttribute(locationOrName, value) {
345
+ _setAttribute(locationOrName, value): void {
329
346
  if (value instanceof Buffer) {
330
347
  // Signature: {attributeName: Buffer}
331
348
  this.setBuffer(locationOrName, value);
@@ -352,7 +369,7 @@ export default class VertexArray {
352
369
  // Updates all constant attribute values (constants are used when vertex attributes are disabled).
353
370
  // This needs to be done repeatedly since in contrast to buffer bindings,
354
371
  // constants are stored on the WebGL context, not the VAO
355
- _setConstantAttributes(vertexCount, instanceCount) {
372
+ _setConstantAttributes(vertexCount, instanceCount): void {
356
373
  // TODO - use accessor to determine what length to use
357
374
  const elementCount = Math.max(vertexCount | 0, instanceCount | 0);
358
375
  let constant = this.values[0];
@@ -368,7 +385,7 @@ export default class VertexArray {
368
385
  }
369
386
  }
370
387
 
371
- _setConstantAttributeZero(constant, elementCount) {
388
+ _setConstantAttributeZero(constant, elementCount: number): void {
372
389
  if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {
373
390
  this._setConstantAttribute(0, constant);
374
391
  return;
@@ -381,13 +398,16 @@ export default class VertexArray {
381
398
  this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);
382
399
  }
383
400
 
384
- _setConstantAttribute(location, constant) {
401
+ _setConstantAttribute(location, constant): void {
385
402
  VertexArrayObject.setConstant(this.gl, location, constant);
386
403
  }
387
404
 
388
405
  // Walks the buffers and updates draw parameters
389
- _updateDrawParams() {
406
+ _updateDrawParams(): DrawParams {
390
407
  const drawParams = {
408
+ elementCount: 0,
409
+ indexType: Uint16Array,
410
+ indexOffset: 0,
391
411
  isIndexed: false,
392
412
  isInstanced: false,
393
413
  indexCount: Infinity,
@@ -422,7 +442,7 @@ export default class VertexArray {
422
442
  return drawParams;
423
443
  }
424
444
 
425
- _updateDrawParamsForLocation(drawParams, location) {
445
+ _updateDrawParamsForLocation(drawParams: DrawParams, location): void {
426
446
  const value = this.values[location];
427
447
  const accessor = this.accessors[location];
428
448
 
@@ -1,10 +1,10 @@
1
1
  import GL from '@luma.gl/constants';
2
- import Resource from './resource';
2
+ import {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';
3
+ import {Buffer, BufferProps} from '@luma.gl/api';
4
+ import {AccessorObject} from '../types';
3
5
  import Accessor from './accessor';
4
- import {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';
5
- import {assertWebGL2Context, log} from '@luma.gl/gltools';
6
- import {assert} from '../utils/assert';
7
- import {checkProps} from '../utils/check-props';
6
+ import {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils';
7
+ import {assert, checkProps} from '../utils';
8
8
 
9
9
  const DEBUG_DATA_LENGTH = 10;
10
10
 
@@ -37,16 +37,57 @@ const PROP_CHECKS_SET_PROPS = {
37
37
  removedProps: DEPRECATED_PROPS
38
38
  };
39
39
 
40
- export default class Buffer extends Resource {
41
- constructor(gl, props = {}) {
42
- super(gl, props);
40
+ /** WebGL Buffer interface */
41
+ export type WebGLBufferProps = BufferProps & {
42
+ handle?: WebGLBuffer;
43
+ data?: any; // ArrayBufferView;
44
+ byteLength?: number;
45
+ target?: number;
46
+ usage?: number;
47
+ accessor?: AccessorObject;
48
+
49
+ /** @deprecated */
50
+ index?: number;
51
+ /** @deprecated */
52
+ offset?: number;
53
+ /** @deprecated */
54
+ size?: number;
55
+ /** @deprecated */
56
+ type?: number
57
+ }
58
+
59
+ /** WebGL Buffer interface */
60
+ export default class WEBGLBuffer extends Buffer {
61
+ readonly gl: WebGLRenderingContext;
62
+ readonly gl2: WebGL2RenderingContext | null;
63
+ readonly handle: WebGLBuffer;
64
+
65
+ target: number;
66
+ usage: number;
67
+
68
+ byteLength: number;
69
+ bytesUsed: number;
70
+
71
+ accessor: Accessor;
43
72
 
44
- this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);
45
- // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);
73
+ debugData;
74
+
75
+ constructor(gl: WebGLRenderingContext, props?: BufferProps);
76
+ constructor(gl: WebGLRenderingContext, data: ArrayBufferView | number[]);
77
+ constructor(gl: WebGLRenderingContext, byteLength: number);
78
+
79
+ constructor(gl: WebGLRenderingContext, props = {}) {
80
+ super(gl as any, props);
81
+
82
+ this.gl = gl;
83
+ this.gl2 = getWebGL2Context(gl);
84
+ const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;
85
+ this.handle = handle || this.gl.createBuffer();
46
86
 
47
87
  // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
48
88
  // otherwise buffer type will lock to generic (non-element) buffer
49
89
  // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
90
+ // @ts-expect-error
50
91
  this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);
51
92
 
52
93
  this.initialize(props);
@@ -54,13 +95,23 @@ export default class Buffer extends Resource {
54
95
  Object.seal(this);
55
96
  }
56
97
 
98
+ destroy(): void {
99
+ if (this.handle) {
100
+ this.removeStats();
101
+ this.trackDeallocatedMemory();
102
+ this.gl.deleteBuffer(this.handle);
103
+ // @ts-expect-error
104
+ this.handle = null;
105
+ }
106
+ }
107
+
57
108
  // returns number of elements in the buffer (assuming that the full buffer is used)
58
- getElementCount(accessor = this.accessor) {
109
+ getElementCount(accessor = this.accessor): number {
59
110
  return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));
60
111
  }
61
112
 
62
113
  // returns number of vertices in the buffer (assuming that the full buffer is used)
63
- getVertexCount(accessor = this.accessor) {
114
+ getVertexCount(accessor = this.accessor): number {
64
115
  return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));
65
116
  }
66
117
 
@@ -68,7 +119,7 @@ export default class Buffer extends Resource {
68
119
  // Signature: `new Buffer(gl, {data: new Float32Array(...)})`
69
120
  // Signature: `new Buffer(gl, new Float32Array(...))`
70
121
  // Signature: `new Buffer(gl, 100)`
71
- initialize(props = {}) {
122
+ initialize(props: BufferProps = {}): this {
72
123
  // Signature `new Buffer(gl, new Float32Array(...)`
73
124
  if (ArrayBuffer.isView(props)) {
74
125
  props = {data: props};
@@ -76,6 +127,7 @@ export default class Buffer extends Resource {
76
127
 
77
128
  // Signature: `new Buffer(gl, 100)`
78
129
  if (Number.isFinite(props)) {
130
+ // @ts-expect-error
79
131
  props = {byteLength: props};
80
132
  }
81
133
 
@@ -98,7 +150,7 @@ export default class Buffer extends Resource {
98
150
  return this;
99
151
  }
100
152
 
101
- setProps(props) {
153
+ setProps(props: BufferProps): this {
102
154
  props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);
103
155
 
104
156
  if ('accessor' in props) {
@@ -110,7 +162,7 @@ export default class Buffer extends Resource {
110
162
 
111
163
  // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later
112
164
  // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}
113
- setAccessor(accessor) {
165
+ setAccessor(accessor): this {
114
166
  // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field
115
167
  // (mainly to support "interleaving")
116
168
  // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:
@@ -159,11 +211,13 @@ export default class Buffer extends Resource {
159
211
 
160
212
  // Create the buffer - binding it here for the first time locks the type
161
213
  // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
214
+ // @ts-expect-error
162
215
  const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;
163
216
  this.gl.bindBuffer(target, this.handle);
164
217
  // WebGL2: subData supports additional srcOffset and length parameters
165
218
  if (srcOffset !== 0 || byteLength !== undefined) {
166
219
  assertWebGL2Context(this.gl);
220
+ // @ts-expect-error
167
221
  this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
168
222
  } else {
169
223
  this.gl.bufferSubData(target, offset, data);
@@ -178,15 +232,24 @@ export default class Buffer extends Resource {
178
232
  return this;
179
233
  }
180
234
 
181
- // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer
182
- copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {
183
- const {gl} = this;
235
+ /**
236
+ * Copies part of the data of another buffer into this buffer
237
+ * @note WEBGL2 ONLY
238
+ */
239
+ copyData(options: {
240
+ sourceBuffer: any;
241
+ readOffset?: number;
242
+ writeOffset?: number;
243
+ size: any;
244
+ }): this {
245
+ const {sourceBuffer, readOffset = 0, writeOffset = 0, size} = options;
246
+ const {gl, gl2} = this;
184
247
  assertWebGL2Context(gl);
185
248
 
186
249
  // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
187
250
  gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);
188
251
  gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);
189
- gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);
252
+ gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);
190
253
  gl.bindBuffer(GL.COPY_READ_BUFFER, null);
191
254
  gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);
192
255
 
@@ -196,8 +259,18 @@ export default class Buffer extends Resource {
196
259
  return this;
197
260
  }
198
261
 
199
- // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.
200
- getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {
262
+ /**
263
+ * Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.
264
+ * @note WEBGL2 ONLY
265
+ */
266
+ getData(options?: {
267
+ dstData?: any;
268
+ srcByteOffset?: number;
269
+ dstOffset?: number;
270
+ length?: number;
271
+ }): any {
272
+ let {dstData = null, length = 0} = options || {};
273
+ const {srcByteOffset = 0, dstOffset = 0} = options || {};
201
274
  assertWebGL2Context(this.gl);
202
275
 
203
276
  const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});
@@ -226,7 +299,7 @@ export default class Buffer extends Resource {
226
299
 
227
300
  // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type
228
301
  this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
229
- this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);
302
+ this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);
230
303
  this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
231
304
 
232
305
  // TODO - update local `data` if offsets are 0
@@ -240,21 +313,23 @@ export default class Buffer extends Resource {
240
313
  * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.
241
314
  * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.
242
315
  */
243
- bind({
244
- target = this.target, // target for the bind operation
245
- index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)
246
- offset = 0,
247
- size
248
- } = {}) {
316
+ bind(options?: {target?: number; index?: any; offset?: number; size: any}): this {
317
+ const {
318
+ target = this.target, // target for the bind operation
319
+ // @ts-expect-error
320
+ index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)
321
+ offset = 0,
322
+ size
323
+ } = options || {};
249
324
  // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could
250
325
  // be used as direct binding points, they will not affect transform feedback or
251
326
  // uniform buffer state. Instead indexed bindings need to be made.
252
327
  if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {
253
328
  if (size !== undefined) {
254
- this.gl.bindBufferRange(target, index, this.handle, offset, size);
329
+ this.gl2.bindBufferRange(target, index, this.handle, offset, size);
255
330
  } else {
256
331
  assert(offset === 0); // Make sure offset wasn't supplied
257
- this.gl.bindBufferBase(target, index, this.handle);
332
+ this.gl2.bindBufferBase(target, index, this.handle);
258
333
  }
259
334
  } else {
260
335
  this.gl.bindBuffer(target, this.handle);
@@ -263,10 +338,12 @@ export default class Buffer extends Resource {
263
338
  return this;
264
339
  }
265
340
 
266
- unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {
341
+ unbind(options?: {target?: any; index?: any}): this {
342
+ // @ts-expect-error
343
+ const {target = this.target, index = this.accessor && this.accessor.index} = options || {};
267
344
  const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;
268
345
  if (isIndexedBuffer) {
269
- this.gl.bindBufferBase(target, index, null);
346
+ this.gl2.bindBufferBase(target, index, null);
270
347
  } else {
271
348
  this.gl.bindBuffer(target, null);
272
349
  }
@@ -276,7 +353,10 @@ export default class Buffer extends Resource {
276
353
  // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)
277
354
 
278
355
  // Returns a short initial data array
279
- getDebugData() {
356
+ getDebugData(): {
357
+ data: any;
358
+ changed: boolean;
359
+ } {
280
360
  if (!this.debugData) {
281
361
  this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});
282
362
  return {data: this.debugData, changed: true};
@@ -291,10 +371,10 @@ export default class Buffer extends Resource {
291
371
  // PRIVATE METHODS
292
372
 
293
373
  // Allocate a new buffer and initialize to contents of typed array
294
- _setData(data, offset = 0, byteLength = data.byteLength + offset) {
374
+ _setData(data, offset: number = 0, byteLength: number = data.byteLength + offset): this {
295
375
  assert(ArrayBuffer.isView(data));
296
376
 
297
- this._trackDeallocatedMemory();
377
+ this.trackDeallocatedMemory();
298
378
 
299
379
  const target = this._getTarget();
300
380
  this.gl.bindBuffer(target, this.handle);
@@ -304,8 +384,8 @@ export default class Buffer extends Resource {
304
384
 
305
385
  this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
306
386
  this.bytesUsed = byteLength;
307
-
308
- this._trackAllocatedMemory(byteLength);
387
+ this.byteLength = byteLength;
388
+ this.trackAllocatedMemory(byteLength);
309
389
 
310
390
  // infer GL type from supplied typed array
311
391
  const type = getGLTypeFromTypedArray(data);
@@ -315,15 +395,16 @@ export default class Buffer extends Resource {
315
395
  }
316
396
 
317
397
  // Allocate a GPU buffer of specified size.
318
- _setByteLength(byteLength, usage = this.usage) {
398
+ _setByteLength(byteLength: number, usage = this.usage): this {
319
399
  assert(byteLength >= 0);
320
400
 
321
- this._trackDeallocatedMemory();
401
+ this.trackDeallocatedMemory();
322
402
 
323
403
  // Workaround needed for Safari (#291):
324
404
  // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.
325
405
  let data = byteLength;
326
406
  if (byteLength === 0) {
407
+ // @ts-expect-error
327
408
  data = new Float32Array(0);
328
409
  }
329
410
 
@@ -335,8 +416,9 @@ export default class Buffer extends Resource {
335
416
  this.usage = usage;
336
417
  this.debugData = null;
337
418
  this.bytesUsed = byteLength;
419
+ this.byteLength = byteLength;
338
420
 
339
- this._trackAllocatedMemory(byteLength);
421
+ this.trackAllocatedMemory(byteLength);
340
422
 
341
423
  return this;
342
424
  }
@@ -344,6 +426,7 @@ export default class Buffer extends Resource {
344
426
  // Binding a buffer for the first time locks the type
345
427
  // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
346
428
  _getTarget() {
429
+ // @ts-expect-error
347
430
  return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;
348
431
  }
349
432
 
@@ -363,16 +446,7 @@ export default class Buffer extends Resource {
363
446
 
364
447
  // RESOURCE METHODS
365
448
 
366
- _createHandle() {
367
- return this.gl.createBuffer();
368
- }
369
-
370
- _deleteHandle() {
371
- this.gl.deleteBuffer(this.handle);
372
- this._trackDeallocatedMemory();
373
- }
374
-
375
- _getParameter(pname) {
449
+ getParameter(pname) {
376
450
  this.gl.bindBuffer(this.target, this.handle);
377
451
  const value = this.gl.getBufferParameter(this.target, pname);
378
452
  this.gl.bindBuffer(this.target, null);
@@ -380,8 +454,8 @@ export default class Buffer extends Resource {
380
454
  }
381
455
 
382
456
  // DEPRECATIONS - v7.0
457
+ /** @deprecated Use Buffer.accessor.type */
383
458
  get type() {
384
- log.deprecated('Buffer.type', 'Buffer.accessor.type')();
385
459
  return this.accessor.type;
386
460
  }
387
461