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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +89 -74
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +29 -180
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +306 -343
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +9 -25
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +49 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +58 -138
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +67 -101
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -175
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +98 -12
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -44
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +51 -31
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +123 -244
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +12 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +92 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +205 -158
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +192 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +17 -18
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  144. package/dist/context/context/create-browser-context.js +11 -19
  145. package/dist/context/context/create-browser-context.js.map +1 -1
  146. package/dist/context/context/create-headless-context.d.ts +1 -1
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  148. package/dist/context/context/create-headless-context.js +6 -7
  149. package/dist/context/context/create-headless-context.js.map +1 -1
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +7 -19
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +18 -41
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -17
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +27 -31
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +17 -40
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +25 -61
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +9344 -0
  198. package/dist/index.cjs +6556 -0
  199. package/dist/index.d.ts +23 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -27
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +120 -43
  209. package/src/adapter/converters/sampler-parameters.ts +54 -126
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +265 -192
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +5 -2
  214. package/src/adapter/device-helpers/device-limits.ts +4 -2
  215. package/src/adapter/device-helpers/get-device-info.ts +72 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
  218. package/src/adapter/helpers/get-shader-layout.ts +87 -131
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/webgl-buffer.ts +101 -106
  226. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  227. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  228. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  229. package/src/adapter/resources/webgl-framebuffer.ts +86 -133
  230. package/src/adapter/resources/webgl-render-pass.ts +165 -4
  231. package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
  232. package/src/adapter/resources/webgl-sampler.ts +12 -8
  233. package/src/adapter/resources/webgl-shader.ts +32 -27
  234. package/src/adapter/resources/webgl-texture.ts +117 -91
  235. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  236. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  237. package/src/adapter/webgl-canvas-context.ts +18 -13
  238. package/src/adapter/webgl-device.ts +327 -92
  239. package/src/classic/accessor.ts +8 -5
  240. package/src/classic/clear.ts +113 -0
  241. package/src/classic/copy-and-blit.ts +312 -0
  242. package/src/classic/format-utils.ts +46 -0
  243. package/src/classic/typed-array-utils.ts +19 -27
  244. package/src/context/context/create-browser-context.ts +53 -31
  245. package/src/context/context/create-headless-context.ts +5 -2
  246. package/src/context/context/webgl-checks.ts +3 -1
  247. package/src/context/debug/spector.ts +8 -5
  248. package/src/context/debug/webgl-developer-tools.ts +26 -17
  249. package/src/context/parameters/unified-parameter-api.ts +15 -9
  250. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  251. package/src/context/polyfill/context-data.ts +30 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  253. package/src/context/polyfill/polyfill-context.ts +15 -8
  254. package/src/context/polyfill/polyfill-table.ts +20 -15
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  256. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  257. package/src/context/state-tracker/track-context-state.ts +13 -10
  258. package/src/context/state-tracker/with-parameters.ts +13 -4
  259. package/src/index.ts +65 -39
  260. package/src/types.ts +5 -0
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  263. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  264. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  265. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  266. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  267. package/dist/adapter/helpers/attribute-utils.js +0 -81
  268. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  270. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  271. package/dist/adapter/helpers/uniforms.js +0 -99
  272. package/dist/adapter/helpers/uniforms.js.map +0 -1
  273. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  275. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  276. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  277. package/dist/bundle.d.ts +0 -2
  278. package/dist/bundle.d.ts.map +0 -1
  279. package/dist/bundle.js +0 -5
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/classic/buffer.d.ts +0 -95
  282. package/dist/classic/buffer.d.ts.map +0 -1
  283. package/dist/classic/buffer.js +0 -392
  284. package/dist/classic/buffer.js.map +0 -1
  285. package/dist/context/context/context-state.d.ts +0 -18
  286. package/dist/context/context/context-state.d.ts.map +0 -1
  287. package/dist/context/context/context-state.js +0 -26
  288. package/dist/context/context/context-state.js.map +0 -1
  289. package/dist/context/context/device-pixels.d.ts +0 -25
  290. package/dist/context/context/device-pixels.d.ts.map +0 -1
  291. package/dist/context/context/device-pixels.js +0 -103
  292. package/dist/context/context/device-pixels.js.map +0 -1
  293. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  294. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  295. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  296. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  297. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  298. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  299. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  300. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  301. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  302. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  303. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  304. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  305. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  306. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  307. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  308. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  309. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  310. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  311. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  312. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  313. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  314. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  315. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  316. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  317. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  318. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  319. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  320. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  321. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  322. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  323. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  324. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  325. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  326. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  327. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  328. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  329. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  330. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  331. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  332. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  333. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  334. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  335. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  336. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  338. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  339. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  340. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  341. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  342. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  343. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  344. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  345. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  346. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  347. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  348. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  349. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  350. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  351. package/dist/es5/adapter/webgl-device.js +0 -463
  352. package/dist/es5/adapter/webgl-device.js.map +0 -1
  353. package/dist/es5/bundle.js +0 -7
  354. package/dist/es5/bundle.js.map +0 -1
  355. package/dist/es5/classic/accessor.js +0 -181
  356. package/dist/es5/classic/accessor.js.map +0 -1
  357. package/dist/es5/classic/buffer.js +0 -478
  358. package/dist/es5/classic/buffer.js.map +0 -1
  359. package/dist/es5/classic/typed-array-utils.js +0 -126
  360. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  361. package/dist/es5/context/context/context-state.js +0 -31
  362. package/dist/es5/context/context/context-state.js.map +0 -1
  363. package/dist/es5/context/context/create-browser-context.js +0 -83
  364. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  365. package/dist/es5/context/context/create-headless-context.js +0 -60
  366. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  367. package/dist/es5/context/context/device-pixels.js +0 -121
  368. package/dist/es5/context/context/device-pixels.js.map +0 -1
  369. package/dist/es5/context/context/webgl-checks.js +0 -54
  370. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  371. package/dist/es5/context/debug/spector.js +0 -133
  372. package/dist/es5/context/debug/spector.js.map +0 -1
  373. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  374. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  375. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  376. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  377. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  378. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  379. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  380. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  381. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  382. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  383. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  384. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  385. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  386. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  387. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  388. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  389. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  390. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  391. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  392. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  393. package/dist/es5/index.js +0 -290
  394. package/dist/es5/index.js.map +0 -1
  395. package/dist/es5/init.js +0 -10
  396. package/dist/es5/init.js.map +0 -1
  397. package/dist/es5/types/webgl.js +0 -6
  398. package/dist/es5/types/webgl.js.map +0 -1
  399. package/dist/es5/types.js +0 -2
  400. package/dist/es5/types.js.map +0 -1
  401. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  402. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  403. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  404. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  405. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  406. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  407. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  408. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  409. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  410. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  411. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  412. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  413. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  414. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  415. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  416. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  417. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  418. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  419. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  420. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  421. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  422. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  423. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  424. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  425. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  426. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  427. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  428. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  429. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  430. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  431. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  432. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  433. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  434. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  435. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  436. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  437. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  438. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  439. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  440. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  441. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  442. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  443. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  444. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  445. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  446. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  447. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  448. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  449. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  450. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  451. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  452. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  453. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  454. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  455. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  456. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  457. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  458. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  459. package/dist/esm/adapter/webgl-device.js +0 -337
  460. package/dist/esm/adapter/webgl-device.js.map +0 -1
  461. package/dist/esm/bundle.js +0 -5
  462. package/dist/esm/bundle.js.map +0 -1
  463. package/dist/esm/classic/accessor.js +0 -144
  464. package/dist/esm/classic/accessor.js.map +0 -1
  465. package/dist/esm/classic/buffer.js +0 -392
  466. package/dist/esm/classic/buffer.js.map +0 -1
  467. package/dist/esm/classic/typed-array-utils.js +0 -112
  468. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  469. package/dist/esm/context/context/context-state.js +0 -26
  470. package/dist/esm/context/context/context-state.js.map +0 -1
  471. package/dist/esm/context/context/create-browser-context.js +0 -61
  472. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  473. package/dist/esm/context/context/create-headless-context.js +0 -43
  474. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  475. package/dist/esm/context/context/device-pixels.js +0 -103
  476. package/dist/esm/context/context/device-pixels.js.map +0 -1
  477. package/dist/esm/context/context/webgl-checks.js +0 -34
  478. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  479. package/dist/esm/context/debug/spector.js +0 -76
  480. package/dist/esm/context/debug/spector.js.map +0 -1
  481. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  482. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  483. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  484. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  485. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  487. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  489. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  490. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  491. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  492. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  493. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  495. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  496. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  497. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  498. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  499. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  500. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  501. package/dist/esm/index.js +0 -28
  502. package/dist/esm/index.js.map +0 -1
  503. package/dist/esm/init.js +0 -4
  504. package/dist/esm/init.js.map +0 -1
  505. package/dist/esm/types/webgl.js +0 -2
  506. package/dist/esm/types/webgl.js.map +0 -1
  507. package/dist/esm/types.js +0 -2
  508. package/dist/esm/types.js.map +0 -1
  509. package/dist/init.d.ts +0 -2
  510. package/dist/init.d.ts.map +0 -1
  511. package/dist/init.js +0 -4
  512. package/dist/init.js.map +0 -1
  513. package/dist/types/webgl.d.ts +0 -145
  514. package/dist/types/webgl.d.ts.map +0 -1
  515. package/dist/types/webgl.js +0 -2
  516. package/dist/types/webgl.js.map +0 -1
  517. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  518. package/src/adapter/helpers/attribute-utils.ts +0 -61
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/classic/buffer.ts +0 -474
  522. package/src/context/context/context-state.ts +0 -41
  523. package/src/context/context/device-pixels.ts +0 -158
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -284
@@ -1,10 +1,13 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  const ERR_HEADLESSGL_FAILED =
2
5
  'Failed to create WebGL context in Node.js, headless gl returned null';
3
6
 
4
- const ERR_HEADLESSGL_LOAD = `\
7
+ const ERR_HEADLESSGL_LOAD = '\
5
8
  luma.gl: loaded under Node.js without headless gl installed, meaning that WebGL \
6
9
  contexts can not be created. This may not be an error. For example, this is a \
7
- typical configuration for isorender applications running on the server.`;
10
+ typical configuration for isorender applications running on the server.';
8
11
 
9
12
  const CONTEXT_DEFAULTS = {
10
13
  width: 1,
@@ -1,5 +1,7 @@
1
1
  // luma.gl, MIT license
2
- import {assert} from '@luma.gl/api';
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {assert} from '@luma.gl/core';
3
5
 
4
6
  const ERR_CONTEXT = 'Invalid WebGLRenderingContext';
5
7
  export const ERR_WEBGL = ERR_CONTEXT;
@@ -1,5 +1,7 @@
1
1
  // luma.gl, MIT license
2
- import {log, loadScript} from '@luma.gl/api';
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {log, loadScript} from '@luma.gl/core';
3
5
 
4
6
  /** Spector debug initialization options */
5
7
  type SpectorProps = {
@@ -23,6 +25,7 @@ let spector: any = null;
23
25
  let initialized: boolean = false;
24
26
 
25
27
  declare global {
28
+ // eslint-disable-next-line no-var
26
29
  var SPECTOR: any;
27
30
  }
28
31
 
@@ -44,7 +47,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
44
47
  }
45
48
 
46
49
  if (!spector && globalThis.SPECTOR) {
47
- log.probe(LOG_LEVEL, "SPECTOR found and initialized")();
50
+ log.probe(LOG_LEVEL, 'SPECTOR found and initialized')();
48
51
  spector = new globalThis.SPECTOR.Spector();
49
52
  if (globalThis.luma) {
50
53
  globalThis.luma.spector = spector;
@@ -61,9 +64,9 @@ export function initializeSpectorJS(props?: SpectorProps) {
61
64
  // enables recording some extra information merged in the capture like texture memory sizes and formats
62
65
  spector.spyCanvases();
63
66
  // A callback when results are ready
64
- spector?.onCaptureStarted.add((capture: unknown) => log.info(`Spector capture started:`, capture)());
67
+ spector?.onCaptureStarted.add((capture: unknown) => log.info('Spector capture started:', capture)());
65
68
  spector?.onCapture.add((capture: unknown) => {
66
- log.info(`Spector capture complete:`, capture)();
69
+ log.info('Spector capture complete:', capture)();
67
70
  // Use undocumented Spector API to open the UI with our capture
68
71
  // See https://github.com/BabylonJS/Spector.js/blob/767ad1195a25b85a85c381f400eb50a979239eca/src/spector.ts#L124
69
72
  spector?.getResultUI()
@@ -82,7 +85,7 @@ export function initializeSpectorJS(props?: SpectorProps) {
82
85
  // spector?.captureCanvas(props?.canvas);
83
86
  spector?.startCapture(props?.canvas, 500); // 500 commands
84
87
  new Promise(resolve => setTimeout(resolve, 2000)).then(_ => {
85
- log.info(`Spector capture stopped after 2 seconds`)();
88
+ log.info('Spector capture stopped after 2 seconds')();
86
89
  spector?.stopCapture();
87
90
  // spector?.displayUI();
88
91
  });
@@ -1,6 +1,10 @@
1
1
  // luma.gl, MIT license
2
- import {log, loadScript} from '@luma.gl/api/';
3
- import GL from '@luma.gl/constants';
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {log, loadScript} from '@luma.gl/core';
5
+ // Rename constant to prevent inlining. We need the full set of constants for generating debug strings.
6
+ import {GL as GLEnum} from '@luma.gl/constants';
7
+ import {isBrowser} from '@probe.gl/env'
4
8
 
5
9
  const WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
6
10
 
@@ -11,20 +15,26 @@ type DebugContextProps = {
11
15
  webgl2?: boolean;
12
16
  };
13
17
 
14
- const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
15
- debug: true,
16
- throwOnError: false,
17
- break: [],
18
- webgl2: false,
18
+ // const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
19
+ // debug: true,
20
+ // throwOnError: false,
21
+ // break: [],
22
+ // webgl2: false,
23
+ // }
24
+
25
+ type ContextData = {
26
+ realContext?: WebGLRenderingContext;
27
+ debugContext?: WebGLRenderingContext;
19
28
  }
20
29
 
21
30
  // Helper to get shared context data
22
- function getContextData(gl: any) {
31
+ function getContextData(gl: any): ContextData {
23
32
  gl.luma = gl.luma || {};
24
33
  return gl.luma;
25
34
  }
26
35
 
27
36
  declare global {
37
+ // eslint-disable-next-line no-var
28
38
  var WebGLDebugUtils: any;
29
39
  }
30
40
 
@@ -35,8 +45,7 @@ declare global {
35
45
  * @see https://github.com/vorg/webgl-debug
36
46
  */
37
47
  export async function loadWebGLDeveloperTools(): Promise<void> {
38
- if (!globalThis.WebGLDebugUtils) {
39
- // @ts-expect-error Developer tools expects global to be set
48
+ if (isBrowser() && !globalThis.WebGLDebugUtils) {
40
49
  globalThis.global = globalThis.global || globalThis;
41
50
  // @ts-expect-error Developer tools expects global to be set
42
51
  globalThis.global.module = {};
@@ -77,7 +86,7 @@ function getDebugContext(gl: WebGLRenderingContext, props: DebugContextProps): W
77
86
  }
78
87
 
79
88
  // Create a new debug context
80
- globalThis.WebGLDebugUtils.init({...GL, ...gl});
89
+ globalThis.WebGLDebugUtils.init({...GLEnum, ...gl});
81
90
  const glDebug = globalThis.WebGLDebugUtils.makeDebugContext(
82
91
  gl,
83
92
  onGLError.bind(null, props),
@@ -85,9 +94,9 @@ function getDebugContext(gl: WebGLRenderingContext, props: DebugContextProps): W
85
94
  );
86
95
 
87
96
  // Make sure we have all WebGL2 and extension constants (todo dynamic import to circumvent minification?)
88
- for (const key in GL) {
89
- if (!(key in glDebug) && typeof GL[key] === 'number') {
90
- glDebug[key] = GL[key];
97
+ for (const key in GLEnum) {
98
+ if (!(key in glDebug) && typeof GLEnum[key] === 'number') {
99
+ glDebug[key] = GLEnum[key];
91
100
  }
92
101
  }
93
102
 
@@ -139,10 +148,10 @@ function onValidateGLFunc(props: DebugContextProps, functionName: string, functi
139
148
  log.log(1, functionString)();
140
149
  }
141
150
 
142
- if (props.break) {
151
+ // If array of breakpoint strings supplied, check if any of them is contained in current GLEnum function
152
+ if (props.break && props.break.length > 0) {
143
153
  functionString = functionString || getFunctionString(functionName, functionArgs);
144
- const isBreakpoint =
145
- props.break && props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);
154
+ const isBreakpoint = props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);
146
155
  if (isBreakpoint) {
147
156
  debugger; // eslint-disable-line
148
157
  }
@@ -1,8 +1,11 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // Provides a unified API for getting and setting any WebGL parameter
2
5
  // Also knows default values of all parameters, enabling fast cache initialization
3
6
  // Provides base functionality for the state caching.
4
- import {Device} from '@luma.gl/api';
5
- import type {GLParameters} from '../../types/webgl';
7
+ import {Device} from '@luma.gl/core';
8
+ import type {GLParameters} from '@luma.gl/constants';
6
9
  import {
7
10
  GL_PARAMETER_DEFAULTS,
8
11
  GL_PARAMETER_SETTERS,
@@ -10,8 +13,7 @@ import {
10
13
  GL_PARAMETER_GETTERS
11
14
  } from './webgl-parameter-tables';
12
15
 
13
- import {isWebGL} from '../context/webgl-checks';
14
- import WebGLDevice from '../../adapter/webgl-device';
16
+ import {WebGLDevice} from '../../adapter/webgl-device';
15
17
 
16
18
  export type {GLParameters};
17
19
 
@@ -21,7 +23,7 @@ export type {GLParameters};
21
23
  * @note requires a `cache` object to be set on the context (gl.state.cache)
22
24
  * This object is used to fill in any missing values for composite setter functions
23
25
  */
24
- export function setParameters(
26
+ export function setGLParameters(
25
27
  device: Device | WebGLRenderingContext,
26
28
  parameters: GLParameters
27
29
  ): void {
@@ -89,10 +91,13 @@ export function setParameters(
89
91
  * considered a very slow operation, to be used only if/when a context already manipulated
90
92
  * by external code needs to be synchronized for the first time
91
93
  */
92
- export function getParameters(
93
- gl: WebGLRenderingContext,
94
+ export function getGLParameters(
95
+ device: Device | WebGLRenderingContext,
94
96
  parameters: keyof GLParameters | (keyof GLParameters)[] | GLParameters = GL_PARAMETER_DEFAULTS
95
97
  ): GLParameters {
98
+ const webglDevice = WebGLDevice.attach(device);
99
+ const gl = webglDevice.gl;
100
+
96
101
  // support both arrays of parameters and objects (keys represent parameters)
97
102
 
98
103
  if (typeof parameters === 'number') {
@@ -118,14 +123,15 @@ export function getParameters(
118
123
  * NOT the canvas size dimensions, so they will have to be properly set after
119
124
  * calling this function.
120
125
  */
121
- export function resetParameters(gl: WebGLRenderingContext): void {
122
- setParameters(gl, GL_PARAMETER_DEFAULTS);
126
+ export function resetGLParameters(device: Device | WebGLRenderingContext): void {
127
+ setGLParameters(device, GL_PARAMETER_DEFAULTS);
123
128
  }
124
129
 
125
130
  // Helpers
126
131
 
127
132
  // Returns true if given object is empty, false otherwise.
128
133
  function isObjectEmpty(object) {
134
+ // @ts-ignore dummy key variable
129
135
  for (const key in object) {
130
136
  return false;
131
137
  }
@@ -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 = {