@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.51

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 (527) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +101 -73
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +74 -111
  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 +309 -346
  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 +17 -23
  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 +31 -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 +87 -143
  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 -11
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +60 -88
  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 -24
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -173
  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 +99 -11
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  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 -43
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +62 -42
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +137 -256
  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 +10 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +76 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +219 -129
  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 +191 -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 +40 -0
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  144. package/dist/context/context/create-browser-context.js +53 -0
  145. package/dist/context/context/create-browser-context.js.map +1 -0
  146. package/dist/context/context/create-headless-context.d.ts +9 -0
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  148. package/dist/context/context/create-headless-context.js +42 -0
  149. package/dist/context/context/create-headless-context.js.map +1 -0
  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 +8 -20
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +15 -39
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -19
  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 +22 -30
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +18 -41
  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 +26 -62
  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 +8624 -0
  198. package/dist/index.cjs +6570 -0
  199. package/dist/index.d.ts +26 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -26
  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 +144 -41
  209. package/src/adapter/converters/sampler-parameters.ts +103 -41
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +268 -195
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +14 -3
  214. package/src/adapter/device-helpers/device-limits.ts +5 -3
  215. package/src/adapter/device-helpers/get-device-info.ts +53 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  218. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  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-render-pipeline.ts.swp +0 -0
  226. package/src/adapter/resources/webgl-buffer.ts +67 -62
  227. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  228. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  229. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  230. package/src/adapter/resources/webgl-framebuffer.ts +90 -134
  231. package/src/adapter/resources/webgl-render-pass.ts +166 -4
  232. package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
  233. package/src/adapter/resources/webgl-sampler.ts +16 -10
  234. package/src/adapter/resources/webgl-shader.ts +33 -27
  235. package/src/adapter/resources/webgl-texture.ts +138 -99
  236. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  237. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  238. package/src/adapter/webgl-canvas-context.ts +16 -14
  239. package/src/adapter/webgl-device.ts +328 -79
  240. package/src/classic/accessor.ts +8 -18
  241. package/src/classic/clear.ts +113 -0
  242. package/src/classic/copy-and-blit.ts +311 -0
  243. package/src/classic/format-utils.ts +46 -0
  244. package/src/classic/typed-array-utils.ts +21 -27
  245. package/src/context/context/create-browser-context.ts +140 -0
  246. package/src/context/context/create-headless-context.ts +51 -0
  247. package/src/context/context/webgl-checks.ts +3 -1
  248. package/src/context/debug/spector.ts +9 -6
  249. package/src/context/debug/webgl-developer-tools.ts +23 -15
  250. package/src/context/parameters/unified-parameter-api.ts +23 -14
  251. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  252. package/src/context/polyfill/context-data.ts +30 -0
  253. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  254. package/src/context/polyfill/polyfill-context.ts +10 -9
  255. package/src/context/polyfill/polyfill-table.ts +21 -16
  256. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  257. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  258. package/src/context/state-tracker/track-context-state.ts +14 -11
  259. package/src/context/state-tracker/with-parameters.ts +13 -4
  260. package/src/index.ts +70 -35
  261. package/src/types.ts +5 -0
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  263. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  264. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  265. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  266. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  267. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  268. package/dist/adapter/helpers/attribute-utils.js +0 -81
  269. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  270. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  271. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  272. package/dist/adapter/helpers/uniforms.js +0 -99
  273. package/dist/adapter/helpers/uniforms.js.map +0 -1
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  275. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  277. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  278. package/dist/bundle.d.ts +0 -2
  279. package/dist/bundle.d.ts.map +0 -1
  280. package/dist/bundle.js +0 -5
  281. package/dist/bundle.js.map +0 -1
  282. package/dist/classic/buffer.d.ts +0 -95
  283. package/dist/classic/buffer.d.ts.map +0 -1
  284. package/dist/classic/buffer.js +0 -384
  285. package/dist/classic/buffer.js.map +0 -1
  286. package/dist/context/context/context-state.d.ts +0 -18
  287. package/dist/context/context/context-state.d.ts.map +0 -1
  288. package/dist/context/context/context-state.js +0 -26
  289. package/dist/context/context/context-state.js.map +0 -1
  290. package/dist/context/context/create-context.d.ts +0 -41
  291. package/dist/context/context/create-context.d.ts.map +0 -1
  292. package/dist/context/context/create-context.js +0 -49
  293. package/dist/context/context/create-context.js.map +0 -1
  294. package/dist/context/context/device-pixels.d.ts +0 -25
  295. package/dist/context/context/device-pixels.d.ts.map +0 -1
  296. package/dist/context/context/device-pixels.js +0 -98
  297. package/dist/context/context/device-pixels.js.map +0 -1
  298. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  299. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  300. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  301. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  302. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  303. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  305. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  307. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  308. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  309. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  310. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  311. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  313. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  315. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  316. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  317. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  318. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  319. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  320. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  321. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  322. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  323. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  324. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  325. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  326. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  327. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  328. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  329. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  330. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  331. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  333. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  335. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  337. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  339. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  341. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  343. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  345. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  347. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  349. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  351. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  353. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  354. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  355. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  356. package/dist/es5/adapter/webgl-device.js +0 -399
  357. package/dist/es5/adapter/webgl-device.js.map +0 -1
  358. package/dist/es5/bundle.js +0 -7
  359. package/dist/es5/bundle.js.map +0 -1
  360. package/dist/es5/classic/accessor.js +0 -181
  361. package/dist/es5/classic/accessor.js.map +0 -1
  362. package/dist/es5/classic/buffer.js +0 -470
  363. package/dist/es5/classic/buffer.js.map +0 -1
  364. package/dist/es5/classic/typed-array-utils.js +0 -126
  365. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  366. package/dist/es5/context/context/context-state.js +0 -31
  367. package/dist/es5/context/context/context-state.js.map +0 -1
  368. package/dist/es5/context/context/create-context.js +0 -69
  369. package/dist/es5/context/context/create-context.js.map +0 -1
  370. package/dist/es5/context/context/device-pixels.js +0 -115
  371. package/dist/es5/context/context/device-pixels.js.map +0 -1
  372. package/dist/es5/context/context/webgl-checks.js +0 -54
  373. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  374. package/dist/es5/context/debug/spector.js +0 -133
  375. package/dist/es5/context/debug/spector.js.map +0 -1
  376. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  377. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  378. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  379. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  380. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  381. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  382. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  383. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  384. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  385. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  386. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  387. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  389. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  390. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  391. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  392. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  393. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  394. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  395. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  396. package/dist/es5/index.js +0 -276
  397. package/dist/es5/index.js.map +0 -1
  398. package/dist/es5/init.js +0 -10
  399. package/dist/es5/init.js.map +0 -1
  400. package/dist/es5/types/webgl.js +0 -6
  401. package/dist/es5/types/webgl.js.map +0 -1
  402. package/dist/es5/types.js +0 -2
  403. package/dist/es5/types.js.map +0 -1
  404. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  405. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  406. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  407. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  408. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  409. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  411. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  413. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  414. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  415. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  416. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  417. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  419. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  421. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  422. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  423. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  424. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  425. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  426. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  427. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  428. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  429. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  430. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  431. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  432. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  433. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  434. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  435. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  436. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  437. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  439. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  441. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  443. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  445. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  447. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  449. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  451. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  453. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  455. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  457. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-texture.js +0 -833
  459. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  460. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  461. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  462. package/dist/esm/adapter/webgl-device.js +0 -280
  463. package/dist/esm/adapter/webgl-device.js.map +0 -1
  464. package/dist/esm/bundle.js +0 -5
  465. package/dist/esm/bundle.js.map +0 -1
  466. package/dist/esm/classic/accessor.js +0 -144
  467. package/dist/esm/classic/accessor.js.map +0 -1
  468. package/dist/esm/classic/buffer.js +0 -384
  469. package/dist/esm/classic/buffer.js.map +0 -1
  470. package/dist/esm/classic/typed-array-utils.js +0 -112
  471. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  472. package/dist/esm/context/context/context-state.js +0 -26
  473. package/dist/esm/context/context/context-state.js.map +0 -1
  474. package/dist/esm/context/context/create-context.js +0 -49
  475. package/dist/esm/context/context/create-context.js.map +0 -1
  476. package/dist/esm/context/context/device-pixels.js +0 -98
  477. package/dist/esm/context/context/device-pixels.js.map +0 -1
  478. package/dist/esm/context/context/webgl-checks.js +0 -34
  479. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  480. package/dist/esm/context/debug/spector.js +0 -76
  481. package/dist/esm/context/debug/spector.js.map +0 -1
  482. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  483. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  484. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  485. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  487. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  489. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  490. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  491. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  492. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  493. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  495. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  496. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  497. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  498. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  499. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  500. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  501. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  502. package/dist/esm/index.js +0 -27
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/init.js +0 -4
  505. package/dist/esm/init.js.map +0 -1
  506. package/dist/esm/types/webgl.js +0 -2
  507. package/dist/esm/types/webgl.js.map +0 -1
  508. package/dist/esm/types.js +0 -2
  509. package/dist/esm/types.js.map +0 -1
  510. package/dist/init.d.ts +0 -2
  511. package/dist/init.d.ts.map +0 -1
  512. package/dist/init.js +0 -4
  513. package/dist/init.js.map +0 -1
  514. package/dist/types/webgl.d.ts +0 -145
  515. package/dist/types/webgl.d.ts.map +0 -1
  516. package/dist/types/webgl.js +0 -2
  517. package/dist/types/webgl.js.map +0 -1
  518. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  519. package/src/adapter/helpers/attribute-utils.ts +0 -61
  520. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  521. package/src/bundle.ts +0 -4
  522. package/src/classic/buffer.ts +0 -474
  523. package/src/context/context/context-state.ts +0 -41
  524. package/src/context/context/create-context.ts +0 -110
  525. package/src/context/context/device-pixels.ts +0 -152
  526. package/src/init.ts +0 -4
  527. package/src/types/webgl.ts +0 -284
@@ -1,7 +1,10 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // Tables describing WebGL parameters
2
- import GL from '@luma.gl/constants';
5
+ import {GL, GLParameters} from '@luma.gl/constants';
3
6
  import {isWebGL2} from '../context/webgl-checks';
4
- import type {GLParameters} from '../../types/webgl';
7
+
5
8
  // DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS
6
9
 
7
10
  /* eslint-disable no-shadow */
@@ -91,11 +94,13 @@ export const GL_PARAMETER_DEFAULTS: GLParameters = {
91
94
 
92
95
  // SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API
93
96
 
94
- const enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));
95
- const hint = (gl, value, key) => gl.hint(key, value);
96
- const pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);
97
+ const enable = (gl: WebGLRenderingContext, value: unknown, key: GL) =>
98
+ value ? gl.enable(key) : gl.disable(key);
99
+ const hint = (gl: WebGLRenderingContext, value: GL, key: GL) => gl.hint(key, value);
100
+ const pixelStorei = (gl: WebGLRenderingContext, value: number | boolean, key: GL) =>
101
+ gl.pixelStorei(key, value);
97
102
 
98
- const bindFramebuffer = (gl, value, key) => {
103
+ const bindFramebuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {
99
104
  let target;
100
105
  if (key === GL.FRAMEBUFFER_BINDING) {
101
106
  target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;
@@ -106,21 +111,22 @@ const bindFramebuffer = (gl, value, key) => {
106
111
  return gl.bindFramebuffer(target, value);
107
112
  };
108
113
 
109
- const bindBuffer = (gl, value, key) => {
110
- const target = ({
111
- [GL.ARRAY_BUFFER_BINDING]: [GL.ARRAY_BUFFER],
112
- [GL.COPY_READ_BUFFER_BINDING]: [GL.COPY_READ_BUFFER],
113
- [GL.COPY_WRITE_BUFFER_BINDING]: [GL.COPY_WRITE_BUFFER],
114
- [GL.PIXEL_PACK_BUFFER_BINDING]: [GL.PIXEL_PACK_BUFFER],
115
- [GL.PIXEL_UNPACK_BUFFER_BINDING]: [GL.PIXEL_UNPACK_BUFFER]
116
- })[key];
117
-
118
- gl.bindBuffer(target, value);
114
+ const bindBuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {
115
+ const bindingMap: Partial<Record<GL, GL>> = {
116
+ [GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,
117
+ [GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,
118
+ [GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,
119
+ [GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,
120
+ [GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER
121
+ };
122
+ const glTarget = bindingMap[key];
123
+
124
+ gl.bindBuffer(glTarget, value);
119
125
  };
120
126
 
121
127
  // Utility
122
- function isArray(array) {
123
- return Array.isArray(array) || ArrayBuffer.isView(array);
128
+ function isArray(array: unknown): boolean {
129
+ return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));
124
130
  }
125
131
 
126
132
  // Map from WebGL parameter names to corresponding WebGL setter functions
@@ -128,29 +134,34 @@ function isArray(array) {
128
134
  // NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'
129
135
  export const GL_PARAMETER_SETTERS = {
130
136
  [GL.BLEND]: enable,
131
- [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),
137
+ [GL.BLEND_COLOR]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>
138
+ gl.blendColor(...value),
132
139
  [GL.BLEND_EQUATION_RGB]: 'blendEquation',
133
140
  [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',
134
141
  [GL.BLEND_SRC_RGB]: 'blendFunc',
135
142
  [GL.BLEND_DST_RGB]: 'blendFunc',
136
143
  [GL.BLEND_SRC_ALPHA]: 'blendFunc',
137
144
  [GL.BLEND_DST_ALPHA]: 'blendFunc',
138
- [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),
139
- [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),
145
+ [GL.COLOR_CLEAR_VALUE]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>
146
+ gl.clearColor(...value),
147
+ [GL.COLOR_WRITEMASK]: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
140
148
  [GL.CULL_FACE]: enable,
141
- [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),
149
+ [GL.CULL_FACE_MODE]: (gl: WebGLRenderingContext, value) => gl.cullFace(value),
142
150
  [GL.DEPTH_TEST]: enable,
143
- [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),
144
- [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),
145
- [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),
146
- [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),
151
+ [GL.DEPTH_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),
152
+ [GL.DEPTH_FUNC]: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),
153
+ [GL.DEPTH_RANGE]: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),
154
+ [GL.DEPTH_WRITEMASK]: (gl: WebGLRenderingContext, value) => gl.depthMask(value),
147
155
  [GL.DITHER]: enable,
148
156
  [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,
149
157
 
150
- [GL.CURRENT_PROGRAM]: (gl, value) => gl.useProgram(value),
151
- [GL.RENDERBUFFER_BINDING]: (gl, value) => gl.bindRenderbuffer(GL.RENDERBUFFER, value),
152
- [GL.TRANSFORM_FEEDBACK_BINDING]: (gl, value) => gl.bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),
153
- [GL.VERTEX_ARRAY_BINDING]: (gl, value) => gl.bindVertexArray(value),
158
+ [GL.CURRENT_PROGRAM]: (gl: WebGLRenderingContext, value) => gl.useProgram(value),
159
+ [GL.RENDERBUFFER_BINDING]: (gl: WebGLRenderingContext, value) =>
160
+ gl.bindRenderbuffer(GL.RENDERBUFFER, value),
161
+ [GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGLRenderingContext, value) =>
162
+ (gl as WebGL2RenderingContext).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),
163
+ [GL.VERTEX_ARRAY_BINDING]: (gl: WebGLRenderingContext, value) =>
164
+ (gl as WebGL2RenderingContext).bindVertexArray(value),
154
165
  // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
155
166
  [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,
156
167
  [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,
@@ -162,9 +173,9 @@ export const GL_PARAMETER_SETTERS = {
162
173
  [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,
163
174
  [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,
164
175
 
165
- [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),
176
+ [GL.FRONT_FACE]: (gl: WebGLRenderingContext, value) => gl.frontFace(value),
166
177
  [GL.GENERATE_MIPMAP_HINT]: hint,
167
- [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),
178
+ [GL.LINE_WIDTH]: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),
168
179
  [GL.POLYGON_OFFSET_FILL]: enable,
169
180
  [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',
170
181
  [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',
@@ -174,11 +185,13 @@ export const GL_PARAMETER_SETTERS = {
174
185
  [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',
175
186
  [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',
176
187
  [GL.SCISSOR_TEST]: enable,
177
- [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),
188
+ [GL.SCISSOR_BOX]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
178
189
  [GL.STENCIL_TEST]: enable,
179
- [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),
180
- [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),
181
- [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),
190
+ [GL.STENCIL_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),
191
+ [GL.STENCIL_WRITEMASK]: (gl: WebGLRenderingContext, value) =>
192
+ gl.stencilMaskSeparate(GL.FRONT, value),
193
+ [GL.STENCIL_BACK_WRITEMASK]: (gl: WebGLRenderingContext, value) =>
194
+ gl.stencilMaskSeparate(GL.BACK, value),
182
195
  [GL.STENCIL_FUNC]: 'stencilFuncFront',
183
196
  [GL.STENCIL_REF]: 'stencilFuncFront',
184
197
  [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',
@@ -191,7 +204,7 @@ export const GL_PARAMETER_SETTERS = {
191
204
  [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',
192
205
  [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',
193
206
  [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',
194
- [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),
207
+ [GL.VIEWPORT]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value),
195
208
 
196
209
  // WEBGL1 PIXEL PACK/UNPACK MODES
197
210
  [GL.PACK_ALIGNMENT]: pixelStorei,
@@ -212,80 +225,85 @@ export const GL_PARAMETER_SETTERS = {
212
225
  [GL.UNPACK_SKIP_IMAGES]: pixelStorei,
213
226
 
214
227
  // Function-style setters
215
- framebuffer: (gl, framebuffer) => {
228
+ framebuffer: (gl: WebGLRenderingContext, framebuffer) => {
216
229
  // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class
217
230
  // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.
218
231
  const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;
219
232
  return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
220
233
  },
221
- blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),
222
- blendColor: (gl, value) => gl.blendColor(...value),
223
- blendEquation: (gl, args) => {
224
- args = isArray(args) ? args : [args, args];
225
- gl.blendEquationSeparate(...args);
234
+ blend: (gl: WebGLRenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),
235
+ blendColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),
236
+ blendEquation: (gl: WebGLRenderingContext, args: number | [number, number]) => {
237
+ const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;
238
+ gl.blendEquationSeparate(...separateModes);
226
239
  },
227
- blendFunc: (gl, args) => {
228
- args = isArray(args) && args.length === 2 ? [...args, ...args] : args;
229
- gl.blendFuncSeparate(...args);
240
+ blendFunc: (gl: WebGLRenderingContext, args: [number, number] | [number, number, number, number]) => {
241
+ const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;
242
+ gl.blendFuncSeparate(...separateFuncs);
230
243
  },
231
244
 
232
- clearColor: (gl, value) => gl.clearColor(...value),
233
- clearDepth: (gl, value) => gl.clearDepth(value),
234
- clearStencil: (gl, value) => gl.clearStencil(value),
245
+ clearColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),
246
+ clearDepth: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),
247
+ clearStencil: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),
235
248
 
236
- colorMask: (gl, value) => gl.colorMask(...value),
249
+ colorMask: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
237
250
 
238
- cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),
239
- cullFace: (gl, value) => gl.cullFace(value),
251
+ cull: (gl: WebGLRenderingContext, value) =>
252
+ value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),
253
+ cullFace: (gl: WebGLRenderingContext, value) => gl.cullFace(value),
240
254
 
241
- depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),
242
- depthFunc: (gl, value) => gl.depthFunc(value),
243
- depthMask: (gl, value) => gl.depthMask(value),
244
- depthRange: (gl, value) => gl.depthRange(...value),
255
+ depthTest: (gl: WebGLRenderingContext, value) =>
256
+ value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),
257
+ depthFunc: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),
258
+ depthMask: (gl: WebGLRenderingContext, value) => gl.depthMask(value),
259
+ depthRange: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),
245
260
 
246
- dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),
261
+ dither: (gl: WebGLRenderingContext, value) =>
262
+ value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),
247
263
 
248
- derivativeHint: (gl, value) => {
264
+ derivativeHint: (gl: WebGLRenderingContext, value) => {
249
265
  // gl1: 'OES_standard_derivatives'
250
266
  gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);
251
267
  },
252
268
 
253
- frontFace: (gl, value) => gl.frontFace(value),
269
+ frontFace: (gl: WebGLRenderingContext, value) => gl.frontFace(value),
254
270
 
255
- mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),
271
+ mipmapHint: (gl: WebGLRenderingContext, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),
256
272
 
257
- lineWidth: (gl, value) => gl.lineWidth(value),
273
+ lineWidth: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),
258
274
 
259
- polygonOffsetFill: (gl, value) =>
275
+ polygonOffsetFill: (gl: WebGLRenderingContext, value) =>
260
276
  value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),
261
- polygonOffset: (gl, value) => gl.polygonOffset(...value),
277
+ polygonOffset: (gl: WebGLRenderingContext, value: [number, number]) => gl.polygonOffset(...value),
262
278
 
263
- sampleCoverage: (gl, value) => gl.sampleCoverage(...value),
279
+ sampleCoverage: (gl: WebGLRenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),
264
280
 
265
- scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),
266
- scissor: (gl, value) => gl.scissor(...value),
281
+ scissorTest: (gl: WebGLRenderingContext, value) =>
282
+ value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),
283
+ scissor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
267
284
 
268
- stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),
269
- stencilMask: (gl, value) => {
285
+ stencilTest: (gl: WebGLRenderingContext, value) =>
286
+ value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),
287
+ stencilMask: (gl: WebGLRenderingContext, value) => {
270
288
  value = isArray(value) ? value : [value, value];
271
289
  const [mask, backMask] = value;
272
290
  gl.stencilMaskSeparate(GL.FRONT, mask);
273
291
  gl.stencilMaskSeparate(GL.BACK, backMask);
274
292
  },
275
- stencilFunc: (gl, args) => {
293
+ stencilFunc: (gl: WebGLRenderingContext, args) => {
276
294
  args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
277
295
  const [func, ref, mask, backFunc, backRef, backMask] = args;
278
296
  gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);
279
297
  gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);
280
298
  },
281
- stencilOp: (gl, args) => {
299
+ stencilOp: (gl: WebGLRenderingContext, args) => {
282
300
  args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
283
301
  const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;
284
302
  gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
285
303
  gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);
286
304
  },
287
305
 
288
- viewport: (gl, value) => gl.viewport(...value)
306
+ viewport: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value)
289
307
  };
290
308
 
291
309
  function getValue(glEnum, values, cache) {
@@ -294,50 +312,50 @@ function getValue(glEnum, values, cache) {
294
312
 
295
313
  // COMPOSITE_WEBGL_PARAMETER_
296
314
  export const GL_COMPOSITE_PARAMETER_SETTERS = {
297
- blendEquation: (gl, values, cache) =>
315
+ blendEquation: (gl: WebGLRenderingContext, values, cache) =>
298
316
  gl.blendEquationSeparate(
299
317
  getValue(GL.BLEND_EQUATION_RGB, values, cache),
300
318
  getValue(GL.BLEND_EQUATION_ALPHA, values, cache)
301
319
  ),
302
- blendFunc: (gl, values, cache) =>
320
+ blendFunc: (gl: WebGLRenderingContext, values, cache) =>
303
321
  gl.blendFuncSeparate(
304
322
  getValue(GL.BLEND_SRC_RGB, values, cache),
305
323
  getValue(GL.BLEND_DST_RGB, values, cache),
306
324
  getValue(GL.BLEND_SRC_ALPHA, values, cache),
307
325
  getValue(GL.BLEND_DST_ALPHA, values, cache)
308
326
  ),
309
- polygonOffset: (gl, values, cache) =>
327
+ polygonOffset: (gl: WebGLRenderingContext, values, cache) =>
310
328
  gl.polygonOffset(
311
329
  getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),
312
330
  getValue(GL.POLYGON_OFFSET_UNITS, values, cache)
313
331
  ),
314
- sampleCoverage: (gl, values, cache) =>
332
+ sampleCoverage: (gl: WebGLRenderingContext, values, cache) =>
315
333
  gl.sampleCoverage(
316
334
  getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),
317
335
  getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)
318
336
  ),
319
- stencilFuncFront: (gl, values, cache) =>
337
+ stencilFuncFront: (gl: WebGLRenderingContext, values, cache) =>
320
338
  gl.stencilFuncSeparate(
321
339
  GL.FRONT,
322
340
  getValue(GL.STENCIL_FUNC, values, cache),
323
341
  getValue(GL.STENCIL_REF, values, cache),
324
342
  getValue(GL.STENCIL_VALUE_MASK, values, cache)
325
343
  ),
326
- stencilFuncBack: (gl, values, cache) =>
344
+ stencilFuncBack: (gl: WebGLRenderingContext, values, cache) =>
327
345
  gl.stencilFuncSeparate(
328
346
  GL.BACK,
329
347
  getValue(GL.STENCIL_BACK_FUNC, values, cache),
330
348
  getValue(GL.STENCIL_BACK_REF, values, cache),
331
349
  getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)
332
350
  ),
333
- stencilOpFront: (gl, values, cache) =>
351
+ stencilOpFront: (gl: WebGLRenderingContext, values, cache) =>
334
352
  gl.stencilOpSeparate(
335
353
  GL.FRONT,
336
354
  getValue(GL.STENCIL_FAIL, values, cache),
337
355
  getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),
338
356
  getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)
339
357
  ),
340
- stencilOpBack: (gl, values, cache) =>
358
+ stencilOpBack: (gl: WebGLRenderingContext, values, cache) =>
341
359
  gl.stencilOpSeparate(
342
360
  GL.BACK,
343
361
  getValue(GL.STENCIL_BACK_FAIL, values, cache),
@@ -352,36 +370,40 @@ type UpdateFunc = (params: Record<string, any>) => void;
352
370
  export const GL_HOOKED_SETTERS = {
353
371
  // GENERIC SETTERS
354
372
 
355
- enable: (update: UpdateFunc, capability) =>
373
+ enable: (update: UpdateFunc, capability: GL) =>
356
374
  update({
357
375
  [capability]: true
358
376
  }),
359
- disable: (update: UpdateFunc, capability) =>
377
+ disable: (update: UpdateFunc, capability: GL) =>
360
378
  update({
361
379
  [capability]: false
362
380
  }),
363
- pixelStorei: (update: UpdateFunc, pname, value) =>
381
+ pixelStorei: (update: UpdateFunc, pname: GL, value) =>
364
382
  update({
365
383
  [pname]: value
366
384
  }),
367
- hint: (update: UpdateFunc, pname, hint) =>
385
+ hint: (update: UpdateFunc, pname: GL, hint: GL) =>
368
386
  update({
369
387
  [pname]: hint
370
388
  }),
371
389
 
372
390
  // SPECIFIC SETTERS
373
- useProgram: (update: UpdateFunc, value) => update({
374
- [GL.CURRENT_PROGRAM]: value,
375
- }),
376
- bindRenderbuffer: (update: UpdateFunc, target, value) => update({
377
- [GL.RENDERBUFFER_BINDING]: value
378
- }),
379
- bindTransformFeedback: (update: UpdateFunc, target, value) => update({
380
- [GL.TRANSFORM_FEEDBACK_BINDING]: value
381
- }),
382
- bindVertexArray: (update: UpdateFunc, value) => update({
383
- [GL.VERTEX_ARRAY_BINDING]: value
384
- }),
391
+ useProgram: (update: UpdateFunc, value) =>
392
+ update({
393
+ [GL.CURRENT_PROGRAM]: value
394
+ }),
395
+ bindRenderbuffer: (update: UpdateFunc, target, value) =>
396
+ update({
397
+ [GL.RENDERBUFFER_BINDING]: value
398
+ }),
399
+ bindTransformFeedback: (update: UpdateFunc, target, value) =>
400
+ update({
401
+ [GL.TRANSFORM_FEEDBACK_BINDING]: value
402
+ }),
403
+ bindVertexArray: (update: UpdateFunc, value) =>
404
+ update({
405
+ [GL.VERTEX_ARRAY_BINDING]: value
406
+ }),
385
407
 
386
408
  bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {
387
409
  switch (target) {
@@ -399,13 +421,13 @@ export const GL_HOOKED_SETTERS = {
399
421
  }
400
422
  },
401
423
  bindBuffer: (update: UpdateFunc, target, buffer) => {
402
- const pname = ({
424
+ const pname = {
403
425
  [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],
404
426
  [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],
405
427
  [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],
406
428
  [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],
407
429
  [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]
408
- })[target];
430
+ }[target];
409
431
 
410
432
  if (pname) {
411
433
  return update({[pname]: buffer});
@@ -567,7 +589,7 @@ export const GL_HOOKED_SETTERS = {
567
589
 
568
590
  // GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT
569
591
 
570
- const isEnabled = (gl, key) => gl.isEnabled(key);
592
+ const isEnabled = (gl: WebGLRenderingContext, key) => gl.isEnabled(key);
571
593
 
572
594
  // Exceptions for any keys that cannot be queried by gl.getParameters
573
595
  export const GL_PARAMETER_GETTERS = {
@@ -0,0 +1,30 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ /**
5
+ * Stores luma.gl specific state associated with a context
6
+ */
7
+ export interface WebGLContextData {
8
+ _polyfilled: boolean;
9
+ _extensions: Record<string, any>;
10
+ }
11
+
12
+ /**
13
+ * Gets luma.gl specific state from a context
14
+ * @returns context state
15
+ */
16
+ export function getContextData(gl: WebGLRenderingContext): WebGLContextData {
17
+ // @ts-expect-error
18
+ const luma = gl.luma as WebGLContextData | null;
19
+ if (!luma) {
20
+ const contextState: WebGLContextData = {
21
+ _polyfilled: false,
22
+ _extensions: {}
23
+ };
24
+ // @ts-expect-error
25
+ gl.luma = contextState;
26
+ }
27
+
28
+ // @ts-expect-error
29
+ return gl.luma;
30
+ }
@@ -1,5 +1,8 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  /* eslint-disable no-inline-comments, max-len, camelcase */
2
- import GL from '@luma.gl/constants';
5
+ import {GL} from '@luma.gl/constants';
3
6
  import {isWebGL2} from '../context/webgl-checks';
4
7
 
5
8
  const OES_element_index = 'OES_element_index';
@@ -31,7 +34,7 @@ const WEBGL_PARAMETERS = {
31
34
  [GL.SAMPLES]: getWebGL2ValueOrZero,
32
35
 
33
36
  // WebGL2 extension context parameters
34
- [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {
37
+ [GL_GPU_DISJOINT_EXT]: (gl: WebGLRenderingContext, getParameter) => {
35
38
  const ext = isWebGL2(gl)
36
39
  ? gl.getExtension(EXT_disjoint_timer_query_webgl2)
37
40
  : gl.getExtension(EXT_disjoint_timer_query);
@@ -39,18 +42,19 @@ const WEBGL_PARAMETERS = {
39
42
  },
40
43
 
41
44
  // Extension fixed values
42
- [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {
45
+ [GL_UNMASKED_VENDOR_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {
43
46
  const ext = gl.getExtension(WEBGL_debug_renderer_info);
44
47
  return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);
45
48
  },
46
49
 
47
- [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {
50
+ [GL_UNMASKED_RENDERER_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {
48
51
  const ext = gl.getExtension(WEBGL_debug_renderer_info);
49
52
  return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);
50
53
  },
51
54
 
52
55
  // Extension LIMITS
53
- [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {
56
+ [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl: WebGLRenderingContext, getParameter) => {
57
+ // @ts-ignore TODO - store these on the device instance instead...
54
58
  const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||
55
59
  gl.getExtension('EXT_texture_filter_anisotropic');
56
60
  return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;
@@ -60,7 +64,7 @@ const WEBGL_PARAMETERS = {
60
64
  [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,
61
65
  [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,
62
66
  [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,
63
- [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {
67
+ [GL.MAX_COLOR_ATTACHMENTS]: (gl: WebGLRenderingContext, getParameter) => {
64
68
  if (!isWebGL2(gl)) {
65
69
  const ext = gl.getExtension(WEBGL_draw_buffers);
66
70
  return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;
@@ -108,7 +112,7 @@ const WEBGL_PARAMETERS = {
108
112
 
109
113
  // A "replacement" gl.getParameter that accepts "enums" from extensions and WebGL2
110
114
  // and returns reasonably safe defaults
111
- export function getParameterPolyfill(gl, originalGetParameter, pname) {
115
+ export function getParameterPolyfill(gl: WebGLRenderingContext, originalGetParameter, pname) {
112
116
  // Return mock limits (usually 0) for WebGL2 constants to ensure these
113
117
  // can be queries without error
114
118
  const limit = WEBGL_PARAMETERS[pname];
@@ -1,3 +1,6 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // WebGL1/WebGL2 extension polyfill support
2
5
  //
3
6
  // Provides a function that creates polyfills for WebGL2 functions based
@@ -7,17 +10,17 @@
7
10
  // This is intended to be a stand-alone file with minimal dependencies,
8
11
  // easy to reuse or repurpose in other projects.
9
12
 
10
- import {assert} from '@luma.gl/api';
13
+ import {assert} from '@luma.gl/core';
11
14
  import {polyfillVertexArrayObject} from './polyfill-vertex-array-object';
12
15
 
13
16
  import {WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES} from './polyfill-table';
14
- import {getContextState} from '../context/context-state';
17
+ import {getContextData} from './context-data';
15
18
 
16
19
  /**
17
20
  * Registers extensions, polyfills or mock functions for extensions in the polyfills list
18
21
  */
19
22
  export function polyfillContext(gl: WebGLRenderingContext): WebGL2RenderingContext {
20
- const contextState = getContextState(gl);
23
+ const contextState = getContextData(gl);
21
24
 
22
25
  if (!contextState._polyfilled) {
23
26
  polyfillVertexArrayObject(gl);
@@ -32,19 +35,17 @@ export function polyfillContext(gl: WebGLRenderingContext): WebGL2RenderingConte
32
35
  }
33
36
 
34
37
  function initializeExtensions(gl: WebGLRenderingContext): void {
35
- const contextState = getContextState(gl);
38
+ const contextState = getContextData(gl);
36
39
  // `getSupportedExtensions` can return null when context is lost.
37
40
  const EXTENSIONS = gl.getSupportedExtensions() || [];
38
41
  for (const extensionName of EXTENSIONS) {
39
42
  const extension = gl.getExtension(extensionName);
40
43
  contextState._extensions[extensionName] = extension;
41
- // TODO - this looks like a mistake?
42
- contextState[extensionName] = extension;
43
44
  }
44
45
  }
45
46
 
46
47
  function installPolyfills(gl: WebGLRenderingContext, polyfills): void {
47
- const contextState = getContextState(gl);
48
+ const contextState = getContextData(gl);
48
49
  for (const extension of Object.getOwnPropertyNames(polyfills)) {
49
50
  if (extension !== 'overrides') {
50
51
  polyfillExtension(gl, {extension, target: contextState, target2: gl});
@@ -65,7 +66,7 @@ function polyfillExtension(gl: WebGLRenderingContext, {extension, target, target
65
66
  for (const key of Object.keys(defaults)) {
66
67
  const extKey = `${key}${suffix}`;
67
68
 
68
- let polyfill = null;
69
+ let polyfill: Function | null = null;
69
70
  if (key === 'meta') {
70
71
  // ignore
71
72
  } else if (typeof gl[key] === 'function') {
@@ -86,7 +87,7 @@ function polyfillExtension(gl: WebGLRenderingContext, {extension, target, target
86
87
  }
87
88
 
88
89
  /** Install simple overrides (mostly get* functions) */
89
- function installOverrides(gl, {target, target2}) {
90
+ function installOverrides(gl: WebGLRenderingContext, {target, target2}) {
90
91
  Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach((key) => {
91
92
  if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {
92
93
  // install an override, if no implementation was detected