@luma.gl/webgl 9.0.0-alpha.2 → 9.0.0-alpha.21

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 (468) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +11 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +17 -35
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts +2 -2
  6. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/renderbuffer-formats.js +2 -7
  8. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
  10. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  11. package/dist/adapter/converters/sampler-parameters.js +19 -55
  12. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  13. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  14. package/dist/adapter/converters/texture-formats.js +13 -66
  15. package/dist/adapter/converters/texture-formats.js.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  17. package/dist/adapter/converters/vertex-formats.js +2 -8
  18. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/device-features.js +13 -20
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-limits.js +1 -4
  23. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  24. package/dist/adapter/device-helpers/get-device-info.js +8 -10
  25. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  26. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  27. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  28. package/dist/adapter/helpers/attribute-utils.js +0 -17
  29. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  31. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  32. package/dist/adapter/helpers/get-shader-info.js +25 -0
  33. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  34. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  36. package/dist/adapter/helpers/get-shader-layout.js +41 -67
  37. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  38. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  39. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  40. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  41. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  42. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  43. package/dist/adapter/helpers/set-uniform.js +1 -31
  44. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  45. package/dist/adapter/helpers/uniforms.d.ts +1 -1
  46. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  47. package/dist/adapter/helpers/uniforms.js +4 -14
  48. package/dist/adapter/helpers/uniforms.js.map +1 -1
  49. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  50. package/dist/adapter/objects/constants-to-keys.js +0 -7
  51. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  52. package/dist/adapter/objects/webgl-renderbuffer.d.ts +3 -3
  53. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  54. package/dist/adapter/objects/webgl-renderbuffer.js +6 -22
  55. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  56. package/dist/adapter/objects/webgl-resource.d.ts +3 -5
  57. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  58. package/dist/adapter/objects/webgl-resource.js +15 -68
  59. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  60. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +6 -6
  61. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  62. package/dist/adapter/objects/webgl-vertex-array-object.js +7 -17
  63. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  64. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  65. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-buffer.js +18 -49
  67. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  68. package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
  69. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-command-buffer.js +3 -18
  71. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  72. package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -3
  73. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-command-encoder.js +2 -15
  75. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  76. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  77. package/dist/adapter/resources/webgl-framebuffer.d.ts +16 -16
  78. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-framebuffer.js +17 -75
  80. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -3
  82. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-render-pass.js +3 -8
  84. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  85. package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
  86. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-render-pipeline.js +51 -140
  88. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  89. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  90. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-sampler.js +5 -13
  92. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  93. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  94. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-shader.js +8 -21
  96. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  97. package/dist/adapter/resources/webgl-texture.d.ts +26 -26
  98. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-texture.js +66 -183
  100. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  101. package/dist/adapter/webgl-canvas-context.d.ts +3 -3
  102. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  103. package/dist/adapter/webgl-canvas-context.js +6 -19
  104. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  105. package/dist/adapter/webgl-device.d.ts +53 -37
  106. package/dist/adapter/webgl-device.d.ts.map +1 -1
  107. package/dist/adapter/webgl-device.js +108 -109
  108. package/dist/adapter/webgl-device.js.map +1 -1
  109. package/dist/classic/accessor.d.ts +1 -1
  110. package/dist/classic/accessor.d.ts.map +1 -1
  111. package/dist/classic/accessor.js +12 -36
  112. package/dist/classic/accessor.js.map +1 -1
  113. package/dist/classic/buffer.d.ts +3 -4
  114. package/dist/classic/buffer.d.ts.map +1 -1
  115. package/dist/classic/buffer.js +30 -87
  116. package/dist/classic/buffer.js.map +1 -1
  117. package/dist/classic/typed-array-utils.d.ts +1 -1
  118. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  119. package/dist/classic/typed-array-utils.js +0 -20
  120. package/dist/classic/typed-array-utils.js.map +1 -1
  121. package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
  122. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  123. package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
  124. package/dist/context/context/create-browser-context.js.map +1 -0
  125. package/dist/context/context/create-headless-context.d.ts +9 -0
  126. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  127. package/dist/context/context/create-headless-context.js +42 -0
  128. package/dist/context/context/create-headless-context.js.map +1 -0
  129. package/dist/context/context/webgl-checks.js +0 -3
  130. package/dist/context/context/webgl-checks.js.map +1 -1
  131. package/dist/context/debug/spector.d.ts +1 -0
  132. package/dist/context/debug/spector.d.ts.map +1 -1
  133. package/dist/context/debug/spector.js +7 -19
  134. package/dist/context/debug/spector.js.map +1 -1
  135. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  136. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  137. package/dist/context/debug/webgl-developer-tools.js +8 -32
  138. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  139. package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
  140. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  141. package/dist/context/parameters/unified-parameter-api.js +8 -18
  142. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  143. package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
  144. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  145. package/dist/context/parameters/webgl-parameter-tables.js +16 -34
  146. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  147. package/dist/context/polyfill/context-data.d.ts +13 -0
  148. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  149. package/dist/context/polyfill/context-data.js +12 -0
  150. package/dist/context/polyfill/context-data.js.map +1 -0
  151. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  152. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  154. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  155. package/dist/context/polyfill/polyfill-context.js +20 -28
  156. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  157. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  158. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  159. package/dist/context/polyfill/polyfill-table.js +8 -30
  160. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  161. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  162. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  163. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  164. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  165. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  166. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  167. package/dist/context/state-tracker/track-context-state.js +15 -50
  168. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  169. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  170. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  171. package/dist/context/state-tracker/with-parameters.js +7 -9
  172. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  173. package/dist/dist.dev.js +9204 -0
  174. package/dist/index.cjs +5948 -0
  175. package/dist/index.d.ts +19 -19
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +24 -26
  178. package/dist/index.js.map +1 -1
  179. package/dist/types/webgl.d.ts +8 -7
  180. package/dist/types/webgl.d.ts.map +1 -1
  181. package/dist/types/webgl.js.map +1 -1
  182. package/dist/types.js.map +1 -1
  183. package/dist.min.js +36 -0
  184. package/package.json +18 -9
  185. package/src/.DS_Store +0 -0
  186. package/src/adapter/.DS_Store +0 -0
  187. package/src/adapter/converters/device-parameters.ts +45 -16
  188. package/src/adapter/converters/renderbuffer-formats.ts +1 -3
  189. package/src/adapter/converters/sampler-parameters.ts +18 -7
  190. package/src/adapter/converters/texture-formats.ts +18 -16
  191. package/src/adapter/converters/vertex-formats.ts +1 -0
  192. package/src/adapter/device-helpers/device-features.ts +9 -2
  193. package/src/adapter/device-helpers/device-limits.ts +1 -1
  194. package/src/adapter/device-helpers/get-device-info.ts +12 -8
  195. package/src/adapter/helpers/get-shader-info.ts +37 -0
  196. package/src/adapter/helpers/get-shader-layout.ts +59 -37
  197. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  198. package/src/adapter/helpers/set-uniform.ts +3 -1
  199. package/src/adapter/helpers/uniforms.ts +21 -10
  200. package/src/adapter/objects/constants-to-keys.ts +4 -1
  201. package/src/adapter/objects/webgl-renderbuffer.ts +8 -8
  202. package/src/adapter/objects/webgl-resource.ts +8 -13
  203. package/src/adapter/objects/webgl-vertex-array-object.ts +10 -10
  204. package/src/adapter/resources/webgl-buffer.ts +16 -16
  205. package/src/adapter/resources/webgl-command-buffer.ts +3 -3
  206. package/src/adapter/resources/webgl-command-encoder.ts +8 -8
  207. package/src/adapter/resources/webgl-external-texture.ts +1 -1
  208. package/src/adapter/resources/webgl-framebuffer.ts +36 -33
  209. package/src/adapter/resources/webgl-render-pass.ts +4 -3
  210. package/src/adapter/resources/webgl-render-pipeline.ts +89 -77
  211. package/src/adapter/resources/webgl-sampler.ts +12 -6
  212. package/src/adapter/resources/webgl-shader.ts +10 -9
  213. package/src/adapter/resources/webgl-texture.ts +55 -45
  214. package/src/adapter/webgl-canvas-context.ts +8 -9
  215. package/src/adapter/webgl-device.ts +153 -69
  216. package/src/classic/accessor.ts +2 -15
  217. package/src/classic/buffer.ts +18 -25
  218. package/src/classic/typed-array-utils.ts +4 -2
  219. package/src/context/.DS_Store +0 -0
  220. package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
  221. package/src/context/context/create-headless-context.ts +48 -0
  222. package/src/context/debug/spector.ts +6 -5
  223. package/src/context/debug/webgl-developer-tools.ts +13 -13
  224. package/src/context/parameters/unified-parameter-api.ts +18 -12
  225. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  226. package/src/context/polyfill/context-data.ts +27 -0
  227. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  228. package/src/context/polyfill/polyfill-context.ts +6 -8
  229. package/src/context/polyfill/polyfill-table.ts +16 -14
  230. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  231. package/src/context/state-tracker/track-context-state.ts +13 -12
  232. package/src/context/state-tracker/with-parameters.ts +8 -2
  233. package/src/index.ts +28 -26
  234. package/src/types/webgl.ts +10 -7
  235. package/dist/bundle.d.ts +0 -2
  236. package/dist/bundle.d.ts.map +0 -1
  237. package/dist/bundle.js +0 -5
  238. package/dist/bundle.js.map +0 -1
  239. package/dist/context/context/context-state.d.ts +0 -18
  240. package/dist/context/context/context-state.d.ts.map +0 -1
  241. package/dist/context/context/context-state.js +0 -26
  242. package/dist/context/context/context-state.js.map +0 -1
  243. package/dist/context/context/create-context.d.ts.map +0 -1
  244. package/dist/context/context/create-context.js.map +0 -1
  245. package/dist/context/context/device-pixels.d.ts +0 -25
  246. package/dist/context/context/device-pixels.d.ts.map +0 -1
  247. package/dist/context/context/device-pixels.js +0 -98
  248. package/dist/context/context/device-pixels.js.map +0 -1
  249. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  250. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  251. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  252. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  253. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  254. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  255. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  256. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  257. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  258. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  259. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  260. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  261. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  262. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  263. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  264. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  265. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  266. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  267. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  268. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  270. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  271. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  272. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  273. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  274. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  275. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  276. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  277. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  278. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  279. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  280. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  281. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  282. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  283. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  284. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  285. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  286. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  287. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  288. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  289. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  290. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  291. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  292. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  293. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  294. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  295. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  296. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  297. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  298. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  299. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  300. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  301. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  302. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  303. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  304. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  305. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  306. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  307. package/dist/es5/adapter/webgl-device.js +0 -399
  308. package/dist/es5/adapter/webgl-device.js.map +0 -1
  309. package/dist/es5/bundle.js +0 -7
  310. package/dist/es5/bundle.js.map +0 -1
  311. package/dist/es5/classic/accessor.js +0 -181
  312. package/dist/es5/classic/accessor.js.map +0 -1
  313. package/dist/es5/classic/buffer.js +0 -470
  314. package/dist/es5/classic/buffer.js.map +0 -1
  315. package/dist/es5/classic/typed-array-utils.js +0 -126
  316. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  317. package/dist/es5/context/context/context-state.js +0 -31
  318. package/dist/es5/context/context/context-state.js.map +0 -1
  319. package/dist/es5/context/context/create-context.js +0 -69
  320. package/dist/es5/context/context/create-context.js.map +0 -1
  321. package/dist/es5/context/context/device-pixels.js +0 -115
  322. package/dist/es5/context/context/device-pixels.js.map +0 -1
  323. package/dist/es5/context/context/webgl-checks.js +0 -54
  324. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  325. package/dist/es5/context/debug/spector.js +0 -133
  326. package/dist/es5/context/debug/spector.js.map +0 -1
  327. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  328. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  329. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  330. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  331. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  332. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  333. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  334. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  335. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  336. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  337. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  338. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  339. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  340. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  341. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  342. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  343. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  344. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  345. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  346. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  347. package/dist/es5/index.js +0 -276
  348. package/dist/es5/index.js.map +0 -1
  349. package/dist/es5/init.js +0 -10
  350. package/dist/es5/init.js.map +0 -1
  351. package/dist/es5/types/webgl.js +0 -6
  352. package/dist/es5/types/webgl.js.map +0 -1
  353. package/dist/es5/types.js +0 -2
  354. package/dist/es5/types.js.map +0 -1
  355. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  356. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  357. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  358. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  359. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  360. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  361. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  362. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  363. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  364. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  365. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  366. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  367. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  368. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  369. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  370. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  371. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  372. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  373. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  374. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  375. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  376. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  377. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  378. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  379. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  380. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  381. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  382. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  383. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  384. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  385. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  386. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  387. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  388. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  389. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  390. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  391. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  392. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  393. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  394. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  395. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  396. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  397. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  398. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  399. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  400. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  401. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  402. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  403. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  404. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  405. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  406. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  407. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  408. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  409. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  410. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  411. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  412. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  413. package/dist/esm/adapter/webgl-device.js +0 -280
  414. package/dist/esm/adapter/webgl-device.js.map +0 -1
  415. package/dist/esm/bundle.js +0 -5
  416. package/dist/esm/bundle.js.map +0 -1
  417. package/dist/esm/classic/accessor.js +0 -144
  418. package/dist/esm/classic/accessor.js.map +0 -1
  419. package/dist/esm/classic/buffer.js +0 -384
  420. package/dist/esm/classic/buffer.js.map +0 -1
  421. package/dist/esm/classic/typed-array-utils.js +0 -112
  422. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  423. package/dist/esm/context/context/context-state.js +0 -26
  424. package/dist/esm/context/context/context-state.js.map +0 -1
  425. package/dist/esm/context/context/create-context.js +0 -49
  426. package/dist/esm/context/context/create-context.js.map +0 -1
  427. package/dist/esm/context/context/device-pixels.js +0 -98
  428. package/dist/esm/context/context/device-pixels.js.map +0 -1
  429. package/dist/esm/context/context/webgl-checks.js +0 -34
  430. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  431. package/dist/esm/context/debug/spector.js +0 -76
  432. package/dist/esm/context/debug/spector.js.map +0 -1
  433. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  434. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  435. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  436. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  437. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  438. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  439. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  440. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  441. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  442. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  443. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  444. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  445. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  446. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  447. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  448. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  449. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  450. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  451. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  452. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  453. package/dist/esm/index.js +0 -27
  454. package/dist/esm/index.js.map +0 -1
  455. package/dist/esm/init.js +0 -4
  456. package/dist/esm/init.js.map +0 -1
  457. package/dist/esm/types/webgl.js +0 -2
  458. package/dist/esm/types/webgl.js.map +0 -1
  459. package/dist/esm/types.js +0 -2
  460. package/dist/esm/types.js.map +0 -1
  461. package/dist/init.d.ts +0 -2
  462. package/dist/init.d.ts.map +0 -1
  463. package/dist/init.js +0 -4
  464. package/dist/init.js.map +0 -1
  465. package/src/bundle.ts +0 -4
  466. package/src/context/context/context-state.ts +0 -41
  467. package/src/context/context/device-pixels.ts +0 -152
  468. package/src/init.ts +0 -4
@@ -23,6 +23,7 @@ let spector: any = null;
23
23
  let initialized: boolean = false;
24
24
 
25
25
  declare global {
26
+ // eslint-disable-next-line no-var
26
27
  var SPECTOR: any;
27
28
  }
28
29
 
@@ -32,7 +33,7 @@ export async function loadSpectorJS(props?: SpectorProps) {
32
33
  try {
33
34
  await loadScript(SPECTOR_CDN_URL);
34
35
  } catch(error) {
35
- log.warn(error)
36
+ log.warn(String(error))
36
37
  }
37
38
  }
38
39
  }
@@ -44,7 +45,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
44
45
  }
45
46
 
46
47
  if (!spector && globalThis.SPECTOR) {
47
- log.probe(LOG_LEVEL, "SPECTOR found and initialized")();
48
+ log.probe(LOG_LEVEL, 'SPECTOR found and initialized')();
48
49
  spector = new globalThis.SPECTOR.Spector();
49
50
  if (globalThis.luma) {
50
51
  globalThis.luma.spector = spector;
@@ -61,9 +62,9 @@ export function initializeSpectorJS(props?: SpectorProps) {
61
62
  // enables recording some extra information merged in the capture like texture memory sizes and formats
62
63
  spector.spyCanvases();
63
64
  // A callback when results are ready
64
- spector?.onCaptureStarted.add((capture: unknown) => log.info(`Spector capture started:`, capture)());
65
+ spector?.onCaptureStarted.add((capture: unknown) => log.info('Spector capture started:', capture)());
65
66
  spector?.onCapture.add((capture: unknown) => {
66
- log.info(`Spector capture complete:`, capture)();
67
+ log.info('Spector capture complete:', capture)();
67
68
  // Use undocumented Spector API to open the UI with our capture
68
69
  // See https://github.com/BabylonJS/Spector.js/blob/767ad1195a25b85a85c381f400eb50a979239eca/src/spector.ts#L124
69
70
  spector?.getResultUI()
@@ -82,7 +83,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
82
83
  // spector?.captureCanvas(props?.canvas);
83
84
  spector?.startCapture(props?.canvas, 500); // 500 commands
84
85
  new Promise(resolve => setTimeout(resolve, 2000)).then(_ => {
85
- log.info(`Spector capture stopped after 2 seconds`)();
86
+ log.info('Spector capture stopped after 2 seconds')();
86
87
  spector?.stopCapture();
87
88
  // spector?.displayUI();
88
89
  });
@@ -1,5 +1,5 @@
1
1
  // luma.gl, MIT license
2
- import {log, loadScript} from '@luma.gl/api/';
2
+ import {log, loadScript} from '@luma.gl/api';
3
3
  import GL from '@luma.gl/constants';
4
4
 
5
5
  const WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
@@ -11,12 +11,12 @@ type DebugContextProps = {
11
11
  webgl2?: boolean;
12
12
  };
13
13
 
14
- const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
15
- debug: true,
16
- throwOnError: false,
17
- break: undefined,
18
- webgl2: false,
19
- }
14
+ // const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
15
+ // debug: true,
16
+ // throwOnError: false,
17
+ // break: [],
18
+ // webgl2: false,
19
+ // }
20
20
 
21
21
  // Helper to get shared context data
22
22
  function getContextData(gl: any) {
@@ -25,6 +25,7 @@ function getContextData(gl: any) {
25
25
  }
26
26
 
27
27
  declare global {
28
+ // eslint-disable-next-line no-var
28
29
  var WebGLDebugUtils: any;
29
30
  }
30
31
 
@@ -36,7 +37,6 @@ declare global {
36
37
  */
37
38
  export async function loadWebGLDeveloperTools(): Promise<void> {
38
39
  if (!globalThis.WebGLDebugUtils) {
39
- // @ts-expect-error Developer tools expects global to be set
40
40
  globalThis.global = globalThis.global || globalThis;
41
41
  // @ts-expect-error Developer tools expects global to be set
42
42
  globalThis.global.module = {};
@@ -46,7 +46,7 @@ export async function loadWebGLDeveloperTools(): Promise<void> {
46
46
 
47
47
  // Returns (a potentially new) context with debug instrumentation turned off or on.
48
48
  // Note that this actually returns a new context
49
- export function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext {
49
+ export function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext | null {
50
50
  // Return null to ensure we don't try to create a context in this case (TODO what case is that?)
51
51
  if (!gl) {
52
52
  return null;
@@ -133,16 +133,16 @@ function onGLError(props: DebugContextProps, err, functionName: string, args: an
133
133
 
134
134
  // Don't generate function string until it is needed
135
135
  function onValidateGLFunc(props: DebugContextProps, functionName: string, functionArgs: any[]): void {
136
- let functionString: string;
136
+ let functionString: string = '';
137
137
  if (log.level >= 1) {
138
138
  functionString = getFunctionString(functionName, functionArgs);
139
139
  log.log(1, functionString)();
140
140
  }
141
141
 
142
- if (props.break) {
142
+ // If array of breakpoint strings supplied, check if any of them is contained in current GL function
143
+ if (props.break && props.break.length > 0) {
143
144
  functionString = functionString || getFunctionString(functionName, functionArgs);
144
- const isBreakpoint =
145
- props.break && props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);
145
+ const isBreakpoint = props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);
146
146
  if (isBreakpoint) {
147
147
  debugger; // eslint-disable-line
148
148
  }
@@ -10,8 +10,7 @@ import {
10
10
  GL_PARAMETER_GETTERS
11
11
  } from './webgl-parameter-tables';
12
12
 
13
- import {isWebGL} from '../context/webgl-checks';
14
- import WebGLDevice from '../../adapter/webgl-device';
13
+ import {WebGLDevice} from '../../adapter/webgl-device';
15
14
 
16
15
  export type {GLParameters};
17
16
 
@@ -21,7 +20,10 @@ export type {GLParameters};
21
20
  * @note requires a `cache` object to be set on the context (gl.state.cache)
22
21
  * This object is used to fill in any missing values for composite setter functions
23
22
  */
24
- export function setParameters(device: Device | WebGLRenderingContext, parameters: GLParameters): void {
23
+ export function setParameters(
24
+ device: Device | WebGLRenderingContext,
25
+ parameters: GLParameters
26
+ ): void {
25
27
  const webglDevice = WebGLDevice.attach(device);
26
28
  const gl = webglDevice.gl;
27
29
 
@@ -74,7 +76,10 @@ export function setParameters(device: Device | WebGLRenderingContext, parameters
74
76
 
75
77
  /**
76
78
  * Reads the entire WebGL state from a context
77
- * @returns - a newly created map, with values keyed by GL parameters
79
+
80
+ // default to querying all parameters
81
+
82
+ * @returns - a newly created map, with values keyed by GL parameters
78
83
  *
79
84
  * @note Copies the state from a context (gl.getParameter should not be overriden)
80
85
  * Reads the entire WebGL state from a context
@@ -83,13 +88,13 @@ export function setParameters(device: Device | WebGLRenderingContext, parameters
83
88
  * considered a very slow operation, to be used only if/when a context already manipulated
84
89
  * by external code needs to be synchronized for the first time
85
90
  */
86
- export function getParameters(gl: WebGLRenderingContext, parameters?: Record<keyof GLParameters, any>): GLParameters;
87
- export function getParameters(gl: WebGLRenderingContext, parameters?: (keyof GLParameters)[]): GLParameters;
88
- export function getParameters(gl: WebGLRenderingContext, parameters: keyof GLParameters): GLParameters;
91
+ export function getParameters(
92
+ device: Device | WebGLRenderingContext,
93
+ parameters: keyof GLParameters | (keyof GLParameters)[] | GLParameters = GL_PARAMETER_DEFAULTS
94
+ ): GLParameters {
95
+ const webglDevice = WebGLDevice.attach(device);
96
+ const gl = webglDevice.gl;
89
97
 
90
- export function getParameters(gl, parameters) {
91
- // default to querying all parameters
92
- parameters = parameters || GL_PARAMETER_DEFAULTS;
93
98
  // support both arrays of parameters and objects (keys represent parameters)
94
99
 
95
100
  if (typeof parameters === 'number') {
@@ -115,14 +120,15 @@ export function getParameters(gl, parameters) {
115
120
  * NOT the canvas size dimensions, so they will have to be properly set after
116
121
  * calling this function.
117
122
  */
118
- export function resetParameters(gl: WebGLRenderingContext): void {
119
- setParameters(gl, GL_PARAMETER_DEFAULTS);
123
+ export function resetParameters(device: Device | WebGLRenderingContext): void {
124
+ setParameters(device, GL_PARAMETER_DEFAULTS);
120
125
  }
121
126
 
122
127
  // Helpers
123
128
 
124
129
  // Returns true if given object is empty, false otherwise.
125
130
  function isObjectEmpty(object) {
131
+ // @ts-ignore dummy key variable
126
132
  for (const key in object) {
127
133
  return false;
128
134
  }
@@ -91,11 +91,13 @@ export const GL_PARAMETER_DEFAULTS: GLParameters = {
91
91
 
92
92
  // SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API
93
93
 
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);
94
+ const enable = (gl: WebGLRenderingContext, value: unknown, key: GL) =>
95
+ value ? gl.enable(key) : gl.disable(key);
96
+ const hint = (gl: WebGLRenderingContext, value: GL, key: GL) => gl.hint(key, value);
97
+ const pixelStorei = (gl: WebGLRenderingContext, value: number | boolean, key: GL) =>
98
+ gl.pixelStorei(key, value);
97
99
 
98
- const bindFramebuffer = (gl, value, key) => {
100
+ const bindFramebuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {
99
101
  let target;
100
102
  if (key === GL.FRAMEBUFFER_BINDING) {
101
103
  target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;
@@ -106,21 +108,22 @@ const bindFramebuffer = (gl, value, key) => {
106
108
  return gl.bindFramebuffer(target, value);
107
109
  };
108
110
 
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];
111
+ const bindBuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {
112
+ const bindingMap: Partial<Record<GL, GL>> = {
113
+ [GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,
114
+ [GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,
115
+ [GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,
116
+ [GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,
117
+ [GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER
118
+ };
119
+ const target = bindingMap[key];
117
120
 
118
121
  gl.bindBuffer(target, value);
119
122
  };
120
123
 
121
124
  // Utility
122
- function isArray(array) {
123
- return Array.isArray(array) || ArrayBuffer.isView(array);
125
+ function isArray(array: unknown): boolean {
126
+ return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));
124
127
  }
125
128
 
126
129
  // Map from WebGL parameter names to corresponding WebGL setter functions
@@ -128,29 +131,34 @@ function isArray(array) {
128
131
  // NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'
129
132
  export const GL_PARAMETER_SETTERS = {
130
133
  [GL.BLEND]: enable,
131
- [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),
134
+ [GL.BLEND_COLOR]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>
135
+ gl.blendColor(...value),
132
136
  [GL.BLEND_EQUATION_RGB]: 'blendEquation',
133
137
  [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',
134
138
  [GL.BLEND_SRC_RGB]: 'blendFunc',
135
139
  [GL.BLEND_DST_RGB]: 'blendFunc',
136
140
  [GL.BLEND_SRC_ALPHA]: 'blendFunc',
137
141
  [GL.BLEND_DST_ALPHA]: 'blendFunc',
138
- [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),
139
- [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),
142
+ [GL.COLOR_CLEAR_VALUE]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>
143
+ gl.clearColor(...value),
144
+ [GL.COLOR_WRITEMASK]: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
140
145
  [GL.CULL_FACE]: enable,
141
- [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),
146
+ [GL.CULL_FACE_MODE]: (gl: WebGLRenderingContext, value) => gl.cullFace(value),
142
147
  [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),
148
+ [GL.DEPTH_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),
149
+ [GL.DEPTH_FUNC]: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),
150
+ [GL.DEPTH_RANGE]: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),
151
+ [GL.DEPTH_WRITEMASK]: (gl: WebGLRenderingContext, value) => gl.depthMask(value),
147
152
  [GL.DITHER]: enable,
148
153
  [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,
149
154
 
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),
155
+ [GL.CURRENT_PROGRAM]: (gl: WebGLRenderingContext, value) => gl.useProgram(value),
156
+ [GL.RENDERBUFFER_BINDING]: (gl: WebGLRenderingContext, value) =>
157
+ gl.bindRenderbuffer(GL.RENDERBUFFER, value),
158
+ [GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGLRenderingContext, value) =>
159
+ (gl as WebGL2RenderingContext).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),
160
+ [GL.VERTEX_ARRAY_BINDING]: (gl: WebGLRenderingContext, value) =>
161
+ (gl as WebGL2RenderingContext).bindVertexArray(value),
154
162
  // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
155
163
  [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,
156
164
  [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,
@@ -162,9 +170,9 @@ export const GL_PARAMETER_SETTERS = {
162
170
  [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,
163
171
  [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,
164
172
 
165
- [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),
173
+ [GL.FRONT_FACE]: (gl: WebGLRenderingContext, value) => gl.frontFace(value),
166
174
  [GL.GENERATE_MIPMAP_HINT]: hint,
167
- [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),
175
+ [GL.LINE_WIDTH]: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),
168
176
  [GL.POLYGON_OFFSET_FILL]: enable,
169
177
  [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',
170
178
  [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',
@@ -174,11 +182,13 @@ export const GL_PARAMETER_SETTERS = {
174
182
  [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',
175
183
  [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',
176
184
  [GL.SCISSOR_TEST]: enable,
177
- [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),
185
+ [GL.SCISSOR_BOX]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
178
186
  [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),
187
+ [GL.STENCIL_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),
188
+ [GL.STENCIL_WRITEMASK]: (gl: WebGLRenderingContext, value) =>
189
+ gl.stencilMaskSeparate(GL.FRONT, value),
190
+ [GL.STENCIL_BACK_WRITEMASK]: (gl: WebGLRenderingContext, value) =>
191
+ gl.stencilMaskSeparate(GL.BACK, value),
182
192
  [GL.STENCIL_FUNC]: 'stencilFuncFront',
183
193
  [GL.STENCIL_REF]: 'stencilFuncFront',
184
194
  [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',
@@ -191,7 +201,7 @@ export const GL_PARAMETER_SETTERS = {
191
201
  [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',
192
202
  [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',
193
203
  [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',
194
- [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),
204
+ [GL.VIEWPORT]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value),
195
205
 
196
206
  // WEBGL1 PIXEL PACK/UNPACK MODES
197
207
  [GL.PACK_ALIGNMENT]: pixelStorei,
@@ -212,80 +222,85 @@ export const GL_PARAMETER_SETTERS = {
212
222
  [GL.UNPACK_SKIP_IMAGES]: pixelStorei,
213
223
 
214
224
  // Function-style setters
215
- framebuffer: (gl, framebuffer) => {
225
+ framebuffer: (gl: WebGLRenderingContext, framebuffer) => {
216
226
  // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class
217
227
  // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.
218
228
  const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;
219
229
  return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
220
230
  },
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);
231
+ blend: (gl: WebGLRenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),
232
+ blendColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),
233
+ blendEquation: (gl: WebGLRenderingContext, args: number | [number, number]) => {
234
+ const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;
235
+ gl.blendEquationSeparate(...separateModes);
226
236
  },
227
- blendFunc: (gl, args) => {
228
- args = isArray(args) && args.length === 2 ? [...args, ...args] : args;
229
- gl.blendFuncSeparate(...args);
237
+ blendFunc: (gl: WebGLRenderingContext, args: [number, number] | [number, number, number, number]) => {
238
+ const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;
239
+ gl.blendFuncSeparate(...separateFuncs);
230
240
  },
231
241
 
232
- clearColor: (gl, value) => gl.clearColor(...value),
233
- clearDepth: (gl, value) => gl.clearDepth(value),
234
- clearStencil: (gl, value) => gl.clearStencil(value),
242
+ clearColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),
243
+ clearDepth: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),
244
+ clearStencil: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),
235
245
 
236
- colorMask: (gl, value) => gl.colorMask(...value),
246
+ colorMask: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
237
247
 
238
- cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),
239
- cullFace: (gl, value) => gl.cullFace(value),
248
+ cull: (gl: WebGLRenderingContext, value) =>
249
+ value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),
250
+ cullFace: (gl: WebGLRenderingContext, value) => gl.cullFace(value),
240
251
 
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),
252
+ depthTest: (gl: WebGLRenderingContext, value) =>
253
+ value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),
254
+ depthFunc: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),
255
+ depthMask: (gl: WebGLRenderingContext, value) => gl.depthMask(value),
256
+ depthRange: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),
245
257
 
246
- dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),
258
+ dither: (gl: WebGLRenderingContext, value) =>
259
+ value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),
247
260
 
248
- derivativeHint: (gl, value) => {
261
+ derivativeHint: (gl: WebGLRenderingContext, value) => {
249
262
  // gl1: 'OES_standard_derivatives'
250
263
  gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);
251
264
  },
252
265
 
253
- frontFace: (gl, value) => gl.frontFace(value),
266
+ frontFace: (gl: WebGLRenderingContext, value) => gl.frontFace(value),
254
267
 
255
- mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),
268
+ mipmapHint: (gl: WebGLRenderingContext, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),
256
269
 
257
- lineWidth: (gl, value) => gl.lineWidth(value),
270
+ lineWidth: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),
258
271
 
259
- polygonOffsetFill: (gl, value) =>
272
+ polygonOffsetFill: (gl: WebGLRenderingContext, value) =>
260
273
  value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),
261
- polygonOffset: (gl, value) => gl.polygonOffset(...value),
274
+ polygonOffset: (gl: WebGLRenderingContext, value: [number, number]) => gl.polygonOffset(...value),
262
275
 
263
- sampleCoverage: (gl, value) => gl.sampleCoverage(...value),
276
+ sampleCoverage: (gl: WebGLRenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),
264
277
 
265
- scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),
266
- scissor: (gl, value) => gl.scissor(...value),
278
+ scissorTest: (gl: WebGLRenderingContext, value) =>
279
+ value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),
280
+ scissor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
267
281
 
268
- stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),
269
- stencilMask: (gl, value) => {
282
+ stencilTest: (gl: WebGLRenderingContext, value) =>
283
+ value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),
284
+ stencilMask: (gl: WebGLRenderingContext, value) => {
270
285
  value = isArray(value) ? value : [value, value];
271
286
  const [mask, backMask] = value;
272
287
  gl.stencilMaskSeparate(GL.FRONT, mask);
273
288
  gl.stencilMaskSeparate(GL.BACK, backMask);
274
289
  },
275
- stencilFunc: (gl, args) => {
290
+ stencilFunc: (gl: WebGLRenderingContext, args) => {
276
291
  args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
277
292
  const [func, ref, mask, backFunc, backRef, backMask] = args;
278
293
  gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);
279
294
  gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);
280
295
  },
281
- stencilOp: (gl, args) => {
296
+ stencilOp: (gl: WebGLRenderingContext, args) => {
282
297
  args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
283
298
  const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;
284
299
  gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
285
300
  gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);
286
301
  },
287
302
 
288
- viewport: (gl, value) => gl.viewport(...value)
303
+ viewport: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value)
289
304
  };
290
305
 
291
306
  function getValue(glEnum, values, cache) {
@@ -294,50 +309,50 @@ function getValue(glEnum, values, cache) {
294
309
 
295
310
  // COMPOSITE_WEBGL_PARAMETER_
296
311
  export const GL_COMPOSITE_PARAMETER_SETTERS = {
297
- blendEquation: (gl, values, cache) =>
312
+ blendEquation: (gl: WebGLRenderingContext, values, cache) =>
298
313
  gl.blendEquationSeparate(
299
314
  getValue(GL.BLEND_EQUATION_RGB, values, cache),
300
315
  getValue(GL.BLEND_EQUATION_ALPHA, values, cache)
301
316
  ),
302
- blendFunc: (gl, values, cache) =>
317
+ blendFunc: (gl: WebGLRenderingContext, values, cache) =>
303
318
  gl.blendFuncSeparate(
304
319
  getValue(GL.BLEND_SRC_RGB, values, cache),
305
320
  getValue(GL.BLEND_DST_RGB, values, cache),
306
321
  getValue(GL.BLEND_SRC_ALPHA, values, cache),
307
322
  getValue(GL.BLEND_DST_ALPHA, values, cache)
308
323
  ),
309
- polygonOffset: (gl, values, cache) =>
324
+ polygonOffset: (gl: WebGLRenderingContext, values, cache) =>
310
325
  gl.polygonOffset(
311
326
  getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),
312
327
  getValue(GL.POLYGON_OFFSET_UNITS, values, cache)
313
328
  ),
314
- sampleCoverage: (gl, values, cache) =>
329
+ sampleCoverage: (gl: WebGLRenderingContext, values, cache) =>
315
330
  gl.sampleCoverage(
316
331
  getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),
317
332
  getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)
318
333
  ),
319
- stencilFuncFront: (gl, values, cache) =>
334
+ stencilFuncFront: (gl: WebGLRenderingContext, values, cache) =>
320
335
  gl.stencilFuncSeparate(
321
336
  GL.FRONT,
322
337
  getValue(GL.STENCIL_FUNC, values, cache),
323
338
  getValue(GL.STENCIL_REF, values, cache),
324
339
  getValue(GL.STENCIL_VALUE_MASK, values, cache)
325
340
  ),
326
- stencilFuncBack: (gl, values, cache) =>
341
+ stencilFuncBack: (gl: WebGLRenderingContext, values, cache) =>
327
342
  gl.stencilFuncSeparate(
328
343
  GL.BACK,
329
344
  getValue(GL.STENCIL_BACK_FUNC, values, cache),
330
345
  getValue(GL.STENCIL_BACK_REF, values, cache),
331
346
  getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)
332
347
  ),
333
- stencilOpFront: (gl, values, cache) =>
348
+ stencilOpFront: (gl: WebGLRenderingContext, values, cache) =>
334
349
  gl.stencilOpSeparate(
335
350
  GL.FRONT,
336
351
  getValue(GL.STENCIL_FAIL, values, cache),
337
352
  getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),
338
353
  getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)
339
354
  ),
340
- stencilOpBack: (gl, values, cache) =>
355
+ stencilOpBack: (gl: WebGLRenderingContext, values, cache) =>
341
356
  gl.stencilOpSeparate(
342
357
  GL.BACK,
343
358
  getValue(GL.STENCIL_BACK_FAIL, values, cache),
@@ -352,36 +367,40 @@ type UpdateFunc = (params: Record<string, any>) => void;
352
367
  export const GL_HOOKED_SETTERS = {
353
368
  // GENERIC SETTERS
354
369
 
355
- enable: (update: UpdateFunc, capability) =>
370
+ enable: (update: UpdateFunc, capability: GL) =>
356
371
  update({
357
372
  [capability]: true
358
373
  }),
359
- disable: (update: UpdateFunc, capability) =>
374
+ disable: (update: UpdateFunc, capability: GL) =>
360
375
  update({
361
376
  [capability]: false
362
377
  }),
363
- pixelStorei: (update: UpdateFunc, pname, value) =>
378
+ pixelStorei: (update: UpdateFunc, pname: GL, value) =>
364
379
  update({
365
380
  [pname]: value
366
381
  }),
367
- hint: (update: UpdateFunc, pname, hint) =>
382
+ hint: (update: UpdateFunc, pname: GL, hint: GL) =>
368
383
  update({
369
384
  [pname]: hint
370
385
  }),
371
386
 
372
387
  // 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
- }),
388
+ useProgram: (update: UpdateFunc, value) =>
389
+ update({
390
+ [GL.CURRENT_PROGRAM]: value
391
+ }),
392
+ bindRenderbuffer: (update: UpdateFunc, target, value) =>
393
+ update({
394
+ [GL.RENDERBUFFER_BINDING]: value
395
+ }),
396
+ bindTransformFeedback: (update: UpdateFunc, target, value) =>
397
+ update({
398
+ [GL.TRANSFORM_FEEDBACK_BINDING]: value
399
+ }),
400
+ bindVertexArray: (update: UpdateFunc, value) =>
401
+ update({
402
+ [GL.VERTEX_ARRAY_BINDING]: value
403
+ }),
385
404
 
386
405
  bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {
387
406
  switch (target) {
@@ -399,13 +418,13 @@ export const GL_HOOKED_SETTERS = {
399
418
  }
400
419
  },
401
420
  bindBuffer: (update: UpdateFunc, target, buffer) => {
402
- const pname = ({
421
+ const pname = {
403
422
  [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],
404
423
  [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],
405
424
  [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],
406
425
  [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],
407
426
  [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]
408
- })[target];
427
+ }[target];
409
428
 
410
429
  if (pname) {
411
430
  return update({[pname]: buffer});
@@ -567,7 +586,7 @@ export const GL_HOOKED_SETTERS = {
567
586
 
568
587
  // GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT
569
588
 
570
- const isEnabled = (gl, key) => gl.isEnabled(key);
589
+ const isEnabled = (gl: WebGLRenderingContext, key) => gl.isEnabled(key);
571
590
 
572
591
  // Exceptions for any keys that cannot be queried by gl.getParameters
573
592
  export const GL_PARAMETER_GETTERS = {
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Stores luma.gl specific state associated with a context
3
+ */
4
+ export interface WebGLContextData {
5
+ _polyfilled: boolean;
6
+ _extensions: Record<string, any>;
7
+ }
8
+
9
+ /**
10
+ * Gets luma.gl specific state from a context
11
+ * @returns context state
12
+ */
13
+ export function getContextData(gl: WebGLRenderingContext): WebGLContextData {
14
+ // @ts-expect-error
15
+ const luma = gl.luma as WebGLContextData | null;
16
+ if (!luma) {
17
+ const contextState: WebGLContextData = {
18
+ _polyfilled: false,
19
+ _extensions: {}
20
+ };
21
+ // @ts-expect-error
22
+ gl.luma = contextState;
23
+ }
24
+
25
+ // @ts-expect-error
26
+ return gl.luma;
27
+ }
@@ -31,7 +31,7 @@ const WEBGL_PARAMETERS = {
31
31
  [GL.SAMPLES]: getWebGL2ValueOrZero,
32
32
 
33
33
  // WebGL2 extension context parameters
34
- [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {
34
+ [GL_GPU_DISJOINT_EXT]: (gl: WebGLRenderingContext, getParameter) => {
35
35
  const ext = isWebGL2(gl)
36
36
  ? gl.getExtension(EXT_disjoint_timer_query_webgl2)
37
37
  : gl.getExtension(EXT_disjoint_timer_query);
@@ -39,18 +39,19 @@ const WEBGL_PARAMETERS = {
39
39
  },
40
40
 
41
41
  // Extension fixed values
42
- [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {
42
+ [GL_UNMASKED_VENDOR_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {
43
43
  const ext = gl.getExtension(WEBGL_debug_renderer_info);
44
44
  return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);
45
45
  },
46
46
 
47
- [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {
47
+ [GL_UNMASKED_RENDERER_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {
48
48
  const ext = gl.getExtension(WEBGL_debug_renderer_info);
49
49
  return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);
50
50
  },
51
51
 
52
52
  // Extension LIMITS
53
- [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {
53
+ [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl: WebGLRenderingContext, getParameter) => {
54
+ // @ts-ignore TODO - store these on the device instance instead...
54
55
  const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||
55
56
  gl.getExtension('EXT_texture_filter_anisotropic');
56
57
  return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;
@@ -60,7 +61,7 @@ const WEBGL_PARAMETERS = {
60
61
  [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,
61
62
  [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,
62
63
  [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,
63
- [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {
64
+ [GL.MAX_COLOR_ATTACHMENTS]: (gl: WebGLRenderingContext, getParameter) => {
64
65
  if (!isWebGL2(gl)) {
65
66
  const ext = gl.getExtension(WEBGL_draw_buffers);
66
67
  return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;
@@ -108,7 +109,7 @@ const WEBGL_PARAMETERS = {
108
109
 
109
110
  // A "replacement" gl.getParameter that accepts "enums" from extensions and WebGL2
110
111
  // and returns reasonably safe defaults
111
- export function getParameterPolyfill(gl, originalGetParameter, pname) {
112
+ export function getParameterPolyfill(gl: WebGLRenderingContext, originalGetParameter, pname) {
112
113
  // Return mock limits (usually 0) for WebGL2 constants to ensure these
113
114
  // can be queries without error
114
115
  const limit = WEBGL_PARAMETERS[pname];