@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
@@ -1,17 +1,56 @@
1
- /** @typedef {import('./uniforms')} types */
2
-
1
+ import {log, assert} from '@luma.gl/api';
3
2
  import GL from '@luma.gl/constants';
4
- import {log} from '@luma.gl/gltools';
3
+ import {Matrix4} from '@math.gl/core';
5
4
 
6
5
  import Framebuffer from './framebuffer';
7
6
  import Renderbuffer from './renderbuffer';
8
7
  import Texture from './texture';
9
- import {assert} from '../utils/assert';
8
+
9
+ type NumberUniformInfo = {
10
+ type: 'number'
11
+ value: number
12
+ min: number
13
+ max: number
14
+ }
15
+
16
+ type BooleanUniformInfo = {
17
+ type: 'boolean'
18
+ value: boolean
19
+ }
20
+
21
+ type ArrayUniformInfo = {
22
+ type: 'array'
23
+ value: Array<any>
24
+ }
25
+
26
+ type ObjectUniformInfo = {
27
+ type: 'object'
28
+ value: Object
29
+ }
30
+
31
+ type UniformInfo = NumberUniformInfo |
32
+ BooleanUniformInfo |
33
+ ArrayUniformInfo |
34
+ ObjectUniformInfo
35
+
36
+ // https://luma.gl/docs/developer-guide/shader-modules#getuniforms
37
+ type UniformsOptions = {
38
+ [uniformName: string]: UniformInfo
39
+ }
40
+
41
+ type Uniform = UniformInfo |
42
+ Buffer | (() => Buffer) | Framebuffer |
43
+ Texture |
44
+ Matrix4 | // TODO: which other math.gl classes?
45
+ number | [number, number] | [number, number, number] | [number, number, number, number]
46
+
47
+ type Uniforms = {
48
+ [uniformName: string]: Uniform
49
+ }
10
50
 
11
51
  const UNIFORM_SETTERS = {
12
52
  // WEBGL1
13
53
 
14
- /* eslint-disable max-len */
15
54
  [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),
16
55
  [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),
17
56
  [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),
@@ -126,7 +165,6 @@ const UNIFORM_SETTERS = {
126
165
  [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,
127
166
  [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,
128
167
  [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter
129
- /* eslint-enable max-len */
130
168
  };
131
169
 
132
170
  // Pre-allocated typed arrays for temporary conversion
@@ -136,52 +174,10 @@ const UINT_ARRAY = {};
136
174
 
137
175
  const array1 = [0];
138
176
 
139
- // Functions to ensure the type of uniform values
140
- // This is done because uniform*v functions
141
- // are extremely slow when consuming JS arrays directly.
142
- function toTypedArray(value, uniformLength, Type, cache) {
143
- // convert boolean uniforms to Number
144
- if (uniformLength === 1 && typeof value === 'boolean') {
145
- value = value ? 1 : 0;
146
- }
147
- if (Number.isFinite(value)) {
148
- array1[0] = value;
149
- value = array1;
150
- }
151
- const length = value.length;
152
- if (length % uniformLength) {
153
- log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();
154
- }
155
-
156
- if (value instanceof Type) {
157
- return value;
158
- }
159
- let result = cache[length];
160
- if (!result) {
161
- result = new Type(length);
162
- cache[length] = result;
163
- }
164
- for (let i = 0; i < length; i++) {
165
- result[i] = value[i];
166
- }
167
- return result;
168
- }
169
-
170
- function toFloatArray(value, uniformLength) {
171
- return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);
172
- }
173
-
174
- function toIntArray(value, uniformLength) {
175
- return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);
176
- }
177
-
178
- function toUIntArray(value, uniformLength) {
179
- return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);
180
- } // Returns a Magic Uniform Setter
181
-
182
177
  // PUBLIC API
183
178
 
184
- /** @type {types['getUniformSetter']} */ export function getUniformSetter(gl, location, info) {
179
+ /** Returns a Magic Uniform Setter */
180
+ export function getUniformSetter(gl: WebGLRenderingContext, location: number, info: UniformInfo): any {
185
181
  const setter = UNIFORM_SETTERS[info.type];
186
182
  if (!setter) {
187
183
  throw new Error(`Unknown GLSL uniform type ${info.type}`);
@@ -192,8 +188,7 @@ function toUIntArray(value, uniformLength) {
192
188
  return setter().bind(null, gl, location);
193
189
  }
194
190
 
195
- /** @type {types['parseUniformName']} */
196
- export function parseUniformName(name) {
191
+ export function parseUniformName(name: string): {name: string; isArray: boolean, length: number} {
197
192
  // Shortcut to avoid redundant or bad matches
198
193
  if (name[name.length - 1] !== ']') {
199
194
  return {
@@ -212,15 +207,20 @@ export function parseUniformName(name) {
212
207
 
213
208
  return {
214
209
  name: matches[1],
215
- length: matches[2] || 1,
210
+ length: Number(matches[2]) || 1,
216
211
  isArray: Boolean(matches[2])
217
212
  };
218
- } // To facilitate early detection of e.g. undefined values in JavaScript
213
+ }
214
+
215
+ // To facilitate early detection of e.g. undefined values in JavaScript
219
216
 
220
217
  // Basic checks of uniform values (with or without knowledge of program)
221
218
 
222
- /** @type {types['checkUniformValues']} */
223
- export function checkUniformValues(uniforms, source, uniformMap) {
219
+ /**
220
+ * Basic checks of uniform values (with or without knowledge of program)
221
+ * To facilitate early detection of e.g. undefined values in JavaScript
222
+ */
223
+ export function checkUniformValues(uniforms: object, source?: string, uniformMap?: object): boolean {
224
224
  for (const uniformName in uniforms) {
225
225
  const value = uniforms[uniformName];
226
226
  const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);
@@ -228,14 +228,35 @@ export function checkUniformValues(uniforms, source, uniformMap) {
228
228
  // Add space to source
229
229
  source = source ? `${source} ` : '';
230
230
  // Value could be unprintable so write the object on console
231
- console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line
232
- /* eslint-enable no-console */
231
+ console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line no-console
233
232
  throw new Error(`${source} Bad uniform ${uniformName}`);
234
233
  }
235
234
  }
236
235
  return true;
237
236
  }
238
237
 
238
+ /**
239
+ * Creates a copy of the uniform
240
+ */
241
+ export function copyUniform(uniforms: object, key: string, value: any): void {
242
+ if (Array.isArray(value) || ArrayBuffer.isView(value)) {
243
+ if (uniforms[key]) {
244
+ const dest = uniforms[key];
245
+ // @ts-expect-error
246
+ for (let i = 0, len = value.length; i < len; ++i) {
247
+ dest[i] = value[i];
248
+ }
249
+ } else {
250
+ // @ts-expect-error
251
+ uniforms[key] = value.slice();
252
+ }
253
+ } else {
254
+ uniforms[key] = value;
255
+ }
256
+ }
257
+
258
+ // HELPERS
259
+
239
260
  // TODO use type information during validation
240
261
  function checkUniformValue(value) {
241
262
  if (Array.isArray(value) || ArrayBuffer.isView(value)) {
@@ -257,25 +278,6 @@ function checkUniformValue(value) {
257
278
  return false;
258
279
  }
259
280
 
260
- /** @type {types['copyUniform']} */
261
- export function copyUniform(uniforms, key, value) {
262
- if (Array.isArray(value) || ArrayBuffer.isView(value)) {
263
- if (uniforms[key]) {
264
- const dest = uniforms[key];
265
- // @ts-ignore
266
- for (let i = 0, len = value.length; i < len; ++i) {
267
- dest[i] = value[i];
268
- }
269
- } else {
270
- // @ts-ignore
271
- uniforms[key] = value.slice();
272
- }
273
- } else {
274
- uniforms[key] = value;
275
- }
276
- }
277
-
278
- // HELPERS
279
281
 
280
282
  function checkUniformArray(value) {
281
283
  // Check that every element in array is a number, and at least 1 element
@@ -346,3 +348,47 @@ function setVectorUniform(gl, functionName, location, value) {
346
348
  function setMatrixUniform(gl, functionName, location, value) {
347
349
  gl[functionName](location, false, value);
348
350
  }
351
+
352
+ // Functions to ensure the type of uniform values
353
+ // This is done because uniform*v functions
354
+ // are extremely slow when consuming JS arrays directly.
355
+
356
+ function toTypedArray(value, uniformLength, Type, cache) {
357
+ // convert boolean uniforms to Number
358
+ if (uniformLength === 1 && typeof value === 'boolean') {
359
+ value = value ? 1 : 0;
360
+ }
361
+ if (Number.isFinite(value)) {
362
+ array1[0] = value;
363
+ value = array1;
364
+ }
365
+ const length = value.length;
366
+ if (length % uniformLength) {
367
+ log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();
368
+ }
369
+
370
+ if (value instanceof Type) {
371
+ return value;
372
+ }
373
+ let result = cache[length];
374
+ if (!result) {
375
+ result = new Type(length);
376
+ cache[length] = result;
377
+ }
378
+ for (let i = 0; i < length; i++) {
379
+ result[i] = value[i];
380
+ }
381
+ return result;
382
+ }
383
+
384
+ function toFloatArray(value, uniformLength) {
385
+ return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);
386
+ }
387
+
388
+ function toIntArray(value, uniformLength) {
389
+ return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);
390
+ }
391
+
392
+ function toUIntArray(value, uniformLength) {
393
+ return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);
394
+ }
@@ -1,18 +1,31 @@
1
+ import type {NumberArray} from '@luma.gl/api';
2
+ import {assert, getScratchArray, fillArray} from '@luma.gl/api';
1
3
  import GL from '@luma.gl/constants';
2
- import Resource from './resource';
3
- import Buffer from './buffer';
4
- import {isWebGL2} from '@luma.gl/gltools';
5
- import {getScratchArray, fillArray} from '../utils/array-utils-flat';
6
- import {assert} from '../utils/assert';
7
- import {getBrowser} from 'probe.gl';
4
+ import {getBrowser} from '@probe.gl/env';
5
+ import WebGLDevice from '../adapter/webgl-device';
6
+ import {assertWebGL2Context, isWebGL2} from '../context/context/webgl-checks';
7
+ import Program from './program';
8
+ import WebGLResource, {ResourceProps} from './webgl-resource';
9
+ import Buffer from './webgl-buffer';
8
10
 
9
11
  const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
10
12
 
11
- export default class VertexArrayObject extends Resource {
12
- static isSupported(gl, options = {}) {
13
- // Attribute 0 can not be disable on most desktop OpenGL based browsers
14
- // and on iOS Safari browser.
15
- if (options.constantAttributeZero) {
13
+ /**
14
+ * VertexArrayObject properties
15
+ * @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers
16
+ * and on iOS Safari browser.
17
+ */
18
+ export type VertexArrayObjectProps = ResourceProps & {
19
+ constantAttributeZero?: boolean;
20
+ program?: Program;
21
+ isDefaultArray?: boolean;
22
+ };
23
+
24
+ export default class VertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
25
+ private static MAX_ATTRIBUTES: number;
26
+
27
+ static isSupported(gl: WebGLRenderingContext | WebGL2RenderingContext, options?: VertexArrayObjectProps): boolean {
28
+ if (options?.constantAttributeZero) {
16
29
  return isWebGL2(gl) || getBrowser() === 'Chrome';
17
30
  }
18
31
 
@@ -20,65 +33,69 @@ export default class VertexArrayObject extends Resource {
20
33
  return true;
21
34
  }
22
35
 
23
- // Returns the global (null) vertex array object. Exists even when no extension available
24
- // TODO(Tarek): VAOs are now polyfilled. Deprecate this in 9.0
25
- static getDefaultArray(gl) {
26
- gl.luma = gl.luma || {};
27
- if (!gl.luma.defaultVertexArray) {
28
- gl.luma.defaultVertexArray = new VertexArrayObject(gl, {handle: null, isDefaultArray: true});
29
- }
30
- return gl.luma.defaultVertexArray;
36
+ /**
37
+ * Returns the global (null) vertex array object. Exists even when no extension available.
38
+ * @todo (Tarek): VAOs are now polyfilled. Deprecate this in 9.0
39
+ */
40
+ static getDefaultArray(gl: WebGLRenderingContext): VertexArrayObject {
41
+ const webglDevice = WebGLDevice.fromContext(gl);
42
+ webglDevice.defaultVertexArray = webglDevice.defaultVertexArray ||
43
+ new VertexArrayObject(gl, {handle: null, isDefaultArray: true});
44
+ return webglDevice.defaultVertexArray;
31
45
  }
32
46
 
33
- static getMaxAttributes(gl) {
47
+ /** Get maximum number of attributes in a vertex array */
48
+ static getMaxAttributes(gl: WebGLRenderingContext): number {
34
49
  // TODO - should be cached per context
35
- // @ts-ignore
36
50
  VertexArrayObject.MAX_ATTRIBUTES =
37
- // @ts-ignore
38
51
  VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
39
- // @ts-ignore
40
52
  return VertexArrayObject.MAX_ATTRIBUTES;
41
53
  }
42
54
 
43
- // Note: Constants are stored globally on the WebGL context, not the VAO
44
- // So they need to be updated before every render
45
- // TODO - use known type (in configuration or passed in) to allow non-typed arrays?
46
- // TODO - remember/cache values to avoid setting them unnecessarily?
47
- static setConstant(gl, location, array) {
55
+ /**
56
+ * Set an attribute to a constant value
57
+ * @param gl
58
+ * @param location
59
+ * @param array
60
+ *
61
+ * @note Constants are stored globally on the WebGL context, not the VAO
62
+ * so they need to be updated before every render
63
+ * @todo - use known type (in configuration or passed in) to allow non-typed arrays?
64
+ * @todo - remember/cache values to avoid setting them unnecessarily?
65
+ */
66
+ static setConstant(gl: WebGLRenderingContext, location: any, array: any): void {
48
67
  switch (array.constructor) {
49
68
  case Float32Array:
50
69
  VertexArrayObject._setConstantFloatArray(gl, location, array);
51
70
  break;
52
71
  case Int32Array:
53
- VertexArrayObject._setConstantIntArray(gl, location, array);
72
+ VertexArrayObject._setConstantIntArray(assertWebGL2Context(gl), location, array);
54
73
  break;
55
74
  case Uint32Array:
56
- VertexArrayObject._setConstantUintArray(gl, location, array);
75
+ VertexArrayObject._setConstantUintArray(assertWebGL2Context(gl), location, array);
57
76
  break;
58
77
  default:
59
78
  assert(false);
60
79
  }
61
80
  }
62
81
 
82
+ private buffer: Buffer | null = null;
83
+ private bufferValue = null;
84
+ private isDefaultArray: boolean = false;
85
+
63
86
  // Create a VertexArray
64
- constructor(gl, opts = {}) {
87
+ constructor(gl: WebGLRenderingContext, props?: VertexArrayObjectProps) {
65
88
  // Use program's id if program but no id is supplied
66
- const id = opts.id || (opts.program && opts.program.id);
67
- super(gl, Object.assign({}, opts, {id}));
89
+ super(WebGLDevice.attach(gl), {...props, id: props?.id || (props?.program && props?.program.id)}, {} as any);
68
90
 
69
91
  this.buffer = null;
70
92
  this.bufferValue = null;
71
- this.isDefaultArray = opts.isDefaultArray || false;
72
-
73
- /** @type {WebGL2RenderingContext} */
74
- this.gl2 = gl;
75
-
76
- this.initialize(opts);
93
+ this.isDefaultArray = props?.isDefaultArray || false;
77
94
 
78
95
  Object.seal(this);
79
96
  }
80
97
 
81
- delete() {
98
+ delete(): this {
82
99
  super.delete();
83
100
  if (this.buffer) {
84
101
  this.buffer.delete();
@@ -86,22 +103,13 @@ export default class VertexArrayObject extends Resource {
86
103
  return this;
87
104
  }
88
105
 
89
- get MAX_ATTRIBUTES() {
106
+ get MAX_ATTRIBUTES(): number {
90
107
  return VertexArrayObject.getMaxAttributes(this.gl);
91
108
  }
92
109
 
93
- initialize(props = {}) {
94
- return this.setProps(props);
95
- }
96
-
97
- setProps(props) {
98
- // TODO: decide which props should be supported
99
- return this;
100
- }
101
-
102
110
  // Set (bind) an elements buffer, for indexed rendering.
103
111
  // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
104
- setElementBuffer(elementBuffer = null, opts = {}) {
112
+ setElementBuffer(elementBuffer: Buffer = null, opts = {}) {
105
113
  assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
106
114
 
107
115
  // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...
@@ -112,8 +120,8 @@ export default class VertexArrayObject extends Resource {
112
120
  return this;
113
121
  }
114
122
 
115
- // Set a location in vertex attributes array to a bufferk, enables the location, sets divisor
116
- setBuffer(location, buffer, accessor) {
123
+ /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
124
+ setBuffer(location: number, buffer: Buffer, accessor: any): this {
117
125
  // Check target
118
126
  if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
119
127
  return this.setElementBuffer(buffer, accessor);
@@ -145,11 +153,13 @@ export default class VertexArrayObject extends Resource {
145
153
  return this;
146
154
  }
147
155
 
148
- // Enabling an attribute location makes it reference the currently bound buffer
149
- // Disabling an attribute location makes it reference the global constant value
150
- // TODO - handle single values for size 1 attributes?
151
- // TODO - convert classic arrays based on known type?
152
- enable(location, enable = true) {
156
+ /**
157
+ * Enabling an attribute location makes it reference the currently bound buffer
158
+ * Disabling an attribute location makes it reference the global constant value
159
+ * TODO - handle single values for size 1 attributes?
160
+ * TODO - convert classic arrays based on known type?
161
+ */
162
+ enable(location: number, enable = true): this {
153
163
  // Attribute 0 cannot be disabled in most desktop OpenGL based browsers
154
164
  const disablingAttributeZero =
155
165
  !enable &&
@@ -158,21 +168,22 @@ export default class VertexArrayObject extends Resource {
158
168
 
159
169
  if (!disablingAttributeZero) {
160
170
  location = Number(location);
161
- this.bind(
162
- () =>
163
- enable
164
- ? this.gl.enableVertexAttribArray(location)
165
- : this.gl.disableVertexAttribArray(location)
171
+ this.bind(() =>
172
+ enable
173
+ ? this.gl.enableVertexAttribArray(location)
174
+ : this.gl.disableVertexAttribArray(location)
166
175
  );
167
176
  }
168
177
  return this;
169
178
  }
170
179
 
171
- // Provide a means to create a buffer that is equivalent to a constant.
172
- // NOTE: Desktop OpenGL cannot disable attribute 0.
173
- // https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
174
- // this-has-significant-performance-penalt
175
- getConstantBuffer(elementCount, value) {
180
+ /**
181
+ * Provide a means to create a buffer that is equivalent to a constant.
182
+ * NOTE: Desktop OpenGL cannot disable attribute 0.
183
+ * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
184
+ * this-has-significant-performance-penalty
185
+ */
186
+ getConstantBuffer(elementCount: number, value): Buffer {
176
187
  // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)
177
188
 
178
189
  const constantValue = this._normalizeConstantArrayValue(value);
@@ -200,18 +211,31 @@ export default class VertexArrayObject extends Resource {
200
211
  return this.buffer;
201
212
  }
202
213
 
214
+ // DEPRECATED
215
+
216
+ /** @deprecated this function has no effect */
217
+ initialize(props?: VertexArrayObjectProps): this {
218
+ return this.setProps(props);
219
+ }
220
+
221
+ /** @deprecated this function is not implemented */
222
+ setProps(props: VertexArrayObjectProps): this {
223
+ // TODO: decide which props should be supported
224
+ return this;
225
+ }
226
+
203
227
  // PRIVATE
204
228
 
205
229
  // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)
206
230
  // TODO - handle single values for size 1 attributes?
207
- _normalizeConstantArrayValue(arrayValue) {
231
+ _normalizeConstantArrayValue(arrayValue: NumberArray) {
208
232
  if (Array.isArray(arrayValue)) {
209
233
  return new Float32Array(arrayValue);
210
234
  }
211
235
  return arrayValue;
212
236
  }
213
237
 
214
- _compareConstantArrayValues(v1, v2) {
238
+ _compareConstantArrayValues(v1, v2): boolean {
215
239
  if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
216
240
  return false;
217
241
  }
@@ -223,7 +247,7 @@ export default class VertexArrayObject extends Resource {
223
247
  return true;
224
248
  }
225
249
 
226
- static _setConstantFloatArray(gl, location, array) {
250
+ static _setConstantFloatArray(gl: WebGLRenderingContext, location, array): void {
227
251
  switch (array.length) {
228
252
  case 1:
229
253
  gl.vertexAttrib1fv(location, array);
@@ -242,68 +266,66 @@ export default class VertexArrayObject extends Resource {
242
266
  }
243
267
  }
244
268
 
245
- static _setConstantIntArray(gl, location, array) {
269
+ static _setConstantIntArray(gl: WebGL2RenderingContext, location, array) {
246
270
  assert(isWebGL2(gl));
247
- switch (array.length) {
248
- case 1:
249
- gl.vertexAttribI1iv(location, array);
250
- break;
251
- case 2:
252
- gl.vertexAttribI2iv(location, array);
253
- break;
254
- case 3:
255
- gl.vertexAttribI3iv(location, array);
256
- break;
257
- case 4:
258
- gl.vertexAttribI4iv(location, array);
259
- break;
260
- default:
261
- assert(false);
262
- }
271
+ gl.vertexAttribI4iv(location, array);
272
+ // switch (array.length) {
273
+ // case 1:
274
+ // gl.vertexAttribI1iv(location, array);
275
+ // break;
276
+ // case 2:
277
+ // gl.vertexAttribI2iv(location, array);
278
+ // break;
279
+ // case 3:
280
+ // gl.vertexAttribI3iv(location, array);
281
+ // break;
282
+ // case 4:
283
+ // break;
284
+ // default:
285
+ // assert(false);
286
+ // }
263
287
  }
264
288
 
265
- static _setConstantUintArray(gl, location, array) {
289
+ static _setConstantUintArray(gl: WebGL2RenderingContext, location, array) {
266
290
  assert(isWebGL2(gl));
267
- switch (array.length) {
268
- case 1:
269
- gl.vertexAttribI1uiv(location, array);
270
- break;
271
- case 2:
272
- gl.vertexAttribI2uiv(location, array);
273
- break;
274
- case 3:
275
- gl.vertexAttribI3uiv(location, array);
276
- break;
277
- case 4:
278
- gl.vertexAttribI4uiv(location, array);
279
- break;
280
- default:
281
- assert(false);
282
- }
291
+ gl.vertexAttribI4uiv(location, array);
292
+ // switch (array.length) {
293
+ // case 1:
294
+ // gl.vertexAttribI1uiv(location, array);
295
+ // break;
296
+ // case 2:
297
+ // gl.vertexAttribI2uiv(location, array);
298
+ // break;
299
+ // case 3:
300
+ // gl.vertexAttribI3uiv(location, array);
301
+ // break;
302
+ // case 4:
303
+ // gl.vertexAttribI4uiv(location, array);
304
+ // break;
305
+ // default:
306
+ // assert(false);
307
+ // }
283
308
  }
284
309
 
285
310
  // RESOURCE IMPLEMENTATION
286
311
 
287
312
  _createHandle() {
288
- /** @type {WebGL2RenderingContext} */
289
- // @ts-ignore
290
- const gl2 = this.gl;
291
- return gl2.createVertexArray();
313
+ return this.gl2.createVertexArray();
292
314
  }
293
315
 
294
- _deleteHandle(handle) {
295
- this.gl2.deleteVertexArray(handle);
296
- // @ts-ignore
316
+ _deleteHandle(): void {
317
+ this.gl2.deleteVertexArray(this.handle);
318
+ // @ts-expect-error
297
319
  return [this.elements];
298
320
  // return [this.elements, ...this.buffers];
299
321
  }
300
322
 
301
- _bindHandle(handle) {
323
+ _bindHandle(handle): void {
302
324
  this.gl2.bindVertexArray(handle);
303
325
  }
304
326
 
305
327
  // Generic getter for information about a vertex attribute at a given position
306
- _getParameter(pname, {location}) {
328
+ _getParameter(pname: number, {location}) {
307
329
  assert(Number.isFinite(location));
308
330
  return this.bind(() => {
309
331
  switch (pname) {