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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +100 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +217 -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 +9296 -0
  198. package/dist/index.cjs +6469 -0
  199. package/dist/index.d.ts +20 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +25 -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 +343 -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 +42 -42
  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,151 @@
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";
25
+ import { setGLParameters } from "../context/parameters/unified-parameter-api.js";
26
+ import { withGLParameters } from "../context/state-tracker/with-parameters.js";
27
+ import { clear } from "../classic/clear.js";
22
28
  const LOG_LEVEL = 1;
23
- let counter = 0;
24
- export default class WebGLDevice extends Device {
29
+ export class WebGLDevice extends Device {
25
30
  static isSupported() {
26
31
  return typeof WebGLRenderingContext !== 'undefined' || isHeadlessGLRegistered();
27
32
  }
28
-
29
33
  get features() {
30
34
  this._features = this._features || getDeviceFeatures(this.gl);
31
35
  return this._features;
32
36
  }
33
-
34
37
  get limits() {
35
38
  this._limits = this._limits || getDeviceLimits(this.gl);
36
39
  return this._limits;
37
40
  }
38
-
39
- get webglLimits() {
40
- this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
41
- return this._webglLimits;
42
- }
43
-
44
41
  static attach(gl) {
45
42
  if (gl instanceof WebGLDevice) {
46
43
  return gl;
47
44
  }
48
-
49
45
  if ((gl === null || gl === void 0 ? void 0 : gl.device) instanceof Device) {
50
46
  return gl.device;
51
47
  }
52
-
53
48
  if (!isWebGL(gl)) {
54
49
  throw new Error('Invalid WebGLRenderingContext');
55
50
  }
56
-
57
51
  return new WebGLDevice({
58
52
  gl: gl
59
53
  });
60
54
  }
61
-
62
- static async create(props = {}) {
63
- log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
64
-
55
+ static async create() {
56
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
57
+ log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created')();
65
58
  if (typeof props.canvas === 'string') {
66
59
  await CanvasContext.pageLoaded;
67
60
  }
68
-
69
- if (props.debug) {
61
+ if (log.get('debug') || props.debug) {
70
62
  await loadWebGLDeveloperTools();
71
63
  }
72
-
73
- if (props.spector) {
64
+ const {
65
+ spector
66
+ } = props;
67
+ if (log.get('spector') || spector) {
74
68
  await loadSpectorJS();
75
69
  }
76
-
77
70
  log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
78
-
79
71
  if (props.gl && props.gl.device) {
80
72
  return WebGLDevice.attach(props.gl);
81
73
  }
82
-
83
- return new WebGLDevice(props);
74
+ const device = new WebGLDevice(props);
75
+ const message = `\
76
+ Created ${device.info.type}${device.debug ? ' debug' : ''} context: \
77
+ ${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContext.id}`;
78
+ log.probe(LOG_LEVEL, message)();
79
+ log.table(LOG_LEVEL, device.info)();
80
+ log.groupEnd(LOG_LEVEL)();
81
+ return device;
84
82
  }
85
-
86
83
  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", {
84
+ var _props$gl, _props$gl2;
85
+ super({
86
+ ...props,
87
+ id: props.id || uid('webgl-device')
88
+ });
89
+ this.info = void 0;
90
+ this.canvasContext = void 0;
91
+ this.handle = void 0;
92
+ this.lost = void 0;
93
+ this._resolveContextLost = void 0;
94
+ this._features = void 0;
95
+ this._limits = void 0;
96
+ this.renderPass = null;
97
+ this.gl = void 0;
98
+ this.gl2 = null;
99
+ this.debug = false;
100
+ this.isWebGL1 = void 0;
101
+ this.isWebGL2 = void 0;
102
+ this._canvasSizeInfo = {
118
103
  clientWidth: 0,
119
104
  clientHeight: 0,
120
105
  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
-
106
+ };
107
+ this._extensions = {};
108
+ this._polyfilled = false;
109
+ this.spector = void 0;
110
+ this._webglLimits = void 0;
111
+ this._constants = void 0;
131
112
  const device = (_props$gl = props.gl) === null || _props$gl === void 0 ? void 0 : _props$gl.device;
132
-
133
113
  if (device) {
134
- throw new Error("WebGL context already attached to device ".concat(device.id));
114
+ throw new Error(`WebGL context already attached to device ${device.id}`);
135
115
  }
136
-
137
- this.canvasContext = new WebGLCanvasContext(this, props);
116
+ const canvas = props.canvas || ((_props$gl2 = props.gl) === null || _props$gl2 === void 0 ? void 0 : _props$gl2.canvas);
117
+ this.canvasContext = new WebGLCanvasContext(this, {
118
+ ...props,
119
+ canvas
120
+ });
138
121
  this.lost = new Promise(resolve => {
139
122
  this._resolveContextLost = resolve;
140
123
  });
141
-
142
124
  const onContextLost = event => {
143
125
  var _this$_resolveContext;
144
-
145
126
  return (_this$_resolveContext = this._resolveContextLost) === null || _this$_resolveContext === void 0 ? void 0 : _this$_resolveContext.call(this, {
146
127
  reason: 'destroyed',
147
128
  message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
148
129
  });
149
130
  };
150
-
151
- let gl = props.gl;
152
- gl = gl || (isBrowser() ? createBrowserContext(this.canvasContext.canvas, { ...props,
131
+ let gl = props.gl || null;
132
+ gl = gl || (isBrowser() ? createBrowserContext(this.canvasContext.canvas, {
133
+ ...props,
153
134
  onContextLost
154
135
  }) : null);
155
- gl = gl || (!isBrowser() ? createHeadlessContext({ ...props,
136
+ gl = gl || (!isBrowser() ? createHeadlessContext({
137
+ ...props,
156
138
  onContextLost
157
139
  }) : null);
158
-
159
140
  if (!gl) {
160
141
  throw new Error('WebGL context creation failed');
161
142
  }
162
-
163
143
  this.handle = gl;
164
144
  this.gl = this.handle;
165
145
  this.gl2 = this.gl;
166
146
  this.isWebGL2 = isWebGL2(this.gl);
167
147
  this.isWebGL1 = !this.isWebGL2;
148
+ this.canvasContext.resize();
168
149
  this.info = getDeviceInfo(this.gl);
169
150
  this.gl.device = this;
170
151
  this.gl._version = this.isWebGL2 ? 2 : 1;
@@ -176,11 +157,16 @@ export default class WebGLDevice extends Device {
176
157
  trackContextState(this.gl, {
177
158
  enable,
178
159
  copyState,
179
- log: (...args) => log.log(1, ...args)()
160
+ log: function () {
161
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
162
+ args[_key] = arguments[_key];
163
+ }
164
+ return log.log(1, ...args)();
165
+ }
180
166
  });
181
-
182
167
  if (isBrowser() && props.debug) {
183
- this.gl = makeDebugContext(this.gl, { ...props,
168
+ this.gl = makeDebugContext(this.gl, {
169
+ ...props,
184
170
  webgl2: this.isWebGL2,
185
171
  throwOnError: true
186
172
  });
@@ -189,149 +175,222 @@ export default class WebGLDevice extends Device {
189
175
  log.level = Math.max(log.level, 1);
190
176
  log.warn('WebGL debug mode activated. Performance reduced.')();
191
177
  }
192
-
193
178
  if (isBrowser() && props.spector) {
194
179
  const canvas = this.handle.canvas || props.canvas;
195
- this.spector = initializeSpectorJS({ ...this.props,
180
+ this.spector = initializeSpectorJS({
181
+ ...this.props,
196
182
  canvas
197
183
  });
198
184
  }
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
185
  }
204
-
205
186
  destroy() {
206
187
  const ext = this.gl.getExtension('STACKGL_destroy_context');
207
-
208
188
  if (ext) {
209
189
  ext.destroy();
210
190
  }
211
191
  }
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
192
  get isLost() {
229
193
  return this.gl.isContextLost();
230
194
  }
231
-
232
195
  getSize() {
233
196
  return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
234
197
  }
235
-
236
198
  isTextureFormatSupported(format) {
237
199
  return isTextureFormatSupported(this.gl, format);
238
200
  }
239
-
240
201
  isTextureFormatFilterable(format) {
241
202
  return isTextureFormatFilterable(this.gl, format);
242
203
  }
243
-
244
204
  isTextureFormatRenderable(format) {
245
205
  return isTextureFormatRenderable(this.gl, format);
246
206
  }
247
-
248
207
  assertWebGL2() {
249
208
  if (!this.gl2) {
250
209
  throw new Error('Requires WebGL2');
251
210
  }
252
-
253
211
  return this.gl2;
254
212
  }
255
-
256
213
  createCanvasContext(props) {
257
214
  throw new Error('WebGL only supports a single canvas');
258
215
  }
259
-
260
- _createBuffer(props) {
261
- return new ClassicBuffer(this, props);
216
+ createBuffer(props) {
217
+ const newProps = this._getBufferProps(props);
218
+ return new WEBGLBuffer(this, newProps);
262
219
  }
263
-
264
220
  _createTexture(props) {
265
221
  return new WEBGLTexture(this, props);
266
222
  }
267
-
268
223
  createExternalTexture(props) {
269
224
  throw new Error('createExternalTexture() not implemented');
270
225
  }
271
-
272
226
  createSampler(props) {
273
227
  return new WEBGLSampler(this, props);
274
228
  }
275
-
276
229
  createShader(props) {
277
230
  return new WEBGLShader(this, props);
278
231
  }
279
-
280
232
  createFramebuffer(props) {
281
233
  return new WEBGLFramebuffer(this, props);
282
234
  }
283
-
284
235
  createRenderPipeline(props) {
285
236
  return new WEBGLRenderPipeline(this, props);
286
237
  }
287
-
238
+ createVertexArray(props) {
239
+ return new WEBGLVertexArray(this, props);
240
+ }
288
241
  beginRenderPass(props) {
289
242
  return new WEBGLRenderPass(this, props);
290
243
  }
291
-
292
244
  createComputePipeline(props) {
293
245
  throw new Error('ComputePipeline not supported in WebGL');
294
246
  }
295
-
296
247
  beginComputePass(props) {
297
- throw new Error('compute shaders not supported in WebGL');
248
+ throw new Error('ComputePass not supported in WebGL');
249
+ }
250
+ createTransformFeedback(props) {
251
+ return new WEBGLTransformFeedback(this, props);
298
252
  }
299
-
300
253
  getDefaultRenderPass() {
301
254
  this.renderPass = this.renderPass || this.beginRenderPass({
302
255
  framebuffer: this.canvasContext.getCurrentFramebuffer()
303
256
  });
304
257
  return this.renderPass;
305
258
  }
306
-
259
+ createCommandEncoder(props) {
260
+ return new WEBGLCommandEncoder(this, props);
261
+ }
307
262
  submit() {
308
263
  var _this$renderPass;
309
-
310
- (_this$renderPass = this.renderPass) === null || _this$renderPass === void 0 ? void 0 : _this$renderPass.endPass();
264
+ (_this$renderPass = this.renderPass) === null || _this$renderPass === void 0 ? void 0 : _this$renderPass.end();
311
265
  this.renderPass = null;
312
266
  }
313
-
267
+ readPixelsToArrayWebGL(source, options) {
268
+ return readPixelsToArray(source, options);
269
+ }
270
+ readPixelsToBufferWebGL2(source, options) {
271
+ return readPixelsToBuffer(source, options);
272
+ }
273
+ setParametersWebGL(parameters) {
274
+ setGLParameters(this, parameters);
275
+ }
276
+ withParametersWebGL(parameters, func) {
277
+ withGLParameters(this, parameters, func);
278
+ }
279
+ clearWebGL(options) {
280
+ clear(this, options);
281
+ }
282
+ get webglLimits() {
283
+ this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
284
+ return this._webglLimits;
285
+ }
286
+ loseDevice() {
287
+ var _this$_resolveContext2;
288
+ let deviceLossTriggered = false;
289
+ const ext = this.gl.getExtension('WEBGL_lose_context');
290
+ if (ext) {
291
+ deviceLossTriggered = true;
292
+ ext.loseContext();
293
+ }
294
+ (_this$_resolveContext2 = this._resolveContextLost) === null || _this$_resolveContext2 === void 0 ? void 0 : _this$_resolveContext2.call(this, {
295
+ reason: 'destroyed',
296
+ message: 'Application triggered context loss'
297
+ });
298
+ return deviceLossTriggered;
299
+ }
300
+ pushState() {
301
+ pushContextState(this.gl);
302
+ }
303
+ popState() {
304
+ popContextState(this.gl);
305
+ }
306
+ setSpectorMetadata(handle, props) {
307
+ handle.__SPECTOR_Metadata = props;
308
+ }
309
+ getGLKey(value, gl) {
310
+ gl = gl || this.gl2 || this.gl;
311
+ const number = Number(value);
312
+ for (const key in gl) {
313
+ if (gl[key] === number) {
314
+ return `GL.${key}`;
315
+ }
316
+ }
317
+ return String(value);
318
+ }
319
+ setConstantAttribute(location, constant) {
320
+ this._constants = this._constants || new Array(this.limits.maxVertexAttributes).fill(null);
321
+ const currentConstant = this._constants[location];
322
+ if (currentConstant && compareConstantArrayValues(currentConstant, constant)) {
323
+ log.info(1, `setConstantAttribute(${location}) could have been skipped, value unchanged`)();
324
+ }
325
+ this._constants[location] = constant;
326
+ switch (constant.constructor) {
327
+ case Float32Array:
328
+ setConstantFloatArray(this, location, constant);
329
+ break;
330
+ case Int32Array:
331
+ setConstantIntArray(this, location, constant);
332
+ break;
333
+ case Uint32Array:
334
+ setConstantUintArray(this, location, constant);
335
+ break;
336
+ default:
337
+ assert(false);
338
+ }
339
+ }
314
340
  }
315
-
316
- _defineProperty(WebGLDevice, "type", 'webgl');
317
-
341
+ WebGLDevice.type = 'webgl';
318
342
  function isWebGL(gl) {
319
343
  if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
320
344
  return true;
321
345
  }
322
-
323
346
  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
324
347
  return true;
325
348
  }
326
-
327
349
  return Boolean(gl && Number.isFinite(gl._version));
328
350
  }
329
-
330
351
  function isWebGL2(gl) {
331
352
  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
332
353
  return true;
333
354
  }
334
-
335
355
  return Boolean(gl && gl._version === 2);
336
356
  }
357
+ function setConstantFloatArray(device, location, array) {
358
+ switch (array.length) {
359
+ case 1:
360
+ device.gl.vertexAttrib1fv(location, array);
361
+ break;
362
+ case 2:
363
+ device.gl.vertexAttrib2fv(location, array);
364
+ break;
365
+ case 3:
366
+ device.gl.vertexAttrib3fv(location, array);
367
+ break;
368
+ case 4:
369
+ device.gl.vertexAttrib4fv(location, array);
370
+ break;
371
+ default:
372
+ assert(false);
373
+ }
374
+ }
375
+ function setConstantIntArray(device, location, array) {
376
+ var _device$gl;
377
+ device.assertWebGL2();
378
+ (_device$gl = device.gl2) === null || _device$gl === void 0 ? void 0 : _device$gl.vertexAttribI4iv(location, array);
379
+ }
380
+ function setConstantUintArray(device, location, array) {
381
+ var _device$gl2;
382
+ device.assertWebGL2();
383
+ (_device$gl2 = device.gl2) === null || _device$gl2 === void 0 ? void 0 : _device$gl2.vertexAttribI4uiv(location, array);
384
+ }
385
+ function compareConstantArrayValues(v1, v2) {
386
+ if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
387
+ return false;
388
+ }
389
+ for (let i = 0; i < v1.length; ++i) {
390
+ if (v1[i] !== v2[i]) {
391
+ return false;
392
+ }
393
+ }
394
+ return true;
395
+ }
337
396
  //# sourceMappingURL=webgl-device.js.map