@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +89 -74
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +29 -180
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +306 -343
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +9 -25
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +49 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +58 -138
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +67 -101
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -175
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +98 -12
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -44
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +51 -31
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +123 -244
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +12 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +92 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +205 -158
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +192 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +17 -18
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  144. package/dist/context/context/create-browser-context.js +11 -19
  145. package/dist/context/context/create-browser-context.js.map +1 -1
  146. package/dist/context/context/create-headless-context.d.ts +1 -1
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  148. package/dist/context/context/create-headless-context.js +6 -7
  149. package/dist/context/context/create-headless-context.js.map +1 -1
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +7 -19
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +18 -41
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -17
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +27 -31
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +17 -40
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +25 -61
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +9344 -0
  198. package/dist/index.cjs +6556 -0
  199. package/dist/index.d.ts +23 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -27
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +120 -43
  209. package/src/adapter/converters/sampler-parameters.ts +54 -126
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +265 -192
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +5 -2
  214. package/src/adapter/device-helpers/device-limits.ts +4 -2
  215. package/src/adapter/device-helpers/get-device-info.ts +72 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
  218. package/src/adapter/helpers/get-shader-layout.ts +87 -131
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/webgl-buffer.ts +101 -106
  226. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  227. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  228. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  229. package/src/adapter/resources/webgl-framebuffer.ts +86 -133
  230. package/src/adapter/resources/webgl-render-pass.ts +165 -4
  231. package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
  232. package/src/adapter/resources/webgl-sampler.ts +12 -8
  233. package/src/adapter/resources/webgl-shader.ts +32 -27
  234. package/src/adapter/resources/webgl-texture.ts +117 -91
  235. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  236. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  237. package/src/adapter/webgl-canvas-context.ts +18 -13
  238. package/src/adapter/webgl-device.ts +327 -92
  239. package/src/classic/accessor.ts +8 -5
  240. package/src/classic/clear.ts +113 -0
  241. package/src/classic/copy-and-blit.ts +312 -0
  242. package/src/classic/format-utils.ts +46 -0
  243. package/src/classic/typed-array-utils.ts +19 -27
  244. package/src/context/context/create-browser-context.ts +53 -31
  245. package/src/context/context/create-headless-context.ts +5 -2
  246. package/src/context/context/webgl-checks.ts +3 -1
  247. package/src/context/debug/spector.ts +8 -5
  248. package/src/context/debug/webgl-developer-tools.ts +26 -17
  249. package/src/context/parameters/unified-parameter-api.ts +15 -9
  250. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  251. package/src/context/polyfill/context-data.ts +30 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  253. package/src/context/polyfill/polyfill-context.ts +15 -8
  254. package/src/context/polyfill/polyfill-table.ts +20 -15
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  256. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  257. package/src/context/state-tracker/track-context-state.ts +13 -10
  258. package/src/context/state-tracker/with-parameters.ts +13 -4
  259. package/src/index.ts +65 -39
  260. package/src/types.ts +5 -0
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  263. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  264. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  265. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  266. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  267. package/dist/adapter/helpers/attribute-utils.js +0 -81
  268. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  270. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  271. package/dist/adapter/helpers/uniforms.js +0 -99
  272. package/dist/adapter/helpers/uniforms.js.map +0 -1
  273. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  275. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  276. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  277. package/dist/bundle.d.ts +0 -2
  278. package/dist/bundle.d.ts.map +0 -1
  279. package/dist/bundle.js +0 -5
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/classic/buffer.d.ts +0 -95
  282. package/dist/classic/buffer.d.ts.map +0 -1
  283. package/dist/classic/buffer.js +0 -392
  284. package/dist/classic/buffer.js.map +0 -1
  285. package/dist/context/context/context-state.d.ts +0 -18
  286. package/dist/context/context/context-state.d.ts.map +0 -1
  287. package/dist/context/context/context-state.js +0 -26
  288. package/dist/context/context/context-state.js.map +0 -1
  289. package/dist/context/context/device-pixels.d.ts +0 -25
  290. package/dist/context/context/device-pixels.d.ts.map +0 -1
  291. package/dist/context/context/device-pixels.js +0 -103
  292. package/dist/context/context/device-pixels.js.map +0 -1
  293. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  294. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  295. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  296. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  297. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  298. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  299. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  300. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  301. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  302. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  303. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  304. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  305. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  306. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  307. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  308. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  309. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  310. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  311. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  312. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  313. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  314. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  315. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  316. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  317. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  318. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  319. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  320. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  321. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  322. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  323. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  324. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  325. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  326. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  327. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  328. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  329. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  330. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  331. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  332. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  333. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  334. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  335. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  336. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  338. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  339. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  340. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  341. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  342. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  343. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  344. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  345. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  346. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  347. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  348. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  349. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  350. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  351. package/dist/es5/adapter/webgl-device.js +0 -463
  352. package/dist/es5/adapter/webgl-device.js.map +0 -1
  353. package/dist/es5/bundle.js +0 -7
  354. package/dist/es5/bundle.js.map +0 -1
  355. package/dist/es5/classic/accessor.js +0 -181
  356. package/dist/es5/classic/accessor.js.map +0 -1
  357. package/dist/es5/classic/buffer.js +0 -478
  358. package/dist/es5/classic/buffer.js.map +0 -1
  359. package/dist/es5/classic/typed-array-utils.js +0 -126
  360. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  361. package/dist/es5/context/context/context-state.js +0 -31
  362. package/dist/es5/context/context/context-state.js.map +0 -1
  363. package/dist/es5/context/context/create-browser-context.js +0 -83
  364. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  365. package/dist/es5/context/context/create-headless-context.js +0 -60
  366. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  367. package/dist/es5/context/context/device-pixels.js +0 -121
  368. package/dist/es5/context/context/device-pixels.js.map +0 -1
  369. package/dist/es5/context/context/webgl-checks.js +0 -54
  370. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  371. package/dist/es5/context/debug/spector.js +0 -133
  372. package/dist/es5/context/debug/spector.js.map +0 -1
  373. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  374. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  375. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  376. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  377. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  378. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  379. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  380. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  381. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  382. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  383. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  384. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  385. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  386. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  387. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  388. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  389. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  390. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  391. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  392. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  393. package/dist/es5/index.js +0 -290
  394. package/dist/es5/index.js.map +0 -1
  395. package/dist/es5/init.js +0 -10
  396. package/dist/es5/init.js.map +0 -1
  397. package/dist/es5/types/webgl.js +0 -6
  398. package/dist/es5/types/webgl.js.map +0 -1
  399. package/dist/es5/types.js +0 -2
  400. package/dist/es5/types.js.map +0 -1
  401. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  402. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  403. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  404. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  405. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  406. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  407. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  408. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  409. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  410. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  411. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  412. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  413. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  414. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  415. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  416. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  417. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  418. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  419. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  420. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  421. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  422. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  423. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  424. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  425. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  426. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  427. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  428. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  429. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  430. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  431. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  432. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  433. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  434. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  435. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  436. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  437. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  438. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  439. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  440. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  441. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  442. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  443. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  444. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  445. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  446. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  447. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  448. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  449. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  450. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  451. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  452. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  453. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  454. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  455. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  456. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  457. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  458. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  459. package/dist/esm/adapter/webgl-device.js +0 -337
  460. package/dist/esm/adapter/webgl-device.js.map +0 -1
  461. package/dist/esm/bundle.js +0 -5
  462. package/dist/esm/bundle.js.map +0 -1
  463. package/dist/esm/classic/accessor.js +0 -144
  464. package/dist/esm/classic/accessor.js.map +0 -1
  465. package/dist/esm/classic/buffer.js +0 -392
  466. package/dist/esm/classic/buffer.js.map +0 -1
  467. package/dist/esm/classic/typed-array-utils.js +0 -112
  468. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  469. package/dist/esm/context/context/context-state.js +0 -26
  470. package/dist/esm/context/context/context-state.js.map +0 -1
  471. package/dist/esm/context/context/create-browser-context.js +0 -61
  472. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  473. package/dist/esm/context/context/create-headless-context.js +0 -43
  474. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  475. package/dist/esm/context/context/device-pixels.js +0 -103
  476. package/dist/esm/context/context/device-pixels.js.map +0 -1
  477. package/dist/esm/context/context/webgl-checks.js +0 -34
  478. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  479. package/dist/esm/context/debug/spector.js +0 -76
  480. package/dist/esm/context/debug/spector.js.map +0 -1
  481. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  482. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  483. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  484. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  485. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  487. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  489. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  490. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  491. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  492. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  493. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  495. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  496. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  497. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  498. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  499. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  500. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  501. package/dist/esm/index.js +0 -28
  502. package/dist/esm/index.js.map +0 -1
  503. package/dist/esm/init.js +0 -4
  504. package/dist/esm/init.js.map +0 -1
  505. package/dist/esm/types/webgl.js +0 -2
  506. package/dist/esm/types/webgl.js.map +0 -1
  507. package/dist/esm/types.js +0 -2
  508. package/dist/esm/types.js.map +0 -1
  509. package/dist/init.d.ts +0 -2
  510. package/dist/init.d.ts.map +0 -1
  511. package/dist/init.js +0 -4
  512. package/dist/init.js.map +0 -1
  513. package/dist/types/webgl.d.ts +0 -145
  514. package/dist/types/webgl.d.ts.map +0 -1
  515. package/dist/types/webgl.js +0 -2
  516. package/dist/types/webgl.js.map +0 -1
  517. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  518. package/src/adapter/helpers/attribute-utils.ts +0 -61
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/classic/buffer.ts +0 -474
  522. package/src/context/context/context-state.ts +0 -41
  523. package/src/context/context/device-pixels.ts +0 -158
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -284
@@ -1,170 +1,148 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Device, CanvasContext, log } from '@luma.gl/api';
1
+ import { Device, CanvasContext, log, uid, assert } from '@luma.gl/core';
3
2
  import { isBrowser } from '@probe.gl/env';
4
- import { polyfillContext } from '../context/polyfill/polyfill-context';
5
- import { trackContextState } from '../context/state-tracker/track-context-state';
6
- import { createBrowserContext } from '../context/context/create-browser-context';
7
- import { createHeadlessContext, isHeadlessGLRegistered } from '../context/context/create-headless-context';
8
- import { getDeviceInfo } from './device-helpers/get-device-info';
9
- import { getDeviceFeatures } from './device-helpers/device-features';
10
- import { getDeviceLimits, getWebGLLimits } from './device-helpers/device-limits';
11
- import WebGLCanvasContext from './webgl-canvas-context';
12
- import { loadSpectorJS, initializeSpectorJS } from '../context/debug/spector';
13
- import { loadWebGLDeveloperTools, makeDebugContext } from '../context/debug/webgl-developer-tools';
14
- import { isTextureFormatSupported, isTextureFormatRenderable, isTextureFormatFilterable } from './converters/texture-formats';
15
- import ClassicBuffer from '../classic/buffer';
16
- import WEBGLShader from './resources/webgl-shader';
17
- import WEBGLSampler from './resources/webgl-sampler';
18
- import WEBGLTexture from './resources/webgl-texture';
19
- import WEBGLFramebuffer from './resources/webgl-framebuffer';
20
- import WEBGLRenderPass from './resources/webgl-render-pass';
21
- import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
3
+ import { polyfillContext } from "../context/polyfill/polyfill-context.js";
4
+ import { popContextState, pushContextState, trackContextState } from "../context/state-tracker/track-context-state.js";
5
+ import { createBrowserContext } from "../context/context/create-browser-context.js";
6
+ import { createHeadlessContext, isHeadlessGLRegistered } from "../context/context/create-headless-context.js";
7
+ import { getDeviceInfo } from "./device-helpers/get-device-info.js";
8
+ import { getDeviceFeatures } from "./device-helpers/device-features.js";
9
+ import { getDeviceLimits, getWebGLLimits } from "./device-helpers/device-limits.js";
10
+ import { WebGLCanvasContext } from "./webgl-canvas-context.js";
11
+ import { loadSpectorJS, initializeSpectorJS } from "../context/debug/spector.js";
12
+ import { loadWebGLDeveloperTools, makeDebugContext } from "../context/debug/webgl-developer-tools.js";
13
+ import { isTextureFormatSupported, isTextureFormatRenderable, isTextureFormatFilterable } from "./converters/texture-formats.js";
14
+ import { WEBGLBuffer } from "./resources/webgl-buffer.js";
15
+ import { WEBGLShader } from "./resources/webgl-shader.js";
16
+ import { WEBGLSampler } from "./resources/webgl-sampler.js";
17
+ import { WEBGLTexture } from "./resources/webgl-texture.js";
18
+ import { WEBGLFramebuffer } from "./resources/webgl-framebuffer.js";
19
+ import { WEBGLRenderPass } from "./resources/webgl-render-pass.js";
20
+ import { WEBGLRenderPipeline } from "./resources/webgl-render-pipeline.js";
21
+ import { WEBGLCommandEncoder } from "./resources/webgl-command-encoder.js";
22
+ import { WEBGLVertexArray } from "./resources/webgl-vertex-array.js";
23
+ import { WEBGLTransformFeedback } from "./resources/webgl-transform-feedback.js";
24
+ import { readPixelsToArray, readPixelsToBuffer } from "../classic/copy-and-blit.js";
22
25
  const LOG_LEVEL = 1;
23
- let counter = 0;
24
- export default class WebGLDevice extends Device {
26
+ export class WebGLDevice extends Device {
25
27
  static isSupported() {
26
28
  return typeof WebGLRenderingContext !== 'undefined' || isHeadlessGLRegistered();
27
29
  }
28
-
29
30
  get features() {
30
31
  this._features = this._features || getDeviceFeatures(this.gl);
31
32
  return this._features;
32
33
  }
33
-
34
34
  get limits() {
35
35
  this._limits = this._limits || getDeviceLimits(this.gl);
36
36
  return this._limits;
37
37
  }
38
-
39
- get webglLimits() {
40
- this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
41
- return this._webglLimits;
42
- }
43
-
44
38
  static attach(gl) {
45
39
  if (gl instanceof WebGLDevice) {
46
40
  return gl;
47
41
  }
48
-
49
42
  if ((gl === null || gl === void 0 ? void 0 : gl.device) instanceof Device) {
50
43
  return gl.device;
51
44
  }
52
-
53
45
  if (!isWebGL(gl)) {
54
46
  throw new Error('Invalid WebGLRenderingContext');
55
47
  }
56
-
57
48
  return new WebGLDevice({
58
49
  gl: gl
59
50
  });
60
51
  }
61
-
62
- static async create(props = {}) {
63
- log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
64
-
52
+ static async create() {
53
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
54
+ log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created')();
65
55
  if (typeof props.canvas === 'string') {
66
56
  await CanvasContext.pageLoaded;
67
57
  }
68
-
69
- if (props.debug) {
58
+ if (log.get('debug') || props.debug) {
70
59
  await loadWebGLDeveloperTools();
71
60
  }
72
-
73
- if (props.spector) {
61
+ const {
62
+ spector
63
+ } = props;
64
+ if (log.get('spector') || spector) {
74
65
  await loadSpectorJS();
75
66
  }
76
-
77
67
  log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
78
-
79
68
  if (props.gl && props.gl.device) {
80
69
  return WebGLDevice.attach(props.gl);
81
70
  }
82
-
83
- return new WebGLDevice(props);
71
+ const device = new WebGLDevice(props);
72
+ const message = `\
73
+ Created ${device.info.type}${device.debug ? ' debug' : ''} context: \
74
+ ${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContext.id}`;
75
+ log.probe(LOG_LEVEL, message)();
76
+ log.table(LOG_LEVEL, device.info)();
77
+ log.groupEnd(LOG_LEVEL)();
78
+ return device;
84
79
  }
85
-
86
80
  constructor(props) {
87
- var _props$gl;
88
-
89
- super(props);
90
-
91
- _defineProperty(this, "info", void 0);
92
-
93
- _defineProperty(this, "canvasContext", void 0);
94
-
95
- _defineProperty(this, "handle", void 0);
96
-
97
- _defineProperty(this, "lost", void 0);
98
-
99
- _defineProperty(this, "_resolveContextLost", void 0);
100
-
101
- _defineProperty(this, "_features", void 0);
102
-
103
- _defineProperty(this, "_limits", void 0);
104
-
105
- _defineProperty(this, "gl", void 0);
106
-
107
- _defineProperty(this, "gl2", null);
108
-
109
- _defineProperty(this, "debug", false);
110
-
111
- _defineProperty(this, "isWebGL1", void 0);
112
-
113
- _defineProperty(this, "isWebGL2", void 0);
114
-
115
- _defineProperty(this, "_webglLimits", void 0);
116
-
117
- _defineProperty(this, "_canvasSizeInfo", {
81
+ var _props$gl, _props$gl2;
82
+ super({
83
+ ...props,
84
+ id: props.id || uid('webgl-device')
85
+ });
86
+ this.info = void 0;
87
+ this.canvasContext = void 0;
88
+ this.handle = void 0;
89
+ this.lost = void 0;
90
+ this._resolveContextLost = void 0;
91
+ this._features = void 0;
92
+ this._limits = void 0;
93
+ this.renderPass = null;
94
+ this.gl = void 0;
95
+ this.gl2 = null;
96
+ this.debug = false;
97
+ this.isWebGL1 = void 0;
98
+ this.isWebGL2 = void 0;
99
+ this._canvasSizeInfo = {
118
100
  clientWidth: 0,
119
101
  clientHeight: 0,
120
102
  devicePixelRatio: 1
121
- });
122
-
123
- _defineProperty(this, "_extensions", {});
124
-
125
- _defineProperty(this, "_polyfilled", false);
126
-
127
- _defineProperty(this, "spector", void 0);
128
-
129
- _defineProperty(this, "renderPass", null);
130
-
103
+ };
104
+ this._extensions = {};
105
+ this._polyfilled = false;
106
+ this.spector = void 0;
107
+ this._webglLimits = void 0;
108
+ this._constants = void 0;
131
109
  const device = (_props$gl = props.gl) === null || _props$gl === void 0 ? void 0 : _props$gl.device;
132
-
133
110
  if (device) {
134
- throw new Error("WebGL context already attached to device ".concat(device.id));
111
+ throw new Error(`WebGL context already attached to device ${device.id}`);
135
112
  }
136
-
137
- this.canvasContext = new WebGLCanvasContext(this, props);
113
+ const canvas = props.canvas || ((_props$gl2 = props.gl) === null || _props$gl2 === void 0 ? void 0 : _props$gl2.canvas);
114
+ this.canvasContext = new WebGLCanvasContext(this, {
115
+ ...props,
116
+ canvas
117
+ });
138
118
  this.lost = new Promise(resolve => {
139
119
  this._resolveContextLost = resolve;
140
120
  });
141
-
142
121
  const onContextLost = event => {
143
122
  var _this$_resolveContext;
144
-
145
123
  return (_this$_resolveContext = this._resolveContextLost) === null || _this$_resolveContext === void 0 ? void 0 : _this$_resolveContext.call(this, {
146
124
  reason: 'destroyed',
147
125
  message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
148
126
  });
149
127
  };
150
-
151
- let gl = props.gl;
152
- gl = gl || (isBrowser() ? createBrowserContext(this.canvasContext.canvas, { ...props,
128
+ let gl = props.gl || null;
129
+ gl = gl || (isBrowser() ? createBrowserContext(this.canvasContext.canvas, {
130
+ ...props,
153
131
  onContextLost
154
132
  }) : null);
155
- gl = gl || (!isBrowser() ? createHeadlessContext({ ...props,
133
+ gl = gl || (!isBrowser() ? createHeadlessContext({
134
+ ...props,
156
135
  onContextLost
157
136
  }) : null);
158
-
159
137
  if (!gl) {
160
138
  throw new Error('WebGL context creation failed');
161
139
  }
162
-
163
140
  this.handle = gl;
164
141
  this.gl = this.handle;
165
142
  this.gl2 = this.gl;
166
143
  this.isWebGL2 = isWebGL2(this.gl);
167
144
  this.isWebGL1 = !this.isWebGL2;
145
+ this.canvasContext.resize();
168
146
  this.info = getDeviceInfo(this.gl);
169
147
  this.gl.device = this;
170
148
  this.gl._version = this.isWebGL2 ? 2 : 1;
@@ -176,11 +154,16 @@ export default class WebGLDevice extends Device {
176
154
  trackContextState(this.gl, {
177
155
  enable,
178
156
  copyState,
179
- log: (...args) => log.log(1, ...args)()
157
+ log: function () {
158
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
159
+ args[_key] = arguments[_key];
160
+ }
161
+ return log.log(1, ...args)();
162
+ }
180
163
  });
181
-
182
164
  if (isBrowser() && props.debug) {
183
- this.gl = makeDebugContext(this.gl, { ...props,
165
+ this.gl = makeDebugContext(this.gl, {
166
+ ...props,
184
167
  webgl2: this.isWebGL2,
185
168
  throwOnError: true
186
169
  });
@@ -189,149 +172,213 @@ export default class WebGLDevice extends Device {
189
172
  log.level = Math.max(log.level, 1);
190
173
  log.warn('WebGL debug mode activated. Performance reduced.')();
191
174
  }
192
-
193
175
  if (isBrowser() && props.spector) {
194
176
  const canvas = this.handle.canvas || props.canvas;
195
- this.spector = initializeSpectorJS({ ...this.props,
177
+ this.spector = initializeSpectorJS({
178
+ ...this.props,
196
179
  canvas
197
180
  });
198
181
  }
199
-
200
- const message = "Created ".concat(this.info.type).concat(this.debug ? ' debug' : '', " context: ").concat(this.info.vendor, ", ").concat(this.info.renderer, " for canvas: ").concat(this.canvasContext.id);
201
- log.probe(LOG_LEVEL, message)();
202
- log.groupEnd(LOG_LEVEL)();
203
182
  }
204
-
205
183
  destroy() {
206
184
  const ext = this.gl.getExtension('STACKGL_destroy_context');
207
-
208
185
  if (ext) {
209
186
  ext.destroy();
210
187
  }
211
188
  }
212
-
213
- loseDevice() {
214
- var _this$_resolveContext2;
215
-
216
- const ext = this.gl.getExtension('WEBGL_lose_context');
217
-
218
- if (ext) {
219
- ext.loseContext();
220
- }
221
-
222
- (_this$_resolveContext2 = this._resolveContextLost) === null || _this$_resolveContext2 === void 0 ? void 0 : _this$_resolveContext2.call(this, {
223
- reason: 'destroyed',
224
- message: 'Application triggered context loss'
225
- });
226
- }
227
-
228
189
  get isLost() {
229
190
  return this.gl.isContextLost();
230
191
  }
231
-
232
192
  getSize() {
233
193
  return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
234
194
  }
235
-
236
195
  isTextureFormatSupported(format) {
237
196
  return isTextureFormatSupported(this.gl, format);
238
197
  }
239
-
240
198
  isTextureFormatFilterable(format) {
241
199
  return isTextureFormatFilterable(this.gl, format);
242
200
  }
243
-
244
201
  isTextureFormatRenderable(format) {
245
202
  return isTextureFormatRenderable(this.gl, format);
246
203
  }
247
-
248
204
  assertWebGL2() {
249
205
  if (!this.gl2) {
250
206
  throw new Error('Requires WebGL2');
251
207
  }
252
-
253
208
  return this.gl2;
254
209
  }
255
-
256
210
  createCanvasContext(props) {
257
211
  throw new Error('WebGL only supports a single canvas');
258
212
  }
259
-
260
- _createBuffer(props) {
261
- return new ClassicBuffer(this, props);
213
+ createBuffer(props) {
214
+ const newProps = this._getBufferProps(props);
215
+ return new WEBGLBuffer(this, newProps);
262
216
  }
263
-
264
217
  _createTexture(props) {
265
218
  return new WEBGLTexture(this, props);
266
219
  }
267
-
268
220
  createExternalTexture(props) {
269
221
  throw new Error('createExternalTexture() not implemented');
270
222
  }
271
-
272
223
  createSampler(props) {
273
224
  return new WEBGLSampler(this, props);
274
225
  }
275
-
276
226
  createShader(props) {
277
227
  return new WEBGLShader(this, props);
278
228
  }
279
-
280
229
  createFramebuffer(props) {
281
230
  return new WEBGLFramebuffer(this, props);
282
231
  }
283
-
284
232
  createRenderPipeline(props) {
285
233
  return new WEBGLRenderPipeline(this, props);
286
234
  }
287
-
235
+ createVertexArray(props) {
236
+ return new WEBGLVertexArray(this, props);
237
+ }
288
238
  beginRenderPass(props) {
289
239
  return new WEBGLRenderPass(this, props);
290
240
  }
291
-
292
241
  createComputePipeline(props) {
293
242
  throw new Error('ComputePipeline not supported in WebGL');
294
243
  }
295
-
296
244
  beginComputePass(props) {
297
- throw new Error('compute shaders not supported in WebGL');
245
+ throw new Error('ComputePass not supported in WebGL');
246
+ }
247
+ createTransformFeedback(props) {
248
+ return new WEBGLTransformFeedback(this, props);
298
249
  }
299
-
300
250
  getDefaultRenderPass() {
301
251
  this.renderPass = this.renderPass || this.beginRenderPass({
302
252
  framebuffer: this.canvasContext.getCurrentFramebuffer()
303
253
  });
304
254
  return this.renderPass;
305
255
  }
306
-
256
+ createCommandEncoder(props) {
257
+ return new WEBGLCommandEncoder(this, props);
258
+ }
307
259
  submit() {
308
260
  var _this$renderPass;
309
-
310
- (_this$renderPass = this.renderPass) === null || _this$renderPass === void 0 ? void 0 : _this$renderPass.endPass();
261
+ (_this$renderPass = this.renderPass) === null || _this$renderPass === void 0 ? void 0 : _this$renderPass.end();
311
262
  this.renderPass = null;
312
263
  }
313
-
264
+ readPixelsToArrayWebGL(source, options) {
265
+ return readPixelsToArray(source, options);
266
+ }
267
+ readPixelsToBufferWebGL2(source, options) {
268
+ return readPixelsToBuffer(source, options);
269
+ }
270
+ get webglLimits() {
271
+ this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
272
+ return this._webglLimits;
273
+ }
274
+ loseDevice() {
275
+ var _this$_resolveContext2;
276
+ let deviceLossTriggered = false;
277
+ const ext = this.gl.getExtension('WEBGL_lose_context');
278
+ if (ext) {
279
+ deviceLossTriggered = true;
280
+ ext.loseContext();
281
+ }
282
+ (_this$_resolveContext2 = this._resolveContextLost) === null || _this$_resolveContext2 === void 0 ? void 0 : _this$_resolveContext2.call(this, {
283
+ reason: 'destroyed',
284
+ message: 'Application triggered context loss'
285
+ });
286
+ return deviceLossTriggered;
287
+ }
288
+ pushState() {
289
+ pushContextState(this.gl);
290
+ }
291
+ popState() {
292
+ popContextState(this.gl);
293
+ }
294
+ setSpectorMetadata(handle, props) {
295
+ handle.__SPECTOR_Metadata = props;
296
+ }
297
+ getGLKey(value, gl) {
298
+ gl = gl || this.gl2 || this.gl;
299
+ const number = Number(value);
300
+ for (const key in gl) {
301
+ if (gl[key] === number) {
302
+ return `GL.${key}`;
303
+ }
304
+ }
305
+ return String(value);
306
+ }
307
+ setConstantAttribute(location, constant) {
308
+ this._constants = this._constants || new Array(this.limits.maxVertexAttributes).fill(null);
309
+ const currentConstant = this._constants[location];
310
+ if (currentConstant && compareConstantArrayValues(currentConstant, constant)) {
311
+ log.info(1, `setConstantAttribute(${location}) could have been skipped, value unchanged`)();
312
+ }
313
+ this._constants[location] = constant;
314
+ switch (constant.constructor) {
315
+ case Float32Array:
316
+ setConstantFloatArray(this, location, constant);
317
+ break;
318
+ case Int32Array:
319
+ setConstantIntArray(this, location, constant);
320
+ break;
321
+ case Uint32Array:
322
+ setConstantUintArray(this, location, constant);
323
+ break;
324
+ default:
325
+ assert(false);
326
+ }
327
+ }
314
328
  }
315
-
316
- _defineProperty(WebGLDevice, "type", 'webgl');
317
-
329
+ WebGLDevice.type = 'webgl';
318
330
  function isWebGL(gl) {
319
331
  if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
320
332
  return true;
321
333
  }
322
-
323
334
  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
324
335
  return true;
325
336
  }
326
-
327
337
  return Boolean(gl && Number.isFinite(gl._version));
328
338
  }
329
-
330
339
  function isWebGL2(gl) {
331
340
  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
332
341
  return true;
333
342
  }
334
-
335
343
  return Boolean(gl && gl._version === 2);
336
344
  }
345
+ function setConstantFloatArray(device, location, array) {
346
+ switch (array.length) {
347
+ case 1:
348
+ device.gl.vertexAttrib1fv(location, array);
349
+ break;
350
+ case 2:
351
+ device.gl.vertexAttrib2fv(location, array);
352
+ break;
353
+ case 3:
354
+ device.gl.vertexAttrib3fv(location, array);
355
+ break;
356
+ case 4:
357
+ device.gl.vertexAttrib4fv(location, array);
358
+ break;
359
+ default:
360
+ assert(false);
361
+ }
362
+ }
363
+ function setConstantIntArray(device, location, array) {
364
+ var _device$gl;
365
+ device.assertWebGL2();
366
+ (_device$gl = device.gl2) === null || _device$gl === void 0 ? void 0 : _device$gl.vertexAttribI4iv(location, array);
367
+ }
368
+ function setConstantUintArray(device, location, array) {
369
+ var _device$gl2;
370
+ device.assertWebGL2();
371
+ (_device$gl2 = device.gl2) === null || _device$gl2 === void 0 ? void 0 : _device$gl2.vertexAttribI4uiv(location, array);
372
+ }
373
+ function compareConstantArrayValues(v1, v2) {
374
+ if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
375
+ return false;
376
+ }
377
+ for (let i = 0; i < v1.length; ++i) {
378
+ if (v1[i] !== v2[i]) {
379
+ return false;
380
+ }
381
+ }
382
+ return true;
383
+ }
337
384
  //# sourceMappingURL=webgl-device.js.map