@luma.gl/webgl 9.0.0-alpha.16 → 9.0.0-alpha.17

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 (420) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +117 -200
  3. package/dist/adapter/converters/device-parameters.js.map +1 -0
  4. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  6. package/dist/adapter/converters/renderbuffer-formats.js +172 -62
  7. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  8. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.js +151 -149
  10. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +847 -438
  14. package/dist/adapter/converters/texture-formats.js.map +1 -0
  15. package/dist/adapter/converters/vertex-formats.js +24 -15
  16. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  17. package/dist/adapter/device-helpers/device-features.js +84 -120
  18. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  19. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  20. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/device-limits.js +83 -88
  22. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  23. package/dist/adapter/device-helpers/get-device-info.js +37 -42
  24. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  25. package/dist/adapter/device-helpers/is-old-ie.js +8 -10
  26. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  27. package/dist/adapter/helpers/attribute-utils.js +57 -50
  28. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  29. package/dist/adapter/helpers/get-shader-info.d.ts +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-info.js +19 -21
  32. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  33. package/dist/adapter/helpers/get-shader-layout.js +251 -310
  34. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  35. package/dist/adapter/helpers/parse-shader-compiler-log.js +26 -32
  36. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  37. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  38. package/dist/adapter/helpers/set-uniform.js +80 -67
  39. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  40. package/dist/adapter/helpers/uniforms.js +75 -80
  41. package/dist/adapter/helpers/uniforms.js.map +1 -0
  42. package/dist/adapter/objects/constants-to-keys.js +26 -33
  43. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +70 -67
  47. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +158 -213
  50. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  51. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  52. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  53. package/dist/adapter/objects/webgl-vertex-array-object.js +66 -74
  54. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  55. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  56. package/dist/adapter/resources/webgl-buffer.js +118 -150
  57. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  58. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  59. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-buffer.js +41 -40
  61. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  62. package/dist/adapter/resources/webgl-command-encoder.js +37 -26
  63. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  64. package/dist/adapter/resources/webgl-external-texture.js +1 -91
  65. package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
  66. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  67. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-framebuffer.js +198 -231
  69. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  70. package/dist/adapter/resources/webgl-render-pass.js +11 -8
  71. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +289 -316
  74. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  75. package/dist/adapter/resources/webgl-sampler.js +35 -42
  76. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  77. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-shader.js +53 -57
  79. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  80. package/dist/adapter/resources/webgl-texture.d.ts +4 -4
  81. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-texture.js +697 -661
  83. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +35 -55
  86. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  87. package/dist/adapter/webgl-device.d.ts +5 -0
  88. package/dist/adapter/webgl-device.d.ts.map +1 -1
  89. package/dist/adapter/webgl-device.js +270 -287
  90. package/dist/adapter/webgl-device.js.map +1 -0
  91. package/dist/classic/accessor.js +103 -120
  92. package/dist/classic/accessor.js.map +1 -0
  93. package/dist/classic/buffer.d.ts +1 -1
  94. package/dist/classic/buffer.d.ts.map +1 -1
  95. package/dist/classic/buffer.js +300 -325
  96. package/dist/classic/buffer.js.map +1 -0
  97. package/dist/classic/typed-array-utils.d.ts +1 -1
  98. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  99. package/dist/classic/typed-array-utils.js +81 -91
  100. package/dist/classic/typed-array-utils.js.map +1 -0
  101. package/dist/context/context/create-browser-context.d.ts +3 -1
  102. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  103. package/dist/context/context/create-browser-context.js +49 -66
  104. package/dist/context/context/create-browser-context.js.map +1 -0
  105. package/dist/context/context/create-headless-context.d.ts +1 -1
  106. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  107. package/dist/context/context/create-headless-context.js +30 -24
  108. package/dist/context/context/create-headless-context.js.map +1 -0
  109. package/dist/context/context/webgl-checks.js +17 -25
  110. package/dist/context/context/webgl-checks.js.map +1 -0
  111. package/dist/context/debug/spector.d.ts +3 -1
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +50 -53
  114. package/dist/context/debug/spector.js.map +1 -0
  115. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  116. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  117. package/dist/context/debug/webgl-developer-tools.js +76 -107
  118. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  119. package/dist/context/parameters/unified-parameter-api.js +46 -93
  120. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  121. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  122. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  123. package/dist/context/parameters/webgl-parameter-tables.js +404 -462
  124. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  125. package/dist/context/polyfill/context-data.js +10 -16
  126. package/dist/context/polyfill/context-data.js.map +1 -0
  127. package/dist/context/polyfill/get-parameter-polyfill.js +71 -91
  128. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  129. package/dist/context/polyfill/polyfill-context.js +73 -75
  130. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  132. package/dist/context/polyfill/polyfill-table.js +116 -133
  133. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  135. package/dist/context/polyfill/polyfill-vertex-array-object.js +227 -255
  136. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +14 -16
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  140. package/dist/context/state-tracker/track-context-state.js +127 -183
  141. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  142. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  143. package/dist/context/state-tracker/with-parameters.js +29 -43
  144. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  145. package/dist/dist.dev.js +9205 -0
  146. package/dist/index.cjs +5948 -0
  147. package/dist/index.d.ts +0 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +25 -41
  150. package/dist/index.js.map +1 -0
  151. package/dist/types/webgl.d.ts +16 -16
  152. package/dist/types/webgl.d.ts.map +1 -1
  153. package/dist/types/webgl.js +1 -0
  154. package/dist/types/webgl.js.map +1 -0
  155. package/dist/types.d.ts +1 -1
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/types.js +1 -0
  158. package/dist/types.js.map +1 -0
  159. package/dist.min.js +36 -0
  160. package/package.json +18 -9
  161. package/src/.DS_Store +0 -0
  162. package/src/adapter/.DS_Store +0 -0
  163. package/src/adapter/converters/device-parameters.ts +5 -2
  164. package/src/adapter/converters/sampler-parameters.ts +4 -2
  165. package/src/adapter/converters/texture-formats.ts +3 -1
  166. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  167. package/src/adapter/helpers/get-shader-info.ts +1 -1
  168. package/src/adapter/helpers/get-shader-layout.ts +4 -4
  169. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  170. package/src/adapter/helpers/set-uniform.ts +2 -0
  171. package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
  172. package/src/adapter/objects/webgl-resource.ts +1 -1
  173. package/src/adapter/objects/webgl-vertex-array-object.ts +1 -1
  174. package/src/adapter/resources/webgl-buffer.ts +5 -5
  175. package/src/adapter/resources/webgl-command-encoder.ts +1 -1
  176. package/src/adapter/resources/webgl-framebuffer.ts +3 -4
  177. package/src/adapter/resources/webgl-render-pipeline.ts +19 -20
  178. package/src/adapter/resources/webgl-shader.ts +1 -1
  179. package/src/adapter/resources/webgl-texture.ts +8 -9
  180. package/src/adapter/webgl-canvas-context.ts +2 -2
  181. package/src/adapter/webgl-device.ts +12 -2
  182. package/src/classic/accessor.ts +1 -1
  183. package/src/classic/buffer.ts +3 -3
  184. package/src/classic/typed-array-utils.ts +1 -1
  185. package/src/context/.DS_Store +0 -0
  186. package/src/context/context/create-browser-context.ts +4 -2
  187. package/src/context/context/create-headless-context.ts +2 -2
  188. package/src/context/debug/spector.ts +5 -4
  189. package/src/context/debug/webgl-developer-tools.ts +1 -0
  190. package/src/context/polyfill/polyfill-table.ts +1 -0
  191. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  192. package/src/context/state-tracker/track-context-state.ts +6 -5
  193. package/src/context/state-tracker/with-parameters.ts +1 -1
  194. package/src/index.ts +1 -5
  195. package/src/types/webgl.ts +2 -0
  196. package/dist/bundle.d.ts +0 -2
  197. package/dist/bundle.d.ts.map +0 -1
  198. package/dist/bundle.js +0 -4
  199. package/dist/dist.min.js +0 -1
  200. package/dist/es5/adapter/converters/device-parameters.js +0 -139
  201. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -151
  203. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  204. package/dist/es5/adapter/converters/sampler-parameters.js +0 -182
  205. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  206. package/dist/es5/adapter/converters/texture-formats.js +0 -950
  207. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/es5/adapter/converters/vertex-formats.js +0 -36
  209. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  210. package/dist/es5/adapter/device-helpers/device-features.js +0 -121
  211. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  212. package/dist/es5/adapter/device-helpers/device-limits.js +0 -54
  213. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  214. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -49
  215. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  216. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -15
  217. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  218. package/dist/es5/adapter/helpers/attribute-utils.js +0 -69
  219. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  220. package/dist/es5/adapter/helpers/get-shader-info.js +0 -31
  221. package/dist/es5/adapter/helpers/get-shader-info.js.map +0 -1
  222. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -311
  223. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  224. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -54
  225. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  226. package/dist/es5/adapter/helpers/set-uniform.js +0 -92
  227. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  228. package/dist/es5/adapter/helpers/uniforms.js +0 -88
  229. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  230. package/dist/es5/adapter/objects/constants-to-keys.js +0 -43
  231. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  232. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -122
  233. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  234. package/dist/es5/adapter/objects/webgl-resource.js +0 -233
  235. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  236. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -109
  237. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  238. package/dist/es5/adapter/resources/webgl-buffer.js +0 -196
  239. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  240. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -70
  241. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  242. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -80
  243. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  244. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  245. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  246. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -275
  247. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -45
  249. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  250. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -385
  251. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  252. package/dist/es5/adapter/resources/webgl-sampler.js +0 -75
  253. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  254. package/dist/es5/adapter/resources/webgl-shader.js +0 -111
  255. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  256. package/dist/es5/adapter/resources/webgl-texture.js +0 -826
  257. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  258. package/dist/es5/adapter/webgl-canvas-context.js +0 -72
  259. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  260. package/dist/es5/adapter/webgl-device.js +0 -387
  261. package/dist/es5/adapter/webgl-device.js.map +0 -1
  262. package/dist/es5/bundle.js +0 -6
  263. package/dist/es5/bundle.js.map +0 -1
  264. package/dist/es5/classic/accessor.js +0 -151
  265. package/dist/es5/classic/accessor.js.map +0 -1
  266. package/dist/es5/classic/buffer.js +0 -398
  267. package/dist/es5/classic/buffer.js.map +0 -1
  268. package/dist/es5/classic/typed-array-utils.js +0 -99
  269. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  270. package/dist/es5/context/context/create-browser-context.js +0 -66
  271. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  272. package/dist/es5/context/context/create-headless-context.js +0 -47
  273. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  274. package/dist/es5/context/context/webgl-checks.js +0 -44
  275. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  276. package/dist/es5/context/debug/spector.js +0 -99
  277. package/dist/es5/context/debug/spector.js.map +0 -1
  278. package/dist/es5/context/debug/webgl-developer-tools.js +0 -146
  279. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  280. package/dist/es5/context/parameters/unified-parameter-api.js +0 -76
  281. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  282. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -346
  283. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  284. package/dist/es5/context/polyfill/context-data.js +0 -18
  285. package/dist/es5/context/polyfill/context-data.js.map +0 -1
  286. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -69
  287. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  288. package/dist/es5/context/polyfill/polyfill-context.js +0 -109
  289. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  290. package/dist/es5/context/polyfill/polyfill-table.js +0 -143
  291. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  292. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -271
  293. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  294. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -23
  295. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  296. package/dist/es5/context/state-tracker/track-context-state.js +0 -167
  297. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  298. package/dist/es5/context/state-tracker/with-parameters.js +0 -40
  299. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  300. package/dist/es5/index.js +0 -249
  301. package/dist/es5/index.js.map +0 -1
  302. package/dist/es5/init.js +0 -7
  303. package/dist/es5/init.js.map +0 -1
  304. package/dist/es5/types/webgl.js +0 -5
  305. package/dist/es5/types/webgl.js.map +0 -1
  306. package/dist/es5/types.js +0 -2
  307. package/dist/es5/types.js.map +0 -1
  308. package/dist/esm/adapter/converters/device-parameters.js +0 -137
  309. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -181
  311. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/esm/adapter/converters/sampler-parameters.js +0 -172
  313. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/esm/adapter/converters/texture-formats.js +0 -901
  315. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/esm/adapter/converters/vertex-formats.js +0 -29
  317. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/esm/adapter/device-helpers/device-features.js +0 -95
  319. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/esm/adapter/device-helpers/device-limits.js +0 -88
  321. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -42
  323. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -9
  325. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/esm/adapter/helpers/attribute-utils.js +0 -64
  327. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/esm/adapter/helpers/get-shader-info.js +0 -25
  329. package/dist/esm/adapter/helpers/get-shader-info.js.map +0 -1
  330. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -282
  331. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  332. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -30
  333. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  334. package/dist/esm/adapter/helpers/set-uniform.js +0 -85
  335. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  336. package/dist/esm/adapter/helpers/uniforms.js +0 -89
  337. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  338. package/dist/esm/adapter/objects/constants-to-keys.js +0 -35
  339. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  340. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -78
  341. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  342. package/dist/esm/adapter/objects/webgl-resource.js +0 -163
  343. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  344. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -74
  345. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  346. package/dist/esm/adapter/resources/webgl-buffer.js +0 -134
  347. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  348. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -50
  349. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  350. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -41
  351. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  352. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  353. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  354. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -207
  355. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  356. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -14
  357. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  358. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -311
  359. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  360. package/dist/esm/adapter/resources/webgl-sampler.js +0 -42
  361. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  362. package/dist/esm/adapter/resources/webgl-shader.js +0 -62
  363. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  364. package/dist/esm/adapter/resources/webgl-texture.js +0 -714
  365. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  366. package/dist/esm/adapter/webgl-canvas-context.js +0 -41
  367. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  368. package/dist/esm/adapter/webgl-device.js +0 -276
  369. package/dist/esm/adapter/webgl-device.js.map +0 -1
  370. package/dist/esm/bundle.js +0 -4
  371. package/dist/esm/bundle.js.map +0 -1
  372. package/dist/esm/classic/accessor.js +0 -120
  373. package/dist/esm/classic/accessor.js.map +0 -1
  374. package/dist/esm/classic/buffer.js +0 -327
  375. package/dist/esm/classic/buffer.js.map +0 -1
  376. package/dist/esm/classic/typed-array-utils.js +0 -92
  377. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  378. package/dist/esm/context/context/create-browser-context.js +0 -53
  379. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  380. package/dist/esm/context/context/create-headless-context.js +0 -39
  381. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  382. package/dist/esm/context/context/webgl-checks.js +0 -31
  383. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  384. package/dist/esm/context/debug/spector.js +0 -64
  385. package/dist/esm/context/debug/spector.js.map +0 -1
  386. package/dist/esm/context/debug/webgl-developer-tools.js +0 -97
  387. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  388. package/dist/esm/context/parameters/unified-parameter-api.js +0 -55
  389. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  390. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -427
  391. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  392. package/dist/esm/context/polyfill/context-data.js +0 -12
  393. package/dist/esm/context/polyfill/context-data.js.map +0 -1
  394. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -86
  395. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/esm/context/polyfill/polyfill-context.js +0 -84
  397. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/esm/context/polyfill/polyfill-table.js +0 -138
  399. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -265
  401. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -17
  403. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/esm/context/state-tracker/track-context-state.js +0 -148
  405. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/esm/context/state-tracker/with-parameters.js +0 -34
  407. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/esm/index.js +0 -27
  409. package/dist/esm/index.js.map +0 -1
  410. package/dist/esm/init.js +0 -4
  411. package/dist/esm/init.js.map +0 -1
  412. package/dist/esm/types/webgl.js +0 -2
  413. package/dist/esm/types/webgl.js.map +0 -1
  414. package/dist/esm/types.js +0 -2
  415. package/dist/esm/types.js.map +0 -1
  416. package/dist/init.d.ts +0 -2
  417. package/dist/init.d.ts.map +0 -1
  418. package/dist/init.js +0 -3
  419. package/src/bundle.ts +0 -4
  420. package/src/init.ts +0 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-parameter-tables.js","names":["GL","isWebGL2","GL_PARAMETER_DEFAULTS","BLEND","BLEND_COLOR","Float32Array","BLEND_EQUATION_RGB","FUNC_ADD","BLEND_EQUATION_ALPHA","BLEND_SRC_RGB","ONE","BLEND_DST_RGB","ZERO","BLEND_SRC_ALPHA","BLEND_DST_ALPHA","COLOR_CLEAR_VALUE","COLOR_WRITEMASK","CULL_FACE","CULL_FACE_MODE","BACK","DEPTH_TEST","DEPTH_CLEAR_VALUE","DEPTH_FUNC","LESS","DEPTH_RANGE","DEPTH_WRITEMASK","DITHER","CURRENT_PROGRAM","FRAMEBUFFER_BINDING","RENDERBUFFER_BINDING","VERTEX_ARRAY_BINDING","ARRAY_BUFFER_BINDING","FRONT_FACE","CCW","GENERATE_MIPMAP_HINT","DONT_CARE","LINE_WIDTH","POLYGON_OFFSET_FILL","POLYGON_OFFSET_FACTOR","POLYGON_OFFSET_UNITS","SAMPLE_ALPHA_TO_COVERAGE","SAMPLE_COVERAGE","SAMPLE_COVERAGE_VALUE","SAMPLE_COVERAGE_INVERT","SCISSOR_TEST","SCISSOR_BOX","Int32Array","STENCIL_TEST","STENCIL_CLEAR_VALUE","STENCIL_WRITEMASK","STENCIL_BACK_WRITEMASK","STENCIL_FUNC","ALWAYS","STENCIL_REF","STENCIL_VALUE_MASK","STENCIL_BACK_FUNC","STENCIL_BACK_REF","STENCIL_BACK_VALUE_MASK","STENCIL_FAIL","KEEP","STENCIL_PASS_DEPTH_FAIL","STENCIL_PASS_DEPTH_PASS","STENCIL_BACK_FAIL","STENCIL_BACK_PASS_DEPTH_FAIL","STENCIL_BACK_PASS_DEPTH_PASS","VIEWPORT","PACK_ALIGNMENT","UNPACK_ALIGNMENT","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_COLORSPACE_CONVERSION_WEBGL","BROWSER_DEFAULT_WEBGL","TRANSFORM_FEEDBACK_BINDING","COPY_READ_BUFFER_BINDING","COPY_WRITE_BUFFER_BINDING","PIXEL_PACK_BUFFER_BINDING","PIXEL_UNPACK_BUFFER_BINDING","FRAGMENT_SHADER_DERIVATIVE_HINT","READ_FRAMEBUFFER_BINDING","RASTERIZER_DISCARD","PACK_ROW_LENGTH","PACK_SKIP_PIXELS","PACK_SKIP_ROWS","UNPACK_ROW_LENGTH","UNPACK_IMAGE_HEIGHT","UNPACK_SKIP_PIXELS","UNPACK_SKIP_ROWS","UNPACK_SKIP_IMAGES","enable","gl","value","key","disable","hint","pixelStorei","bindFramebuffer","target","DRAW_FRAMEBUFFER","FRAMEBUFFER","READ_FRAMEBUFFER","bindBuffer","bindingMap","ARRAY_BUFFER","COPY_READ_BUFFER","COPY_WRITE_BUFFER","PIXEL_PACK_BUFFER","PIXEL_UNPACK_BUFFER","isArray","array","Array","ArrayBuffer","isView","DataView","GL_PARAMETER_SETTERS","blendColor","clearColor","colorMask","cullFace","clearDepth","depthFunc","depthRange","depthMask","useProgram","bindRenderbuffer","RENDERBUFFER","_bindTransformFeedbac","_ref","bindTransformFeedback","call","TRANSFORM_FEEDBACK","bindVertexArray","frontFace","lineWidth","scissor","clearStencil","stencilMaskSeparate","FRONT","viewport","framebuffer","handle","blend","blendEquation","args","separateModes","blendEquationSeparate","blendFunc","separateFuncs","length","blendFuncSeparate","cull","depthTest","dither","derivativeHint","mipmapHint","polygonOffsetFill","polygonOffset","sampleCoverage","scissorTest","stencilTest","stencilMask","mask","backMask","stencilFunc","func","ref","backFunc","backRef","stencilFuncSeparate","stencilOp","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","getValue","glEnum","values","cache","undefined","GL_COMPOSITE_PARAMETER_SETTERS","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","capability","pname","DRAW_FRAMEBUFFER_BINDING","buffer","valueChanged","r","g","b","a","mode","modeRGB","modeAlpha","src","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","depth","s","zNear","zFar","face","width","factor","units","invert","x","y","height","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","NON_CACHE_PARAMETERS","Set","ACTIVE_TEXTURE","TRANSFORM_FEEDBACK_ACTIVE","TRANSFORM_FEEDBACK_PAUSED","TRANSFORM_FEEDBACK_BUFFER_BINDING","UNIFORM_BUFFER_BINDING","ELEMENT_ARRAY_BUFFER_BINDING","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","READ_BUFFER","DRAW_BUFFER0","DRAW_BUFFER1","DRAW_BUFFER2","DRAW_BUFFER3","DRAW_BUFFER4","DRAW_BUFFER5","DRAW_BUFFER6","DRAW_BUFFER7","DRAW_BUFFER8","DRAW_BUFFER9","DRAW_BUFFER10","DRAW_BUFFER11","DRAW_BUFFER12","DRAW_BUFFER13","DRAW_BUFFER14","DRAW_BUFFER15","SAMPLER_BINDING","TEXTURE_BINDING_2D","TEXTURE_BINDING_2D_ARRAY","TEXTURE_BINDING_3D","TEXTURE_BINDING_CUBE_MAP"],"sources":["../../../src/context/parameters/webgl-parameter-tables.ts"],"sourcesContent":["// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\nimport type {GLParameters} from '../../types/webgl';\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS: GLParameters = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n [GL.CURRENT_PROGRAM]: null,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.RENDERBUFFER_BINDING]: null,\n [GL.VERTEX_ARRAY_BINDING]: null,\n [GL.ARRAY_BUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.TRANSFORM_FEEDBACK_BINDING]: null,\n [GL.COPY_READ_BUFFER_BINDING]: null,\n [GL.COPY_WRITE_BUFFER_BINDING]: null,\n [GL.PIXEL_PACK_BUFFER_BINDING]: null,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl: WebGLRenderingContext, value: unknown, key: GL) =>\n value ? gl.enable(key) : gl.disable(key);\nconst hint = (gl: WebGLRenderingContext, value: GL, key: GL) => gl.hint(key, value);\nconst pixelStorei = (gl: WebGLRenderingContext, value: number | boolean, key: GL) =>\n gl.pixelStorei(key, value);\n\nconst bindFramebuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n let target;\n if (key === GL.FRAMEBUFFER_BINDING) {\n target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n } else {\n // GL.READ_FRAMEBUFFER_BINDING\n target = GL.READ_FRAMEBUFFER;\n }\n return gl.bindFramebuffer(target, value);\n};\n\nconst bindBuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n const bindingMap: Partial<Record<GL, GL>> = {\n [GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,\n [GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,\n [GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,\n [GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER\n };\n const target = bindingMap[key];\n\n gl.bindBuffer(target, value);\n};\n\n// Utility\nfunction isArray(array: unknown): boolean {\n return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n\n [GL.CURRENT_PROGRAM]: (gl: WebGLRenderingContext, value) => gl.useProgram(value),\n [GL.RENDERBUFFER_BINDING]: (gl: WebGLRenderingContext, value) =>\n gl.bindRenderbuffer(GL.RENDERBUFFER, value),\n [GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),\n [GL.VERTEX_ARRAY_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindVertexArray(value),\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,\n\n // Buffers\n [GL.ARRAY_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,\n\n [GL.FRONT_FACE]: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl: WebGLRenderingContext, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl: WebGLRenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),\n blendEquation: (gl: WebGLRenderingContext, args: number | [number, number]) => {\n const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;\n gl.blendEquationSeparate(...separateModes);\n },\n blendFunc: (gl: WebGLRenderingContext, args: [number, number] | [number, number, number, number]) => {\n const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;\n gl.blendFuncSeparate(...separateFuncs);\n },\n\n clearColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),\n clearDepth: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n clearStencil: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n\n colorMask: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n\n cull: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),\n cullFace: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n\n depthTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),\n depthFunc: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n depthMask: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n depthRange: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n\n dither: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),\n\n derivativeHint: (gl: WebGLRenderingContext, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n\n mipmapHint: (gl: WebGLRenderingContext, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl: WebGLRenderingContext, value: [number, number]) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl: WebGLRenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),\n\n scissorTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),\n scissor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n\n stencilTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),\n stencilMask: (gl: WebGLRenderingContext, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl: WebGLRenderingContext, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl: WebGLRenderingContext, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\ntype UpdateFunc = (params: Record<string, any>) => void;\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: true\n }),\n disable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update: UpdateFunc, pname: GL, value) =>\n update({\n [pname]: value\n }),\n hint: (update: UpdateFunc, pname: GL, hint: GL) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n useProgram: (update: UpdateFunc, value) =>\n update({\n [GL.CURRENT_PROGRAM]: value\n }),\n bindRenderbuffer: (update: UpdateFunc, target, value) =>\n update({\n [GL.RENDERBUFFER_BINDING]: value\n }),\n bindTransformFeedback: (update: UpdateFunc, target, value) =>\n update({\n [GL.TRANSFORM_FEEDBACK_BINDING]: value\n }),\n bindVertexArray: (update: UpdateFunc, value) =>\n update({\n [GL.VERTEX_ARRAY_BINDING]: value\n }),\n\n bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n bindBuffer: (update: UpdateFunc, target, buffer) => {\n const pname = {\n [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],\n [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],\n [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],\n [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],\n [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]\n }[target];\n\n if (pname) {\n return update({[pname]: buffer});\n }\n // targets that should not be cached\n return {valueChanged: true};\n },\n\n blendColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update: UpdateFunc, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update: UpdateFunc, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update: UpdateFunc, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update: UpdateFunc, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update: UpdateFunc, depth: number) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update: UpdateFunc, s: number) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update: UpdateFunc, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update: UpdateFunc, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update: UpdateFunc, zNear: number, zFar: number) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update: UpdateFunc, mask: number) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update: UpdateFunc, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update: UpdateFunc, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update: UpdateFunc, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update: UpdateFunc, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update: UpdateFunc, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update: UpdateFunc, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update: UpdateFunc, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update: UpdateFunc, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update: UpdateFunc, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update: UpdateFunc, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl: WebGLRenderingContext, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n\nexport const NON_CACHE_PARAMETERS = new Set([\n // setter not intercepted\n GL.ACTIVE_TEXTURE,\n GL.TRANSFORM_FEEDBACK_ACTIVE,\n GL.TRANSFORM_FEEDBACK_PAUSED,\n\n // setters bindBufferRange/bindBufferBase cannot be pruned based on cache\n GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,\n GL.UNIFORM_BUFFER_BINDING,\n\n // states depending on VERTEX_ARRAY_BINDING\n GL.ELEMENT_ARRAY_BUFFER_BINDING,\n // states depending on READ_FRAMEBUFFER_BINDING\n GL.IMPLEMENTATION_COLOR_READ_FORMAT,\n GL.IMPLEMENTATION_COLOR_READ_TYPE,\n // states depending on FRAMEBUFFER_BINDING\n GL.READ_BUFFER,\n GL.DRAW_BUFFER0,\n GL.DRAW_BUFFER1,\n GL.DRAW_BUFFER2,\n GL.DRAW_BUFFER3,\n GL.DRAW_BUFFER4,\n GL.DRAW_BUFFER5,\n GL.DRAW_BUFFER6,\n GL.DRAW_BUFFER7,\n GL.DRAW_BUFFER8,\n GL.DRAW_BUFFER9,\n GL.DRAW_BUFFER10,\n GL.DRAW_BUFFER11,\n GL.DRAW_BUFFER12,\n GL.DRAW_BUFFER13,\n GL.DRAW_BUFFER14,\n GL.DRAW_BUFFER15,\n // states depending on ACTIVE_TEXTURE\n GL.SAMPLER_BINDING,\n GL.TEXTURE_BINDING_2D,\n GL.TEXTURE_BINDING_2D_ARRAY,\n GL.TEXTURE_BINDING_3D,\n GL.TEXTURE_BINDING_CUBE_MAP\n]);\n"],"mappings":"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"}
@@ -1,18 +1,12 @@
1
- /**
2
- * Gets luma.gl specific state from a context
3
- * @returns context state
4
- */
5
1
  export function getContextData(gl) {
6
- // @ts-expect-error
7
- const luma = gl.luma;
8
- if (!luma) {
9
- const contextState = {
10
- _polyfilled: false,
11
- _extensions: {}
12
- };
13
- // @ts-expect-error
14
- gl.luma = contextState;
15
- }
16
- // @ts-expect-error
17
- return gl.luma;
2
+ const luma = gl.luma;
3
+ if (!luma) {
4
+ const contextState = {
5
+ _polyfilled: false,
6
+ _extensions: {}
7
+ };
8
+ gl.luma = contextState;
9
+ }
10
+ return gl.luma;
18
11
  }
12
+ //# sourceMappingURL=context-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-data.js","names":["getContextData","gl","luma","contextState","_polyfilled","_extensions"],"sources":["../../../src/context/polyfill/context-data.ts"],"sourcesContent":["/**\n * Stores luma.gl specific state associated with a context\n */\nexport interface WebGLContextData {\n _polyfilled: boolean;\n _extensions: Record<string, any>;\n}\n\n/**\n * Gets luma.gl specific state from a context\n * @returns context state\n */\nexport function getContextData(gl: WebGLRenderingContext): WebGLContextData {\n // @ts-expect-error\n const luma = gl.luma as WebGLContextData | null;\n if (!luma) {\n const contextState: WebGLContextData = {\n _polyfilled: false,\n _extensions: {}\n };\n // @ts-expect-error\n gl.luma = contextState;\n }\n\n // @ts-expect-error\n return gl.luma;\n}\n"],"mappings":"AAYA,OAAO,SAASA,cAAcA,CAACC,EAAyB,EAAoB;EAE1E,MAAMC,IAAI,GAAGD,EAAE,CAACC,IAA+B;EAC/C,IAAI,CAACA,IAAI,EAAE;IACT,MAAMC,YAA8B,GAAG;MACrCC,WAAW,EAAE,KAAK;MAClBC,WAAW,EAAE,CAAC;IAChB,CAAC;IAEDJ,EAAE,CAACC,IAAI,GAAGC,YAAY;EACxB;EAGA,OAAOF,EAAE,CAACC,IAAI;AAChB"}
@@ -1,6 +1,5 @@
1
- /* eslint-disable no-inline-comments, max-len, camelcase */
2
1
  import GL from '@luma.gl/constants';
3
- import { isWebGL2 } from '../context/webgl-checks.js';
2
+ import { isWebGL2 } from "../context/webgl-checks.js";
4
3
  const OES_element_index = 'OES_element_index';
5
4
  const WEBGL_draw_buffers = 'WEBGL_draw_buffers';
6
5
  const EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';
@@ -11,96 +10,77 @@ const GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;
11
10
  const GL_DONT_CARE = 0x1100;
12
11
  const GL_GPU_DISJOINT_EXT = 0x8fbb;
13
12
  const GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;
14
- const GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.
15
- const GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.
16
- const getWebGL2ValueOrZero = (gl) => (!isWebGL2(gl) ? 0 : undefined);
17
- // if a function returns undefined in this table,
18
- // the original getParameter will be called, defeating the override
13
+ const GL_UNMASKED_VENDOR_WEBGL = 0x9245;
14
+ const GL_UNMASKED_RENDERER_WEBGL = 0x9246;
15
+ const getWebGL2ValueOrZero = gl => !isWebGL2(gl) ? 0 : undefined;
19
16
  const WEBGL_PARAMETERS = {
20
- [GL.READ_BUFFER]: (gl) => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),
21
- // WebGL2 context parameters
22
- [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl) => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),
23
- [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,
24
- [GL.SAMPLES]: getWebGL2ValueOrZero,
25
- // WebGL2 extension context parameters
26
- [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {
27
- const ext = isWebGL2(gl)
28
- ? gl.getExtension(EXT_disjoint_timer_query_webgl2)
29
- : gl.getExtension(EXT_disjoint_timer_query);
30
- return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;
31
- },
32
- // Extension fixed values
33
- [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {
34
- const ext = gl.getExtension(WEBGL_debug_renderer_info);
35
- return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);
36
- },
37
- [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {
38
- const ext = gl.getExtension(WEBGL_debug_renderer_info);
39
- return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);
40
- },
41
- // Extension LIMITS
42
- [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {
43
- // @ts-ignore TODO - store these on the device instance instead...
44
- const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||
45
- gl.getExtension('EXT_texture_filter_anisotropic');
46
- return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;
47
- },
48
- // WebGL2 Limits
49
- [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,
50
- [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,
51
- [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,
52
- [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {
53
- if (!isWebGL2(gl)) {
54
- const ext = gl.getExtension(WEBGL_draw_buffers);
55
- return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;
56
- }
57
- return undefined;
58
- },
59
- [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
60
- [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
61
- [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
62
- [GL.MAX_DRAW_BUFFERS]: (gl) => {
63
- if (!isWebGL2(gl)) {
64
- const ext = gl.getExtension(WEBGL_draw_buffers);
65
- return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;
66
- }
67
- return undefined;
68
- },
69
- [GL.MAX_ELEMENT_INDEX]:
70
- // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647
71
- (gl) => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),
72
- [GL.MAX_ELEMENTS_INDICES]:
73
- // Guess: "Reasonably safe" per webglstats.com - could be higher/lower (on some mobile devices)
74
- (gl) => (gl.getExtension(OES_element_index) ? 16777216 : 65535),
75
- [GL.MAX_ELEMENTS_VERTICES]:
76
- // Guess: "Reasonably safe" per webglstats.com - could be higher/lower (on some mobile devices)
77
- (gl) => 16777216,
78
- [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,
79
- [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
80
- [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
81
- [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,
82
- [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,
83
- [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,
84
- [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,
85
- [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,
86
- [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,
87
- [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,
88
- [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,
89
- [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,
90
- [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,
91
- [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
92
- [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
93
- [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,
94
- [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,
95
- [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero
17
+ [GL.READ_BUFFER]: gl => !isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined,
18
+ [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => !isWebGL2(gl) ? GL_DONT_CARE : undefined,
19
+ [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,
20
+ [GL.SAMPLES]: getWebGL2ValueOrZero,
21
+ [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {
22
+ const ext = isWebGL2(gl) ? gl.getExtension(EXT_disjoint_timer_query_webgl2) : gl.getExtension(EXT_disjoint_timer_query);
23
+ return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;
24
+ },
25
+ [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {
26
+ const ext = gl.getExtension(WEBGL_debug_renderer_info);
27
+ return getParameter(ext && ext.UNMASKED_VENDOR_WEBGL || GL.VENDOR);
28
+ },
29
+ [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {
30
+ const ext = gl.getExtension(WEBGL_debug_renderer_info);
31
+ return getParameter(ext && ext.UNMASKED_RENDERER_WEBGL || GL.RENDERER);
32
+ },
33
+ [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {
34
+ var _gl$luma, _gl$luma$extensions;
35
+ const ext = ((_gl$luma = gl.luma) === null || _gl$luma === void 0 ? void 0 : (_gl$luma$extensions = _gl$luma.extensions) === null || _gl$luma$extensions === void 0 ? void 0 : _gl$luma$extensions[EXT_texture_filter_anisotropic]) || gl.getExtension('EXT_texture_filter_anisotropic');
36
+ return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;
37
+ },
38
+ [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,
39
+ [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,
40
+ [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,
41
+ [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {
42
+ if (!isWebGL2(gl)) {
43
+ const ext = gl.getExtension(WEBGL_draw_buffers);
44
+ return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;
45
+ }
46
+ return undefined;
47
+ },
48
+ [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
49
+ [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
50
+ [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
51
+ [GL.MAX_DRAW_BUFFERS]: gl => {
52
+ if (!isWebGL2(gl)) {
53
+ const ext = gl.getExtension(WEBGL_draw_buffers);
54
+ return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;
55
+ }
56
+ return undefined;
57
+ },
58
+ [GL.MAX_ELEMENT_INDEX]: gl => gl.getExtension(OES_element_index) ? 2147483647 : 65535,
59
+ [GL.MAX_ELEMENTS_INDICES]: gl => gl.getExtension(OES_element_index) ? 16777216 : 65535,
60
+ [GL.MAX_ELEMENTS_VERTICES]: gl => 16777216,
61
+ [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,
62
+ [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
63
+ [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
64
+ [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,
65
+ [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,
66
+ [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,
67
+ [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,
68
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,
69
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,
70
+ [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,
71
+ [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,
72
+ [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,
73
+ [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,
74
+ [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,
75
+ [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,
76
+ [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,
77
+ [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,
78
+ [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero
96
79
  };
97
- // A "replacement" gl.getParameter that accepts "enums" from extensions and WebGL2
98
- // and returns reasonably safe defaults
99
80
  export function getParameterPolyfill(gl, originalGetParameter, pname) {
100
- // Return mock limits (usually 0) for WebGL2 constants to ensure these
101
- // can be queries without error
102
- const limit = WEBGL_PARAMETERS[pname];
103
- const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;
104
- const result = value !== undefined ? value : originalGetParameter(pname);
105
- return result;
81
+ const limit = WEBGL_PARAMETERS[pname];
82
+ const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;
83
+ const result = value !== undefined ? value : originalGetParameter(pname);
84
+ return result;
106
85
  }
86
+ //# sourceMappingURL=get-parameter-polyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-parameter-polyfill.js","names":["GL","isWebGL2","OES_element_index","WEBGL_draw_buffers","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_texture_filter_anisotropic","WEBGL_debug_renderer_info","GL_FRAGMENT_SHADER_DERIVATIVE_HINT","GL_DONT_CARE","GL_GPU_DISJOINT_EXT","GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT","GL_UNMASKED_VENDOR_WEBGL","GL_UNMASKED_RENDERER_WEBGL","getWebGL2ValueOrZero","gl","undefined","WEBGL_PARAMETERS","READ_BUFFER","COLOR_ATTACHMENT0","RASTERIZER_DISCARD","SAMPLES","getParameter","ext","getExtension","GPU_DISJOINT_EXT","UNMASKED_VENDOR_WEBGL","VENDOR","UNMASKED_RENDERER_WEBGL","RENDERER","_gl$luma","_gl$luma$extensions","luma","extensions","MAX_TEXTURE_MAX_ANISOTROPY_EXT","MAX_3D_TEXTURE_SIZE","MAX_ARRAY_TEXTURE_LAYERS","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","MAX_COLOR_ATTACHMENTS","MAX_COLOR_ATTACHMENTS_WEBGL","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_DRAW_BUFFERS","MAX_DRAW_BUFFERS_WEBGL","MAX_ELEMENT_INDEX","MAX_ELEMENTS_INDICES","MAX_ELEMENTS_VERTICES","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_SAMPLES","MAX_SERVER_WAIT_TIMEOUT","MAX_TEXTURE_LOD_BIAS","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","MAX_UNIFORM_BLOCK_SIZE","MAX_UNIFORM_BUFFER_BINDINGS","MAX_VARYING_COMPONENTS","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_VERTEX_UNIFORM_BLOCKS","MAX_VERTEX_UNIFORM_COMPONENTS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET","UNIFORM_BUFFER_OFFSET_ALIGNMENT","getParameterPolyfill","originalGetParameter","pname","limit","value","result"],"sources":["../../../src/context/polyfill/get-parameter-polyfill.ts"],"sourcesContent":["/* eslint-disable no-inline-comments, max-len, camelcase */\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = (gl) => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: (gl) => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl) => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl: WebGLRenderingContext, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl: WebGLRenderingContext, getParameter) => {\n // @ts-ignore TODO - store these on the device instance instead...\n const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||\n gl.getExtension('EXT_texture_filter_anisotropic');\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl: WebGLRenderingContext, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: (gl) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n (gl) => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl: WebGLRenderingContext, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n"],"mappings":"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"}
@@ -1,86 +1,84 @@
1
- // WebGL1/WebGL2 extension polyfill support
2
- //
3
- // Provides a function that creates polyfills for WebGL2 functions based
4
- // on available extensions and installs them on a supplied target (could be
5
- // the WebGLContext or its prototype, or a separate object).
6
- //
7
- // This is intended to be a stand-alone file with minimal dependencies,
8
- // easy to reuse or repurpose in other projects.
9
1
  import { assert } from '@luma.gl/api';
10
- import { polyfillVertexArrayObject } from './polyfill-vertex-array-object.js';
11
- import { WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES } from './polyfill-table.js';
12
- import { getContextData } from './context-data.js';
13
- /**
14
- * Registers extensions, polyfills or mock functions for extensions in the polyfills list
15
- */
2
+ import { polyfillVertexArrayObject } from "./polyfill-vertex-array-object.js";
3
+ import { WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES } from "./polyfill-table.js";
4
+ import { getContextData } from "./context-data.js";
16
5
  export function polyfillContext(gl) {
17
- const contextState = getContextData(gl);
18
- if (!contextState._polyfilled) {
19
- polyfillVertexArrayObject(gl);
20
- initializeExtensions(gl);
21
- installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);
22
- installOverrides(gl, { target: contextState, target2: gl });
23
- contextState._polyfilled = true;
24
- }
25
- // Note - only supports a subset of WebGL2
26
- return gl;
6
+ const contextState = getContextData(gl);
7
+ if (!contextState._polyfilled) {
8
+ polyfillVertexArrayObject(gl);
9
+ initializeExtensions(gl);
10
+ installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);
11
+ installOverrides(gl, {
12
+ target: contextState,
13
+ target2: gl
14
+ });
15
+ contextState._polyfilled = true;
16
+ }
17
+ return gl;
27
18
  }
28
19
  function initializeExtensions(gl) {
29
- const contextState = getContextData(gl);
30
- // `getSupportedExtensions` can return null when context is lost.
31
- const EXTENSIONS = gl.getSupportedExtensions() || [];
32
- for (const extensionName of EXTENSIONS) {
33
- const extension = gl.getExtension(extensionName);
34
- contextState._extensions[extensionName] = extension;
35
- }
20
+ const contextState = getContextData(gl);
21
+ const EXTENSIONS = gl.getSupportedExtensions() || [];
22
+ for (const extensionName of EXTENSIONS) {
23
+ const extension = gl.getExtension(extensionName);
24
+ contextState._extensions[extensionName] = extension;
25
+ }
36
26
  }
37
27
  function installPolyfills(gl, polyfills) {
38
- const contextState = getContextData(gl);
39
- for (const extension of Object.getOwnPropertyNames(polyfills)) {
40
- if (extension !== 'overrides') {
41
- polyfillExtension(gl, { extension, target: contextState, target2: gl });
42
- }
28
+ const contextState = getContextData(gl);
29
+ for (const extension of Object.getOwnPropertyNames(polyfills)) {
30
+ if (extension !== 'overrides') {
31
+ polyfillExtension(gl, {
32
+ extension,
33
+ target: contextState,
34
+ target2: gl
35
+ });
43
36
  }
37
+ }
44
38
  }
45
- /** Polyfills a single WebGL extension into the `target` object */
46
- function polyfillExtension(gl, { extension, target, target2 }) {
47
- const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];
48
- assert(defaults);
49
- const { meta = {} } = defaults;
50
- const { suffix = '' } = meta;
51
- const ext = gl.getExtension(extension);
52
- for (const key of Object.keys(defaults)) {
53
- const extKey = `${key}${suffix}`;
54
- let polyfill = null;
55
- if (key === 'meta') {
56
- // ignore
57
- }
58
- else if (typeof gl[key] === 'function') {
59
- // WebGL2 implementation is already
60
- }
61
- else if (ext && typeof ext[extKey] === 'function') {
62
- // pick extension implementation,if available
63
- polyfill = (...args) => ext[extKey](...args);
64
- }
65
- else if (typeof defaults[key] === 'function') {
66
- // pick the mock implementation, if no implementation was detected
67
- polyfill = defaults[key].bind(target);
68
- }
69
- if (polyfill) {
70
- target[key] = polyfill;
71
- target2[key] = polyfill;
72
- }
39
+ function polyfillExtension(gl, _ref) {
40
+ let {
41
+ extension,
42
+ target,
43
+ target2
44
+ } = _ref;
45
+ const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];
46
+ assert(defaults);
47
+ const {
48
+ meta = {}
49
+ } = defaults;
50
+ const {
51
+ suffix = ''
52
+ } = meta;
53
+ const ext = gl.getExtension(extension);
54
+ for (const key of Object.keys(defaults)) {
55
+ const extKey = "".concat(key).concat(suffix);
56
+ let polyfill = null;
57
+ if (key === 'meta') {} else if (typeof gl[key] === 'function') {} else if (ext && typeof ext[extKey] === 'function') {
58
+ polyfill = function () {
59
+ return ext[extKey](...arguments);
60
+ };
61
+ } else if (typeof defaults[key] === 'function') {
62
+ polyfill = defaults[key].bind(target);
73
63
  }
64
+ if (polyfill) {
65
+ target[key] = polyfill;
66
+ target2[key] = polyfill;
67
+ }
68
+ }
74
69
  }
75
- /** Install simple overrides (mostly get* functions) */
76
- function installOverrides(gl, { target, target2 }) {
77
- Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach((key) => {
78
- if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {
79
- // install an override, if no implementation was detected
80
- const originalFunc = gl[key] ? gl[key].bind(gl) : () => { };
81
- const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);
82
- target[key] = polyfill;
83
- target2[key] = polyfill;
84
- }
85
- });
70
+ function installOverrides(gl, _ref2) {
71
+ let {
72
+ target,
73
+ target2
74
+ } = _ref2;
75
+ Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach(key => {
76
+ if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {
77
+ const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};
78
+ const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);
79
+ target[key] = polyfill;
80
+ target2[key] = polyfill;
81
+ }
82
+ });
86
83
  }
84
+ //# sourceMappingURL=polyfill-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfill-context.js","names":["assert","polyfillVertexArrayObject","WEBGL2_CONTEXT_POLYFILLS","WEBGL2_CONTEXT_OVERRIDES","getContextData","polyfillContext","gl","contextState","_polyfilled","initializeExtensions","installPolyfills","installOverrides","target","target2","EXTENSIONS","getSupportedExtensions","extensionName","extension","getExtension","_extensions","polyfills","Object","getOwnPropertyNames","polyfillExtension","_ref","defaults","meta","suffix","ext","key","keys","extKey","concat","polyfill","arguments","bind","_ref2","forEach","originalFunc"],"sources":["../../../src/context/polyfill/polyfill-context.ts"],"sourcesContent":["// WebGL1/WebGL2 extension polyfill support\n//\n// Provides a function that creates polyfills for WebGL2 functions based\n// on available extensions and installs them on a supplied target (could be\n// the WebGLContext or its prototype, or a separate object).\n//\n// This is intended to be a stand-alone file with minimal dependencies,\n// easy to reuse or repurpose in other projects.\n\nimport {assert} from '@luma.gl/api';\nimport {polyfillVertexArrayObject} from './polyfill-vertex-array-object';\n\nimport {WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES} from './polyfill-table';\nimport {getContextData} from './context-data';\n\n/**\n * Registers extensions, polyfills or mock functions for extensions in the polyfills list\n */\nexport function polyfillContext(gl: WebGLRenderingContext): WebGL2RenderingContext {\n const contextState = getContextData(gl);\n\n if (!contextState._polyfilled) {\n polyfillVertexArrayObject(gl);\n initializeExtensions(gl);\n installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);\n installOverrides(gl, {target: contextState, target2: gl});\n contextState._polyfilled = true;\n }\n\n // Note - only supports a subset of WebGL2\n return gl as WebGL2RenderingContext;\n}\n\nfunction initializeExtensions(gl: WebGLRenderingContext): void {\n const contextState = getContextData(gl);\n // `getSupportedExtensions` can return null when context is lost.\n const EXTENSIONS = gl.getSupportedExtensions() || [];\n for (const extensionName of EXTENSIONS) {\n const extension = gl.getExtension(extensionName);\n contextState._extensions[extensionName] = extension;\n }\n}\n\nfunction installPolyfills(gl: WebGLRenderingContext, polyfills): void {\n const contextState = getContextData(gl);\n for (const extension of Object.getOwnPropertyNames(polyfills)) {\n if (extension !== 'overrides') {\n polyfillExtension(gl, {extension, target: contextState, target2: gl});\n }\n }\n}\n\n/** Polyfills a single WebGL extension into the `target` object */\nfunction polyfillExtension(gl: WebGLRenderingContext, {extension, target, target2}): void {\n const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];\n assert(defaults);\n\n const {meta = {}} = defaults;\n const {suffix = ''} = meta;\n\n const ext = gl.getExtension(extension);\n\n for (const key of Object.keys(defaults)) {\n const extKey = `${key}${suffix}`;\n\n let polyfill: Function | null = null;\n if (key === 'meta') {\n // ignore\n } else if (typeof gl[key] === 'function') {\n // WebGL2 implementation is already\n } else if (ext && typeof ext[extKey] === 'function') {\n // pick extension implementation,if available\n polyfill = (...args) => ext[extKey](...args);\n } else if (typeof defaults[key] === 'function') {\n // pick the mock implementation, if no implementation was detected\n polyfill = defaults[key].bind(target);\n }\n\n if (polyfill) {\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n }\n}\n\n/** Install simple overrides (mostly get* functions) */\nfunction installOverrides(gl: WebGLRenderingContext, {target, target2}) {\n Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach((key) => {\n if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n // install an override, if no implementation was detected\n const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"polyfill-table.d.ts","sourceRoot":"","sources":["../../../src/context/polyfill/polyfill-table.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAyB9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;sCAmBH,MAAM,WAAW,MAAM;;;;;;;;;;;;;;;;;;qCA4B7B,MAAM;8CAIG,MAAM;iCAGd,OAAO,SAAS,OAAO;;CAEnD,CAAC;AAEF,eAAO,MAAM,wBAAwB;qBAElB,qBAAqB;0BAQhB,qBAAqB;8BAoBjB,qBAAqB;qCAcd,qBAAqB;;;;CA+BvD,CAAC"}
1
+ {"version":3,"file":"polyfill-table.d.ts","sourceRoot":"","sources":["../../../src/context/polyfill/polyfill-table.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AA0B9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;sCAmBH,MAAM,WAAW,MAAM;;;;;;;;;;;;;;;;;;qCA4B7B,MAAM;8CAIG,MAAM;iCAGd,OAAO,SAAS,OAAO;;CAEnD,CAAC;AAEF,eAAO,MAAM,wBAAwB;qBAElB,qBAAqB;0BAQhB,qBAAqB;8BAoBjB,qBAAqB;qCAcd,qBAAqB;;;;CA+BvD,CAAC"}