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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/dist/api/device2.d.ts +52 -0
  2. package/dist/api/device2.d.ts.map +1 -0
  3. package/dist/api/device2.js +23 -0
  4. package/dist/api/device2.js.map +1 -0
  5. package/dist/bundle.d.ts +2 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/bundle.js +5 -0
  8. package/dist/bundle.js.map +1 -0
  9. package/dist/classes/accessor.d.ts +28 -0
  10. package/dist/classes/accessor.d.ts.map +1 -0
  11. package/dist/classes/accessor.js +112 -0
  12. package/dist/classes/accessor.js.map +1 -0
  13. package/dist/classes/accessor.ts.disabled +159 -0
  14. package/dist/classes/clear.d.ts +17 -0
  15. package/dist/classes/clear.d.ts.map +1 -0
  16. package/{src → dist}/classes/clear.js +29 -23
  17. package/dist/classes/clear.js.map +1 -0
  18. package/dist/classes/copy-and-blit.d.ts +86 -0
  19. package/dist/classes/copy-and-blit.d.ts.map +1 -0
  20. package/dist/classes/copy-and-blit.js +338 -0
  21. package/dist/classes/copy-and-blit.js.map +1 -0
  22. package/dist/classes/framebuffer.d.ts +139 -0
  23. package/dist/classes/framebuffer.d.ts.map +1 -0
  24. package/dist/classes/framebuffer.js +656 -0
  25. package/dist/classes/framebuffer.js.map +1 -0
  26. package/dist/classes/program-configuration.d.ts +27 -0
  27. package/dist/classes/program-configuration.d.ts.map +1 -0
  28. package/dist/classes/program-configuration.js +160 -0
  29. package/dist/classes/program-configuration.js.map +1 -0
  30. package/dist/classes/program.d.ts +61 -0
  31. package/dist/classes/program.d.ts.map +1 -0
  32. package/dist/classes/program.js +370 -0
  33. package/dist/classes/program.js.map +1 -0
  34. package/dist/classes/query.d.ts +27 -0
  35. package/dist/classes/query.d.ts.map +1 -0
  36. package/dist/classes/query.js +145 -0
  37. package/dist/classes/query.js.map +1 -0
  38. package/dist/classes/renderbuffer-formats.d.ts +16 -0
  39. package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
  40. package/dist/classes/renderbuffer-formats.js +185 -0
  41. package/dist/classes/renderbuffer-formats.js.map +1 -0
  42. package/dist/classes/renderbuffer.d.ts +60 -0
  43. package/dist/classes/renderbuffer.d.ts.map +1 -0
  44. package/dist/classes/renderbuffer.js +128 -0
  45. package/dist/classes/renderbuffer.js.map +1 -0
  46. package/dist/classes/texture-2d.d.ts +9 -0
  47. package/dist/classes/texture-2d.d.ts.map +1 -0
  48. package/dist/classes/texture-2d.js +36 -0
  49. package/dist/classes/texture-2d.js.map +1 -0
  50. package/dist/classes/texture-3d.d.ts +29 -0
  51. package/dist/classes/texture-3d.d.ts.map +1 -0
  52. package/dist/classes/texture-3d.js +76 -0
  53. package/dist/classes/texture-3d.js.map +1 -0
  54. package/dist/classes/texture-cube.d.ts +28 -0
  55. package/dist/classes/texture-cube.d.ts.map +1 -0
  56. package/dist/classes/texture-cube.js +130 -0
  57. package/dist/classes/texture-cube.js.map +1 -0
  58. package/dist/classes/texture-formats.d.ts +37 -0
  59. package/dist/classes/texture-formats.d.ts.map +1 -0
  60. package/dist/classes/texture-formats.js +98 -0
  61. package/dist/classes/texture-formats.js.map +1 -0
  62. package/dist/classes/texture.d.ts +123 -0
  63. package/dist/classes/texture.d.ts.map +1 -0
  64. package/dist/classes/texture.js +786 -0
  65. package/dist/classes/texture.js.map +1 -0
  66. package/dist/classes/transform-feedback.d.ts +33 -0
  67. package/dist/classes/transform-feedback.d.ts.map +1 -0
  68. package/dist/classes/transform-feedback.js +198 -0
  69. package/dist/classes/transform-feedback.js.map +1 -0
  70. package/dist/classes/uniform-buffer-layout.d.ts +17 -0
  71. package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
  72. package/dist/classes/uniform-buffer-layout.js +104 -0
  73. package/dist/classes/uniform-buffer-layout.js.map +1 -0
  74. package/dist/classes/uniforms.d.ts +37 -0
  75. package/dist/classes/uniforms.d.ts.map +1 -0
  76. package/dist/classes/uniforms.js +250 -0
  77. package/dist/classes/uniforms.js.map +1 -0
  78. package/dist/classes/vertex-array-object.d.ts +75 -0
  79. package/dist/classes/vertex-array-object.d.ts.map +1 -0
  80. package/dist/classes/vertex-array-object.js +261 -0
  81. package/dist/classes/vertex-array-object.js.map +1 -0
  82. package/dist/classes/vertex-array.d.ts +75 -0
  83. package/dist/classes/vertex-array.d.ts.map +1 -0
  84. package/dist/classes/vertex-array.js +408 -0
  85. package/dist/classes/vertex-array.js.map +1 -0
  86. package/dist/classes/webgl-buffer.d.ts +100 -0
  87. package/dist/classes/webgl-buffer.d.ts.map +1 -0
  88. package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +100 -73
  89. package/dist/classes/webgl-buffer.js.map +1 -0
  90. package/dist/classes/webgl-resource.d.ts +56 -0
  91. package/dist/classes/webgl-resource.d.ts.map +1 -0
  92. package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +35 -52
  93. package/dist/classes/webgl-resource.js.map +1 -0
  94. package/dist/classes/webgl-shader.d.ts +53 -0
  95. package/dist/classes/webgl-shader.d.ts.map +1 -0
  96. package/dist/classes/webgl-shader.js +193 -0
  97. package/dist/classes/webgl-shader.js.map +1 -0
  98. package/dist/context/context/context-state.d.ts +18 -0
  99. package/dist/context/context/context-state.d.ts.map +1 -0
  100. package/dist/context/context/context-state.js +26 -0
  101. package/dist/context/context/context-state.js.map +1 -0
  102. package/dist/context/context/create-context.d.ts +40 -0
  103. package/dist/context/context/create-context.d.ts.map +1 -0
  104. package/dist/context/context/create-context.js +37 -0
  105. package/dist/context/context/create-context.js.map +1 -0
  106. package/dist/context/context/device-pixels.d.ts +25 -0
  107. package/dist/context/context/device-pixels.d.ts.map +1 -0
  108. package/dist/context/context/device-pixels.js +98 -0
  109. package/dist/context/context/device-pixels.js.map +1 -0
  110. package/dist/context/context/get-canvas.d.ts +13 -0
  111. package/dist/context/context/get-canvas.d.ts.map +1 -0
  112. package/dist/context/context/get-canvas.js +31 -0
  113. package/dist/context/context/get-canvas.js.map +1 -0
  114. package/dist/context/context/resize-context.d.ts +20 -0
  115. package/dist/context/context/resize-context.d.ts.map +1 -0
  116. package/dist/context/context/resize-context.js +15 -0
  117. package/dist/context/context/resize-context.js.map +1 -0
  118. package/dist/context/context/webgl-checks.d.ts +13 -0
  119. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  120. package/dist/context/context/webgl-checks.js +34 -0
  121. package/dist/context/context/webgl-checks.js.map +1 -0
  122. package/dist/context/parameters/unified-parameter-api.d.ts +30 -0
  123. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  124. package/dist/context/parameters/unified-parameter-api.js +65 -0
  125. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  126. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  127. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  128. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  129. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  130. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  131. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  132. package/dist/context/parameters/webgl-parameters.js +2 -0
  133. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  134. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  135. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  136. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  137. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  138. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  139. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  140. package/dist/context/polyfill/polyfill-context.js +91 -0
  141. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  142. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  143. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  144. package/dist/context/polyfill/polyfill-table.js +160 -0
  145. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  146. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  147. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  148. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  149. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  150. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  151. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  152. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  153. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  154. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  155. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  156. package/dist/context/state-tracker/track-context-state.js +169 -0
  157. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  158. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  159. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  160. package/dist/context/state-tracker/with-parameters.js +36 -0
  161. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  162. package/dist/debug/debug-program-configuration.d.ts +2 -0
  163. package/dist/debug/debug-program-configuration.d.ts.map +1 -0
  164. package/dist/debug/debug-program-configuration.js +40 -0
  165. package/dist/debug/debug-program-configuration.js.map +1 -0
  166. package/dist/debug/debug-uniforms.d.ts +12 -0
  167. package/dist/debug/debug-uniforms.d.ts.map +1 -0
  168. package/dist/debug/debug-uniforms.js +108 -0
  169. package/dist/debug/debug-uniforms.js.map +1 -0
  170. package/dist/debug/debug-vertex-array.d.ts +5 -0
  171. package/dist/debug/debug-vertex-array.d.ts.map +1 -0
  172. package/dist/debug/debug-vertex-array.js +118 -0
  173. package/dist/debug/debug-vertex-array.js.map +1 -0
  174. package/dist/device/check-glsl-extension.d.ts +4 -0
  175. package/dist/device/check-glsl-extension.d.ts.map +1 -0
  176. package/dist/device/check-glsl-extension.js +22 -0
  177. package/dist/device/check-glsl-extension.js.map +1 -0
  178. package/dist/device/device-features.d.ts +12 -0
  179. package/dist/device/device-features.d.ts.map +1 -0
  180. package/dist/device/device-features.js +123 -0
  181. package/dist/device/device-features.js.map +1 -0
  182. package/dist/device/device-limits.d.ts +51 -0
  183. package/dist/device/device-limits.d.ts.map +1 -0
  184. package/dist/device/device-limits.js +90 -0
  185. package/dist/device/device-limits.js.map +1 -0
  186. package/dist/device/get-device-info.d.ts +4 -0
  187. package/dist/device/get-device-info.d.ts.map +1 -0
  188. package/dist/device/get-device-info.js +44 -0
  189. package/dist/device/get-device-info.js.map +1 -0
  190. package/dist/device/webgl-device.d.ts +111 -0
  191. package/dist/device/webgl-device.d.ts.map +1 -0
  192. package/dist/device/webgl-device.js +208 -0
  193. package/dist/device/webgl-device.js.map +1 -0
  194. package/dist/es5/api/device2.js +42 -0
  195. package/dist/es5/api/device2.js.map +1 -0
  196. package/dist/es5/bundle.js +2 -4
  197. package/dist/es5/bundle.js.map +1 -1
  198. package/dist/es5/classes/accessor.js +36 -38
  199. package/dist/es5/classes/accessor.js.map +1 -1
  200. package/dist/es5/classes/accessor.ts.disabled +159 -0
  201. package/dist/es5/classes/clear.js +17 -11
  202. package/dist/es5/classes/clear.js.map +1 -1
  203. package/dist/es5/classes/copy-and-blit.js +121 -117
  204. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  205. package/dist/es5/classes/framebuffer.js +435 -423
  206. package/dist/es5/classes/framebuffer.js.map +1 -1
  207. package/dist/es5/classes/program-configuration.js +14 -11
  208. package/dist/es5/classes/program-configuration.js.map +1 -1
  209. package/dist/es5/classes/program.js +79 -67
  210. package/dist/es5/classes/program.js.map +1 -1
  211. package/dist/es5/classes/query.js +58 -59
  212. package/dist/es5/classes/query.js.map +1 -1
  213. package/dist/es5/classes/renderbuffer-formats.js +79 -52
  214. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  215. package/dist/es5/classes/renderbuffer.js +129 -100
  216. package/dist/es5/classes/renderbuffer.js.map +1 -1
  217. package/dist/es5/classes/texture-2d.js +25 -21
  218. package/dist/es5/classes/texture-2d.js.map +1 -1
  219. package/dist/es5/classes/texture-3d.js +49 -29
  220. package/dist/es5/classes/texture-3d.js.map +1 -1
  221. package/dist/es5/classes/texture-cube.js +45 -36
  222. package/dist/es5/classes/texture-cube.js.map +1 -1
  223. package/dist/es5/classes/texture-formats.js +35 -33
  224. package/dist/es5/classes/texture-formats.js.map +1 -1
  225. package/dist/es5/classes/texture.js +213 -101
  226. package/dist/es5/classes/texture.js.map +1 -1
  227. package/dist/es5/classes/transform-feedback.js +37 -34
  228. package/dist/es5/classes/transform-feedback.js.map +1 -1
  229. package/dist/es5/classes/uniform-buffer-layout.js +4 -4
  230. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  231. package/dist/es5/classes/uniforms.js +73 -73
  232. package/dist/es5/classes/uniforms.js.map +1 -1
  233. package/dist/es5/classes/vertex-array-object.js +106 -149
  234. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  235. package/dist/es5/classes/vertex-array.js +47 -38
  236. package/dist/es5/classes/vertex-array.js.map +1 -1
  237. package/dist/es5/classes/{buffer.js → webgl-buffer.js} +120 -111
  238. package/dist/es5/classes/webgl-buffer.js.map +1 -0
  239. package/dist/es5/classes/{resource.js → webgl-resource.js} +78 -99
  240. package/dist/es5/classes/webgl-resource.js.map +1 -0
  241. package/dist/es5/classes/webgl-shader.js +309 -0
  242. package/dist/es5/classes/webgl-shader.js.map +1 -0
  243. package/dist/es5/context/context/context-state.js +31 -0
  244. package/dist/es5/context/context/context-state.js.map +1 -0
  245. package/dist/es5/context/context/create-context.js +57 -0
  246. package/dist/es5/context/context/create-context.js.map +1 -0
  247. package/dist/es5/context/context/device-pixels.js +115 -0
  248. package/dist/es5/context/context/device-pixels.js.map +1 -0
  249. package/dist/es5/context/context/get-canvas.js +40 -0
  250. package/dist/es5/context/context/get-canvas.js.map +1 -0
  251. package/dist/es5/context/context/resize-context.js +23 -0
  252. package/dist/es5/context/context/resize-context.js.map +1 -0
  253. package/dist/es5/context/context/webgl-checks.js +54 -0
  254. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  255. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  256. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  257. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  258. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  259. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  260. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  261. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  262. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  263. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  264. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  265. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  266. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  267. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  268. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  269. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  270. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  271. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  272. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  273. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  274. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  275. package/dist/es5/debug/debug-program-configuration.js +1 -1
  276. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  277. package/dist/es5/debug/debug-uniforms.js +18 -20
  278. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  279. package/dist/es5/debug/debug-vertex-array.js +16 -16
  280. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  281. package/dist/es5/device/check-glsl-extension.js +33 -0
  282. package/dist/es5/device/check-glsl-extension.js.map +1 -0
  283. package/dist/es5/device/device-features.js +152 -0
  284. package/dist/es5/device/device-features.js.map +1 -0
  285. package/dist/es5/device/device-limits.js +64 -0
  286. package/dist/es5/device/device-limits.js.map +1 -0
  287. package/dist/es5/device/get-device-info.js +55 -0
  288. package/dist/es5/device/get-device-info.js.map +1 -0
  289. package/dist/es5/device/webgl-device.js +279 -0
  290. package/dist/es5/device/webgl-device.js.map +1 -0
  291. package/dist/es5/index.js +140 -96
  292. package/dist/es5/index.js.map +1 -1
  293. package/dist/es5/init.js +21 -41
  294. package/dist/es5/init.js.map +1 -1
  295. package/dist/es5/types.js +2 -0
  296. package/dist/es5/types.js.map +1 -0
  297. package/dist/es5/webgl-utils/attribute-utils.js +4 -4
  298. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  299. package/dist/es5/webgl-utils/constants-to-keys.js +3 -3
  300. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  301. package/dist/es5/webgl-utils/format-utils.js +21 -17
  302. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  303. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  304. package/dist/es5/webgl-utils/index.js +74 -0
  305. package/dist/es5/webgl-utils/index.js.map +1 -0
  306. package/dist/es5/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  307. package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
  308. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +72 -0
  309. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  310. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  311. package/dist/es5/webgl-utils/texture-utils.js +6 -4
  312. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  313. package/dist/es5/webgl-utils/typed-array-utils.js +39 -34
  314. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  315. package/dist/es5/webgl-utils/webgl-info.ts.disabled +135 -0
  316. package/dist/esm/api/device2.js +23 -0
  317. package/dist/esm/api/device2.js.map +1 -0
  318. package/dist/esm/bundle.js +2 -4
  319. package/dist/esm/bundle.js.map +1 -1
  320. package/dist/esm/classes/accessor.js +6 -6
  321. package/dist/esm/classes/accessor.js.map +1 -1
  322. package/dist/esm/classes/accessor.ts.disabled +159 -0
  323. package/dist/esm/classes/clear.js +19 -14
  324. package/dist/esm/classes/clear.js.map +1 -1
  325. package/dist/esm/classes/copy-and-blit.js +67 -64
  326. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  327. package/dist/esm/classes/framebuffer.js +341 -313
  328. package/dist/esm/classes/framebuffer.js.map +1 -1
  329. package/dist/esm/classes/program-configuration.js +18 -10
  330. package/dist/esm/classes/program-configuration.js.map +1 -1
  331. package/dist/esm/classes/program.js +71 -44
  332. package/dist/esm/classes/program.js.map +1 -1
  333. package/dist/esm/classes/query.js +20 -16
  334. package/dist/esm/classes/query.js.map +1 -1
  335. package/dist/esm/classes/renderbuffer-formats.js +72 -49
  336. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  337. package/dist/esm/classes/renderbuffer.js +86 -73
  338. package/dist/esm/classes/renderbuffer.js.map +1 -1
  339. package/dist/esm/classes/texture-2d.js +13 -9
  340. package/dist/esm/classes/texture-2d.js.map +1 -1
  341. package/dist/esm/classes/texture-3d.js +28 -16
  342. package/dist/esm/classes/texture-3d.js.map +1 -1
  343. package/dist/esm/classes/texture-cube.js +45 -31
  344. package/dist/esm/classes/texture-cube.js.map +1 -1
  345. package/dist/esm/classes/texture-formats.js +52 -51
  346. package/dist/esm/classes/texture-formats.js.map +1 -1
  347. package/dist/esm/classes/texture.js +174 -58
  348. package/dist/esm/classes/texture.js.map +1 -1
  349. package/dist/esm/classes/transform-feedback.js +26 -14
  350. package/dist/esm/classes/transform-feedback.js.map +1 -1
  351. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  352. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  353. package/dist/esm/classes/uniforms.js +111 -113
  354. package/dist/esm/classes/uniforms.js.map +1 -1
  355. package/dist/esm/classes/vertex-array-object.js +52 -89
  356. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  357. package/dist/esm/classes/vertex-array.js +50 -29
  358. package/dist/esm/classes/vertex-array.js.map +1 -1
  359. package/dist/esm/classes/webgl-buffer.js +382 -0
  360. package/dist/esm/classes/webgl-buffer.js.map +1 -0
  361. package/dist/esm/classes/webgl-resource.js +212 -0
  362. package/dist/esm/classes/webgl-resource.js.map +1 -0
  363. package/dist/esm/classes/webgl-shader.js +193 -0
  364. package/dist/esm/classes/webgl-shader.js.map +1 -0
  365. package/dist/esm/context/context/context-state.js +26 -0
  366. package/dist/esm/context/context/context-state.js.map +1 -0
  367. package/dist/esm/context/context/create-context.js +37 -0
  368. package/dist/esm/context/context/create-context.js.map +1 -0
  369. package/dist/esm/context/context/device-pixels.js +98 -0
  370. package/dist/esm/context/context/device-pixels.js.map +1 -0
  371. package/dist/esm/context/context/get-canvas.js +31 -0
  372. package/dist/esm/context/context/get-canvas.js.map +1 -0
  373. package/dist/esm/context/context/resize-context.js +15 -0
  374. package/dist/esm/context/context/resize-context.js.map +1 -0
  375. package/dist/esm/context/context/webgl-checks.js +34 -0
  376. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  377. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  378. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  379. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  380. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  381. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  382. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  383. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  384. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  385. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  386. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  387. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  388. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  389. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  390. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  391. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  392. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  393. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  394. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  395. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  396. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  397. package/dist/esm/debug/debug-program-configuration.js +4 -4
  398. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  399. package/dist/esm/debug/debug-uniforms.js +9 -9
  400. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  401. package/dist/esm/debug/debug-vertex-array.js +18 -16
  402. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  403. package/dist/esm/device/check-glsl-extension.js +22 -0
  404. package/dist/esm/device/check-glsl-extension.js.map +1 -0
  405. package/dist/esm/device/device-features.js +123 -0
  406. package/dist/esm/device/device-features.js.map +1 -0
  407. package/dist/esm/device/device-limits.js +90 -0
  408. package/dist/esm/device/device-limits.js.map +1 -0
  409. package/dist/esm/device/get-device-info.js +44 -0
  410. package/dist/esm/device/get-device-info.js.map +1 -0
  411. package/dist/esm/device/webgl-device.js +208 -0
  412. package/dist/esm/device/webgl-device.js.map +1 -0
  413. package/dist/esm/index.js +15 -15
  414. package/dist/esm/index.js.map +1 -1
  415. package/dist/esm/init.js +12 -28
  416. package/dist/esm/init.js.map +1 -1
  417. package/dist/esm/types.js +2 -0
  418. package/dist/esm/types.js.map +1 -0
  419. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  420. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  421. package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
  422. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  423. package/dist/esm/webgl-utils/format-utils.js +16 -15
  424. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  425. package/dist/esm/webgl-utils/get-error.js +1 -1
  426. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  427. package/dist/esm/webgl-utils/index.js +5 -0
  428. package/dist/esm/webgl-utils/index.js.map +1 -0
  429. package/dist/esm/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  430. package/dist/esm/webgl-utils/is-old-ie.js.map +1 -0
  431. package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
  432. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  433. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  434. package/dist/esm/webgl-utils/texture-utils.js +4 -3
  435. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  436. package/dist/esm/webgl-utils/typed-array-utils.js +41 -36
  437. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  438. package/dist/esm/webgl-utils/webgl-info.ts.disabled +135 -0
  439. package/dist/index.d.ts +49 -0
  440. package/dist/index.d.ts.map +1 -0
  441. package/dist/index.js +35 -0
  442. package/dist/index.js.map +1 -0
  443. package/dist/init.d.ts +5 -0
  444. package/dist/init.d.ts.map +1 -0
  445. package/dist/init.js +33 -0
  446. package/dist/init.js.map +1 -0
  447. package/dist/types.d.ts +9 -0
  448. package/dist/types.d.ts.map +1 -0
  449. package/dist/types.js +2 -0
  450. package/dist/types.js.map +1 -0
  451. package/dist/webgl-utils/attribute-utils.d.ts +18 -0
  452. package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
  453. package/dist/webgl-utils/attribute-utils.js +182 -0
  454. package/dist/webgl-utils/attribute-utils.js.map +1 -0
  455. package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
  456. package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
  457. package/dist/webgl-utils/constants-to-keys.js +41 -0
  458. package/dist/webgl-utils/constants-to-keys.js.map +1 -0
  459. package/dist/webgl-utils/format-utils.d.ts +3 -0
  460. package/dist/webgl-utils/format-utils.d.ts.map +1 -0
  461. package/dist/webgl-utils/format-utils.js +45 -0
  462. package/dist/webgl-utils/format-utils.js.map +1 -0
  463. package/dist/webgl-utils/get-error.d.ts +3 -0
  464. package/dist/webgl-utils/get-error.d.ts.map +1 -0
  465. package/dist/webgl-utils/get-error.js +41 -0
  466. package/dist/webgl-utils/get-error.js.map +1 -0
  467. package/dist/webgl-utils/index.d.ts +5 -0
  468. package/dist/webgl-utils/index.d.ts.map +1 -0
  469. package/dist/webgl-utils/index.js +5 -0
  470. package/dist/webgl-utils/index.js.map +1 -0
  471. package/dist/webgl-utils/is-old-ie.d.ts +2 -0
  472. package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
  473. package/dist/webgl-utils/is-old-ie.js +8 -0
  474. package/dist/webgl-utils/is-old-ie.js.map +1 -0
  475. package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
  476. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
  477. package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
  478. package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  479. package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
  480. package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
  481. package/dist/webgl-utils/request-animation-frame.js +7 -0
  482. package/dist/webgl-utils/request-animation-frame.js.map +1 -0
  483. package/dist/webgl-utils/texture-utils.d.ts +15 -0
  484. package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
  485. package/dist/webgl-utils/texture-utils.js +48 -0
  486. package/dist/webgl-utils/texture-utils.js.map +1 -0
  487. package/dist/webgl-utils/typed-array-utils.d.ts +43 -0
  488. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
  489. package/{src → dist}/webgl-utils/typed-array-utils.js +45 -27
  490. package/dist/webgl-utils/typed-array-utils.js.map +1 -0
  491. package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
  492. package/package.json +9 -9
  493. package/src/.DS_Store +0 -0
  494. package/src/api/device2.ts +71 -0
  495. package/src/bundle.ts +4 -0
  496. package/src/classes/accessor.js +2 -3
  497. package/src/classes/accessor.ts.disabled +159 -0
  498. package/src/classes/clear.ts +108 -0
  499. package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +143 -55
  500. package/src/classes/{framebuffer.js → framebuffer.ts} +381 -321
  501. package/src/classes/{program-configuration.js → program-configuration.ts} +19 -12
  502. package/src/classes/{program.js → program.ts} +66 -40
  503. package/src/classes/{query.js → query.ts} +31 -25
  504. package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
  505. package/src/classes/renderbuffer.ts +154 -0
  506. package/src/classes/texture-2d.ts +35 -0
  507. package/src/classes/{texture-3d.js → texture-3d.ts} +48 -18
  508. package/src/classes/{texture-cube.js → texture-cube.ts} +52 -34
  509. package/src/classes/{texture-formats.js → texture-formats.ts} +10 -2
  510. package/src/classes/{texture.js → texture.ts} +223 -57
  511. package/src/classes/{transform-feedback.js → transform-feedback.ts} +34 -25
  512. package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
  513. package/src/classes/{uniforms.js → uniforms.ts} +123 -77
  514. package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +133 -112
  515. package/src/classes/{vertex-array.js → vertex-array.ts} +74 -55
  516. package/src/classes/{buffer.js → webgl-buffer.ts} +126 -50
  517. package/src/classes/{resource.js → webgl-resource.ts} +55 -46
  518. package/src/classes/webgl-shader.ts +202 -0
  519. package/src/context/context/context-state.ts +39 -0
  520. package/src/context/context/create-context.ts +83 -0
  521. package/src/context/context/device-pixels.ts +147 -0
  522. package/src/context/context/get-canvas.ts +37 -0
  523. package/src/context/context/resize-context.ts +37 -0
  524. package/src/context/context/webgl-checks.ts +49 -0
  525. package/src/context/parameters/unified-parameter-api.ts +127 -0
  526. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  527. package/src/context/parameters/webgl-parameters.ts +197 -0
  528. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  529. package/src/context/polyfill/polyfill-context.ts +98 -0
  530. package/src/context/polyfill/polyfill-table.ts +162 -0
  531. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  532. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  533. package/src/context/state-tracker/track-context-state.ts +250 -0
  534. package/src/context/state-tracker/with-parameters.ts +50 -0
  535. package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
  536. package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
  537. package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +6 -5
  538. package/src/device/check-glsl-extension.ts +44 -0
  539. package/src/device/device-features.ts +227 -0
  540. package/src/device/device-limits.ts +150 -0
  541. package/src/device/get-device-info.ts +49 -0
  542. package/src/device/webgl-device.ts +406 -0
  543. package/src/index.ts +127 -0
  544. package/src/{init.js → init.ts} +11 -25
  545. package/src/{types.d.ts → types.ts} +1 -1
  546. package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
  547. package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
  548. package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
  549. package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
  550. package/src/webgl-utils/index.ts +12 -0
  551. package/src/{features/check-old-ie.js → webgl-utils/is-old-ie.ts} +3 -3
  552. package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
  553. package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
  554. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +14 -10
  555. package/src/webgl-utils/typed-array-utils.ts +137 -0
  556. package/src/webgl-utils/webgl-info.ts.disabled +135 -0
  557. package/dist/dist.js +0 -13710
  558. package/dist/dist.min.js +0 -1
  559. package/dist/es5/classes/buffer.d.ts +0 -84
  560. package/dist/es5/classes/buffer.js.map +0 -1
  561. package/dist/es5/classes/clear.d.ts +0 -11
  562. package/dist/es5/classes/copy-and-blit.d.ts +0 -101
  563. package/dist/es5/classes/framebuffer.d.ts +0 -96
  564. package/dist/es5/classes/program-configuration.d.ts +0 -15
  565. package/dist/es5/classes/program.d.ts +0 -44
  566. package/dist/es5/classes/query.d.ts +0 -21
  567. package/dist/es5/classes/renderbuffer.d.ts +0 -34
  568. package/dist/es5/classes/resource.d.ts +0 -47
  569. package/dist/es5/classes/resource.js.map +0 -1
  570. package/dist/es5/classes/shader.d.ts +0 -29
  571. package/dist/es5/classes/shader.js +0 -221
  572. package/dist/es5/classes/shader.js.map +0 -1
  573. package/dist/es5/classes/texture-2d.d.ts +0 -11
  574. package/dist/es5/classes/texture-3d.d.ts +0 -29
  575. package/dist/es5/classes/texture-cube.d.ts +0 -23
  576. package/dist/es5/classes/texture.d.ts +0 -80
  577. package/dist/es5/classes/transform-feedback.d.ts +0 -16
  578. package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
  579. package/dist/es5/classes/uniforms.d.ts +0 -63
  580. package/dist/es5/classes/vertex-array-object.d.ts +0 -25
  581. package/dist/es5/classes/vertex-array.d.ts +0 -37
  582. package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
  583. package/dist/es5/debug/debug-uniforms.d.ts +0 -11
  584. package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
  585. package/dist/es5/features/check-glsl-extension.js +0 -41
  586. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  587. package/dist/es5/features/check-old-ie.js.map +0 -1
  588. package/dist/es5/features/features.js +0 -99
  589. package/dist/es5/features/features.js.map +0 -1
  590. package/dist/es5/features/index.js +0 -64
  591. package/dist/es5/features/index.js.map +0 -1
  592. package/dist/es5/features/limits.js +0 -64
  593. package/dist/es5/features/limits.js.map +0 -1
  594. package/dist/es5/features/webgl-features-table.js +0 -64
  595. package/dist/es5/features/webgl-features-table.js.map +0 -1
  596. package/dist/es5/features/webgl-limits-table.js +0 -132
  597. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  598. package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
  599. package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
  600. package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
  601. package/dist/es5/glsl-utils/get-shader-name.js +0 -14
  602. package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
  603. package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
  604. package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
  605. package/dist/es5/glsl-utils/get-shader-version.js +0 -22
  606. package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
  607. package/dist/es5/glsl-utils/index.js +0 -48
  608. package/dist/es5/glsl-utils/index.js.map +0 -1
  609. package/dist/es5/index.d.ts +0 -71
  610. package/dist/es5/init.d.ts +0 -12
  611. package/dist/es5/types.d.ts +0 -8
  612. package/dist/es5/utils/array-utils-flat.js +0 -51
  613. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  614. package/dist/es5/utils/assert.d.ts +0 -1
  615. package/dist/es5/utils/assert.js +0 -13
  616. package/dist/es5/utils/assert.js.map +0 -1
  617. package/dist/es5/utils/check-props.js +0 -51
  618. package/dist/es5/utils/check-props.js.map +0 -1
  619. package/dist/es5/utils/format-value.js +0 -57
  620. package/dist/es5/utils/format-value.js.map +0 -1
  621. package/dist/es5/utils/is-old-ie.d.ts +0 -1
  622. package/dist/es5/utils/is-old-ie.js +0 -14
  623. package/dist/es5/utils/is-old-ie.js.map +0 -1
  624. package/dist/es5/utils/load-file.js +0 -50
  625. package/dist/es5/utils/load-file.js.map +0 -1
  626. package/dist/es5/utils/stub-methods.js +0 -25
  627. package/dist/es5/utils/stub-methods.js.map +0 -1
  628. package/dist/es5/utils/utils.d.ts +0 -13
  629. package/dist/es5/utils/utils.js +0 -36
  630. package/dist/es5/utils/utils.js.map +0 -1
  631. package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
  632. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  633. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  634. package/dist/esm/classes/buffer.d.ts +0 -84
  635. package/dist/esm/classes/buffer.js.map +0 -1
  636. package/dist/esm/classes/clear.d.ts +0 -11
  637. package/dist/esm/classes/copy-and-blit.d.ts +0 -101
  638. package/dist/esm/classes/framebuffer.d.ts +0 -96
  639. package/dist/esm/classes/program-configuration.d.ts +0 -15
  640. package/dist/esm/classes/program.d.ts +0 -44
  641. package/dist/esm/classes/query.d.ts +0 -21
  642. package/dist/esm/classes/renderbuffer.d.ts +0 -34
  643. package/dist/esm/classes/resource.d.ts +0 -47
  644. package/dist/esm/classes/resource.js.map +0 -1
  645. package/dist/esm/classes/shader.d.ts +0 -29
  646. package/dist/esm/classes/shader.js +0 -138
  647. package/dist/esm/classes/shader.js.map +0 -1
  648. package/dist/esm/classes/texture-2d.d.ts +0 -11
  649. package/dist/esm/classes/texture-3d.d.ts +0 -29
  650. package/dist/esm/classes/texture-cube.d.ts +0 -23
  651. package/dist/esm/classes/texture.d.ts +0 -80
  652. package/dist/esm/classes/transform-feedback.d.ts +0 -16
  653. package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
  654. package/dist/esm/classes/uniforms.d.ts +0 -63
  655. package/dist/esm/classes/vertex-array-object.d.ts +0 -25
  656. package/dist/esm/classes/vertex-array.d.ts +0 -37
  657. package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
  658. package/dist/esm/debug/debug-uniforms.d.ts +0 -11
  659. package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
  660. package/dist/esm/features/check-glsl-extension.js +0 -27
  661. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  662. package/dist/esm/features/check-old-ie.js.map +0 -1
  663. package/dist/esm/features/features.js +0 -66
  664. package/dist/esm/features/features.js.map +0 -1
  665. package/dist/esm/features/index.js +0 -5
  666. package/dist/esm/features/index.js.map +0 -1
  667. package/dist/esm/features/limits.js +0 -52
  668. package/dist/esm/features/limits.js.map +0 -1
  669. package/dist/esm/features/webgl-features-table.js +0 -71
  670. package/dist/esm/features/webgl-features-table.js.map +0 -1
  671. package/dist/esm/features/webgl-limits-table.js +0 -160
  672. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  673. package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
  674. package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
  675. package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
  676. package/dist/esm/glsl-utils/get-shader-name.js +0 -6
  677. package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
  678. package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
  679. package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
  680. package/dist/esm/glsl-utils/get-shader-version.js +0 -15
  681. package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
  682. package/dist/esm/glsl-utils/index.js +0 -5
  683. package/dist/esm/glsl-utils/index.js.map +0 -1
  684. package/dist/esm/index.d.ts +0 -71
  685. package/dist/esm/init.d.ts +0 -12
  686. package/dist/esm/types.d.ts +0 -8
  687. package/dist/esm/utils/array-utils-flat.js +0 -39
  688. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  689. package/dist/esm/utils/assert.d.ts +0 -1
  690. package/dist/esm/utils/assert.js +0 -6
  691. package/dist/esm/utils/assert.js.map +0 -1
  692. package/dist/esm/utils/check-props.js +0 -38
  693. package/dist/esm/utils/check-props.js.map +0 -1
  694. package/dist/esm/utils/format-value.js +0 -50
  695. package/dist/esm/utils/format-value.js.map +0 -1
  696. package/dist/esm/utils/is-old-ie.d.ts +0 -1
  697. package/dist/esm/utils/is-old-ie.js +0 -5
  698. package/dist/esm/utils/is-old-ie.js.map +0 -1
  699. package/dist/esm/utils/load-file.js +0 -30
  700. package/dist/esm/utils/load-file.js.map +0 -1
  701. package/dist/esm/utils/stub-methods.js +0 -17
  702. package/dist/esm/utils/stub-methods.js.map +0 -1
  703. package/dist/esm/utils/utils.d.ts +0 -13
  704. package/dist/esm/utils/utils.js +0 -22
  705. package/dist/esm/utils/utils.js.map +0 -1
  706. package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
  707. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  708. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  709. package/src/bundle.js +0 -8
  710. package/src/classes/buffer.d.ts +0 -84
  711. package/src/classes/clear.d.ts +0 -11
  712. package/src/classes/copy-and-blit.d.ts +0 -101
  713. package/src/classes/framebuffer.d.ts +0 -96
  714. package/src/classes/program-configuration.d.ts +0 -15
  715. package/src/classes/program.d.ts +0 -44
  716. package/src/classes/query.d.ts +0 -21
  717. package/src/classes/renderbuffer.d.ts +0 -34
  718. package/src/classes/renderbuffer.js +0 -105
  719. package/src/classes/resource.d.ts +0 -47
  720. package/src/classes/shader.d.ts +0 -29
  721. package/src/classes/shader.js +0 -147
  722. package/src/classes/texture-2d.d.ts +0 -11
  723. package/src/classes/texture-2d.js +0 -30
  724. package/src/classes/texture-3d.d.ts +0 -29
  725. package/src/classes/texture-cube.d.ts +0 -23
  726. package/src/classes/texture.d.ts +0 -80
  727. package/src/classes/transform-feedback.d.ts +0 -16
  728. package/src/classes/uniform-buffer-layout.d.ts +0 -18
  729. package/src/classes/uniforms.d.ts +0 -63
  730. package/src/classes/vertex-array-object.d.ts +0 -25
  731. package/src/classes/vertex-array.d.ts +0 -37
  732. package/src/debug/debug-program-configuration.d.ts +0 -1
  733. package/src/debug/debug-uniforms.d.ts +0 -11
  734. package/src/debug/debug-vertex-array.d.ts +0 -1
  735. package/src/features/check-glsl-extension.js +0 -34
  736. package/src/features/features.js +0 -79
  737. package/src/features/index.js +0 -5
  738. package/src/features/limits.js +0 -65
  739. package/src/features/webgl-features-table.js +0 -104
  740. package/src/features/webgl-limits-table.js +0 -51
  741. package/src/glsl-utils/format-glsl-error.d.ts +0 -16
  742. package/src/glsl-utils/format-glsl-error.js +0 -107
  743. package/src/glsl-utils/get-shader-name.js +0 -7
  744. package/src/glsl-utils/get-shader-type-name.js +0 -13
  745. package/src/glsl-utils/get-shader-version.js +0 -12
  746. package/src/glsl-utils/index.js +0 -8
  747. package/src/index.d.ts +0 -71
  748. package/src/index.js +0 -70
  749. package/src/init.d.ts +0 -12
  750. package/src/utils/array-utils-flat.js +0 -56
  751. package/src/utils/assert.d.ts +0 -1
  752. package/src/utils/assert.js +0 -7
  753. package/src/utils/check-props.js +0 -68
  754. package/src/utils/format-value.js +0 -37
  755. package/src/utils/is-old-ie.d.ts +0 -1
  756. package/src/utils/is-old-ie.js +0 -6
  757. package/src/utils/load-file.js +0 -39
  758. package/src/utils/stub-methods.js +0 -20
  759. package/src/utils/utils.d.ts +0 -13
  760. package/src/utils/utils.js +0 -36
  761. package/src/webgl-utils/request-animation-frame.d.ts +0 -3
  762. package/src/webgl-utils/texture-utils.d.ts +0 -11
  763. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -1,25 +1,27 @@
1
- import Buffer from './buffer';
1
+ import { log, assert } from '@luma.gl/api';
2
+ import GL from '@luma.gl/constants';
3
+ import Buffer from './webgl-buffer';
2
4
  import Framebuffer from './framebuffer';
3
5
  import Texture from './texture';
4
- import { assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';
6
+ import { assertWebGL2Context } from '../context/context/webgl-checks';
7
+ import { withParameters } from '../context/state-tracker/with-parameters';
5
8
  import { flipRows, scalePixels } from '../webgl-utils/typed-array-utils';
6
9
  import { getTypedArrayFromGLType, getGLTypeFromTypedArray } from '../webgl-utils/typed-array-utils';
7
10
  import { glFormatToComponents, glTypeToBytes } from '../webgl-utils/format-utils';
8
11
  import { toFramebuffer } from '../webgl-utils/texture-utils';
9
- import { assert } from '../utils/assert';
10
- export function readPixelsToArray(source, options = {}) {
12
+ export function readPixelsToArray(source, options) {
11
13
  const {
12
14
  sourceX = 0,
13
15
  sourceY = 0,
14
- sourceFormat = 6408
15
- } = options;
16
+ sourceFormat = GL.RGBA
17
+ } = options || {};
16
18
  let {
17
- sourceAttachment = 36064,
19
+ sourceAttachment = GL.COLOR_ATTACHMENT0,
18
20
  target = null,
19
21
  sourceWidth,
20
22
  sourceHeight,
21
23
  sourceType
22
- } = options;
24
+ } = options || {};
23
25
  const {
24
26
  framebuffer,
25
27
  deleteFramebuffer
@@ -33,17 +35,17 @@ export function readPixelsToArray(source, options = {}) {
33
35
  sourceWidth = sourceWidth || framebuffer.width;
34
36
  sourceHeight = sourceHeight || framebuffer.height;
35
37
 
36
- if (sourceAttachment === 36064 && handle === null) {
37
- sourceAttachment = 1028;
38
+ if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {
39
+ sourceAttachment = GL.FRONT;
38
40
  }
39
41
 
40
42
  assert(attachments[sourceAttachment]);
41
43
  sourceType = sourceType || attachments[sourceAttachment].type;
42
44
  target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);
43
45
  sourceType = sourceType || getGLTypeFromTypedArray(target);
44
- const prevHandle = gl.bindFramebuffer(36160, handle);
46
+ const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
45
47
  gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
46
- gl.bindFramebuffer(36160, prevHandle || null);
48
+ gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
47
49
 
48
50
  if (deleteFramebuffer) {
49
51
  framebuffer.delete();
@@ -51,16 +53,19 @@ export function readPixelsToArray(source, options = {}) {
51
53
 
52
54
  return target;
53
55
  }
54
- export function readPixelsToBuffer(source, {
55
- sourceX = 0,
56
- sourceY = 0,
57
- sourceFormat = 6408,
58
- target = null,
59
- targetByteOffset = 0,
60
- sourceWidth,
61
- sourceHeight,
62
- sourceType
63
- }) {
56
+ export function readPixelsToBuffer(source, options) {
57
+ const {
58
+ sourceX = 0,
59
+ sourceY = 0,
60
+ sourceFormat = GL.RGBA,
61
+ targetByteOffset = 0
62
+ } = options || {};
63
+ let {
64
+ target,
65
+ sourceWidth,
66
+ sourceHeight,
67
+ sourceType
68
+ } = options || {};
64
69
  const {
65
70
  framebuffer,
66
71
  deleteFramebuffer
@@ -69,7 +74,7 @@ export function readPixelsToBuffer(source, {
69
74
  sourceWidth = sourceWidth || framebuffer.width;
70
75
  sourceHeight = sourceHeight || framebuffer.height;
71
76
  const gl2 = assertWebGL2Context(framebuffer.gl);
72
- sourceType = sourceType || (target ? target.type : 5121);
77
+ sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);
73
78
 
74
79
  if (!target) {
75
80
  const components = glFormatToComponents(sourceFormat);
@@ -85,7 +90,7 @@ export function readPixelsToBuffer(source, {
85
90
  }
86
91
 
87
92
  target.bind({
88
- target: 35051
93
+ target: GL.PIXEL_PACK_BUFFER
89
94
  });
90
95
  withParameters(gl2, {
91
96
  framebuffer
@@ -93,7 +98,7 @@ export function readPixelsToBuffer(source, {
93
98
  gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);
94
99
  });
95
100
  target.unbind({
96
- target: 35051
101
+ target: GL.PIXEL_PACK_BUFFER
97
102
  });
98
103
 
99
104
  if (deleteFramebuffer) {
@@ -103,7 +108,7 @@ export function readPixelsToBuffer(source, {
103
108
  return target;
104
109
  }
105
110
  export function copyToDataUrl(source, {
106
- sourceAttachment = 36064,
111
+ sourceAttachment = GL.COLOR_ATTACHMENT0,
107
112
  targetMaxHeight = Number.MAX_SAFE_INTEGER
108
113
  } = {}) {
109
114
  let data = readPixelsToArray(source, {
@@ -140,31 +145,28 @@ export function copyToDataUrl(source, {
140
145
  context.putImageData(imageData, 0, 0);
141
146
  return canvas.toDataURL();
142
147
  }
143
- export function copyToImage(source, {
144
- sourceAttachment = 36064,
145
- targetImage = null
146
- } = {}) {
148
+ export function copyToImage(source, options) {
147
149
  const dataUrl = copyToDataUrl(source, {
148
- sourceAttachment
150
+ sourceAttachment: (options === null || options === void 0 ? void 0 : options.sourceAttachment) || GL.COLOR_ATTACHMENT0
149
151
  });
150
- targetImage = targetImage || new Image();
152
+ const targetImage = (options === null || options === void 0 ? void 0 : options.targetImage) || new Image();
151
153
  targetImage.src = dataUrl;
152
154
  return targetImage;
153
155
  }
154
- export function copyToTexture(source, target, options = {}) {
156
+ export function copyToTexture(source, target, options) {
155
157
  const {
156
158
  sourceX = 0,
157
159
  sourceY = 0,
158
160
  targetMipmaplevel = 0,
159
- targetInternalFormat = 6408
160
- } = options;
161
+ targetInternalFormat = GL.RGBA
162
+ } = options || {};
161
163
  let {
162
164
  targetX,
163
165
  targetY,
164
166
  targetZ,
165
167
  width,
166
168
  height
167
- } = options;
169
+ } = options || {};
168
170
  const {
169
171
  framebuffer,
170
172
  deleteFramebuffer
@@ -178,31 +180,34 @@ export function copyToTexture(source, target, options = {}) {
178
180
  targetX = targetX || 0;
179
181
  targetY = targetY || 0;
180
182
  targetZ = targetZ || 0;
181
- const prevHandle = gl.bindFramebuffer(36160, handle);
183
+ const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
182
184
  assert(target);
183
185
  let texture = null;
186
+ let textureTarget;
184
187
 
185
188
  if (target instanceof Texture) {
186
189
  texture = target;
187
190
  width = Number.isFinite(width) ? width : texture.width;
188
191
  height = Number.isFinite(height) ? height : texture.height;
189
192
  texture.bind(0);
190
- target = texture.target;
193
+ textureTarget = texture.target;
194
+ } else {
195
+ textureTarget = target;
191
196
  }
192
197
 
193
198
  if (!isSubCopy) {
194
- gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);
199
+ gl.copyTexImage2D(textureTarget, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);
195
200
  } else {
196
- switch (target) {
197
- case 3553:
198
- case 34067:
199
- gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
201
+ switch (textureTarget) {
202
+ case GL.TEXTURE_2D:
203
+ case GL.TEXTURE_CUBE_MAP:
204
+ gl.copyTexSubImage2D(textureTarget, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
200
205
  break;
201
206
 
202
- case 35866:
203
- case 32879:
207
+ case GL.TEXTURE_2D_ARRAY:
208
+ case GL.TEXTURE_3D:
204
209
  const gl2 = assertWebGL2Context(gl);
205
- gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
210
+ gl2.copyTexSubImage3D(textureTarget, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
206
211
  break;
207
212
 
208
213
  default:
@@ -213,7 +218,7 @@ export function copyToTexture(source, target, options = {}) {
213
218
  texture.unbind();
214
219
  }
215
220
 
216
- gl.bindFramebuffer(36160, prevHandle || null);
221
+ gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
217
222
 
218
223
  if (deleteFramebuffer) {
219
224
  framebuffer.delete();
@@ -221,7 +226,7 @@ export function copyToTexture(source, target, options = {}) {
221
226
 
222
227
  return texture;
223
228
  }
224
- export function blit(source, target, options = {}) {
229
+ export function blit(source, target, options) {
225
230
  const {
226
231
  sourceX0 = 0,
227
232
  sourceY0 = 0,
@@ -230,14 +235,14 @@ export function blit(source, target, options = {}) {
230
235
  color = true,
231
236
  depth = false,
232
237
  stencil = false,
233
- filter = 9728
238
+ filter = GL.NEAREST
234
239
  } = options;
235
240
  let {
236
241
  sourceX1,
237
242
  sourceY1,
238
243
  targetX1,
239
244
  targetY1,
240
- sourceAttachment = 36064,
245
+ sourceAttachment = GL.COLOR_ATTACHMENT0,
241
246
  mask = 0
242
247
  } = options;
243
248
  const {
@@ -259,25 +264,25 @@ export function blit(source, target, options = {}) {
259
264
  } = dstFramebuffer;
260
265
  const gl2 = assertWebGL2Context(gl);
261
266
 
262
- if (!srcFramebuffer.handle && sourceAttachment === 36064) {
263
- sourceAttachment = 1028;
267
+ if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {
268
+ sourceAttachment = GL.FRONT;
264
269
  }
265
270
 
266
271
  if (color) {
267
- mask |= 16384;
272
+ mask |= GL.COLOR_BUFFER_BIT;
268
273
  }
269
274
 
270
275
  if (depth) {
271
- mask |= 256;
276
+ mask |= GL.DEPTH_BUFFER_BIT;
272
277
  }
273
278
 
274
279
  if (stencil) {
275
- mask |= 1024;
280
+ mask |= GL.STENCIL_BUFFER_BIT;
276
281
  }
277
282
 
278
283
  if (deleteSrcFramebuffer || deleteDstFramebuffer) {
279
- if (mask & (256 | 1024)) {
280
- mask = 16384;
284
+ if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {
285
+ mask = GL.COLOR_BUFFER_BIT;
281
286
  log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();
282
287
  }
283
288
  }
@@ -287,13 +292,13 @@ export function blit(source, target, options = {}) {
287
292
  sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;
288
293
  targetX1 = targetX1 === undefined ? width : targetX1;
289
294
  targetY1 = targetY1 === undefined ? height : targetY1;
290
- const prevDrawHandle = gl.bindFramebuffer(36009, handle);
291
- const prevReadHandle = gl.bindFramebuffer(36008, srcFramebuffer.handle);
295
+ const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);
296
+ const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);
292
297
  gl2.readBuffer(sourceAttachment);
293
298
  gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);
294
299
  gl2.readBuffer(readBuffer);
295
- gl2.bindFramebuffer(36008, prevReadHandle || null);
296
- gl2.bindFramebuffer(36009, prevDrawHandle || null);
300
+ gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);
301
+ gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);
297
302
 
298
303
  if (deleteSrcFramebuffer) {
299
304
  srcFramebuffer.delete();
@@ -302,8 +307,6 @@ export function blit(source, target, options = {}) {
302
307
  if (deleteDstFramebuffer) {
303
308
  dstFramebuffer.delete();
304
309
  }
305
-
306
- return dstFramebuffer;
307
310
  }
308
311
 
309
312
  function getFramebuffer(source) {
@@ -325,7 +328,7 @@ function getPixelArray(pixelArray, type, format, width, height) {
325
328
  return pixelArray;
326
329
  }
327
330
 
328
- type = type || 5121;
331
+ type = type || GL.UNSIGNED_BYTE;
329
332
  const ArrayType = getTypedArrayFromGLType(type, {
330
333
  clamped: false
331
334
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/copy-and-blit.js"],"names":["Buffer","Framebuffer","Texture","assertWebGL2Context","withParameters","log","flipRows","scalePixels","getTypedArrayFromGLType","getGLTypeFromTypedArray","glFormatToComponents","glTypeToBytes","toFramebuffer","assert","readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","sourceAttachment","target","sourceWidth","sourceHeight","sourceType","framebuffer","deleteFramebuffer","getFramebuffer","gl","handle","attachments","width","height","type","getPixelArray","prevHandle","bindFramebuffer","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","components","byteCount","byteLength","accessor","size","bind","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","targetImage","dataUrl","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","isFinite","copyTexImage2D","copyTexSubImage2D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","warn","undefined","prevDrawHandle","prevReadHandle","blitFramebuffer","pixelArray","format","ArrayType","clamped"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils/assert';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(source, options = {}) {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(source, target, options = {}) {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(source, target, options = {}) {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n // @ts-ignore\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-ignore\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n"],"file":"copy-and-blit.js"}
1
+ {"version":3,"sources":["../../../src/classes/copy-and-blit.ts"],"names":["log","assert","GL","Buffer","Framebuffer","Texture","assertWebGL2Context","withParameters","flipRows","scalePixels","getTypedArrayFromGLType","getGLTypeFromTypedArray","glFormatToComponents","glTypeToBytes","toFramebuffer","readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","RGBA","sourceAttachment","COLOR_ATTACHMENT0","target","sourceWidth","sourceHeight","sourceType","framebuffer","deleteFramebuffer","getFramebuffer","gl","handle","attachments","width","height","FRONT","type","getPixelArray","prevHandle","bindFramebuffer","FRAMEBUFFER","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","UNSIGNED_BYTE","components","byteCount","byteLength","accessor","size","bind","PIXEL_PACK_BUFFER","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","dataUrl","targetImage","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","textureTarget","isFinite","copyTexImage2D","TEXTURE_2D","TEXTURE_CUBE_MAP","copyTexSubImage2D","TEXTURE_2D_ARRAY","TEXTURE_3D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","NEAREST","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","warn","undefined","prevDrawHandle","DRAW_FRAMEBUFFER","prevReadHandle","READ_FRAMEBUFFER","blitFramebuffer","pixelArray","format","ArrayType","clamped"],"mappings":"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","sourcesContent":["import {log, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport Buffer from './webgl-buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context} from '../context/context/webgl-checks';\nimport {withParameters} from '../context/state-tracker/with-parameters';\nimport {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\n\n/**\n * Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n * App can provide targetPixelArray or have it auto allocated by this method\n * newly allocated by this method unless provided by app.\n * @note Slow requires roundtrip to GPU\n *\n * @param source\n * @param options\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n */\nexport function readPixelsToArray(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n sourceAttachment?: number;\n target?: Uint8Array | Uint16Array | Float32Array;\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Uint8Array | Uint16Array | Float32Array {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options || {};\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options || {};\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-expect-error\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n/**\n * Copies data from a Framebuffer or a Texture object into a Buffer object.\n * NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n * @param source\n * @param options\n */\nexport function readPixelsToBuffer(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n target?: Buffer; // A new Buffer object is created when not provided.\n targetByteOffset?: number; // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Buffer {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA,\n targetByteOffset = 0\n } = options || {};\n // following parameters are auto deduced if not provided\n let {\n target,\n sourceWidth,\n sourceHeight,\n sourceType,\n } = options || {}\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n // @ts-expect-error\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetMaxHeight?: number;\n }\n): string;\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source: Framebuffer | Texture,\n options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetImage?: typeof Image;\n }\n): typeof Image {\n const dataUrl = copyToDataUrl(source, {sourceAttachment: options?.sourceAttachment || GL.COLOR_ATTACHMENT0});\n const targetImage = options?.targetImage || new Image();\n // @ts-expect-error\n targetImage.src = dataUrl;\n // @ts-expect-error\n return targetImage;\n}\n\n/**\n * Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n */\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(\n source: Framebuffer | Texture,\n target: Texture | GL,\n options?: {\n sourceX?: number;\n sourceY?: number;\n\n targetX?: number;\n targetY?: number;\n targetZ?: number;\n targetMipmaplevel?: number;\n targetInternalFormat?: number;\n\n width?: number; // defaults to target width\n height?: number; // defaults to target height\n }\n): Texture {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options || {};\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options || {};\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n let textureTarget: GL;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n textureTarget = texture.target;\n } else {\n textureTarget = target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n textureTarget,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (textureTarget) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n textureTarget,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n textureTarget,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-expect-error\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n/**\n * Copies a rectangle of pixels between Framebuffer or Texture objects\n * @note NOTE: WEBLG2 only\n * @param source\n * @param target\n * @param options\n */\n// eslint-disable-next-line max-statements, complexity\nexport function blit(\n source,\n target,\n options: {\n sourceAttachment?: number;\n sourceX0?: number;\n sourceY0?: number;\n sourceX1?: number;\n sourceY1?: number;\n targetX0?: number;\n targetY0?: number;\n targetX1?: number;\n targetY1?: number;\n color?: boolean;\n depth?: boolean;\n stencil?: boolean;\n mask?: number;\n filter?: number;\n }\n): void {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} =\n getFramebuffer(source);\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} =\n getFramebuffer(target);\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-expect-error\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-expect-error\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n // return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n"],"file":"copy-and-blit.js"}