@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
@@ -12,13 +12,19 @@ exports.copyToImage = copyToImage;
12
12
  exports.copyToTexture = copyToTexture;
13
13
  exports.blit = blit;
14
14
 
15
- var _buffer = _interopRequireDefault(require("./buffer"));
15
+ var _api = require("@luma.gl/api");
16
+
17
+ var _constants = _interopRequireDefault(require("@luma.gl/constants"));
18
+
19
+ var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
16
20
 
17
21
  var _framebuffer = _interopRequireDefault(require("./framebuffer"));
18
22
 
19
23
  var _texture = _interopRequireDefault(require("./texture"));
20
24
 
21
- var _gltools = require("@luma.gl/gltools");
25
+ var _webglChecks = require("../context/context/webgl-checks");
26
+
27
+ var _withParameters = require("../context/state-tracker/with-parameters");
22
28
 
23
29
  var _typedArrayUtils = require("../webgl-utils/typed-array-utils");
24
30
 
@@ -26,46 +32,46 @@ var _formatUtils = require("../webgl-utils/format-utils");
26
32
 
27
33
  var _textureUtils = require("../webgl-utils/texture-utils");
28
34
 
29
- var _assert = require("../utils/assert");
30
-
31
- function readPixelsToArray(source) {
32
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
33
- var _options$sourceX = options.sourceX,
34
- sourceX = _options$sourceX === void 0 ? 0 : _options$sourceX,
35
- _options$sourceY = options.sourceY,
36
- sourceY = _options$sourceY === void 0 ? 0 : _options$sourceY,
37
- _options$sourceFormat = options.sourceFormat,
38
- sourceFormat = _options$sourceFormat === void 0 ? 6408 : _options$sourceFormat;
39
- var _options$sourceAttach = options.sourceAttachment,
40
- sourceAttachment = _options$sourceAttach === void 0 ? 36064 : _options$sourceAttach,
41
- _options$target = options.target,
42
- target = _options$target === void 0 ? null : _options$target,
43
- sourceWidth = options.sourceWidth,
44
- sourceHeight = options.sourceHeight,
45
- sourceType = options.sourceType;
35
+ function readPixelsToArray(source, options) {
36
+ var _ref = options || {},
37
+ _ref$sourceX = _ref.sourceX,
38
+ sourceX = _ref$sourceX === void 0 ? 0 : _ref$sourceX,
39
+ _ref$sourceY = _ref.sourceY,
40
+ sourceY = _ref$sourceY === void 0 ? 0 : _ref$sourceY,
41
+ _ref$sourceFormat = _ref.sourceFormat,
42
+ sourceFormat = _ref$sourceFormat === void 0 ? _constants.default.RGBA : _ref$sourceFormat;
43
+
44
+ var _ref2 = options || {},
45
+ _ref2$sourceAttachmen = _ref2.sourceAttachment,
46
+ sourceAttachment = _ref2$sourceAttachmen === void 0 ? _constants.default.COLOR_ATTACHMENT0 : _ref2$sourceAttachmen,
47
+ _ref2$target = _ref2.target,
48
+ target = _ref2$target === void 0 ? null : _ref2$target,
49
+ sourceWidth = _ref2.sourceWidth,
50
+ sourceHeight = _ref2.sourceHeight,
51
+ sourceType = _ref2.sourceType;
46
52
 
47
53
  var _getFramebuffer = getFramebuffer(source),
48
54
  framebuffer = _getFramebuffer.framebuffer,
49
55
  deleteFramebuffer = _getFramebuffer.deleteFramebuffer;
50
56
 
51
- (0, _assert.assert)(framebuffer);
57
+ (0, _api.assert)(framebuffer);
52
58
  var gl = framebuffer.gl,
53
59
  handle = framebuffer.handle,
54
60
  attachments = framebuffer.attachments;
55
61
  sourceWidth = sourceWidth || framebuffer.width;
56
62
  sourceHeight = sourceHeight || framebuffer.height;
57
63
 
58
- if (sourceAttachment === 36064 && handle === null) {
59
- sourceAttachment = 1028;
64
+ if (sourceAttachment === _constants.default.COLOR_ATTACHMENT0 && handle === null) {
65
+ sourceAttachment = _constants.default.FRONT;
60
66
  }
61
67
 
62
- (0, _assert.assert)(attachments[sourceAttachment]);
68
+ (0, _api.assert)(attachments[sourceAttachment]);
63
69
  sourceType = sourceType || attachments[sourceAttachment].type;
64
70
  target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);
65
71
  sourceType = sourceType || (0, _typedArrayUtils.getGLTypeFromTypedArray)(target);
66
- var prevHandle = gl.bindFramebuffer(36160, handle);
72
+ var prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
67
73
  gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
68
- gl.bindFramebuffer(36160, prevHandle || null);
74
+ gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
69
75
 
70
76
  if (deleteFramebuffer) {
71
77
  framebuffer.delete();
@@ -74,36 +80,38 @@ function readPixelsToArray(source) {
74
80
  return target;
75
81
  }
76
82
 
77
- function readPixelsToBuffer(source, _ref) {
78
- var _ref$sourceX = _ref.sourceX,
79
- sourceX = _ref$sourceX === void 0 ? 0 : _ref$sourceX,
80
- _ref$sourceY = _ref.sourceY,
81
- sourceY = _ref$sourceY === void 0 ? 0 : _ref$sourceY,
82
- _ref$sourceFormat = _ref.sourceFormat,
83
- sourceFormat = _ref$sourceFormat === void 0 ? 6408 : _ref$sourceFormat,
84
- _ref$target = _ref.target,
85
- target = _ref$target === void 0 ? null : _ref$target,
86
- _ref$targetByteOffset = _ref.targetByteOffset,
87
- targetByteOffset = _ref$targetByteOffset === void 0 ? 0 : _ref$targetByteOffset,
88
- sourceWidth = _ref.sourceWidth,
89
- sourceHeight = _ref.sourceHeight,
90
- sourceType = _ref.sourceType;
83
+ function readPixelsToBuffer(source, options) {
84
+ var _ref3 = options || {},
85
+ _ref3$sourceX = _ref3.sourceX,
86
+ sourceX = _ref3$sourceX === void 0 ? 0 : _ref3$sourceX,
87
+ _ref3$sourceY = _ref3.sourceY,
88
+ sourceY = _ref3$sourceY === void 0 ? 0 : _ref3$sourceY,
89
+ _ref3$sourceFormat = _ref3.sourceFormat,
90
+ sourceFormat = _ref3$sourceFormat === void 0 ? _constants.default.RGBA : _ref3$sourceFormat,
91
+ _ref3$targetByteOffse = _ref3.targetByteOffset,
92
+ targetByteOffset = _ref3$targetByteOffse === void 0 ? 0 : _ref3$targetByteOffse;
93
+
94
+ var _ref4 = options || {},
95
+ target = _ref4.target,
96
+ sourceWidth = _ref4.sourceWidth,
97
+ sourceHeight = _ref4.sourceHeight,
98
+ sourceType = _ref4.sourceType;
91
99
 
92
100
  var _getFramebuffer2 = getFramebuffer(source),
93
101
  framebuffer = _getFramebuffer2.framebuffer,
94
102
  deleteFramebuffer = _getFramebuffer2.deleteFramebuffer;
95
103
 
96
- (0, _assert.assert)(framebuffer);
104
+ (0, _api.assert)(framebuffer);
97
105
  sourceWidth = sourceWidth || framebuffer.width;
98
106
  sourceHeight = sourceHeight || framebuffer.height;
99
- var gl2 = (0, _gltools.assertWebGL2Context)(framebuffer.gl);
100
- sourceType = sourceType || (target ? target.type : 5121);
107
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(framebuffer.gl);
108
+ sourceType = sourceType || (target ? target.type : _constants.default.UNSIGNED_BYTE);
101
109
 
102
110
  if (!target) {
103
111
  var components = (0, _formatUtils.glFormatToComponents)(sourceFormat);
104
112
  var byteCount = (0, _formatUtils.glTypeToBytes)(sourceType);
105
113
  var byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;
106
- target = new _buffer.default(gl2, {
114
+ target = new _webglBuffer.default(gl2, {
107
115
  byteLength: byteLength,
108
116
  accessor: {
109
117
  type: sourceType,
@@ -113,15 +121,15 @@ function readPixelsToBuffer(source, _ref) {
113
121
  }
114
122
 
115
123
  target.bind({
116
- target: 35051
124
+ target: _constants.default.PIXEL_PACK_BUFFER
117
125
  });
118
- (0, _gltools.withParameters)(gl2, {
126
+ (0, _withParameters.withParameters)(gl2, {
119
127
  framebuffer: framebuffer
120
128
  }, function () {
121
129
  gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);
122
130
  });
123
131
  target.unbind({
124
- target: 35051
132
+ target: _constants.default.PIXEL_PACK_BUFFER
125
133
  });
126
134
 
127
135
  if (deleteFramebuffer) {
@@ -132,11 +140,11 @@ function readPixelsToBuffer(source, _ref) {
132
140
  }
133
141
 
134
142
  function copyToDataUrl(source) {
135
- var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
136
- _ref2$sourceAttachmen = _ref2.sourceAttachment,
137
- sourceAttachment = _ref2$sourceAttachmen === void 0 ? 36064 : _ref2$sourceAttachmen,
138
- _ref2$targetMaxHeight = _ref2.targetMaxHeight,
139
- targetMaxHeight = _ref2$targetMaxHeight === void 0 ? Number.MAX_SAFE_INTEGER : _ref2$targetMaxHeight;
143
+ var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
144
+ _ref5$sourceAttachmen = _ref5.sourceAttachment,
145
+ sourceAttachment = _ref5$sourceAttachmen === void 0 ? _constants.default.COLOR_ATTACHMENT0 : _ref5$sourceAttachmen,
146
+ _ref5$targetMaxHeight = _ref5.targetMaxHeight,
147
+ targetMaxHeight = _ref5$targetMaxHeight === void 0 ? Number.MAX_SAFE_INTEGER : _ref5$targetMaxHeight;
140
148
 
141
149
  var data = readPixelsToArray(source, {
142
150
  sourceAttachment: sourceAttachment
@@ -171,73 +179,72 @@ function copyToDataUrl(source) {
171
179
  return canvas.toDataURL();
172
180
  }
173
181
 
174
- function copyToImage(source) {
175
- var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
176
- _ref3$sourceAttachmen = _ref3.sourceAttachment,
177
- sourceAttachment = _ref3$sourceAttachmen === void 0 ? 36064 : _ref3$sourceAttachmen,
178
- _ref3$targetImage = _ref3.targetImage,
179
- targetImage = _ref3$targetImage === void 0 ? null : _ref3$targetImage;
180
-
182
+ function copyToImage(source, options) {
181
183
  var dataUrl = copyToDataUrl(source, {
182
- sourceAttachment: sourceAttachment
184
+ sourceAttachment: (options === null || options === void 0 ? void 0 : options.sourceAttachment) || _constants.default.COLOR_ATTACHMENT0
183
185
  });
184
- targetImage = targetImage || new Image();
186
+ var targetImage = (options === null || options === void 0 ? void 0 : options.targetImage) || new Image();
185
187
  targetImage.src = dataUrl;
186
188
  return targetImage;
187
189
  }
188
190
 
189
- function copyToTexture(source, target) {
190
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
191
- var _options$sourceX2 = options.sourceX,
192
- sourceX = _options$sourceX2 === void 0 ? 0 : _options$sourceX2,
193
- _options$sourceY2 = options.sourceY,
194
- sourceY = _options$sourceY2 === void 0 ? 0 : _options$sourceY2,
195
- _options$targetMipmap = options.targetMipmaplevel,
196
- targetMipmaplevel = _options$targetMipmap === void 0 ? 0 : _options$targetMipmap,
197
- _options$targetIntern = options.targetInternalFormat,
198
- targetInternalFormat = _options$targetIntern === void 0 ? 6408 : _options$targetIntern;
199
- var targetX = options.targetX,
200
- targetY = options.targetY,
201
- targetZ = options.targetZ,
202
- width = options.width,
203
- height = options.height;
191
+ function copyToTexture(source, target, options) {
192
+ var _ref6 = options || {},
193
+ _ref6$sourceX = _ref6.sourceX,
194
+ sourceX = _ref6$sourceX === void 0 ? 0 : _ref6$sourceX,
195
+ _ref6$sourceY = _ref6.sourceY,
196
+ sourceY = _ref6$sourceY === void 0 ? 0 : _ref6$sourceY,
197
+ _ref6$targetMipmaplev = _ref6.targetMipmaplevel,
198
+ targetMipmaplevel = _ref6$targetMipmaplev === void 0 ? 0 : _ref6$targetMipmaplev,
199
+ _ref6$targetInternalF = _ref6.targetInternalFormat,
200
+ targetInternalFormat = _ref6$targetInternalF === void 0 ? _constants.default.RGBA : _ref6$targetInternalF;
201
+
202
+ var _ref7 = options || {},
203
+ targetX = _ref7.targetX,
204
+ targetY = _ref7.targetY,
205
+ targetZ = _ref7.targetZ,
206
+ width = _ref7.width,
207
+ height = _ref7.height;
204
208
 
205
209
  var _getFramebuffer3 = getFramebuffer(source),
206
210
  framebuffer = _getFramebuffer3.framebuffer,
207
211
  deleteFramebuffer = _getFramebuffer3.deleteFramebuffer;
208
212
 
209
- (0, _assert.assert)(framebuffer);
213
+ (0, _api.assert)(framebuffer);
210
214
  var gl = framebuffer.gl,
211
215
  handle = framebuffer.handle;
212
216
  var isSubCopy = typeof targetX !== 'undefined' || typeof targetY !== 'undefined' || typeof targetZ !== 'undefined';
213
217
  targetX = targetX || 0;
214
218
  targetY = targetY || 0;
215
219
  targetZ = targetZ || 0;
216
- var prevHandle = gl.bindFramebuffer(36160, handle);
217
- (0, _assert.assert)(target);
220
+ var prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
221
+ (0, _api.assert)(target);
218
222
  var texture = null;
223
+ var textureTarget;
219
224
 
220
225
  if (target instanceof _texture.default) {
221
226
  texture = target;
222
227
  width = Number.isFinite(width) ? width : texture.width;
223
228
  height = Number.isFinite(height) ? height : texture.height;
224
229
  texture.bind(0);
225
- target = texture.target;
230
+ textureTarget = texture.target;
231
+ } else {
232
+ textureTarget = target;
226
233
  }
227
234
 
228
235
  if (!isSubCopy) {
229
- gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);
236
+ gl.copyTexImage2D(textureTarget, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);
230
237
  } else {
231
- switch (target) {
232
- case 3553:
233
- case 34067:
234
- gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
238
+ switch (textureTarget) {
239
+ case _constants.default.TEXTURE_2D:
240
+ case _constants.default.TEXTURE_CUBE_MAP:
241
+ gl.copyTexSubImage2D(textureTarget, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
235
242
  break;
236
243
 
237
- case 35866:
238
- case 32879:
239
- var gl2 = (0, _gltools.assertWebGL2Context)(gl);
240
- gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
244
+ case _constants.default.TEXTURE_2D_ARRAY:
245
+ case _constants.default.TEXTURE_3D:
246
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(gl);
247
+ gl2.copyTexSubImage3D(textureTarget, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
241
248
  break;
242
249
 
243
250
  default:
@@ -248,7 +255,7 @@ function copyToTexture(source, target) {
248
255
  texture.unbind();
249
256
  }
250
257
 
251
- gl.bindFramebuffer(36160, prevHandle || null);
258
+ gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
252
259
 
253
260
  if (deleteFramebuffer) {
254
261
  framebuffer.delete();
@@ -257,12 +264,11 @@ function copyToTexture(source, target) {
257
264
  return texture;
258
265
  }
259
266
 
260
- function blit(source, target) {
261
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
262
- var _options$sourceX3 = options.sourceX0,
263
- sourceX0 = _options$sourceX3 === void 0 ? 0 : _options$sourceX3,
264
- _options$sourceY3 = options.sourceY0,
265
- sourceY0 = _options$sourceY3 === void 0 ? 0 : _options$sourceY3,
267
+ function blit(source, target, options) {
268
+ var _options$sourceX = options.sourceX0,
269
+ sourceX0 = _options$sourceX === void 0 ? 0 : _options$sourceX,
270
+ _options$sourceY = options.sourceY0,
271
+ sourceY0 = _options$sourceY === void 0 ? 0 : _options$sourceY,
266
272
  _options$targetX = options.targetX0,
267
273
  targetX0 = _options$targetX === void 0 ? 0 : _options$targetX,
268
274
  _options$targetY = options.targetY0,
@@ -274,13 +280,13 @@ function blit(source, target) {
274
280
  _options$stencil = options.stencil,
275
281
  stencil = _options$stencil === void 0 ? false : _options$stencil,
276
282
  _options$filter = options.filter,
277
- filter = _options$filter === void 0 ? 9728 : _options$filter;
283
+ filter = _options$filter === void 0 ? _constants.default.NEAREST : _options$filter;
278
284
  var sourceX1 = options.sourceX1,
279
285
  sourceY1 = options.sourceY1,
280
286
  targetX1 = options.targetX1,
281
287
  targetY1 = options.targetY1,
282
- _options$sourceAttach2 = options.sourceAttachment,
283
- sourceAttachment = _options$sourceAttach2 === void 0 ? 36064 : _options$sourceAttach2,
288
+ _options$sourceAttach = options.sourceAttachment,
289
+ sourceAttachment = _options$sourceAttach === void 0 ? _constants.default.COLOR_ATTACHMENT0 : _options$sourceAttach,
284
290
  _options$mask = options.mask,
285
291
  mask = _options$mask === void 0 ? 0 : _options$mask;
286
292
 
@@ -292,51 +298,51 @@ function blit(source, target) {
292
298
  dstFramebuffer = _getFramebuffer5.framebuffer,
293
299
  deleteDstFramebuffer = _getFramebuffer5.deleteFramebuffer;
294
300
 
295
- (0, _assert.assert)(srcFramebuffer);
296
- (0, _assert.assert)(dstFramebuffer);
301
+ (0, _api.assert)(srcFramebuffer);
302
+ (0, _api.assert)(dstFramebuffer);
297
303
  var gl = dstFramebuffer.gl,
298
304
  handle = dstFramebuffer.handle,
299
305
  width = dstFramebuffer.width,
300
306
  height = dstFramebuffer.height,
301
307
  readBuffer = dstFramebuffer.readBuffer;
302
- var gl2 = (0, _gltools.assertWebGL2Context)(gl);
308
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(gl);
303
309
 
304
- if (!srcFramebuffer.handle && sourceAttachment === 36064) {
305
- sourceAttachment = 1028;
310
+ if (!srcFramebuffer.handle && sourceAttachment === _constants.default.COLOR_ATTACHMENT0) {
311
+ sourceAttachment = _constants.default.FRONT;
306
312
  }
307
313
 
308
314
  if (color) {
309
- mask |= 16384;
315
+ mask |= _constants.default.COLOR_BUFFER_BIT;
310
316
  }
311
317
 
312
318
  if (depth) {
313
- mask |= 256;
319
+ mask |= _constants.default.DEPTH_BUFFER_BIT;
314
320
  }
315
321
 
316
322
  if (stencil) {
317
- mask |= 1024;
323
+ mask |= _constants.default.STENCIL_BUFFER_BIT;
318
324
  }
319
325
 
320
326
  if (deleteSrcFramebuffer || deleteDstFramebuffer) {
321
- if (mask & (256 | 1024)) {
322
- mask = 16384;
327
+ if (mask & (_constants.default.DEPTH_BUFFER_BIT | _constants.default.STENCIL_BUFFER_BIT)) {
328
+ mask = _constants.default.COLOR_BUFFER_BIT;
323
329
 
324
- _gltools.log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();
330
+ _api.log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();
325
331
  }
326
332
  }
327
333
 
328
- (0, _assert.assert)(mask);
334
+ (0, _api.assert)(mask);
329
335
  sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;
330
336
  sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;
331
337
  targetX1 = targetX1 === undefined ? width : targetX1;
332
338
  targetY1 = targetY1 === undefined ? height : targetY1;
333
- var prevDrawHandle = gl.bindFramebuffer(36009, handle);
334
- var prevReadHandle = gl.bindFramebuffer(36008, srcFramebuffer.handle);
339
+ var prevDrawHandle = gl.bindFramebuffer(_constants.default.DRAW_FRAMEBUFFER, handle);
340
+ var prevReadHandle = gl.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, srcFramebuffer.handle);
335
341
  gl2.readBuffer(sourceAttachment);
336
342
  gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);
337
343
  gl2.readBuffer(readBuffer);
338
- gl2.bindFramebuffer(36008, prevReadHandle || null);
339
- gl2.bindFramebuffer(36009, prevDrawHandle || null);
344
+ gl2.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, prevReadHandle || null);
345
+ gl2.bindFramebuffer(_constants.default.DRAW_FRAMEBUFFER, prevDrawHandle || null);
340
346
 
341
347
  if (deleteSrcFramebuffer) {
342
348
  srcFramebuffer.delete();
@@ -345,8 +351,6 @@ function blit(source, target) {
345
351
  if (deleteDstFramebuffer) {
346
352
  dstFramebuffer.delete();
347
353
  }
348
-
349
- return dstFramebuffer;
350
354
  }
351
355
 
352
356
  function getFramebuffer(source) {
@@ -368,7 +372,7 @@ function getPixelArray(pixelArray, type, format, width, height) {
368
372
  return pixelArray;
369
373
  }
370
374
 
371
- type = type || 5121;
375
+ type = type || _constants.default.UNSIGNED_BYTE;
372
376
  var ArrayType = (0, _typedArrayUtils.getTypedArrayFromGLType)(type, {
373
377
  clamped: false
374
378
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/copy-and-blit.js"],"names":["readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","sourceAttachment","target","sourceWidth","sourceHeight","sourceType","getFramebuffer","framebuffer","deleteFramebuffer","gl","handle","attachments","width","height","type","getPixelArray","prevHandle","bindFramebuffer","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","components","byteCount","byteLength","Buffer","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","Texture","isFinite","copyTexImage2D","copyTexSubImage2D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","log","warn","undefined","prevDrawHandle","prevReadHandle","blitFramebuffer","Framebuffer","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":["readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","GL","RGBA","sourceAttachment","COLOR_ATTACHMENT0","target","sourceWidth","sourceHeight","sourceType","getFramebuffer","framebuffer","deleteFramebuffer","gl","handle","attachments","width","height","FRONT","type","getPixelArray","prevHandle","bindFramebuffer","FRAMEBUFFER","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","UNSIGNED_BYTE","components","byteCount","byteLength","Buffer","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","Texture","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","log","warn","undefined","prevDrawHandle","DRAW_FRAMEBUFFER","prevReadHandle","READ_FRAMEBUFFER","blitFramebuffer","Framebuffer","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"}