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

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 (553) 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 +300 -146
  5. package/dist/adapter/converters/sampler-parameters.d.ts +3 -13
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +74 -219
  8. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  9. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  10. package/dist/adapter/converters/shader-formats.js +59 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +41 -57
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +490 -925
  14. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +56 -33
  17. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  18. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  20. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  21. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  22. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  23. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  24. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  25. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  26. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  27. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  28. package/dist/adapter/helpers/decode-webgl-types.js +101 -0
  29. package/dist/adapter/helpers/get-shader-layout.d.ts +2 -49
  30. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-layout.js +263 -307
  32. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  33. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  34. package/dist/adapter/helpers/parse-shader-compiler-log.js +48 -33
  35. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  36. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  37. package/dist/adapter/helpers/set-uniform.js +66 -111
  38. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  39. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  40. package/dist/adapter/helpers/webgl-topology-utils.js +88 -0
  41. package/dist/adapter/objects/constants-to-keys.d.ts +2 -4
  42. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  43. package/dist/adapter/objects/constants-to-keys.js +18 -38
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +92 -91
  47. package/dist/adapter/objects/webgl-resource.d.ts +6 -31
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +103 -205
  50. package/dist/adapter/resources/webgl-buffer.d.ts +20 -16
  51. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-buffer.js +163 -155
  53. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  54. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-command-buffer.js +283 -58
  56. package/dist/adapter/resources/webgl-command-encoder.d.ts +12 -6
  57. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-command-encoder.js +36 -52
  59. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  60. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -29
  61. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-framebuffer.js +184 -261
  63. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  64. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  65. package/dist/adapter/resources/webgl-query-set.js +136 -0
  66. package/dist/adapter/resources/webgl-render-pass.d.ts +21 -4
  67. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-render-pass.js +140 -20
  69. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -21
  70. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-render-pipeline.js +371 -413
  72. package/dist/adapter/resources/webgl-sampler.d.ts +5 -6
  73. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-sampler.js +46 -46
  75. package/dist/adapter/resources/webgl-shader.d.ts +16 -6
  76. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-shader.js +113 -72
  78. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  79. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  80. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  81. package/dist/adapter/resources/webgl-texture.d.ts +53 -35
  82. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-texture.js +623 -822
  84. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  85. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-transform-feedback.js +162 -0
  87. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  88. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  89. package/dist/adapter/resources/webgl-vertex-array.js +239 -0
  90. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  91. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  92. package/dist/adapter/webgl-canvas-context.js +61 -50
  93. package/dist/adapter/webgl-device.d.ts +112 -55
  94. package/dist/adapter/webgl-device.d.ts.map +1 -1
  95. package/dist/adapter/webgl-device.js +453 -331
  96. package/dist/classic/accessor.d.ts +3 -3
  97. package/dist/classic/accessor.d.ts.map +1 -1
  98. package/dist/classic/accessor.js +135 -130
  99. package/dist/classic/clear.d.ts +22 -0
  100. package/dist/classic/clear.d.ts.map +1 -0
  101. package/dist/classic/clear.js +89 -0
  102. package/dist/classic/copy-and-blit.d.ts +62 -0
  103. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  104. package/dist/classic/copy-and-blit.js +191 -0
  105. package/dist/classic/format-utils.d.ts +3 -0
  106. package/dist/classic/format-utils.d.ts.map +1 -0
  107. package/dist/classic/format-utils.js +44 -0
  108. package/dist/classic/typed-array-utils.d.ts +17 -17
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -102
  111. package/dist/context/debug/spector.d.ts +1 -2
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +56 -63
  114. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  115. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  116. package/dist/context/debug/webgl-developer-tools.js +106 -102
  117. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  118. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  119. package/dist/context/helpers/create-browser-context.js +67 -0
  120. package/dist/context/helpers/webgl-context-data.d.ts +13 -0
  121. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  122. package/dist/context/helpers/webgl-context-data.js +21 -0
  123. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  124. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  125. package/dist/context/helpers/webgl-extensions.js +10 -0
  126. package/dist/context/parameters/unified-parameter-api.d.ts +4 -5
  127. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  128. package/dist/context/parameters/unified-parameter-api.js +91 -54
  129. package/dist/context/parameters/webgl-parameter-tables.d.ts +115 -106
  130. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  131. package/dist/context/parameters/webgl-parameter-tables.js +463 -423
  132. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  133. package/dist/context/state-tracker/deep-array-equal.js +19 -18
  134. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  135. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  136. package/dist/context/state-tracker/track-context-state.js +192 -163
  137. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  138. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  139. package/dist/context/state-tracker/with-parameters.js +44 -32
  140. package/dist/dist.dev.js +6574 -0
  141. package/dist/dist.min.js +10 -0
  142. package/dist/index.cjs +5586 -0
  143. package/dist/index.cjs.map +7 -0
  144. package/dist/index.d.ts +25 -32
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +37 -28
  147. package/dist/types.d.ts +3 -1
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js +3 -1
  150. package/dist.min.js +19 -0
  151. package/package.json +22 -15
  152. package/src/adapter/converters/device-parameters.ts +217 -54
  153. package/src/adapter/converters/sampler-parameters.ts +46 -126
  154. package/src/adapter/converters/shader-formats.ts +69 -0
  155. package/src/adapter/converters/texture-formats.ts +369 -340
  156. package/src/adapter/converters/vertex-formats.ts +71 -10
  157. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  158. package/src/adapter/device-helpers/webgl-device-info.ts +111 -0
  159. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  160. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +38 -25
  161. package/src/adapter/helpers/get-shader-layout.ts +104 -158
  162. package/src/adapter/helpers/parse-shader-compiler-log.ts +31 -11
  163. package/src/adapter/helpers/set-uniform.ts +39 -36
  164. package/src/adapter/helpers/webgl-topology-utils.ts +110 -0
  165. package/src/adapter/objects/constants-to-keys.ts +8 -26
  166. package/src/adapter/objects/webgl-renderbuffer.ts +68 -40
  167. package/src/adapter/objects/webgl-resource.ts +16 -156
  168. package/src/adapter/resources/webgl-buffer.ts +103 -112
  169. package/src/adapter/resources/webgl-command-buffer.ts +333 -41
  170. package/src/adapter/resources/webgl-command-encoder.ts +33 -22
  171. package/src/adapter/resources/webgl-external-texture.ts +11 -8
  172. package/src/adapter/resources/webgl-framebuffer.ts +125 -165
  173. package/src/adapter/resources/webgl-query-set.ts +171 -0
  174. package/src/adapter/resources/webgl-render-pass.ts +176 -6
  175. package/src/adapter/resources/webgl-render-pipeline.ts +308 -229
  176. package/src/adapter/resources/webgl-sampler.ts +19 -18
  177. package/src/adapter/resources/webgl-shader.ts +91 -32
  178. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  179. package/src/adapter/resources/webgl-texture.ts +147 -184
  180. package/src/adapter/resources/webgl-transform-feedback.ts +196 -0
  181. package/src/adapter/resources/webgl-vertex-array.ts +282 -0
  182. package/src/adapter/webgl-canvas-context.ts +23 -22
  183. package/src/adapter/webgl-device.ts +411 -196
  184. package/src/classic/accessor.ts +12 -8
  185. package/src/classic/clear.ts +118 -0
  186. package/src/classic/copy-and-blit.ts +318 -0
  187. package/src/classic/format-utils.ts +47 -0
  188. package/src/classic/typed-array-utils.ts +19 -31
  189. package/src/context/debug/spector.ts +16 -10
  190. package/src/context/debug/webgl-developer-tools.ts +52 -32
  191. package/src/context/helpers/create-browser-context.ts +116 -0
  192. package/src/context/helpers/webgl-context-data.ts +31 -0
  193. package/src/context/helpers/webgl-extensions.ts +17 -0
  194. package/src/context/parameters/unified-parameter-api.ts +11 -16
  195. package/src/context/parameters/webgl-parameter-tables.ts +171 -121
  196. package/src/context/state-tracker/deep-array-equal.ts +3 -0
  197. package/src/context/state-tracker/track-context-state.ts +35 -26
  198. package/src/context/state-tracker/with-parameters.ts +12 -3
  199. package/src/index.ts +41 -55
  200. package/src/types.ts +6 -0
  201. package/dist/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  203. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  204. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  205. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  206. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  210. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  211. package/dist/adapter/device-helpers/device-features.js +0 -112
  212. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  213. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  214. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  215. package/dist/adapter/device-helpers/device-limits.js +0 -91
  216. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  217. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  218. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  219. package/dist/adapter/device-helpers/get-device-info.js +0 -44
  220. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  221. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  222. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  223. package/dist/adapter/device-helpers/is-old-ie.js +0 -8
  224. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  225. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  226. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  227. package/dist/adapter/helpers/attribute-utils.js +0 -81
  228. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  229. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  230. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  231. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  232. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  233. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  234. package/dist/adapter/helpers/uniforms.js +0 -99
  235. package/dist/adapter/helpers/uniforms.js.map +0 -1
  236. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  237. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  238. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  239. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  240. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  241. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  242. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  243. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  244. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  245. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  246. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  247. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  249. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  250. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  252. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  253. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  254. package/dist/adapter/webgl-device.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -2
  256. package/dist/bundle.d.ts.map +0 -1
  257. package/dist/bundle.js +0 -5
  258. package/dist/bundle.js.map +0 -1
  259. package/dist/classic/accessor.js.map +0 -1
  260. package/dist/classic/buffer.d.ts +0 -95
  261. package/dist/classic/buffer.d.ts.map +0 -1
  262. package/dist/classic/buffer.js +0 -392
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/classic/typed-array-utils.js.map +0 -1
  265. package/dist/context/context/context-state.d.ts +0 -18
  266. package/dist/context/context/context-state.d.ts.map +0 -1
  267. package/dist/context/context/context-state.js +0 -26
  268. package/dist/context/context/context-state.js.map +0 -1
  269. package/dist/context/context/create-browser-context.d.ts +0 -41
  270. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  271. package/dist/context/context/create-browser-context.js +0 -61
  272. package/dist/context/context/create-browser-context.js.map +0 -1
  273. package/dist/context/context/create-headless-context.d.ts +0 -9
  274. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  275. package/dist/context/context/create-headless-context.js +0 -43
  276. package/dist/context/context/create-headless-context.js.map +0 -1
  277. package/dist/context/context/device-pixels.d.ts +0 -25
  278. package/dist/context/context/device-pixels.d.ts.map +0 -1
  279. package/dist/context/context/device-pixels.js +0 -103
  280. package/dist/context/context/device-pixels.js.map +0 -1
  281. package/dist/context/context/webgl-checks.d.ts +0 -13
  282. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  283. package/dist/context/context/webgl-checks.js +0 -34
  284. package/dist/context/context/webgl-checks.js.map +0 -1
  285. package/dist/context/debug/spector.js.map +0 -1
  286. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  287. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  288. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  289. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  290. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  291. package/dist/context/polyfill/get-parameter-polyfill.js +0 -91
  292. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  293. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  294. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  295. package/dist/context/polyfill/polyfill-context.js +0 -91
  296. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  297. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  298. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  299. package/dist/context/polyfill/polyfill-table.js +0 -160
  300. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  301. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  302. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  303. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -335
  304. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  305. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  306. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  307. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  309. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  311. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  313. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  315. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  317. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  319. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  321. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  323. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  325. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  327. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  329. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  330. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  331. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  332. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  333. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  334. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  335. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  336. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  337. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  338. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  339. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  340. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  341. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  342. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  343. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  345. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  347. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  349. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  351. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  353. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  355. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  357. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  358. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  359. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  360. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  361. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  362. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  363. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  364. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  365. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  366. package/dist/es5/adapter/webgl-device.js +0 -463
  367. package/dist/es5/adapter/webgl-device.js.map +0 -1
  368. package/dist/es5/bundle.js +0 -7
  369. package/dist/es5/bundle.js.map +0 -1
  370. package/dist/es5/classic/accessor.js +0 -181
  371. package/dist/es5/classic/accessor.js.map +0 -1
  372. package/dist/es5/classic/buffer.js +0 -478
  373. package/dist/es5/classic/buffer.js.map +0 -1
  374. package/dist/es5/classic/typed-array-utils.js +0 -126
  375. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  376. package/dist/es5/context/context/context-state.js +0 -31
  377. package/dist/es5/context/context/context-state.js.map +0 -1
  378. package/dist/es5/context/context/create-browser-context.js +0 -83
  379. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  380. package/dist/es5/context/context/create-headless-context.js +0 -60
  381. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  382. package/dist/es5/context/context/device-pixels.js +0 -121
  383. package/dist/es5/context/context/device-pixels.js.map +0 -1
  384. package/dist/es5/context/context/webgl-checks.js +0 -54
  385. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  386. package/dist/es5/context/debug/spector.js +0 -133
  387. package/dist/es5/context/debug/spector.js.map +0 -1
  388. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  389. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  390. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  391. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  392. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  393. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  394. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  395. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  397. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  399. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  401. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  403. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  405. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  407. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/es5/index.js +0 -290
  409. package/dist/es5/index.js.map +0 -1
  410. package/dist/es5/init.js +0 -10
  411. package/dist/es5/init.js.map +0 -1
  412. package/dist/es5/types/webgl.js +0 -6
  413. package/dist/es5/types/webgl.js.map +0 -1
  414. package/dist/es5/types.js +0 -2
  415. package/dist/es5/types.js.map +0 -1
  416. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  417. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  418. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  419. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  420. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  421. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  422. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  423. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  424. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  425. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  426. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  427. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  428. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  429. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  430. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  431. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  432. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  433. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  434. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  435. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  436. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  437. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  438. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  439. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  440. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  441. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  442. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  443. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  444. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  445. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  446. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  447. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  448. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  449. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  450. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  451. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  453. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  455. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  457. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  459. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  461. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  463. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  464. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  465. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  466. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  467. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  468. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  469. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  470. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  471. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  472. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  473. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  474. package/dist/esm/adapter/webgl-device.js +0 -337
  475. package/dist/esm/adapter/webgl-device.js.map +0 -1
  476. package/dist/esm/bundle.js +0 -5
  477. package/dist/esm/bundle.js.map +0 -1
  478. package/dist/esm/classic/accessor.js +0 -144
  479. package/dist/esm/classic/accessor.js.map +0 -1
  480. package/dist/esm/classic/buffer.js +0 -392
  481. package/dist/esm/classic/buffer.js.map +0 -1
  482. package/dist/esm/classic/typed-array-utils.js +0 -112
  483. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  484. package/dist/esm/context/context/context-state.js +0 -26
  485. package/dist/esm/context/context/context-state.js.map +0 -1
  486. package/dist/esm/context/context/create-browser-context.js +0 -61
  487. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  488. package/dist/esm/context/context/create-headless-context.js +0 -43
  489. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  490. package/dist/esm/context/context/device-pixels.js +0 -103
  491. package/dist/esm/context/context/device-pixels.js.map +0 -1
  492. package/dist/esm/context/context/webgl-checks.js +0 -34
  493. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  494. package/dist/esm/context/debug/spector.js +0 -76
  495. package/dist/esm/context/debug/spector.js.map +0 -1
  496. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  497. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  498. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  499. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  500. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  501. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  502. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  503. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  504. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  505. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  506. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  507. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  508. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  509. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  510. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  511. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  512. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  513. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  514. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  515. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  516. package/dist/esm/index.js +0 -28
  517. package/dist/esm/index.js.map +0 -1
  518. package/dist/esm/init.js +0 -4
  519. package/dist/esm/init.js.map +0 -1
  520. package/dist/esm/types/webgl.js +0 -2
  521. package/dist/esm/types/webgl.js.map +0 -1
  522. package/dist/esm/types.js +0 -2
  523. package/dist/esm/types.js.map +0 -1
  524. package/dist/index.js.map +0 -1
  525. package/dist/init.d.ts +0 -2
  526. package/dist/init.d.ts.map +0 -1
  527. package/dist/init.js +0 -4
  528. package/dist/init.js.map +0 -1
  529. package/dist/types/webgl.d.ts +0 -145
  530. package/dist/types/webgl.d.ts.map +0 -1
  531. package/dist/types/webgl.js +0 -2
  532. package/dist/types/webgl.js.map +0 -1
  533. package/dist/types.js.map +0 -1
  534. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  535. package/src/adapter/device-helpers/device-features.ts +0 -158
  536. package/src/adapter/device-helpers/device-limits.ts +0 -153
  537. package/src/adapter/device-helpers/get-device-info.ts +0 -49
  538. package/src/adapter/device-helpers/is-old-ie.ts +0 -11
  539. package/src/adapter/helpers/attribute-utils.ts +0 -61
  540. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  541. package/src/bundle.ts +0 -4
  542. package/src/classic/buffer.ts +0 -474
  543. package/src/context/context/context-state.ts +0 -41
  544. package/src/context/context/create-browser-context.ts +0 -118
  545. package/src/context/context/create-headless-context.ts +0 -48
  546. package/src/context/context/device-pixels.ts +0 -158
  547. package/src/context/context/webgl-checks.ts +0 -49
  548. package/src/context/polyfill/get-parameter-polyfill.ts +0 -118
  549. package/src/context/polyfill/polyfill-context.ts +0 -97
  550. package/src/context/polyfill/polyfill-table.ts +0 -162
  551. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -360
  552. package/src/init.ts +0 -4
  553. package/src/types/webgl.ts +0 -284
@@ -1 +1 @@
1
- {"version":3,"file":"deep-array-equal.d.ts","sourceRoot":"","sources":["../../../src/context/state-tracker/deep-array-equal.ts"],"names":[],"mappings":"AACA,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAiBtD"}
1
+ {"version":3,"file":"deep-array-equal.d.ts","sourceRoot":"","sources":["../../../src/context/state-tracker/deep-array-equal.ts"],"names":[],"mappings":"AAIA,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAiBtD"}
@@ -1,21 +1,22 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /** deeply compare two arrays */
1
5
  export function deepArrayEqual(x, y) {
2
- if (x === y) {
3
- return true;
4
- }
5
-
6
- const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);
7
- const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);
8
-
9
- if (isArrayX && isArrayY && x.length === y.length) {
10
- for (let i = 0; i < x.length; ++i) {
11
- if (x[i] !== y[i]) {
12
- return false;
13
- }
6
+ if (x === y) {
7
+ return true;
14
8
  }
15
-
16
- return true;
17
- }
18
-
19
- return false;
9
+ const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);
10
+ const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);
11
+ // @ts-expect-error TODO fix
12
+ if (isArrayX && isArrayY && x.length === y.length) {
13
+ // @ts-expect-error TODO fix
14
+ for (let i = 0; i < x.length; ++i) {
15
+ if (x[i] !== y[i]) {
16
+ return false;
17
+ }
18
+ }
19
+ return true;
20
+ }
21
+ return false;
20
22
  }
21
- //# sourceMappingURL=deep-array-equal.js.map
@@ -6,17 +6,17 @@
6
6
  * gl.state.push() and gl.state.pop() will be available for saving,
7
7
  * temporarily modifying, and then restoring state.
8
8
  */
9
- export declare function trackContextState(gl: WebGLRenderingContext, options?: {
9
+ export declare function trackContextState(gl: WebGL2RenderingContext, options?: {
10
10
  enable?: boolean;
11
11
  copyState?: boolean;
12
12
  log?: any;
13
- }): WebGLRenderingContext;
13
+ }): WebGL2RenderingContext;
14
14
  /**
15
15
  * Saves current WebGL context state onto an internal per-context stack
16
16
  */
17
- export declare function pushContextState(gl: WebGLRenderingContext): void;
17
+ export declare function pushContextState(gl: WebGL2RenderingContext): void;
18
18
  /**
19
19
  * Restores previously saved WebGL context state
20
20
  */
21
- export declare function popContextState(gl: WebGLRenderingContext): void;
21
+ export declare function popContextState(gl: WebGL2RenderingContext): void;
22
22
  //# sourceMappingURL=track-context-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"track-context-state.d.ts","sourceRoot":"","sources":["../../../src/context/state-tracker/track-context-state.ts"],"names":[],"mappings":"AA0FA;;;;;;;GAOG;AACF,wBAAgB,iBAAiB,CAChC,EAAE,EAAE,qBAAqB,EACzB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,GACA,qBAAqB,CAiCvB;AAED;;GAEG;AACF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI,CAOjE;AAGD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI,CAI/D"}
1
+ {"version":3,"file":"track-context-state.d.ts","sourceRoot":"","sources":["../../../src/context/state-tracker/track-context-state.ts"],"names":[],"mappings":"AAmGA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,sBAAsB,EAC1B,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,GACA,sBAAsB,CAgCxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI,CAOjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI,CAIhE"}
@@ -1,183 +1,212 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { assert } from '@luma.gl/api';
3
- import { GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS, NON_CACHE_PARAMETERS } from '../parameters/webgl-parameter-tables';
4
- import { setParameters, getParameters } from '../parameters/unified-parameter-api';
5
- import { deepArrayEqual } from './deep-array-equal';
6
-
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Support for listening to context state changes and intercepting state queries
5
+ // NOTE: this system does not handle buffer bindings
6
+ import { assert } from '@luma.gl/core';
7
+ import { GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS, NON_CACHE_PARAMETERS } from "../parameters/webgl-parameter-tables.js";
8
+ import { setGLParameters, getGLParameters } from "../parameters/unified-parameter-api.js";
9
+ import { deepArrayEqual } from "./deep-array-equal.js";
10
+ // HELPER CLASS - GLState
11
+ /* eslint-disable no-shadow */
7
12
  class GLState {
8
- constructor(gl, {
9
- copyState = false,
10
- log = () => {}
11
- } = {}) {
12
- _defineProperty(this, "gl", void 0);
13
-
14
- _defineProperty(this, "program", null);
15
-
16
- _defineProperty(this, "stateStack", []);
17
-
18
- _defineProperty(this, "enable", true);
19
-
20
- _defineProperty(this, "cache", void 0);
21
-
22
- _defineProperty(this, "log", void 0);
23
-
24
- this.gl = gl;
25
- this.cache = copyState ? getParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);
26
- this.log = log;
27
- this._updateCache = this._updateCache.bind(this);
28
- Object.seal(this);
29
- }
30
-
31
- push(values = {}) {
32
- this.stateStack.push({});
33
- }
34
-
35
- pop() {
36
- assert(this.stateStack.length > 0);
37
- const oldValues = this.stateStack[this.stateStack.length - 1];
38
- setParameters(this.gl, oldValues);
39
- this.stateStack.pop();
40
- }
41
-
42
- _updateCache(values) {
43
- let valueChanged = false;
44
- let oldValue;
45
- const oldValues = this.stateStack.length > 0 ? this.stateStack[this.stateStack.length - 1] : null;
46
-
47
- for (const key in values) {
48
- assert(key !== undefined);
49
- const value = values[key];
50
- const cached = this.cache[key];
51
-
52
- if (!deepArrayEqual(value, cached)) {
53
- valueChanged = true;
54
- oldValue = cached;
55
-
56
- if (oldValues && !(key in oldValues)) {
57
- oldValues[key] = cached;
13
+ gl;
14
+ program = null;
15
+ stateStack = [];
16
+ enable = true;
17
+ cache;
18
+ log;
19
+ constructor(gl, { copyState = false, // Copy cache from params (slow) or initialize from WebGL defaults (fast)
20
+ log = () => { } // Logging function, called when gl parameter change calls are actually issued
21
+ } = {}) {
22
+ this.gl = gl;
23
+ this.cache = copyState ? getGLParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);
24
+ this.log = log;
25
+ this._updateCache = this._updateCache.bind(this);
26
+ Object.seal(this);
27
+ }
28
+ push(values = {}) {
29
+ this.stateStack.push({});
30
+ }
31
+ pop() {
32
+ assert(this.stateStack.length > 0);
33
+ // Use the saved values in the state stack to restore parameters
34
+ const oldValues = this.stateStack[this.stateStack.length - 1];
35
+ setGLParameters(this.gl, oldValues);
36
+ // Don't pop until we have reset parameters (to make sure other "stack frames" are not affected)
37
+ this.stateStack.pop();
38
+ }
39
+ /**
40
+ // interceptor for context set functions - update our cache and our stack
41
+ // values (Object) - the key values for this setter
42
+ * @param values
43
+ * @returns
44
+ */
45
+ _updateCache(values) {
46
+ let valueChanged = false;
47
+ let oldValue; // = undefined
48
+ const oldValues = this.stateStack.length > 0 ? this.stateStack[this.stateStack.length - 1] : null;
49
+ for (const key in values) {
50
+ assert(key !== undefined);
51
+ const value = values[key];
52
+ const cached = this.cache[key];
53
+ // Check that value hasn't already been shadowed
54
+ if (!deepArrayEqual(value, cached)) {
55
+ valueChanged = true;
56
+ oldValue = cached;
57
+ // First, save current value being shadowed
58
+ // If a state stack frame is active, save the current parameter values for pop
59
+ // but first check that value hasn't already been shadowed and saved
60
+ if (oldValues && !(key in oldValues)) {
61
+ oldValues[key] = cached;
62
+ }
63
+ // Save current value being shadowed
64
+ this.cache[key] = value;
65
+ }
58
66
  }
59
-
60
- this.cache[key] = value;
61
- }
67
+ return { valueChanged, oldValue };
62
68
  }
63
-
64
- return {
65
- valueChanged,
66
- oldValue
67
- };
68
- }
69
-
70
69
  }
71
-
72
70
  function getContextState(gl) {
73
- return gl.state;
71
+ // @ts-expect-error
72
+ return gl.state;
74
73
  }
75
-
74
+ // PUBLIC API
75
+ /**
76
+ * Initialize WebGL state caching on a context
77
+ * can be called multiple times to enable/disable
78
+ *
79
+ * @note After calling this function, context state will be cached
80
+ * gl.state.push() and gl.state.pop() will be available for saving,
81
+ * temporarily modifying, and then restoring state.
82
+ */
76
83
  export function trackContextState(gl, options) {
77
- const {
78
- enable = true,
79
- copyState
80
- } = options;
81
- assert(copyState !== undefined);
82
-
83
- if (!gl.state) {
84
- const global_ = typeof global !== 'undefined' ? global : window;
85
- gl.state = new GLState(gl, {
86
- copyState
87
- });
88
- installProgramSpy(gl);
89
-
90
- for (const key in GL_HOOKED_SETTERS) {
91
- const setter = GL_HOOKED_SETTERS[key];
92
- installSetterSpy(gl, key, setter);
84
+ const { enable = true, copyState } = options;
85
+ assert(copyState !== undefined);
86
+ // @ts-expect-error
87
+ if (!gl.state) {
88
+ // @ts-ignore
89
+ // const {polyfillContext} = global_;
90
+ // if (polyfillContext) {
91
+ // polyfillContext(gl);
92
+ // }
93
+ // Create a state cache
94
+ // @ts-expect-error
95
+ gl.state = new GLState(gl, { copyState });
96
+ installProgramSpy(gl);
97
+ // intercept all setter functions in the table
98
+ for (const key in GL_HOOKED_SETTERS) {
99
+ const setter = GL_HOOKED_SETTERS[key];
100
+ installSetterSpy(gl, key, setter);
101
+ }
102
+ // intercept all getter functions in the table
103
+ installGetterOverride(gl, 'getParameter');
104
+ installGetterOverride(gl, 'isEnabled');
93
105
  }
94
-
95
- installGetterOverride(gl, 'getParameter');
96
- installGetterOverride(gl, 'isEnabled');
97
- }
98
-
99
- const glState = getContextState(gl);
100
- glState.enable = enable;
101
- return gl;
106
+ const glState = getContextState(gl);
107
+ glState.enable = enable;
108
+ return gl;
102
109
  }
110
+ /**
111
+ * Saves current WebGL context state onto an internal per-context stack
112
+ */
103
113
  export function pushContextState(gl) {
104
- let glState = getContextState(gl);
105
-
106
- if (!glState) {
107
- trackContextState(gl, {
108
- copyState: false
109
- });
110
- glState = getContextState(gl);
111
- }
112
-
113
- glState.push();
114
+ let glState = getContextState(gl);
115
+ if (!glState) {
116
+ trackContextState(gl, { copyState: false });
117
+ glState = getContextState(gl);
118
+ }
119
+ glState.push();
114
120
  }
121
+ /**
122
+ * Restores previously saved WebGL context state
123
+ */
115
124
  export function popContextState(gl) {
116
- const glState = getContextState(gl);
117
- assert(glState);
118
- glState.pop();
125
+ const glState = getContextState(gl);
126
+ assert(glState);
127
+ glState.pop();
119
128
  }
120
-
129
+ // HELPER FUNCTIONS - INSTALL GET/SET INTERCEPTORS (SPYS) ON THE CONTEXT
130
+ /**
131
+ // Overrides a WebGL2RenderingContext state "getter" function
132
+ // to return values directly from cache
133
+ * @param gl
134
+ * @param functionName
135
+ */
121
136
  function installGetterOverride(gl, functionName) {
122
- const originalGetterFunc = gl[functionName].bind(gl);
123
-
124
- gl[functionName] = function get(pname) {
125
- if (pname === undefined || NON_CACHE_PARAMETERS.has(pname)) {
126
- return originalGetterFunc(pname);
127
- }
128
-
129
- const glState = getContextState(gl);
130
-
131
- if (!(pname in glState.cache)) {
132
- glState.cache[pname] = originalGetterFunc(pname);
133
- }
134
-
135
- return glState.enable ? glState.cache[pname] : originalGetterFunc(pname);
136
- };
137
-
138
- Object.defineProperty(gl[functionName], 'name', {
139
- value: "".concat(functionName, "-from-cache"),
140
- configurable: false
141
- });
137
+ // Get the original function from the WebGL2RenderingContext
138
+ const originalGetterFunc = gl[functionName].bind(gl);
139
+ // Wrap it with a spy so that we can update our state cache when it gets called
140
+ gl[functionName] = function get(pname) {
141
+ if (pname === undefined || NON_CACHE_PARAMETERS.has(pname)) {
142
+ // Invalid or blacklisted parameter, do not cache
143
+ return originalGetterFunc(pname);
144
+ }
145
+ const glState = getContextState(gl);
146
+ if (!(pname in glState.cache)) {
147
+ // WebGL limits are not prepopulated in the cache, call the original getter when first queried.
148
+ glState.cache[pname] = originalGetterFunc(pname);
149
+ }
150
+ // Optionally call the original function to do a "hard" query from the WebGL2RenderingContext
151
+ return glState.enable
152
+ ? // Call the getter the params so that it can e.g. serve from a cache
153
+ glState.cache[pname]
154
+ : // Optionally call the original function to do a "hard" query from the WebGL2RenderingContext
155
+ originalGetterFunc(pname);
156
+ };
157
+ // Set the name of this anonymous function to help in debugging and profiling
158
+ Object.defineProperty(gl[functionName], 'name', {
159
+ value: `${functionName}-from-cache`,
160
+ configurable: false
161
+ });
142
162
  }
143
-
163
+ /**
164
+ // Overrides a WebGL2RenderingContext state "setter" function
165
+ // to call a setter spy before the actual setter. Allows us to keep a cache
166
+ // updated with a copy of the WebGL context state.
167
+ * @param gl
168
+ * @param functionName
169
+ * @param setter
170
+ * @returns
171
+ */
144
172
  function installSetterSpy(gl, functionName, setter) {
145
- if (!gl[functionName]) {
146
- return;
147
- }
148
-
149
- const originalSetterFunc = gl[functionName].bind(gl);
150
-
151
- gl[functionName] = function set(...params) {
152
- const glState = getContextState(gl);
153
- const {
154
- valueChanged,
155
- oldValue
156
- } = setter(glState._updateCache, ...params);
157
-
158
- if (valueChanged) {
159
- originalSetterFunc(...params);
173
+ // Get the original function from the WebGL2RenderingContext
174
+ if (!gl[functionName]) {
175
+ // TODO - remove?
176
+ // This could happen if we try to intercept WebGL2 method on a WebGL1 context
177
+ return;
160
178
  }
161
-
162
- return oldValue;
163
- };
164
-
165
- Object.defineProperty(gl[functionName], 'name', {
166
- value: "".concat(functionName, "-to-cache"),
167
- configurable: false
168
- });
179
+ const originalSetterFunc = gl[functionName].bind(gl);
180
+ // Wrap it with a spy so that we can update our state cache when it gets called
181
+ gl[functionName] = function set(...params) {
182
+ // Update the value
183
+ // Call the setter with the state cache and the params so that it can store the parameters
184
+ const glState = getContextState(gl);
185
+ // eslint-disable-next-line @typescript-eslint/unbound-method
186
+ const { valueChanged, oldValue } = setter(glState._updateCache, ...params);
187
+ // Call the original WebGL2RenderingContext func to make sure the context actually gets updated
188
+ if (valueChanged) {
189
+ originalSetterFunc(...params);
190
+ }
191
+ // Note: if the original function fails to set the value, our state cache will be bad
192
+ // No solution for this at the moment, but assuming that this is unlikely to be a real problem
193
+ // We could call the setter after the originalSetterFunc. Concern is that this would
194
+ // cause different behavior in debug mode, where originalSetterFunc can throw exceptions
195
+ return oldValue;
196
+ };
197
+ // Set the name of this anonymous function to help in debugging and profiling
198
+ Object.defineProperty(gl[functionName], 'name', {
199
+ value: `${functionName}-to-cache`,
200
+ configurable: false
201
+ });
169
202
  }
170
-
171
203
  function installProgramSpy(gl) {
172
- const originalUseProgram = gl.useProgram.bind(gl);
173
-
174
- gl.useProgram = function useProgramLuma(handle) {
175
- const glState = getContextState(gl);
176
-
177
- if (glState.program !== handle) {
178
- originalUseProgram(handle);
179
- glState.program = handle;
180
- }
181
- };
204
+ const originalUseProgram = gl.useProgram.bind(gl);
205
+ gl.useProgram = function useProgramLuma(handle) {
206
+ const glState = getContextState(gl);
207
+ if (glState.program !== handle) {
208
+ originalUseProgram(handle);
209
+ glState.program = handle;
210
+ }
211
+ };
182
212
  }
183
- //# sourceMappingURL=track-context-state.js.map
@@ -1,4 +1,4 @@
1
- import { GLParameters } from '../parameters/unified-parameter-api';
1
+ import { GLParameters } from "../parameters/unified-parameter-api.js";
2
2
  /**
3
3
  * Execute a function with a set of temporary WebGL parameter overrides
4
4
  * - Saves current "global" WebGL context settings
@@ -7,7 +7,7 @@ import { GLParameters } from '../parameters/unified-parameter-api';
7
7
  * - Restores parameters
8
8
  * - Returns the return value of the supplied function
9
9
  */
10
- export declare function withParameters(gl: WebGLRenderingContext, parameters: GLParameters & {
10
+ export declare function withGLParameters(gl: WebGL2RenderingContext, parameters: GLParameters & {
11
11
  nocatch?: boolean;
12
12
  }, func: any): any;
13
13
  //# sourceMappingURL=with-parameters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-parameters.d.ts","sourceRoot":"","sources":["../../../src/context/state-tracker/with-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAgB,MAAM,qCAAqC,CAAC;AAGhF;;;;;;;GAOG;AACF,wBAAgB,cAAc,CAAC,EAAE,EAAE,qBAAqB,EAAE,UAAU,EAAE,YAAY,GAAG;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CA4BzH"}
1
+ {"version":3,"file":"with-parameters.d.ts","sourceRoot":"","sources":["../../../src/context/state-tracker/with-parameters.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAkB,+CAA4C;AAGlF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,sBAAsB,EAC1B,UAAU,EAAE,YAAY,GAAG;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAC,EAC9C,IAAI,EAAE,GAAG,GACR,GAAG,CA4BL"}
@@ -1,36 +1,48 @@
1
- import { setParameters } from '../parameters/unified-parameter-api';
2
- import { pushContextState, popContextState } from './track-context-state';
3
- export function withParameters(gl, parameters, func) {
4
- if (isObjectEmpty(parameters)) {
5
- return func(gl);
6
- }
7
-
8
- const {
9
- nocatch = true
10
- } = parameters;
11
- pushContextState(gl);
12
- setParameters(gl, parameters);
13
- let value;
14
-
15
- if (nocatch) {
16
- value = func(gl);
17
- popContextState(gl);
18
- } else {
19
- try {
20
- value = func(gl);
21
- } finally {
22
- popContextState(gl);
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { setGLParameters } from "../parameters/unified-parameter-api.js";
5
+ import { pushContextState, popContextState } from "./track-context-state.js";
6
+ /**
7
+ * Execute a function with a set of temporary WebGL parameter overrides
8
+ * - Saves current "global" WebGL context settings
9
+ * - Sets the supplies WebGL context parameters,
10
+ * - Executes supplied function
11
+ * - Restores parameters
12
+ * - Returns the return value of the supplied function
13
+ */
14
+ export function withGLParameters(gl, parameters, func) {
15
+ if (isObjectEmpty(parameters)) {
16
+ // Avoid setting state if no parameters provided. Just call and return
17
+ return func(gl);
23
18
  }
24
- }
25
-
26
- return value;
19
+ const { nocatch = true } = parameters;
20
+ pushContextState(gl);
21
+ setGLParameters(gl, parameters);
22
+ // Setup is done, call the function
23
+ let value;
24
+ if (nocatch) {
25
+ // Avoid try catch to minimize stack size impact for safe execution paths
26
+ value = func(gl);
27
+ popContextState(gl);
28
+ }
29
+ else {
30
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
31
+ try {
32
+ value = func(gl);
33
+ }
34
+ finally {
35
+ popContextState(gl);
36
+ }
37
+ }
38
+ return value;
27
39
  }
28
-
40
+ // Helpers
41
+ // Returns true if given object is empty, false otherwise.
29
42
  function isObjectEmpty(object) {
30
- for (const key in object) {
31
- return false;
32
- }
33
-
34
- return true;
43
+ // @ts-ignore - dummy key variable
44
+ for (const key in object) {
45
+ return false;
46
+ }
47
+ return true;
35
48
  }
36
- //# sourceMappingURL=with-parameters.js.map