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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +11 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +17 -35
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts +2 -2
  6. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/renderbuffer-formats.js +2 -7
  8. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
  10. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  11. package/dist/adapter/converters/sampler-parameters.js +19 -55
  12. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  13. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  14. package/dist/adapter/converters/texture-formats.js +13 -66
  15. package/dist/adapter/converters/texture-formats.js.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  17. package/dist/adapter/converters/vertex-formats.js +2 -8
  18. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/device-features.js +13 -20
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-limits.js +1 -4
  23. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  24. package/dist/adapter/device-helpers/get-device-info.js +8 -10
  25. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  26. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  27. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  28. package/dist/adapter/helpers/attribute-utils.js +0 -17
  29. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  31. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  32. package/dist/adapter/helpers/get-shader-info.js +25 -0
  33. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  34. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  36. package/dist/adapter/helpers/get-shader-layout.js +41 -67
  37. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  38. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  39. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  40. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  41. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  42. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  43. package/dist/adapter/helpers/set-uniform.js +1 -31
  44. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  45. package/dist/adapter/helpers/uniforms.d.ts +1 -1
  46. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  47. package/dist/adapter/helpers/uniforms.js +4 -14
  48. package/dist/adapter/helpers/uniforms.js.map +1 -1
  49. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  50. package/dist/adapter/objects/constants-to-keys.js +0 -7
  51. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  52. package/dist/adapter/objects/webgl-renderbuffer.d.ts +3 -3
  53. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  54. package/dist/adapter/objects/webgl-renderbuffer.js +6 -22
  55. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  56. package/dist/adapter/objects/webgl-resource.d.ts +3 -5
  57. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  58. package/dist/adapter/objects/webgl-resource.js +15 -68
  59. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  60. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +6 -6
  61. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  62. package/dist/adapter/objects/webgl-vertex-array-object.js +7 -17
  63. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  64. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  65. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-buffer.js +18 -49
  67. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  68. package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
  69. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-command-buffer.js +3 -18
  71. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  72. package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -3
  73. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-command-encoder.js +2 -15
  75. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  76. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  77. package/dist/adapter/resources/webgl-framebuffer.d.ts +16 -16
  78. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-framebuffer.js +17 -75
  80. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -3
  82. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-render-pass.js +3 -8
  84. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  85. package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
  86. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-render-pipeline.js +51 -140
  88. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  89. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  90. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-sampler.js +5 -13
  92. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  93. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  94. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-shader.js +8 -21
  96. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  97. package/dist/adapter/resources/webgl-texture.d.ts +26 -26
  98. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-texture.js +66 -183
  100. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  101. package/dist/adapter/webgl-canvas-context.d.ts +3 -3
  102. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  103. package/dist/adapter/webgl-canvas-context.js +6 -19
  104. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  105. package/dist/adapter/webgl-device.d.ts +53 -37
  106. package/dist/adapter/webgl-device.d.ts.map +1 -1
  107. package/dist/adapter/webgl-device.js +108 -109
  108. package/dist/adapter/webgl-device.js.map +1 -1
  109. package/dist/classic/accessor.d.ts +1 -1
  110. package/dist/classic/accessor.d.ts.map +1 -1
  111. package/dist/classic/accessor.js +12 -36
  112. package/dist/classic/accessor.js.map +1 -1
  113. package/dist/classic/buffer.d.ts +3 -4
  114. package/dist/classic/buffer.d.ts.map +1 -1
  115. package/dist/classic/buffer.js +30 -87
  116. package/dist/classic/buffer.js.map +1 -1
  117. package/dist/classic/typed-array-utils.d.ts +1 -1
  118. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  119. package/dist/classic/typed-array-utils.js +0 -20
  120. package/dist/classic/typed-array-utils.js.map +1 -1
  121. package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
  122. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  123. package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
  124. package/dist/context/context/create-browser-context.js.map +1 -0
  125. package/dist/context/context/create-headless-context.d.ts +9 -0
  126. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  127. package/dist/context/context/create-headless-context.js +42 -0
  128. package/dist/context/context/create-headless-context.js.map +1 -0
  129. package/dist/context/context/webgl-checks.js +0 -3
  130. package/dist/context/context/webgl-checks.js.map +1 -1
  131. package/dist/context/debug/spector.d.ts +1 -0
  132. package/dist/context/debug/spector.d.ts.map +1 -1
  133. package/dist/context/debug/spector.js +7 -19
  134. package/dist/context/debug/spector.js.map +1 -1
  135. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  136. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  137. package/dist/context/debug/webgl-developer-tools.js +8 -32
  138. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  139. package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
  140. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  141. package/dist/context/parameters/unified-parameter-api.js +8 -18
  142. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  143. package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
  144. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  145. package/dist/context/parameters/webgl-parameter-tables.js +16 -34
  146. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  147. package/dist/context/polyfill/context-data.d.ts +13 -0
  148. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  149. package/dist/context/polyfill/context-data.js +12 -0
  150. package/dist/context/polyfill/context-data.js.map +1 -0
  151. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  152. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  154. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  155. package/dist/context/polyfill/polyfill-context.js +20 -28
  156. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  157. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  158. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  159. package/dist/context/polyfill/polyfill-table.js +8 -30
  160. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  161. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  162. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  163. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  164. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  165. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  166. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  167. package/dist/context/state-tracker/track-context-state.js +15 -50
  168. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  169. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  170. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  171. package/dist/context/state-tracker/with-parameters.js +7 -9
  172. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  173. package/dist/dist.dev.js +9204 -0
  174. package/dist/index.cjs +5948 -0
  175. package/dist/index.d.ts +19 -19
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +24 -26
  178. package/dist/index.js.map +1 -1
  179. package/dist/types/webgl.d.ts +8 -7
  180. package/dist/types/webgl.d.ts.map +1 -1
  181. package/dist/types/webgl.js.map +1 -1
  182. package/dist/types.js.map +1 -1
  183. package/dist.min.js +36 -0
  184. package/package.json +18 -9
  185. package/src/.DS_Store +0 -0
  186. package/src/adapter/.DS_Store +0 -0
  187. package/src/adapter/converters/device-parameters.ts +45 -16
  188. package/src/adapter/converters/renderbuffer-formats.ts +1 -3
  189. package/src/adapter/converters/sampler-parameters.ts +18 -7
  190. package/src/adapter/converters/texture-formats.ts +18 -16
  191. package/src/adapter/converters/vertex-formats.ts +1 -0
  192. package/src/adapter/device-helpers/device-features.ts +9 -2
  193. package/src/adapter/device-helpers/device-limits.ts +1 -1
  194. package/src/adapter/device-helpers/get-device-info.ts +12 -8
  195. package/src/adapter/helpers/get-shader-info.ts +37 -0
  196. package/src/adapter/helpers/get-shader-layout.ts +59 -37
  197. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  198. package/src/adapter/helpers/set-uniform.ts +3 -1
  199. package/src/adapter/helpers/uniforms.ts +21 -10
  200. package/src/adapter/objects/constants-to-keys.ts +4 -1
  201. package/src/adapter/objects/webgl-renderbuffer.ts +8 -8
  202. package/src/adapter/objects/webgl-resource.ts +8 -13
  203. package/src/adapter/objects/webgl-vertex-array-object.ts +10 -10
  204. package/src/adapter/resources/webgl-buffer.ts +16 -16
  205. package/src/adapter/resources/webgl-command-buffer.ts +3 -3
  206. package/src/adapter/resources/webgl-command-encoder.ts +8 -8
  207. package/src/adapter/resources/webgl-external-texture.ts +1 -1
  208. package/src/adapter/resources/webgl-framebuffer.ts +36 -33
  209. package/src/adapter/resources/webgl-render-pass.ts +4 -3
  210. package/src/adapter/resources/webgl-render-pipeline.ts +89 -77
  211. package/src/adapter/resources/webgl-sampler.ts +12 -6
  212. package/src/adapter/resources/webgl-shader.ts +10 -9
  213. package/src/adapter/resources/webgl-texture.ts +55 -45
  214. package/src/adapter/webgl-canvas-context.ts +8 -9
  215. package/src/adapter/webgl-device.ts +153 -69
  216. package/src/classic/accessor.ts +2 -15
  217. package/src/classic/buffer.ts +18 -25
  218. package/src/classic/typed-array-utils.ts +4 -2
  219. package/src/context/.DS_Store +0 -0
  220. package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
  221. package/src/context/context/create-headless-context.ts +48 -0
  222. package/src/context/debug/spector.ts +6 -5
  223. package/src/context/debug/webgl-developer-tools.ts +13 -13
  224. package/src/context/parameters/unified-parameter-api.ts +18 -12
  225. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  226. package/src/context/polyfill/context-data.ts +27 -0
  227. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  228. package/src/context/polyfill/polyfill-context.ts +6 -8
  229. package/src/context/polyfill/polyfill-table.ts +16 -14
  230. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  231. package/src/context/state-tracker/track-context-state.ts +13 -12
  232. package/src/context/state-tracker/with-parameters.ts +8 -2
  233. package/src/index.ts +28 -26
  234. package/src/types/webgl.ts +10 -7
  235. package/dist/bundle.d.ts +0 -2
  236. package/dist/bundle.d.ts.map +0 -1
  237. package/dist/bundle.js +0 -5
  238. package/dist/bundle.js.map +0 -1
  239. package/dist/context/context/context-state.d.ts +0 -18
  240. package/dist/context/context/context-state.d.ts.map +0 -1
  241. package/dist/context/context/context-state.js +0 -26
  242. package/dist/context/context/context-state.js.map +0 -1
  243. package/dist/context/context/create-context.d.ts.map +0 -1
  244. package/dist/context/context/create-context.js.map +0 -1
  245. package/dist/context/context/device-pixels.d.ts +0 -25
  246. package/dist/context/context/device-pixels.d.ts.map +0 -1
  247. package/dist/context/context/device-pixels.js +0 -98
  248. package/dist/context/context/device-pixels.js.map +0 -1
  249. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  250. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  251. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  252. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  253. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  254. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  255. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  256. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  257. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  258. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  259. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  260. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  261. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  262. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  263. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  264. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  265. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  266. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  267. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  268. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  270. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  271. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  272. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  273. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  274. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  275. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  276. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  277. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  278. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  279. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  280. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  281. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  282. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  283. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  284. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  285. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  286. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  287. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  288. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  289. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  290. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  291. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  292. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  293. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  294. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  295. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  296. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  297. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  298. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  299. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  300. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  301. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  302. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  303. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  304. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  305. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  306. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  307. package/dist/es5/adapter/webgl-device.js +0 -399
  308. package/dist/es5/adapter/webgl-device.js.map +0 -1
  309. package/dist/es5/bundle.js +0 -7
  310. package/dist/es5/bundle.js.map +0 -1
  311. package/dist/es5/classic/accessor.js +0 -181
  312. package/dist/es5/classic/accessor.js.map +0 -1
  313. package/dist/es5/classic/buffer.js +0 -470
  314. package/dist/es5/classic/buffer.js.map +0 -1
  315. package/dist/es5/classic/typed-array-utils.js +0 -126
  316. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  317. package/dist/es5/context/context/context-state.js +0 -31
  318. package/dist/es5/context/context/context-state.js.map +0 -1
  319. package/dist/es5/context/context/create-context.js +0 -69
  320. package/dist/es5/context/context/create-context.js.map +0 -1
  321. package/dist/es5/context/context/device-pixels.js +0 -115
  322. package/dist/es5/context/context/device-pixels.js.map +0 -1
  323. package/dist/es5/context/context/webgl-checks.js +0 -54
  324. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  325. package/dist/es5/context/debug/spector.js +0 -133
  326. package/dist/es5/context/debug/spector.js.map +0 -1
  327. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  328. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  329. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  330. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  331. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  332. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  333. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  334. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  335. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  336. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  337. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  338. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  339. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  340. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  341. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  342. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  343. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  344. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  345. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  346. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  347. package/dist/es5/index.js +0 -276
  348. package/dist/es5/index.js.map +0 -1
  349. package/dist/es5/init.js +0 -10
  350. package/dist/es5/init.js.map +0 -1
  351. package/dist/es5/types/webgl.js +0 -6
  352. package/dist/es5/types/webgl.js.map +0 -1
  353. package/dist/es5/types.js +0 -2
  354. package/dist/es5/types.js.map +0 -1
  355. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  356. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  357. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  358. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  359. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  360. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  361. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  362. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  363. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  364. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  365. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  366. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  367. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  368. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  369. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  370. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  371. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  372. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  373. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  374. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  375. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  376. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  377. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  378. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  379. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  380. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  381. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  382. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  383. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  384. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  385. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  386. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  387. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  388. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  389. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  390. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  391. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  392. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  393. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  394. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  395. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  396. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  397. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  398. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  399. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  400. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  401. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  402. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  403. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  404. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  405. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  406. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  407. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  408. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  409. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  410. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  411. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  412. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  413. package/dist/esm/adapter/webgl-device.js +0 -280
  414. package/dist/esm/adapter/webgl-device.js.map +0 -1
  415. package/dist/esm/bundle.js +0 -5
  416. package/dist/esm/bundle.js.map +0 -1
  417. package/dist/esm/classic/accessor.js +0 -144
  418. package/dist/esm/classic/accessor.js.map +0 -1
  419. package/dist/esm/classic/buffer.js +0 -384
  420. package/dist/esm/classic/buffer.js.map +0 -1
  421. package/dist/esm/classic/typed-array-utils.js +0 -112
  422. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  423. package/dist/esm/context/context/context-state.js +0 -26
  424. package/dist/esm/context/context/context-state.js.map +0 -1
  425. package/dist/esm/context/context/create-context.js +0 -49
  426. package/dist/esm/context/context/create-context.js.map +0 -1
  427. package/dist/esm/context/context/device-pixels.js +0 -98
  428. package/dist/esm/context/context/device-pixels.js.map +0 -1
  429. package/dist/esm/context/context/webgl-checks.js +0 -34
  430. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  431. package/dist/esm/context/debug/spector.js +0 -76
  432. package/dist/esm/context/debug/spector.js.map +0 -1
  433. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  434. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  435. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  436. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  437. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  438. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  439. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  440. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  441. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  442. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  443. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  444. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  445. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  446. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  447. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  448. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  449. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  450. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  451. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  452. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  453. package/dist/esm/index.js +0 -27
  454. package/dist/esm/index.js.map +0 -1
  455. package/dist/esm/init.js +0 -4
  456. package/dist/esm/init.js.map +0 -1
  457. package/dist/esm/types/webgl.js +0 -2
  458. package/dist/esm/types/webgl.js.map +0 -1
  459. package/dist/esm/types.js +0 -2
  460. package/dist/esm/types.js.map +0 -1
  461. package/dist/init.d.ts +0 -2
  462. package/dist/init.d.ts.map +0 -1
  463. package/dist/init.js +0 -4
  464. package/dist/init.js.map +0 -1
  465. package/src/bundle.ts +0 -4
  466. package/src/context/context/context-state.ts +0 -41
  467. package/src/context/context/device-pixels.ts +0 -152
  468. package/src/init.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/converters/texture-formats.ts"],"names":["decodeTextureFormat","GL","isWebGL2","texture_compression_bc","texture_compression_astc","texture_compression_etc2","texture_compression_etc1_webgl","texture_compression_pvrtc_webgl","texture_compression_atc_webgl","X_S3TC","X_S3TC_SRGB","X_RGTC","X_BPTC","X_ETC2","X_ASTC","X_ETC1","X_PVRTC","X_ATC","EXT_SRGB","EXT_TEXTURE_NORM16","EXT_FLOAT_WEBGL1","EXT_FLOAT_RENDER_WEBGL2","EXT_HALF_FLOAT_WEBGL1","checkExtension","gl","extension","getExtension","checkExtensions","extensions","every","TEXTURE_FEATURE_CHECKS","checkTextureFeature","feature","checkTextureFeatures","features","getTextureFeatures","textureFeatures","Object","keys","filter","TEXTURE_FORMATS","RGB","gl1","b","c","bpp","dataFormat","types","UNSIGNED_BYTE","UNSIGNED_SHORT_5_6_5","RGBA","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","R8","R8_SNORM","R8UI","R8I","RG8","RG8_SNORM","RG8UI","RG8I","R16UI","R16I","R16F","render","R16_EXT","f","R16_SNORM_EXT","RGBA4","wgpu","RGB565","RGB5_A1","RGB8","RGB8_SNORM","RGBA8","SRGB8_ALPHA8","SRGB_ALPHA_EXT","gl1ext","RGBA8_SNORM","RGBA8UI","RGBA8I","RG16UI","RG16I","RG16F","RG16_EXT","RG16_SNORM_EXT","R32UI","R32I","R32F","RGB9_E5","p","R11F_G11F_B10F","RGB10_A2","RGB10_A2UI","RGB16_EXT","RGB16_SNORM_EXT","RG32UI","RG32I","RG32F","RGBA16UI","RGBA16I","RGBA16F","RGBA16_EXT","RGBA16_SNORM_EXT","RGB32F","gl2ext","FLOAT","RGBA32UI","RGBA32I","RGBA32F","STENCIL_INDEX8","attachment","STENCIL_ATTACHMENT","DEPTH_COMPONENT16","DEPTH_ATTACHMENT","DEPTH_COMPONENT24","DEPTH_COMPONENT32F","UNSIGNED_INT_24_8","DEPTH_STENCIL","DEPTH_STENCIL_ATTACHMENT","DEPTH24_STENCIL8","DEPTH32F_STENCIL8","COMPRESSED_RGB_S3TC_DXT1_EXT","x","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","getTextureFormat","format","entry","entries","find","Error","isTextureFormatSupported","formatOrGL","info","undefined","Boolean","getTextureFormatSupport","supported","decoded","filterable","signed","renderable","blendable","storable","isTextureFormatFilterable","endsWith","isTextureFormatRenderable","getWebGLTextureFormat","formatInfo","webglFormat","getWebGLTextureParameters","getWebGLPixelDataFormat","integer","normalized","type","getWebGLDataType","dataType","compressed","getWebGLDepthStencilAttachment","_checkFloat32ColorAttachment","internalFormat","srcFormat","srcType","texture","framebuffer","createTexture","bindTexture","TEXTURE_2D","level","width","height","border","pixel","Uint8Array","texImage2D","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","deleteTexture","deleteFramebuffer","DATA_FORMAT_CHANNELS","RED","RED_INTEGER","RG","RG_INTEGER","RGB_INTEGER","RGBA_INTEGER","DEPTH_COMPONENT","ALPHA","LUMINANCE","LUMINANCE_ALPHA","TYPE_SIZES","UNSIGNED_INT","INT","UNSIGNED_SHORT","SHORT","HALF_FLOAT","BYTE","getTextureFormatBytesPerPixel","params","channels","channelSize"],"mappings":"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","sourcesContent":["import type {TextureFormat, DeviceFeature, Device} from '@luma.gl/api';\nimport {decodeTextureFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\n\n// TEXTURE FEATURES\n\n// Define local device feature strings to optimize minification\nconst texture_compression_bc: DeviceFeature = 'texture-compression-bc';\nconst texture_compression_astc: DeviceFeature = 'texture-compression-astc';\nconst texture_compression_etc2: DeviceFeature = 'texture-compression-etc2';\nconst texture_compression_etc1_webgl: DeviceFeature = 'texture-compression-etc1-webgl';\nconst texture_compression_pvrtc_webgl: DeviceFeature = 'texture-compression-pvrtc-webgl';\nconst texture_compression_atc_webgl: DeviceFeature = 'texture-compression-atc-webgl';\n\n// Define local webgl extension strings to optimize minification\nconst X_S3TC = 'WEBGL_compressed_texture_s3tc'; // BC1, BC2, BC3\nconst X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb'; // BC1, BC2, BC3\nconst X_RGTC = 'EXT_texture_compression_rgtc'; // BC4, BC5\nconst X_BPTC = 'EXT_texture_compression_bptc'; // BC6, BC7\nconst X_ETC2 = 'WEBGL_compressed_texture_etc'; // Renamed from 'WEBGL_compressed_texture_es3'\nconst X_ASTC = 'WEBGL_compressed_texture_astc';\nconst X_ETC1 = 'WEBGL_compressed_texture_etc1';\nconst X_PVRTC = 'WEBGL_compressed_texture_pvrtc';\nconst X_ATC = 'WEBGL_compressed_texture_atc';\n\n// Define local webgl extension strings to optimize minification\nconst EXT_SRGB = 'EXT_sRGB'; // https://developer.mozilla.org/en-US/docs/Web/API/EXT_sRGB\nconst EXT_TEXTURE_NORM16 = 'EXT_texture_norm16';\nconst EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_RENDER_WEBGL2 = 'EXT_color_buffer_float';\nconst EXT_HALF_FLOAT_WEBGL1 = 'WEBGL_color_buffer_half_float';\n// const DEPTH = 'WEBGL_depth_texture';\n\nconst checkExtension = (gl: WebGLRenderingContext, extension: string): boolean =>\n gl.getExtension(extension);\nconst checkExtensions = (gl: WebGLRenderingContext, extensions: string[]): boolean =>\n extensions.every((extension) => gl.getExtension(extension));\n\n// prettier-ignore\nconst TEXTURE_FEATURE_CHECKS: Partial<Record<DeviceFeature, (gl: WebGLRenderingContext) => boolean> > = {\n 'texture-blend-float-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'EXT_float_blend'),\n 'texture-formats-srgb-webgl1': (gl) => (isWebGL2(gl) ? true : checkExtension(gl, EXT_SRGB)),\n 'texture-formats-depth-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'WEBGL_depth_texture'),\n 'texture-formats-float32-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_float'),\n 'texture-formats-float16-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_half_float'),\n 'texture-formats-norm16-webgl': (gl) => isWebGL2(gl) ? checkExtension(gl, EXT_TEXTURE_NORM16) : false,\n 'texture-filter-linear-float32-webgl': (gl) => checkExtension(gl, 'OES_texture_float_linear'),\n 'texture-filter-linear-float16-webgl': (gl) => checkExtension(gl, 'OES_texture_half_float_linear'),\n 'texture-filter-anisotropic-webgl': (gl) => checkExtension(gl, 'EXT_texture_filter_anisotropic'),\n 'texture-renderable-float32-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_float'), // [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_half_float'),\n\n 'texture-compression-bc': (gl) => checkExtensions(gl, [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC]),\n 'texture-compression-bc5-webgl': (gl) => checkExtensions(gl, [X_RGTC]),\n // 'texture-compression-bc7-webgl': gl => checkExtensions(gl, [X_BPTC]),\n // 'texture-compression-bc3-srgb-webgl': gl => checkExtensions(gl, [X_S3TC_SRGB]),\n // 'texture-compression-bc3-webgl': gl => checkExtensions(gl, [X_S3TC]),\n 'texture-compression-etc2': (gl) => checkExtensions(gl, [X_ETC2]),\n 'texture-compression-astc': (gl) => checkExtensions(gl, [X_ASTC]),\n 'texture-compression-etc1-webgl': (gl) => checkExtensions(gl, [X_ETC1]),\n 'texture-compression-pvrtc-webgl': (gl) => checkExtensions(gl, [X_PVRTC]),\n 'texture-compression-atc-webgl': (gl) => checkExtensions(gl, [X_ATC])\n};\n\nexport function checkTextureFeature(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n return TEXTURE_FEATURE_CHECKS[feature]?.(gl);\n}\n\nconst checkTextureFeatures = (gl: WebGLRenderingContext, features: DeviceFeature[]): boolean =>\n features.every((feature) => checkTextureFeature(gl, feature));\n\n/** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */\nexport function getTextureFeatures(gl: WebGLRenderingContext): DeviceFeature[] {\n const textureFeatures = Object.keys(TEXTURE_FEATURE_CHECKS) as DeviceFeature[];\n return textureFeatures.filter((feature) => checkTextureFeature(gl, feature));\n}\n\n// TEXTURE FORMATS\n\n/** Map a format to webgl and constants */\ntype Format = {\n gl?: GL;\n /** If a different unsized format is needed in WebGL1 */\n gl1?: GL;\n gl1ext?: string;\n gl2ext?: string; // format requires WebGL2, when using a WebGL 1 context, color renderbuffer formats are limited\n\n b?: number; // (bytes per pixel), for memory usage calculations.\n /** channels */\n c?: number;\n bpp?: number;\n /** packed */\n p?: number;\n x?: string; // compressed\n f?: DeviceFeature; // for compressed texture formats\n render?: DeviceFeature; // renderable if extension is present\n filter?: DeviceFeature;\n\n wgpu?: false; // If not supported on WebGPU\n\n types?: number[];\n\n dataFormat?: GL;\n attachment?: GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;\n};\n\n// TABLES\n\n/** Legal combinations for internalFormat, format and type *\n// [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1ext: DEPTH},\n// [GL.DEPTH_STENCIL]: {gl1ext: DEPTH},\n// Sized texture format\n// R\n[GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RG\n[GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGB\n[GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGBA\n\n[GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n[GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n[GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n[GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n*/\n\n/** Texture format data */\n// prettier-ignore\nexport const TEXTURE_FORMATS: Record<TextureFormat, Format> = {\n // Unsized formats that leave the precision up to the driver.\n // TODO - Fix bpp constants\n // 'r8unorm-unsized': {gl: GL.LUMINANCE, b: 4, c: 2, bpp: 4},\n 'rgb8unorm-unsized': {gl: GL.RGB, gl1: GL.RGB, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n 'rgba8unorm-unsized': {gl: GL.RGBA, gl1: GL.RGBA, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]},\n // 'rgb8unorm-srgb-unsized': {gl: GL.SRGB_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n // 'rgba8unorm-srgb-unsized': {gl: GL.SRGB_ALPHA_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n\n // 8-bit formats\n 'r8unorm': {gl: GL.R8, b: 1, c: 1},\n 'r8snorm': {gl: GL.R8_SNORM, b: 1, c: 1},\n 'r8uint': {gl: GL.R8UI, b: 1, c: 1},\n 'r8sint': {gl: GL.R8I, b: 1, c: 1},\n\n // 16-bit formats\n 'rg8unorm': {gl: GL.RG8, b: 2, c: 2},\n 'rg8snorm': {gl: GL.RG8_SNORM, b: 2, c: 2},\n 'rg8uint': {gl: GL.RG8UI, b: 2, c: 2},\n 'rg8sint': {gl: GL.RG8I, b: 2, c: 2},\n\n 'r16uint': {gl: GL.R16UI, b: 2, c: 1},\n 'r16sint': {gl: GL.R16I, b: 2, c: 1},\n 'r16float': {gl: GL.R16F, b: 2, c: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'r16unorm-webgl': {gl: GL.R16_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n 'r16snorm-webgl': {gl: GL.R16_SNORM_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n\n // Packed 16-bit formats\n 'rgba4unorm-webgl': {gl: GL.RGBA4, b: 2, c: 4, wgpu: false},\n 'rgb565unorm-webgl': {gl: GL.RGB565, b: 2, c: 4, wgpu: false},\n 'rgb5a1unorm-webgl': {gl: GL.RGB5_A1, b: 2, c: 4, wgpu: false},\n\n // 24-bit formats\n 'rbg8unorm-webgl': {gl: GL.RGB8, b: 3, c: 3, wgpu: false},\n 'rbg8snorm-webgl': {gl: GL.RGB8_SNORM, b: 3, c: 3, wgpu: false},\n\n // 32-bit formats \n 'rgba8unorm': {gl: GL.RGBA8, gl1: GL.RGBA, b: 4, c: 2, bpp: 4},\n 'rgba8unorm-srgb': {gl: GL.SRGB8_ALPHA8, gl1: GL.SRGB_ALPHA_EXT, b: 4, c: 4, gl1ext: EXT_SRGB, bpp: 4},\n 'rgba8snorm': {gl: GL.RGBA8_SNORM, b: 4, c: 4},\n 'rgba8uint': {gl: GL.RGBA8UI, b: 4, c: 4, bpp: 4},\n 'rgba8sint': {gl: GL.RGBA8I, b: 4, c: 4, bpp: 4},\n // reverse colors, webgpu only\n 'bgra8unorm': {b: 4, c: 4},\n 'bgra8unorm-srgb': {b: 4, c: 4},\n\n 'rg16uint': {gl: GL.RG16UI, b: 4, c: 1, bpp: 4},\n 'rg16sint': {gl: GL.RG16I, b: 4, c: 2, bpp: 4},\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n 'rg16float': {gl: GL.RG16F, bpp: 4, b: 4, c: 2, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg16unorm-webgl': {gl: GL.RG16_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n 'rg16snorm-webgl': {gl: GL.RG16_SNORM_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n\n 'r32uint': {gl: GL.R32UI, b: 4, c: 1, bpp: 4},\n 'r32sint': {gl: GL.R32I, b: 4, c: 1, bpp: 4},\n 'r32float': {gl: GL.R32F, bpp: 4, b: 4, c: 1, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Packed 32-bit formats\n 'rgb9e5ufloat': {gl: GL.RGB9_E5, b: 4, c: 3, p: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg11b10ufloat': {gl: GL.R11F_G11F_B10F, b: 4, c: 3, p: 1,render: 'texture-renderable-float32-webgl'},\n 'rgb10a2unorm': {gl: GL.RGB10_A2, b: 4, c: 4, p: 1},\n // webgl2 only\n 'rgb10a2unorm-webgl': {b: 4, c: 4, gl: GL.RGB10_A2UI, p: 1, wgpu: false, bpp: 4},\n\n // 48-bit formats\n 'rgb16unorm-webgl': {gl: GL.RGB16_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n 'rgb16snorm-webgl': {gl: GL.RGB16_SNORM_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n\n // 64-bit formats\n 'rg32uint': {gl: GL.RG32UI, b: 8, c: 2},\n 'rg32sint': {gl: GL.RG32I, b: 8, c: 2},\n 'rg32float': {gl: GL.RG32F, b: 8, c: 2, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n 'rgba16uint': {gl: GL.RGBA16UI, b: 8, c: 4},\n 'rgba16sint': {gl: GL.RGBA16I, b: 8, c: 4},\n 'rgba16float': {gl: GL.RGBA16F, gl1: GL.RGBA, b: 8, c: 4, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rgba16unorm-webgl': {gl: GL.RGBA16_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n 'rgba16snorm-webgl': {gl: GL.RGBA16_SNORM_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n\n // 96-bit formats (deprecated!)\n 'rgb32float-webgl': {gl: GL.RGB32F, gl1: GL.RGB, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl',\n gl2ext: EXT_FLOAT_RENDER_WEBGL2, gl1ext: EXT_FLOAT_WEBGL1, // WebGL1 render buffers are supported with GL.RGB32F\n dataFormat: GL.RGB, types: [GL.FLOAT]},\n \n // 128-bit formats\n 'rgba32uint': {gl: GL.RGBA32UI, b: 16, c: 4},\n 'rgba32sint': {gl: GL.RGBA32I, b: 16, c: 4},\n 'rgba32float': {gl: GL.RGBA32F, gl1: GL.RGBA, b: 16, c: 4, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Depth and stencil formats\n 'stencil8': {gl: GL.STENCIL_INDEX8, b: 1, c: 1, attachment: GL.STENCIL_ATTACHMENT}, // 8 stencil bits\n\n 'depth16unorm': {gl: GL.DEPTH_COMPONENT16, gl1: GL.DEPTH_COMPONENT16, b: 2, c: 1, attachment: GL.DEPTH_ATTACHMENT}, // 16 depth bits\n 'depth24plus': {gl: GL.DEPTH_COMPONENT24, b: 3, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n 'depth32float': {gl: GL.DEPTH_COMPONENT32F, b: 4, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n\n 'depth24plus-stencil8': {b: 4, gl: GL.UNSIGNED_INT_24_8, gl1: GL.DEPTH_STENCIL, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth24unorm-stencil8\" feature\n 'depth24unorm-stencil8': {gl: GL.DEPTH24_STENCIL8, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth32float-stencil8\" feature\n \"depth32float-stencil8\": {gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n\n // BC compressed formats: check device.features.has(\"texture-compression-bc\");\n\n 'bc1-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgb-unorm-srgb-webgl': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n\n 'bc1-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc2-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc2-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc3-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc3-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc4-r-unorm': {gl: GL.COMPRESSED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc4-r-snorm': {gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-unorm': {gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-snorm': {gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc6h-rgb-ufloat': {gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc6h-rgb-float': {gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm': {gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n\n // WEBGL_compressed_texture_etc: device.features.has(\"texture-compression-etc2\")\n // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression\n\n 'etc2-rgb8unorm': {gl: GL.COMPRESSED_RGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm': {gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm-srgb': {gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgba8unorm': {gl: GL.COMPRESSED_RGBA8_ETC2_EAC, f: texture_compression_etc2},\n 'etc2-rgba8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, f: texture_compression_etc2},\n\n 'eac-r11unorm': {gl: GL.COMPRESSED_R11_EAC, f: texture_compression_etc2},\n 'eac-r11snorm': {gl: GL.COMPRESSED_SIGNED_R11_EAC, f: texture_compression_etc2},\n 'eac-rg11unorm': {gl: GL.COMPRESSED_RG11_EAC, f: texture_compression_etc2},\n 'eac-rg11snorm': {gl: GL.COMPRESSED_SIGNED_RG11_EAC, f: texture_compression_etc2},\n\n // X_ASTC compressed formats: device.features.has(\"texture-compression-astc\")\n\n 'astc-4x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-4x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, f: texture_compression_astc},\n\n // WEBGL_compressed_texture_pvrtc\n\n 'pvrtc-rgb4unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba4unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rbg2unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba2unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n\n // WEBGL_compressed_texture_etc1\n\n 'etc1-rbg-unorm-webgl': {gl: GL.COMPRESSED_RGB_ETC1_WEBGL, f: texture_compression_etc1_webgl},\n\n // WEBGL_compressed_texture_atc\n\n 'atc-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_ATC_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgba-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgbai-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, f: texture_compression_atc_webgl}\n};\n\n// FUNCTIONS\n\nfunction getTextureFormat(format: TextureFormat | GL): TextureFormat {\n if (typeof format === 'string') {\n return format;\n }\n const entry = Object.entries(TEXTURE_FORMATS).find(([, entry]) => (entry.gl === format || entry.gl1 === format));\n if (!entry) {\n throw new Error(`Unknown texture format ${format}`);\n }\n return entry[0] as TextureFormat;\n}\n\n/** Checks if a texture format is supported */\nexport function isTextureFormatSupported(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n // Check that we have a GL constant\n if (isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined) {\n return false;\n }\n // Check extensions\n const extension = info.x || (isWebGL2(gl) ? info.gl2ext || info.gl1ext : info.gl1ext);\n if (extension) {\n return Boolean(gl.getExtension(extension));\n }\n // if (info.gl1 === undefined && info.gl2 === undefined) {\n // // No info - always supported\n // }\n return true;\n}\n\n/** Checks if a texture format is supported */\nexport function getTextureFormatSupport(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): {\n supported: boolean;\n filterable?: boolean;\n renderable?: boolean;\n blendable?: boolean;\n storable?: boolean;\n} {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return {supported: false};\n }\n let decoded;\n try {\n decoded = decodeTextureFormat(format);\n } catch {}\n\n // Support Check that we have a GL constant\n let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;\n supported = supported && checkTextureFeatures(gl, [info.f]);\n\n // Filtering\n const filterable = info.filter\n ? checkTextureFeatures(gl, [info.filter])\n : decoded && !decoded.signed;\n const renderable = info.filter\n ? checkTextureFeatures(gl, [info.render])\n : decoded && !decoded.signed;\n\n return {\n supported,\n renderable: supported && checkTextureFeatures(gl, [info.render]),\n filterable: supported && checkTextureFeatures(gl, [info.filter]),\n blendable: false, // tod,\n storable: false\n };\n}\n\n/** Checks whether linear filtering (interpolated sampling) is available for floating point textures */\nexport function isTextureFormatFilterable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n try {\n const decoded = decodeTextureFormat(format);\n if (decoded.signed) {\n return false;\n }\n } catch {\n return false;\n }\n if (format.endsWith('32float')) {\n return Boolean(gl.getExtension('OES_texture_float_linear'));\n }\n if (format.endsWith('16float')) {\n return Boolean(gl.getExtension('OES_texture_half_float_linear'));\n }\n // if (typeof format === 'string') {\n // if (format === 'rgba32float') {\n // return gl.device.features.has('texture-renderable-rgba32float-webgl');\n // }\n // if (format.endsWith('32float')) {\n // return gl.device.features.has('texture-renderable-float32-webgl');\n // }\n // if (format.endsWith('16float')) {\n // return gl.device.features.has('texture-renderable-float16-webgl');\n // }\n // }\n return true;\n}\n\nexport function isTextureFormatRenderable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n if (typeof format === 'number') {\n return false; // isTextureFormatFilterableWebGL(gl, format);\n }\n // TODO depends on device...\n return true;\n}\n\n/**\n * Converts WebGPU string style texture formats to GL constants\n * Pass through GL constants\n */\nexport function getWebGLTextureFormat(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): GL | undefined {\n const format = getTextureFormat(formatOrGL);\n const formatInfo = TEXTURE_FORMATS[format];\n const webglFormat = isWebGL2(gl) ? formatInfo?.gl : formatInfo?.gl1;\n // Remap or pass through\n if (typeof format === 'number') {\n return webglFormat || format;\n }\n if (webglFormat === undefined) {\n throw new Error(`Unsupported texture format ${format}`);\n }\n return webglFormat;\n}\n\nexport function getWebGLTextureParameters(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL) {\n const format = getTextureFormat(formatOrGL);\n const webglFormat = getWebGLTextureFormat(gl, format);\n const decoded = decodeTextureFormat(format);\n return {\n format: webglFormat,\n dataFormat: getWebGLPixelDataFormat(\n decoded.format,\n decoded.integer,\n decoded.normalized,\n webglFormat\n ),\n type: getWebGLDataType(decoded.dataType),\n // @ts-expect-error\n compressed: decoded.compressed\n };\n}\n\nexport function getWebGLDepthStencilAttachment(\n formatOrGL: TextureFormat | GL\n): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT {\n const format = getTextureFormat(formatOrGL);\n if (typeof format === 'number') {\n // TODO\n throw new Error('unsupported depth stencil format')\n }\n const info = TEXTURE_FORMATS[format];\n const attachment = info.attachment;\n if (!attachment) {\n throw new Error('not a depth stencil format');\n }\n return attachment;\n}\n\n/**\n * function to test if Float 32 bit format texture can be bound as color attachment\n * @todo Generalize to check arbitrary formats?\n */\nexport function _checkFloat32ColorAttachment(\n gl: WebGLRenderingContext,\n internalFormat = gl.RGBA,\n srcFormat = GL.RGBA,\n srcType = GL.UNSIGNED_BYTE\n) {\n let texture: WebGLTexture;\n let framebuffer: WebGLFramebuffer;\n try {\n texture = gl.createTexture();\n gl.bindTexture(GL.TEXTURE_2D, texture);\n\n const level = 0;\n const width = 1;\n const height = 1;\n const border = 0;\n const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue\n gl.texImage2D(\n gl.TEXTURE_2D,\n level,\n internalFormat,\n width,\n height,\n border,\n srcFormat,\n srcType,\n pixel\n );\n\n framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;\n\n gl.bindTexture(GL.TEXTURE_2D, null);\n return status;\n } finally {\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n }\n}\n\n/** @deprecated should be removed */\nconst DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\n/** @deprecated should be removed */\nconst TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\n/** TODO - VERY roundabout legacy way of calculating bytes per pixel */\nexport function getTextureFormatBytesPerPixel(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): number {\n const format = getTextureFormat(formatOrGL);\n const params = getWebGLTextureParameters(gl, format);\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[params.dataFormat] || 4;\n const channelSize = TYPE_SIZES[params.type] || 1;\n return channels * channelSize;\n}\n\n// DATA TYPE HELPERS\n\nfunction getWebGLPixelDataFormat(\n dataFormat: string,\n integer: boolean,\n normalized: boolean,\n format: GL\n): GL {\n // WebGL1 formats use same internalFormat\n if (format === GL.RGBA || format === GL.RGB) {\n return format;\n }\n // prettier-ignore\n switch (dataFormat) {\n case 'r': return integer && !normalized ? GL.RED_INTEGER : GL.RED;\n case 'rg': return integer && !normalized ? GL.RG_INTEGER : GL.RG;\n case 'rgb': return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;\n case 'rgba': return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;\n default: return GL.RGBA;\n }\n}\n\nexport function getWebGLDataType(dataType: string): GL {\n // prettier-ignore\n switch (dataType) {\n case 'uint8': return GL.UNSIGNED_BYTE;\n case 'sint8': return GL.BYTE;\n case 'uint16': return GL.UNSIGNED_SHORT;\n case 'sint16': return GL.SHORT;\n case 'uint32': return GL.UNSIGNED_INT;\n case 'sint32': return GL.INT;\n case 'float16': return GL.HALF_FLOAT;\n case 'float32': return GL.FLOAT;\n default: return GL.UNSIGNED_BYTE;\n }\n}\n"],"file":"texture-formats.js"}
1
+ {"version":3,"file":"texture-formats.js","names":["decodeTextureFormat","GL","isWebGL2","texture_compression_bc","texture_compression_astc","texture_compression_etc2","texture_compression_etc1_webgl","texture_compression_pvrtc_webgl","texture_compression_atc_webgl","X_S3TC","X_S3TC_SRGB","X_RGTC","X_BPTC","X_ETC2","X_ASTC","X_ETC1","X_PVRTC","X_ATC","EXT_SRGB","EXT_TEXTURE_NORM16","EXT_FLOAT_WEBGL1","EXT_FLOAT_RENDER_WEBGL2","checkExtension","gl","extension","getExtension","checkExtensions","extensions","every","TEXTURE_FEATURE_CHECKS","checkTextureFeature","feature","_TEXTURE_FEATURE_CHEC","call","checkTextureFeatures","features","getTextureFeatures","textureFeatures","Object","keys","filter","TEXTURE_FORMATS","RGB","gl1","b","c","bpp","dataFormat","types","UNSIGNED_BYTE","UNSIGNED_SHORT_5_6_5","RGBA","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","R8","R8_SNORM","R8UI","R8I","RG8","RG8_SNORM","RG8UI","RG8I","R16UI","R16I","R16F","render","R16_EXT","f","R16_SNORM_EXT","RGBA4","wgpu","RGB565","RGB5_A1","RGB8","RGB8_SNORM","RGBA8","SRGB8_ALPHA8","SRGB_ALPHA_EXT","gl1ext","RGBA8_SNORM","RGBA8UI","RGBA8I","RG16UI","RG16I","RG16F","RG16_EXT","RG16_SNORM_EXT","R32UI","R32I","R32F","RGB9_E5","p","R11F_G11F_B10F","RGB10_A2","RGB10_A2UI","RGB16_EXT","RGB16_SNORM_EXT","RG32UI","RG32I","RG32F","RGBA16UI","RGBA16I","RGBA16F","RGBA16_EXT","RGBA16_SNORM_EXT","RGB32F","gl2ext","FLOAT","RGBA32UI","RGBA32I","RGBA32F","STENCIL_INDEX8","attachment","STENCIL_ATTACHMENT","DEPTH_COMPONENT16","DEPTH_ATTACHMENT","DEPTH_COMPONENT24","DEPTH_COMPONENT32F","UNSIGNED_INT_24_8","DEPTH_STENCIL","DEPTH_STENCIL_ATTACHMENT","DEPTH24_STENCIL8","DEPTH32F_STENCIL8","COMPRESSED_RGB_S3TC_DXT1_EXT","x","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","getTextureFormat","format","entry","entries","find","_ref","Error","concat","isTextureFormatSupported","formatOrGL","info","undefined","Boolean","getTextureFormatSupport","supported","renderable","filterable","blendable","storable","isTextureFormatFilterable","decoded","signed","endsWith","isTextureFormatRenderable","getWebGLTextureFormat","formatInfo","webglFormat","getWebGLTextureParameters","getWebGLPixelDataFormat","integer","normalized","type","getWebGLDataType","dataType","compressed","getWebGLDepthStencilAttachment","_checkFloat32ColorAttachment","internalFormat","arguments","length","srcFormat","srcType","texture","framebuffer","createTexture","bindTexture","TEXTURE_2D","level","width","height","border","pixel","Uint8Array","texImage2D","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","deleteTexture","deleteFramebuffer","DATA_FORMAT_CHANNELS","RED","RED_INTEGER","RG","RG_INTEGER","RGB_INTEGER","RGBA_INTEGER","DEPTH_COMPONENT","ALPHA","LUMINANCE","LUMINANCE_ALPHA","TYPE_SIZES","UNSIGNED_INT","INT","UNSIGNED_SHORT","SHORT","HALF_FLOAT","BYTE","getTextureFormatBytesPerPixel","params","channels","channelSize"],"sources":["../../../src/adapter/converters/texture-formats.ts"],"sourcesContent":["import type {TextureFormat, DeviceFeature} from '@luma.gl/api';\nimport {decodeTextureFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\n\n/* eslint-disable camelcase */\n\n// TEXTURE FEATURES\n\n// Define local device feature strings to optimize minification\nconst texture_compression_bc: DeviceFeature = 'texture-compression-bc';\nconst texture_compression_astc: DeviceFeature = 'texture-compression-astc';\nconst texture_compression_etc2: DeviceFeature = 'texture-compression-etc2';\nconst texture_compression_etc1_webgl: DeviceFeature = 'texture-compression-etc1-webgl';\nconst texture_compression_pvrtc_webgl: DeviceFeature = 'texture-compression-pvrtc-webgl';\nconst texture_compression_atc_webgl: DeviceFeature = 'texture-compression-atc-webgl';\n\n// Define local webgl extension strings to optimize minification\nconst X_S3TC = 'WEBGL_compressed_texture_s3tc'; // BC1, BC2, BC3\nconst X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb'; // BC1, BC2, BC3\nconst X_RGTC = 'EXT_texture_compression_rgtc'; // BC4, BC5\nconst X_BPTC = 'EXT_texture_compression_bptc'; // BC6, BC7\nconst X_ETC2 = 'WEBGL_compressed_texture_etc'; // Renamed from 'WEBGL_compressed_texture_es3'\nconst X_ASTC = 'WEBGL_compressed_texture_astc';\nconst X_ETC1 = 'WEBGL_compressed_texture_etc1';\nconst X_PVRTC = 'WEBGL_compressed_texture_pvrtc';\nconst X_ATC = 'WEBGL_compressed_texture_atc';\n\n// Define local webgl extension strings to optimize minification\nconst EXT_SRGB = 'EXT_sRGB'; // https://developer.mozilla.org/en-US/docs/Web/API/EXT_sRGB\nconst EXT_TEXTURE_NORM16 = 'EXT_texture_norm16';\nconst EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_RENDER_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n// const DEPTH = 'WEBGL_depth_texture';\n\nconst checkExtension = (gl: WebGLRenderingContext, extension: string): boolean =>\n gl.getExtension(extension);\nconst checkExtensions = (gl: WebGLRenderingContext, extensions: string[]): boolean =>\n extensions.every((extension) => gl.getExtension(extension));\n\n// prettier-ignore\nconst TEXTURE_FEATURE_CHECKS: Partial<Record<DeviceFeature, (gl: WebGLRenderingContext) => boolean> > = {\n 'texture-blend-float-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'EXT_float_blend'),\n 'texture-formats-srgb-webgl1': (gl) => (isWebGL2(gl) ? true : checkExtension(gl, EXT_SRGB)),\n 'texture-formats-depth-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'WEBGL_depth_texture'),\n 'texture-formats-float32-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_float'),\n 'texture-formats-float16-webgl1': (gl) => isWebGL2(gl) ? true : checkExtension(gl, 'OES_texture_half_float'),\n 'texture-formats-norm16-webgl': (gl) => isWebGL2(gl) ? checkExtension(gl, EXT_TEXTURE_NORM16) : false,\n 'texture-filter-linear-float32-webgl': (gl) => checkExtension(gl, 'OES_texture_float_linear'),\n 'texture-filter-linear-float16-webgl': (gl) => checkExtension(gl, 'OES_texture_half_float_linear'),\n 'texture-filter-anisotropic-webgl': (gl) => checkExtension(gl, 'EXT_texture_filter_anisotropic'),\n 'texture-renderable-float32-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_float'), // [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': (gl) => checkExtension(gl, 'EXT_color_buffer_half_float'),\n\n 'texture-compression-bc': (gl) => checkExtensions(gl, [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC]),\n 'texture-compression-bc5-webgl': (gl) => checkExtensions(gl, [X_RGTC]),\n // 'texture-compression-bc7-webgl': gl => checkExtensions(gl, [X_BPTC]),\n // 'texture-compression-bc3-srgb-webgl': gl => checkExtensions(gl, [X_S3TC_SRGB]),\n // 'texture-compression-bc3-webgl': gl => checkExtensions(gl, [X_S3TC]),\n 'texture-compression-etc2': (gl) => checkExtensions(gl, [X_ETC2]),\n 'texture-compression-astc': (gl) => checkExtensions(gl, [X_ASTC]),\n 'texture-compression-etc1-webgl': (gl) => checkExtensions(gl, [X_ETC1]),\n 'texture-compression-pvrtc-webgl': (gl) => checkExtensions(gl, [X_PVRTC]),\n 'texture-compression-atc-webgl': (gl) => checkExtensions(gl, [X_ATC])\n};\n\nexport function checkTextureFeature(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n return TEXTURE_FEATURE_CHECKS[feature]?.(gl) || false;\n}\n\nconst checkTextureFeatures = (gl: WebGLRenderingContext, features: DeviceFeature[]): boolean =>\n features.every((feature) => checkTextureFeature(gl, feature));\n\n/** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */\nexport function getTextureFeatures(gl: WebGLRenderingContext): DeviceFeature[] {\n const textureFeatures = Object.keys(TEXTURE_FEATURE_CHECKS) as DeviceFeature[];\n return textureFeatures.filter((feature) => checkTextureFeature(gl, feature));\n}\n\n// TEXTURE FORMATS\n\n/** Map a format to webgl and constants */\ntype Format = {\n gl?: GL;\n /** If a different unsized format is needed in WebGL1 */\n gl1?: GL;\n gl1ext?: string;\n gl2ext?: string; // format requires WebGL2, when using a WebGL 1 context, color renderbuffer formats are limited\n\n b?: number; // (bytes per pixel), for memory usage calculations.\n /** channels */\n c?: number;\n bpp?: number;\n /** packed */\n p?: number;\n x?: string; // compressed\n f?: DeviceFeature; // for compressed texture formats\n render?: DeviceFeature; // renderable if extension is present\n filter?: DeviceFeature;\n\n wgpu?: false; // If not supported on WebGPU\n\n types?: number[];\n\n dataFormat?: GL;\n attachment?: GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;\n};\n\n// TABLES\n\n/** Legal combinations for internalFormat, format and type *\n// [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1ext: DEPTH},\n// [GL.DEPTH_STENCIL]: {gl1ext: DEPTH},\n// Sized texture format\n// R\n[GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RG\n[GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGB\n[GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n// // RGBA\n\n[GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n[GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n[GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true},\n[GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},\n[GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n[GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n[GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},\n[GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n*/\n\n/** Texture format data */\n// prettier-ignore\nexport const TEXTURE_FORMATS: Record<TextureFormat, Format> = {\n // Unsized formats that leave the precision up to the driver.\n // TODO - Fix bpp constants\n // 'r8unorm-unsized': {gl: GL.LUMINANCE, b: 4, c: 2, bpp: 4},\n 'rgb8unorm-unsized': {gl: GL.RGB, gl1: GL.RGB, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n 'rgba8unorm-unsized': {gl: GL.RGBA, gl1: GL.RGBA, b: 4, c: 2, bpp: 4,\n dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]},\n // 'rgb8unorm-srgb-unsized': {gl: GL.SRGB_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n // 'rgba8unorm-srgb-unsized': {gl: GL.SRGB_ALPHA_EXT, b: 4, c: 2, bpp: 4, gl1Ext: SRGB},\n\n // 8-bit formats\n 'r8unorm': {gl: GL.R8, b: 1, c: 1},\n 'r8snorm': {gl: GL.R8_SNORM, b: 1, c: 1},\n 'r8uint': {gl: GL.R8UI, b: 1, c: 1},\n 'r8sint': {gl: GL.R8I, b: 1, c: 1},\n\n // 16-bit formats\n 'rg8unorm': {gl: GL.RG8, b: 2, c: 2},\n 'rg8snorm': {gl: GL.RG8_SNORM, b: 2, c: 2},\n 'rg8uint': {gl: GL.RG8UI, b: 2, c: 2},\n 'rg8sint': {gl: GL.RG8I, b: 2, c: 2},\n\n 'r16uint': {gl: GL.R16UI, b: 2, c: 1},\n 'r16sint': {gl: GL.R16I, b: 2, c: 1},\n 'r16float': {gl: GL.R16F, b: 2, c: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'r16unorm-webgl': {gl: GL.R16_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n 'r16snorm-webgl': {gl: GL.R16_SNORM_EXT, b:2, c:1, f: 'texture-formats-norm16-webgl'},\n\n // Packed 16-bit formats\n 'rgba4unorm-webgl': {gl: GL.RGBA4, b: 2, c: 4, wgpu: false},\n 'rgb565unorm-webgl': {gl: GL.RGB565, b: 2, c: 4, wgpu: false},\n 'rgb5a1unorm-webgl': {gl: GL.RGB5_A1, b: 2, c: 4, wgpu: false},\n\n // 24-bit formats\n 'rbg8unorm-webgl': {gl: GL.RGB8, b: 3, c: 3, wgpu: false},\n 'rbg8snorm-webgl': {gl: GL.RGB8_SNORM, b: 3, c: 3, wgpu: false},\n\n // 32-bit formats \n 'rgba8unorm': {gl: GL.RGBA8, gl1: GL.RGBA, b: 4, c: 2, bpp: 4},\n 'rgba8unorm-srgb': {gl: GL.SRGB8_ALPHA8, gl1: GL.SRGB_ALPHA_EXT, b: 4, c: 4, gl1ext: EXT_SRGB, bpp: 4},\n 'rgba8snorm': {gl: GL.RGBA8_SNORM, b: 4, c: 4},\n 'rgba8uint': {gl: GL.RGBA8UI, b: 4, c: 4, bpp: 4},\n 'rgba8sint': {gl: GL.RGBA8I, b: 4, c: 4, bpp: 4},\n // reverse colors, webgpu only\n 'bgra8unorm': {b: 4, c: 4},\n 'bgra8unorm-srgb': {b: 4, c: 4},\n\n 'rg16uint': {gl: GL.RG16UI, b: 4, c: 1, bpp: 4},\n 'rg16sint': {gl: GL.RG16I, b: 4, c: 2, bpp: 4},\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n 'rg16float': {gl: GL.RG16F, bpp: 4, b: 4, c: 2, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg16unorm-webgl': {gl: GL.RG16_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n 'rg16snorm-webgl': {gl: GL.RG16_SNORM_EXT, b:2, c:2, f: 'texture-formats-norm16-webgl'},\n\n 'r32uint': {gl: GL.R32UI, b: 4, c: 1, bpp: 4},\n 'r32sint': {gl: GL.R32I, b: 4, c: 1, bpp: 4},\n 'r32float': {gl: GL.R32F, bpp: 4, b: 4, c: 1, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Packed 32-bit formats\n 'rgb9e5ufloat': {gl: GL.RGB9_E5, b: 4, c: 3, p: 1, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rg11b10ufloat': {gl: GL.R11F_G11F_B10F, b: 4, c: 3, p: 1,render: 'texture-renderable-float32-webgl'},\n 'rgb10a2unorm': {gl: GL.RGB10_A2, b: 4, c: 4, p: 1},\n // webgl2 only\n 'rgb10a2unorm-webgl': {b: 4, c: 4, gl: GL.RGB10_A2UI, p: 1, wgpu: false, bpp: 4},\n\n // 48-bit formats\n 'rgb16unorm-webgl': {gl: GL.RGB16_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n 'rgb16snorm-webgl': {gl: GL.RGB16_SNORM_EXT, b:2, c:3, f: 'texture-formats-norm16-webgl'},\n\n // 64-bit formats\n 'rg32uint': {gl: GL.RG32UI, b: 8, c: 2},\n 'rg32sint': {gl: GL.RG32I, b: 8, c: 2},\n 'rg32float': {gl: GL.RG32F, b: 8, c: 2, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n 'rgba16uint': {gl: GL.RGBA16UI, b: 8, c: 4},\n 'rgba16sint': {gl: GL.RGBA16I, b: 8, c: 4},\n 'rgba16float': {gl: GL.RGBA16F, gl1: GL.RGBA, b: 8, c: 4, render: 'texture-renderable-float16-webgl', filter: 'texture-filter-linear-float16-webgl'},\n 'rgba16unorm-webgl': {gl: GL.RGBA16_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n 'rgba16snorm-webgl': {gl: GL.RGBA16_SNORM_EXT, b:2, c:4, f: 'texture-formats-norm16-webgl'},\n\n // 96-bit formats (deprecated!)\n 'rgb32float-webgl': {gl: GL.RGB32F, gl1: GL.RGB, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl',\n gl2ext: EXT_FLOAT_RENDER_WEBGL2, gl1ext: EXT_FLOAT_WEBGL1, // WebGL1 render buffers are supported with GL.RGB32F\n dataFormat: GL.RGB, types: [GL.FLOAT]},\n \n // 128-bit formats\n 'rgba32uint': {gl: GL.RGBA32UI, b: 16, c: 4},\n 'rgba32sint': {gl: GL.RGBA32I, b: 16, c: 4},\n 'rgba32float': {gl: GL.RGBA32F, gl1: GL.RGBA, b: 16, c: 4, render: 'texture-renderable-float32-webgl', filter: 'texture-filter-linear-float32-webgl'},\n\n // Depth and stencil formats\n 'stencil8': {gl: GL.STENCIL_INDEX8, b: 1, c: 1, attachment: GL.STENCIL_ATTACHMENT}, // 8 stencil bits\n\n 'depth16unorm': {gl: GL.DEPTH_COMPONENT16, gl1: GL.DEPTH_COMPONENT16, b: 2, c: 1, attachment: GL.DEPTH_ATTACHMENT}, // 16 depth bits\n 'depth24plus': {gl: GL.DEPTH_COMPONENT24, b: 3, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n 'depth32float': {gl: GL.DEPTH_COMPONENT32F, b: 4, c: 1, attachment: GL.DEPTH_ATTACHMENT},\n\n 'depth24plus-stencil8': {b: 4, gl: GL.UNSIGNED_INT_24_8, gl1: GL.DEPTH_STENCIL, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth24unorm-stencil8\" feature\n 'depth24unorm-stencil8': {gl: GL.DEPTH24_STENCIL8, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n // \"depth32float-stencil8\" feature\n 'depth32float-stencil8': {gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},\n\n // BC compressed formats: check device.features.has(\"texture-compression-bc\");\n\n 'bc1-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgb-unorm-srgb-webgl': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n\n 'bc1-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc1-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc2-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc2-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc3-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, x: X_S3TC, f: texture_compression_bc},\n 'bc3-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, x: X_S3TC_SRGB, f: texture_compression_bc},\n 'bc4-r-unorm': {gl: GL.COMPRESSED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc4-r-snorm': {gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-unorm': {gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc5-rg-snorm': {gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, x: X_RGTC, f: texture_compression_bc},\n 'bc6h-rgb-ufloat': {gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc6h-rgb-float': {gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm': {gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n 'bc7-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, x: X_BPTC, f: texture_compression_bc},\n\n // WEBGL_compressed_texture_etc: device.features.has(\"texture-compression-etc2\")\n // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression\n\n 'etc2-rgb8unorm': {gl: GL.COMPRESSED_RGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm': {gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgb8a1unorm-srgb': {gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, f: texture_compression_etc2},\n 'etc2-rgba8unorm': {gl: GL.COMPRESSED_RGBA8_ETC2_EAC, f: texture_compression_etc2},\n 'etc2-rgba8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, f: texture_compression_etc2},\n\n 'eac-r11unorm': {gl: GL.COMPRESSED_R11_EAC, f: texture_compression_etc2},\n 'eac-r11snorm': {gl: GL.COMPRESSED_SIGNED_R11_EAC, f: texture_compression_etc2},\n 'eac-rg11unorm': {gl: GL.COMPRESSED_RG11_EAC, f: texture_compression_etc2},\n 'eac-rg11snorm': {gl: GL.COMPRESSED_SIGNED_RG11_EAC, f: texture_compression_etc2},\n\n // X_ASTC compressed formats: device.features.has(\"texture-compression-astc\")\n\n 'astc-4x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-4x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-5x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-6x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-8x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-10x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR, f: texture_compression_astc},\n 'astc-12x12-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, f: texture_compression_astc},\n\n // WEBGL_compressed_texture_pvrtc\n\n 'pvrtc-rgb4unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba4unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rbg2unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n 'pvrtc-rgba2unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, f: texture_compression_pvrtc_webgl},\n\n // WEBGL_compressed_texture_etc1\n\n 'etc1-rbg-unorm-webgl': {gl: GL.COMPRESSED_RGB_ETC1_WEBGL, f: texture_compression_etc1_webgl},\n\n // WEBGL_compressed_texture_atc\n\n 'atc-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_ATC_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgba-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, f: texture_compression_atc_webgl},\n 'atc-rgbai-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, f: texture_compression_atc_webgl}\n};\n\n// FUNCTIONS\n\nfunction getTextureFormat(format: TextureFormat | GL): TextureFormat {\n if (typeof format === 'string') {\n return format;\n }\n const entry = Object.entries(TEXTURE_FORMATS).find(([, entry]) => (entry.gl === format || entry.gl1 === format));\n if (!entry) {\n throw new Error(`Unknown texture format ${format}`);\n }\n return entry[0] as TextureFormat;\n}\n\n/** Checks if a texture format is supported */\nexport function isTextureFormatSupported(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n // Check that we have a GL constant\n if (isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined) {\n return false;\n }\n // Check extensions\n const extension = info.x || (isWebGL2(gl) ? info.gl2ext || info.gl1ext : info.gl1ext);\n if (extension) {\n return Boolean(gl.getExtension(extension));\n }\n // if (info.gl1 === undefined && info.gl2 === undefined) {\n // // No info - always supported\n // }\n return true;\n}\n\n/** Checks if a texture format is supported */\nexport function getTextureFormatSupport(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): {\n supported: boolean;\n filterable?: boolean;\n renderable?: boolean;\n blendable?: boolean;\n storable?: boolean;\n} {\n const format = getTextureFormat(formatOrGL);\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return {supported: false};\n }\n // let decoded;\n // try {\n // decoded = decodeTextureFormat(format);\n // } catch {}\n\n // Support Check that we have a GL constant\n let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;\n supported = supported && checkTextureFeatures(gl, [info.f]);\n\n // Filtering\n // const filterable = info.filter\n // ? checkTextureFeatures(gl, [info.filter])\n // : decoded && !decoded.signed;\n // const renderable = info.filter\n // ? checkTextureFeatures(gl, [info.render])\n // : decoded && !decoded.signed;\n\n return {\n supported,\n renderable: supported && checkTextureFeatures(gl, [info.render]),\n filterable: supported && checkTextureFeatures(gl, [info.filter]),\n blendable: false, // tod,\n storable: false\n };\n}\n\n/** Checks whether linear filtering (interpolated sampling) is available for floating point textures */\nexport function isTextureFormatFilterable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n try {\n const decoded = decodeTextureFormat(format);\n if (decoded.signed) {\n return false;\n }\n } catch {\n return false;\n }\n if (format.endsWith('32float')) {\n return Boolean(gl.getExtension('OES_texture_float_linear'));\n }\n if (format.endsWith('16float')) {\n return Boolean(gl.getExtension('OES_texture_half_float_linear'));\n }\n // if (typeof format === 'string') {\n // if (format === 'rgba32float') {\n // return gl.device.features.has('texture-renderable-rgba32float-webgl');\n // }\n // if (format.endsWith('32float')) {\n // return gl.device.features.has('texture-renderable-float32-webgl');\n // }\n // if (format.endsWith('16float')) {\n // return gl.device.features.has('texture-renderable-float16-webgl');\n // }\n // }\n return true;\n}\n\nexport function isTextureFormatRenderable(\n gl: WebGLRenderingContext,\n formatOrGL: TextureFormat | GL\n): boolean {\n const format = getTextureFormat(formatOrGL);\n if (!isTextureFormatSupported(gl, format)) {\n return false;\n }\n if (typeof format === 'number') {\n return false; // isTextureFormatFilterableWebGL(gl, format);\n }\n // TODO depends on device...\n return true;\n}\n\n/**\n * Converts WebGPU string style texture formats to GL constants\n * Pass through GL constants\n */\nexport function getWebGLTextureFormat(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): GL | undefined {\n const format = getTextureFormat(formatOrGL);\n const formatInfo = TEXTURE_FORMATS[format];\n const webglFormat = isWebGL2(gl) ? formatInfo?.gl : formatInfo?.gl1;\n // Remap or pass through\n if (typeof format === 'number') {\n return webglFormat || format;\n }\n if (webglFormat === undefined) {\n throw new Error(`Unsupported texture format ${format}`);\n }\n return webglFormat;\n}\n\nexport function getWebGLTextureParameters(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL) {\n const format = getTextureFormat(formatOrGL);\n const webglFormat = getWebGLTextureFormat(gl, format);\n const decoded = decodeTextureFormat(format);\n return {\n format: webglFormat,\n dataFormat: getWebGLPixelDataFormat(\n decoded.format,\n decoded.integer,\n decoded.normalized,\n webglFormat\n ),\n type: getWebGLDataType(decoded.dataType),\n // @ts-expect-error\n compressed: decoded.compressed\n };\n}\n\nexport function getWebGLDepthStencilAttachment(\n formatOrGL: TextureFormat | GL\n): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT {\n const format = getTextureFormat(formatOrGL);\n if (typeof format === 'number') {\n // TODO\n throw new Error('unsupported depth stencil format')\n }\n const info = TEXTURE_FORMATS[format];\n const attachment = info.attachment;\n if (!attachment) {\n throw new Error('not a depth stencil format');\n }\n return attachment;\n}\n\n/**\n * function to test if Float 32 bit format texture can be bound as color attachment\n * @todo Generalize to check arbitrary formats?\n */\nexport function _checkFloat32ColorAttachment(\n gl: WebGLRenderingContext,\n internalFormat = gl.RGBA,\n srcFormat = GL.RGBA,\n srcType = GL.UNSIGNED_BYTE\n) {\n let texture: WebGLTexture | null = null;\n let framebuffer: WebGLFramebuffer | null = null;\n try {\n texture = gl.createTexture();\n gl.bindTexture(GL.TEXTURE_2D, texture);\n\n const level = 0;\n const width = 1;\n const height = 1;\n const border = 0;\n const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue\n gl.texImage2D(\n gl.TEXTURE_2D,\n level,\n internalFormat,\n width,\n height,\n border,\n srcFormat,\n srcType,\n pixel\n );\n\n framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;\n\n gl.bindTexture(GL.TEXTURE_2D, null);\n return status;\n } finally {\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(framebuffer);\n }\n}\n\n/** @deprecated should be removed */\nconst DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\n/** @deprecated should be removed */\nconst TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\n/** TODO - VERY roundabout legacy way of calculating bytes per pixel */\nexport function getTextureFormatBytesPerPixel(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): number {\n const format = getTextureFormat(formatOrGL);\n const params = getWebGLTextureParameters(gl, format);\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[params.dataFormat] || 4;\n const channelSize = TYPE_SIZES[params.type] || 1;\n return channels * channelSize;\n}\n\n// DATA TYPE HELPERS\n\nfunction getWebGLPixelDataFormat(\n dataFormat: string,\n integer: boolean,\n normalized: boolean,\n format: GL\n): GL {\n // WebGL1 formats use same internalFormat\n if (format === GL.RGBA || format === GL.RGB) {\n return format;\n }\n // prettier-ignore\n switch (dataFormat) {\n case 'r': return integer && !normalized ? GL.RED_INTEGER : GL.RED;\n case 'rg': return integer && !normalized ? GL.RG_INTEGER : GL.RG;\n case 'rgb': return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;\n case 'rgba': return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;\n default: return GL.RGBA;\n }\n}\n\nexport function getWebGLDataType(dataType: string): GL {\n // prettier-ignore\n switch (dataType) {\n case 'uint8': return GL.UNSIGNED_BYTE;\n case 'sint8': return GL.BYTE;\n case 'uint16': return GL.UNSIGNED_SHORT;\n case 'sint16': return GL.SHORT;\n case 'uint32': return GL.UNSIGNED_INT;\n case 'sint32': return GL.INT;\n case 'float16': return GL.HALF_FLOAT;\n case 'float32': return GL.FLOAT;\n default: return GL.UNSIGNED_BYTE;\n }\n}\n"],"mappings":"AACA,SAAQA,mBAAmB,QAAO,cAAc;AAChD,OAAOC,EAAE,MAAM,oBAAoB;AAAC,SAC5BC,QAAQ;AAOhB,MAAMC,sBAAqC,GAAG,wBAAwB;AACtE,MAAMC,wBAAuC,GAAG,0BAA0B;AAC1E,MAAMC,wBAAuC,GAAG,0BAA0B;AAC1E,MAAMC,8BAA6C,GAAG,gCAAgC;AACtF,MAAMC,+BAA8C,GAAG,iCAAiC;AACxF,MAAMC,6BAA4C,GAAG,+BAA+B;AAGpF,MAAMC,MAAM,GAAG,+BAA+B;AAC9C,MAAMC,WAAW,GAAG,oCAAoC;AACxD,MAAMC,MAAM,GAAG,8BAA8B;AAC7C,MAAMC,MAAM,GAAG,8BAA8B;AAC7C,MAAMC,MAAM,GAAG,8BAA8B;AAC7C,MAAMC,MAAM,GAAG,+BAA+B;AAC9C,MAAMC,MAAM,GAAG,+BAA+B;AAC9C,MAAMC,OAAO,GAAG,gCAAgC;AAChD,MAAMC,KAAK,GAAG,8BAA8B;AAG5C,MAAMC,QAAQ,GAAG,UAAU;AAC3B,MAAMC,kBAAkB,GAAG,oBAAoB;AAC/C,MAAMC,gBAAgB,GAAG,0BAA0B;AACnD,MAAMC,uBAAuB,GAAG,wBAAwB;AAIxD,MAAMC,cAAc,GAAGA,CAACC,EAAyB,EAAEC,SAAiB,KAClED,EAAE,CAACE,YAAY,CAACD,SAAS,CAAC;AAC5B,MAAME,eAAe,GAAGA,CAACH,EAAyB,EAAEI,UAAoB,KACtEA,UAAU,CAACC,KAAK,CAAEJ,SAAS,IAAKD,EAAE,CAACE,YAAY,CAACD,SAAS,CAAC,CAAC;AAG7D,MAAMK,sBAA+F,GAAG;EACtG,4BAA4B,EAAGN,EAAE,IAAKrB,QAAQ,CAACqB,EAAE,CAAC,GAAG,IAAI,GAAGD,cAAc,CAACC,EAAE,EAAE,iBAAiB,CAAC;EACjG,6BAA6B,EAAGA,EAAE,IAAMrB,QAAQ,CAACqB,EAAE,CAAC,GAAG,IAAI,GAAGD,cAAc,CAACC,EAAE,EAAEL,QAAQ,CAAE;EAC3F,8BAA8B,EAAGK,EAAE,IAAKrB,QAAQ,CAACqB,EAAE,CAAC,GAAG,IAAI,GAAGD,cAAc,CAACC,EAAE,EAAE,qBAAqB,CAAC;EACvG,gCAAgC,EAAGA,EAAE,IAAKrB,QAAQ,CAACqB,EAAE,CAAC,GAAG,IAAI,GAAGD,cAAc,CAACC,EAAE,EAAE,mBAAmB,CAAC;EACvG,gCAAgC,EAAGA,EAAE,IAAKrB,QAAQ,CAACqB,EAAE,CAAC,GAAG,IAAI,GAAGD,cAAc,CAACC,EAAE,EAAE,wBAAwB,CAAC;EAC5G,8BAA8B,EAAGA,EAAE,IAAKrB,QAAQ,CAACqB,EAAE,CAAC,GAAGD,cAAc,CAACC,EAAE,EAAEJ,kBAAkB,CAAC,GAAG,KAAK;EACrG,qCAAqC,EAAGI,EAAE,IAAKD,cAAc,CAACC,EAAE,EAAE,0BAA0B,CAAC;EAC7F,qCAAqC,EAAGA,EAAE,IAAKD,cAAc,CAACC,EAAE,EAAE,+BAA+B,CAAC;EAClG,kCAAkC,EAAGA,EAAE,IAAKD,cAAc,CAACC,EAAE,EAAE,gCAAgC,CAAC;EAChG,kCAAkC,EAAGA,EAAE,IAAKD,cAAc,CAACC,EAAE,EAAE,wBAAwB,CAAC;EACxF,kCAAkC,EAAGA,EAAE,IAAKD,cAAc,CAACC,EAAE,EAAE,6BAA6B,CAAC;EAE7F,wBAAwB,EAAGA,EAAE,IAAKG,eAAe,CAACH,EAAE,EAAE,CAACd,MAAM,EAAEC,WAAW,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAC;EAC5F,+BAA+B,EAAGW,EAAE,IAAKG,eAAe,CAACH,EAAE,EAAE,CAACZ,MAAM,CAAC,CAAC;EAItE,0BAA0B,EAAGY,EAAE,IAAKG,eAAe,CAACH,EAAE,EAAE,CAACV,MAAM,CAAC,CAAC;EACjE,0BAA0B,EAAGU,EAAE,IAAKG,eAAe,CAACH,EAAE,EAAE,CAACT,MAAM,CAAC,CAAC;EACjE,gCAAgC,EAAGS,EAAE,IAAKG,eAAe,CAACH,EAAE,EAAE,CAACR,MAAM,CAAC,CAAC;EACvE,iCAAiC,EAAGQ,EAAE,IAAKG,eAAe,CAACH,EAAE,EAAE,CAACP,OAAO,CAAC,CAAC;EACzE,+BAA+B,EAAGO,EAAE,IAAKG,eAAe,CAACH,EAAE,EAAE,CAACN,KAAK,CAAC;AACtE,CAAC;AAED,OAAO,SAASa,mBAAmBA,CAACP,EAAyB,EAAEQ,OAAsB,EAAW;EAAA,IAAAC,qBAAA;EAC9F,OAAO,EAAAA,qBAAA,GAAAH,sBAAsB,CAACE,OAAO,CAAC,cAAAC,qBAAA,uBAA/BA,qBAAA,CAAAC,IAAA,CAAAJ,sBAAsB,EAAYN,EAAE,CAAC,KAAI,KAAK;AACvD;AAEA,MAAMW,oBAAoB,GAAGA,CAACX,EAAyB,EAAEY,QAAyB,KAChFA,QAAQ,CAACP,KAAK,CAAEG,OAAO,IAAKD,mBAAmB,CAACP,EAAE,EAAEQ,OAAO,CAAC,CAAC;AAG/D,OAAO,SAASK,kBAAkBA,CAACb,EAAyB,EAAmB;EAC7E,MAAMc,eAAe,GAAGC,MAAM,CAACC,IAAI,CAACV,sBAAsB,CAAoB;EAC9E,OAAOQ,eAAe,CAACG,MAAM,CAAET,OAAO,IAAKD,mBAAmB,CAACP,EAAE,EAAEQ,OAAO,CAAC,CAAC;AAC9E;AAiEA,OAAO,MAAMU,eAA8C,GAAG;EAI5D,mBAAmB,EAAE;IAAClB,EAAE,EAAEtB,EAAE,CAACyC,GAAG;IAAEC,GAAG,EAAE1C,EAAE,CAACyC,GAAG;IAAEE,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE,CAAC;IAC/DC,UAAU,EAAE9C,EAAE,CAACyC,GAAG;IAAEM,KAAK,EAAE,CAAC/C,EAAE,CAACgD,aAAa,EAAEhD,EAAE,CAACiD,oBAAoB;EAAC,CAAC;EACzE,oBAAoB,EAAE;IAAC3B,EAAE,EAAEtB,EAAE,CAACkD,IAAI;IAAER,GAAG,EAAE1C,EAAE,CAACkD,IAAI;IAAEP,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE,CAAC;IAClEC,UAAU,EAAE9C,EAAE,CAACkD,IAAI;IAAEH,KAAK,EAAE,CAAC/C,EAAE,CAACgD,aAAa,EAAEhD,EAAE,CAACmD,sBAAsB,EAAEnD,EAAE,CAACoD,sBAAsB;EAAC,CAAC;EAKvG,SAAS,EAAE;IAAC9B,EAAE,EAAEtB,EAAE,CAACqD,EAAE;IAAEV,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAClC,SAAS,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACsD,QAAQ;IAAEX,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACxC,QAAQ,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACuD,IAAI;IAAEZ,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACnC,QAAQ,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACwD,GAAG;IAAEb,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAGlC,UAAU,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACyD,GAAG;IAAEd,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACpC,UAAU,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC0D,SAAS;IAAEf,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAC1C,SAAS,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC2D,KAAK;IAAEhB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACrC,SAAS,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC4D,IAAI;IAAEjB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAEpC,SAAS,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC6D,KAAK;IAAElB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACrC,SAAS,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC8D,IAAI;IAAEnB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACpC,UAAU,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC+D,IAAI;IAAEpB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEoB,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE;EAAqC,CAAC;EAChI,gBAAgB,EAAE;IAACjB,EAAE,EAAEtB,EAAE,CAACiE,OAAO;IAAEtB,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EAC/E,gBAAgB,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAACmE,aAAa;IAAExB,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EAGrF,kBAAkB,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAACoE,KAAK;IAAEzB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEyB,IAAI,EAAE;EAAK,CAAC;EAC3D,mBAAmB,EAAE;IAAC/C,EAAE,EAAEtB,EAAE,CAACsE,MAAM;IAAE3B,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEyB,IAAI,EAAE;EAAK,CAAC;EAC7D,mBAAmB,EAAE;IAAC/C,EAAE,EAAEtB,EAAE,CAACuE,OAAO;IAAE5B,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEyB,IAAI,EAAE;EAAK,CAAC;EAG9D,iBAAiB,EAAE;IAAC/C,EAAE,EAAEtB,EAAE,CAACwE,IAAI;IAAE7B,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEyB,IAAI,EAAE;EAAK,CAAC;EACzD,iBAAiB,EAAE;IAAC/C,EAAE,EAAEtB,EAAE,CAACyE,UAAU;IAAE9B,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEyB,IAAI,EAAE;EAAK,CAAC;EAG/D,YAAY,EAAE;IAAC/C,EAAE,EAAEtB,EAAE,CAAC0E,KAAK;IAAEhC,GAAG,EAAE1C,EAAE,CAACkD,IAAI;IAAEP,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAC,CAAC;EAC9D,iBAAiB,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAAC2E,YAAY;IAAEjC,GAAG,EAAE1C,EAAE,CAAC4E,cAAc;IAAEjC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEiC,MAAM,EAAE5D,QAAQ;IAAE4B,GAAG,EAAE;EAAC,CAAC;EACtG,YAAY,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAAC8E,WAAW;IAAEnC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAC9C,WAAW,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC+E,OAAO;IAAEpC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAC,CAAC;EACjD,WAAW,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAACgF,MAAM;IAAErC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAC,CAAC;EAEhD,YAAY,EAAE;IAACF,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAC1B,iBAAiB,EAAE;IAACD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAE/B,UAAU,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACiF,MAAM;IAAEtC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAC,CAAC;EAC/C,UAAU,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAACkF,KAAK;IAAEvC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAC,CAAC;EAE9C,WAAW,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAACmF,KAAK;IAAEtC,GAAG,EAAE,CAAC;IAAEF,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEoB,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE;EAAqC,CAAC;EAC1I,iBAAiB,EAAE;IAACjB,EAAE,EAAEtB,EAAE,CAACoF,QAAQ;IAAEzC,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EACjF,iBAAiB,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAACqF,cAAc;IAAE1C,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EAEvF,SAAS,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAACsF,KAAK;IAAE3C,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAC,CAAC;EAC7C,SAAS,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAACuF,IAAI;IAAE5C,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAC,CAAC;EAC5C,UAAU,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAACwF,IAAI;IAAE3C,GAAG,EAAE,CAAC;IAAEF,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEoB,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE;EAAqC,CAAC;EAGxI,cAAc,EAAE;IAACjB,EAAE,EAAEtB,EAAE,CAACyF,OAAO;IAAE9C,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAE8C,CAAC,EAAE,CAAC;IAAE1B,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE;EAAqC,CAAC;EAC7I,eAAe,EAAE;IAACjB,EAAE,EAAEtB,EAAE,CAAC2F,cAAc;IAAEhD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAE8C,CAAC,EAAE,CAAC;IAAC1B,MAAM,EAAE;EAAkC,CAAC;EACrG,cAAc,EAAE;IAAC1C,EAAE,EAAEtB,EAAE,CAAC4F,QAAQ;IAAEjD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAE8C,CAAC,EAAE;EAAC,CAAC;EAEnD,oBAAoB,EAAE;IAAC/C,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEtB,EAAE,EAAEtB,EAAE,CAAC6F,UAAU;IAAEH,CAAC,EAAE,CAAC;IAAErB,IAAI,EAAE,KAAK;IAAExB,GAAG,EAAE;EAAC,CAAC;EAGhF,kBAAkB,EAAE;IAACvB,EAAE,EAAEtB,EAAE,CAAC8F,SAAS;IAAEnD,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EACnF,kBAAkB,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAAC+F,eAAe;IAAEpD,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EAGzF,UAAU,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAACgG,MAAM;IAAErD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACvC,UAAU,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACiG,KAAK;IAAEtD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EACtC,WAAW,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACkG,KAAK;IAAEvD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEoB,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE;EAAqC,CAAC;EAClI,YAAY,EAAE;IAACjB,EAAE,EAAEtB,EAAE,CAACmG,QAAQ;IAAExD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAC3C,YAAY,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACoG,OAAO;IAAEzD,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAC,CAAC;EAC1C,aAAa,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAACqG,OAAO;IAAE3D,GAAG,EAAE1C,EAAE,CAACkD,IAAI;IAAEP,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEoB,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE;EAAqC,CAAC;EACpJ,mBAAmB,EAAE;IAACjB,EAAE,EAAEtB,EAAE,CAACsG,UAAU;IAAE3D,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EACrF,mBAAmB,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAACuG,gBAAgB;IAAE5D,CAAC,EAAC,CAAC;IAAEC,CAAC,EAAC,CAAC;IAAEsB,CAAC,EAAE;EAA8B,CAAC;EAG3F,kBAAkB,EAAE;IAAC5C,EAAE,EAAEtB,EAAE,CAACwG,MAAM;IAAE9D,GAAG,EAAE1C,EAAE,CAACyC,GAAG;IAAEuB,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE,qCAAqC;IACxIkE,MAAM,EAAErF,uBAAuB;IAAGyD,MAAM,EAAE1D,gBAAgB;IAC1D2B,UAAU,EAAE9C,EAAE,CAACyC,GAAG;IAAEM,KAAK,EAAE,CAAC/C,EAAE,CAAC0G,KAAK;EAAC,CAAC;EAGxC,YAAY,EAAE;IAACpF,EAAE,EAAEtB,EAAE,CAAC2G,QAAQ;IAAEhE,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE;EAAC,CAAC;EAC5C,YAAY,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC4G,OAAO;IAAEjE,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE;EAAC,CAAC;EAC3C,aAAa,EAAE;IAACtB,EAAE,EAAEtB,EAAE,CAAC6G,OAAO;IAAEnE,GAAG,EAAE1C,EAAE,CAACkD,IAAI;IAAEP,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE,CAAC;IAAEoB,MAAM,EAAE,kCAAkC;IAAEzB,MAAM,EAAE;EAAqC,CAAC;EAGrJ,UAAU,EAAE;IAACjB,EAAE,EAAEtB,EAAE,CAAC8G,cAAc;IAAEnE,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEmE,UAAU,EAAE/G,EAAE,CAACgH;EAAkB,CAAC;EAElF,cAAc,EAAE;IAAC1F,EAAE,EAAEtB,EAAE,CAACiH,iBAAiB;IAAEvE,GAAG,EAAE1C,EAAE,CAACiH,iBAAiB;IAAEtE,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEmE,UAAU,EAAE/G,EAAE,CAACkH;EAAgB,CAAC;EAClH,aAAa,EAAE;IAAC5F,EAAE,EAAEtB,EAAE,CAACmH,iBAAiB;IAAExE,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEmE,UAAU,EAAE/G,EAAE,CAACkH;EAAgB,CAAC;EACtF,cAAc,EAAE;IAAC5F,EAAE,EAAEtB,EAAE,CAACoH,kBAAkB;IAAEzE,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEmE,UAAU,EAAE/G,EAAE,CAACkH;EAAgB,CAAC;EAExF,sBAAsB,EAAE;IAACvE,CAAC,EAAE,CAAC;IAAErB,EAAE,EAAEtB,EAAE,CAACqH,iBAAiB;IAAE3E,GAAG,EAAE1C,EAAE,CAACsH,aAAa;IAAE1E,CAAC,EAAE,CAAC;IAAE8C,CAAC,EAAE,CAAC;IAAEqB,UAAU,EAAE/G,EAAE,CAACuH;EAAwB,CAAC;EAEpI,uBAAuB,EAAE;IAACjG,EAAE,EAAEtB,EAAE,CAACwH,gBAAgB;IAAE7E,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAE8C,CAAC,EAAE,CAAC;IAAEqB,UAAU,EAAE/G,EAAE,CAACuH;EAAwB,CAAC;EAE7G,uBAAuB,EAAE;IAACjG,EAAE,EAAEtB,EAAE,CAACyH,iBAAiB;IAAE9E,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAE8C,CAAC,EAAE,CAAC;IAAEqB,UAAU,EAAE/G,EAAE,CAACuH;EAAwB,CAAC;EAI9G,qBAAqB,EAAE;IAACjG,EAAE,EAAEtB,EAAE,CAAC0H,4BAA4B;IAAEC,CAAC,EAAEnH,MAAM;IAAE0D,CAAC,EAAEhE;EAAsB,CAAC;EAClG,0BAA0B,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAAC4H,6BAA6B;IAAED,CAAC,EAAElH,WAAW;IAAEyD,CAAC,EAAEhE;EAAsB,CAAC;EAE7G,gBAAgB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAAC6H,6BAA6B;IAAEF,CAAC,EAAEnH,MAAM;IAAE0D,CAAC,EAAEhE;EAAsB,CAAC;EAC9F,qBAAqB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAAC4H,6BAA6B;IAAED,CAAC,EAAElH,WAAW;IAAEyD,CAAC,EAAEhE;EAAsB,CAAC;EACxG,gBAAgB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAAC8H,6BAA6B;IAAEH,CAAC,EAAEnH,MAAM;IAAE0D,CAAC,EAAEhE;EAAsB,CAAC;EAC9F,qBAAqB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAAC+H,mCAAmC;IAAEJ,CAAC,EAAElH,WAAW;IAAEyD,CAAC,EAAEhE;EAAsB,CAAC;EAC9G,gBAAgB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACgI,6BAA6B;IAAEL,CAAC,EAAEnH,MAAM;IAAE0D,CAAC,EAAEhE;EAAsB,CAAC;EAC9F,qBAAqB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACiI,mCAAmC;IAAEN,CAAC,EAAElH,WAAW;IAAEyD,CAAC,EAAEhE;EAAsB,CAAC;EAC9G,aAAa,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACkI,wBAAwB;IAAEP,CAAC,EAAEjH,MAAM;IAAEwD,CAAC,EAAEhE;EAAsB,CAAC;EACtF,aAAa,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACmI,+BAA+B;IAAER,CAAC,EAAEjH,MAAM;IAAEwD,CAAC,EAAEhE;EAAsB,CAAC;EAC7F,cAAc,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACoI,8BAA8B;IAAET,CAAC,EAAEjH,MAAM;IAAEwD,CAAC,EAAEhE;EAAsB,CAAC;EAC7F,cAAc,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACqI,qCAAqC;IAAEV,CAAC,EAAEjH,MAAM;IAAEwD,CAAC,EAAEhE;EAAsB,CAAC;EACpG,iBAAiB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACsI,sCAAsC;IAAEX,CAAC,EAAEhH,MAAM;IAAEuD,CAAC,EAAEhE;EAAsB,CAAC;EACxG,gBAAgB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACuI,oCAAoC;IAAEZ,CAAC,EAAEhH,MAAM;IAAEuD,CAAC,EAAEhE;EAAsB,CAAC;EACrG,gBAAgB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACwI,8BAA8B;IAAEb,CAAC,EAAEhH,MAAM;IAAEuD,CAAC,EAAEhE;EAAsB,CAAC;EAC/F,qBAAqB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAACyI,oCAAoC;IAAEd,CAAC,EAAEhH,MAAM;IAAEuD,CAAC,EAAEhE;EAAsB,CAAC;EAK1G,gBAAgB,EAAE;IAACoB,EAAE,EAAEtB,EAAE,CAAC0I,oBAAoB;IAAExE,CAAC,EAAE9D;EAAwB,CAAC;EAC5E,qBAAqB,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAAC2I,qBAAqB;IAAEzE,CAAC,EAAE9D;EAAwB,CAAC;EAClF,kBAAkB,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAAC4I,wCAAwC;IAAE1E,CAAC,EAAE9D;EAAwB,CAAC;EAClG,uBAAuB,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAAC6I,yCAAyC;IAAE3E,CAAC,EAAE9D;EAAwB,CAAC;EACxG,iBAAiB,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAAC8I,yBAAyB;IAAE5E,CAAC,EAAE9D;EAAwB,CAAC;EAClF,sBAAsB,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAAC+I,gCAAgC;IAAE7E,CAAC,EAAE9D;EAAwB,CAAC;EAE9F,cAAc,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAACgJ,kBAAkB;IAAE9E,CAAC,EAAE9D;EAAwB,CAAC;EACxE,cAAc,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAACiJ,yBAAyB;IAAE/E,CAAC,EAAE9D;EAAwB,CAAC;EAC/E,eAAe,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAACkJ,mBAAmB;IAAEhF,CAAC,EAAE9D;EAAwB,CAAC;EAC1E,eAAe,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAACmJ,0BAA0B;IAAEjF,CAAC,EAAE9D;EAAwB,CAAC;EAIjF,gBAAgB,EAAE;IAACkB,EAAE,EAAEtB,EAAE,CAACoJ,4BAA4B;IAAElF,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACqJ,oCAAoC;IAAEnF,CAAC,EAAE/D;EAAwB,CAAC;EACjG,gBAAgB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACsJ,4BAA4B;IAAEpF,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACuJ,oCAAoC;IAAErF,CAAC,EAAE/D;EAAwB,CAAC;EACjG,gBAAgB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACwJ,4BAA4B;IAAEtF,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACyJ,oCAAoC;IAAEvF,CAAC,EAAE/D;EAAwB,CAAC;EACjG,gBAAgB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC0J,4BAA4B;IAAExF,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC2J,oCAAoC;IAAEzF,CAAC,EAAE/D;EAAwB,CAAC;EACjG,gBAAgB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC4J,4BAA4B;IAAE1F,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC6J,oCAAoC;IAAE3F,CAAC,EAAE/D;EAAwB,CAAC;EACjG,gBAAgB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC8J,4BAA4B;IAAE5F,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC+J,oCAAoC;IAAE7F,CAAC,EAAE/D;EAAwB,CAAC;EACjG,gBAAgB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACgK,4BAA4B;IAAE9F,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACiK,oCAAoC;IAAE/F,CAAC,EAAE/D;EAAwB,CAAC;EACjG,gBAAgB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACkK,4BAA4B;IAAEhG,CAAC,EAAE/D;EAAwB,CAAC;EACpF,qBAAqB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACmK,oCAAoC;IAAEjG,CAAC,EAAE/D;EAAwB,CAAC;EACjG,iBAAiB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACoK,8BAA8B;IAAElG,CAAC,EAAE/D;EAAwB,CAAC;EACvF,sBAAsB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACqK,sCAAsC;IAAEnG,CAAC,EAAE/D;EAAwB,CAAC;EACpG,iBAAiB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACsK,6BAA6B;IAAEpG,CAAC,EAAE/D;EAAwB,CAAC;EACtF,sBAAsB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACuK,qCAAqC;IAAErG,CAAC,EAAE/D;EAAwB,CAAC;EACnG,iBAAiB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACwK,6BAA6B;IAAEtG,CAAC,EAAE/D;EAAwB,CAAC;EACtF,sBAAsB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACyK,qCAAqC;IAAEvG,CAAC,EAAE/D;EAAwB,CAAC;EACnG,kBAAkB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACoK,8BAA8B;IAAElG,CAAC,EAAE/D;EAAwB,CAAC;EACxF,uBAAuB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAACqK,sCAAsC;IAAEnG,CAAC,EAAE/D;EAAwB,CAAC;EACrG,kBAAkB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC0K,8BAA8B;IAAExG,CAAC,EAAE/D;EAAwB,CAAC;EACxF,uBAAuB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC2K,sCAAsC;IAAEzG,CAAC,EAAE/D;EAAwB,CAAC;EACrG,kBAAkB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC4K,8BAA8B;IAAE1G,CAAC,EAAE/D;EAAwB,CAAC;EACxF,uBAAuB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC6K,sCAAsC;IAAE3G,CAAC,EAAE/D;EAAwB,CAAC;EAIrG,uBAAuB,EAAE;IAACmB,EAAE,EAAEtB,EAAE,CAAC8K,+BAA+B;IAAE5G,CAAC,EAAE5D;EAA+B,CAAC;EACrG,wBAAwB,EAAE;IAACgB,EAAE,EAAEtB,EAAE,CAAC+K,gCAAgC;IAAE7G,CAAC,EAAE5D;EAA+B,CAAC;EACvG,uBAAuB,EAAE;IAACgB,EAAE,EAAEtB,EAAE,CAACgL,+BAA+B;IAAE9G,CAAC,EAAE5D;EAA+B,CAAC;EACrG,wBAAwB,EAAE;IAACgB,EAAE,EAAEtB,EAAE,CAACiL,gCAAgC;IAAE/G,CAAC,EAAE5D;EAA+B,CAAC;EAIvG,sBAAsB,EAAE;IAACgB,EAAE,EAAEtB,EAAE,CAACkL,yBAAyB;IAAEhH,CAAC,EAAE7D;EAA8B,CAAC;EAI7F,qBAAqB,EAAE;IAACiB,EAAE,EAAEtB,EAAE,CAACmL,wBAAwB;IAAEjH,CAAC,EAAE3D;EAA6B,CAAC;EAC1F,sBAAsB,EAAE;IAACe,EAAE,EAAEtB,EAAE,CAACoL,wCAAwC;IAAElH,CAAC,EAAE3D;EAA6B,CAAC;EAC3G,uBAAuB,EAAE;IAACe,EAAE,EAAEtB,EAAE,CAACqL,4CAA4C;IAAEnH,CAAC,EAAE3D;EAA6B;AACjH,CAAC;AAID,SAAS+K,gBAAgBA,CAACC,MAA0B,EAAiB;EACnE,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOA,MAAM;EACf;EACA,MAAMC,KAAK,GAAGnJ,MAAM,CAACoJ,OAAO,CAACjJ,eAAe,CAAC,CAACkJ,IAAI,CAACC,IAAA;IAAA,IAAC,GAAGH,KAAK,CAAC,GAAAG,IAAA;IAAA,OAAMH,KAAK,CAAClK,EAAE,KAAKiK,MAAM,IAAIC,KAAK,CAAC9I,GAAG,KAAK6I,MAAM;EAAA,CAAC,CAAC;EAChH,IAAI,CAACC,KAAK,EAAE;IACV,MAAM,IAAII,KAAK,2BAAAC,MAAA,CAA2BN,MAAM,EAAG;EACrD;EACA,OAAOC,KAAK,CAAC,CAAC,CAAC;AACjB;AAGA,OAAO,SAASM,wBAAwBA,CACtCxK,EAAyB,EACzByK,UAA8B,EACrB;EACT,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,MAAMC,IAAI,GAAGxJ,eAAe,CAAC+I,MAAM,CAAC;EACpC,IAAI,CAACS,IAAI,EAAE;IACT,OAAO,KAAK;EACd;EAEA,IAAI/L,QAAQ,CAACqB,EAAE,CAAC,GAAG0K,IAAI,CAAC1K,EAAE,KAAK2K,SAAS,GAAGD,IAAI,CAACtJ,GAAG,KAAKuJ,SAAS,EAAE;IACjE,OAAO,KAAK;EACd;EAEA,MAAM1K,SAAS,GAAGyK,IAAI,CAACrE,CAAC,KAAK1H,QAAQ,CAACqB,EAAE,CAAC,GAAG0K,IAAI,CAACvF,MAAM,IAAIuF,IAAI,CAACnH,MAAM,GAAGmH,IAAI,CAACnH,MAAM,CAAC;EACrF,IAAItD,SAAS,EAAE;IACb,OAAO2K,OAAO,CAAC5K,EAAE,CAACE,YAAY,CAACD,SAAS,CAAC,CAAC;EAC5C;EAIA,OAAO,IAAI;AACb;AAGA,OAAO,SAAS4K,uBAAuBA,CACrC7K,EAAyB,EACzByK,UAA8B,EAO9B;EACA,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,MAAMC,IAAI,GAAGxJ,eAAe,CAAC+I,MAAM,CAAC;EACpC,IAAI,CAACS,IAAI,EAAE;IACT,OAAO;MAACI,SAAS,EAAE;IAAK,CAAC;EAC3B;EAOA,IAAIA,SAAS,GAAGnM,QAAQ,CAACqB,EAAE,CAAC,GAAG0K,IAAI,CAAC1K,EAAE,KAAK2K,SAAS,GAAGD,IAAI,CAACtJ,GAAG,KAAKuJ,SAAS;EAC7EG,SAAS,GAAGA,SAAS,IAAInK,oBAAoB,CAACX,EAAE,EAAE,CAAC0K,IAAI,CAAC9H,CAAC,CAAC,CAAC;EAU3D,OAAO;IACLkI,SAAS;IACTC,UAAU,EAAED,SAAS,IAAInK,oBAAoB,CAACX,EAAE,EAAE,CAAC0K,IAAI,CAAChI,MAAM,CAAC,CAAC;IAChEsI,UAAU,EAAEF,SAAS,IAAInK,oBAAoB,CAACX,EAAE,EAAE,CAAC0K,IAAI,CAACzJ,MAAM,CAAC,CAAC;IAChEgK,SAAS,EAAE,KAAK;IAChBC,QAAQ,EAAE;EACZ,CAAC;AACH;AAGA,OAAO,SAASC,yBAAyBA,CACvCnL,EAAyB,EACzByK,UAA8B,EACrB;EACT,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,IAAI,CAACD,wBAAwB,CAACxK,EAAE,EAAEiK,MAAM,CAAC,EAAE;IACzC,OAAO,KAAK;EACd;EACA,IAAI;IACF,MAAMmB,OAAO,GAAG3M,mBAAmB,CAACwL,MAAM,CAAC;IAC3C,IAAImB,OAAO,CAACC,MAAM,EAAE;MAClB,OAAO,KAAK;IACd;EACF,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;EACA,IAAIpB,MAAM,CAACqB,QAAQ,CAAC,SAAS,CAAC,EAAE;IAC9B,OAAOV,OAAO,CAAC5K,EAAE,CAACE,YAAY,CAAC,0BAA0B,CAAC,CAAC;EAC7D;EACA,IAAI+J,MAAM,CAACqB,QAAQ,CAAC,SAAS,CAAC,EAAE;IAC9B,OAAOV,OAAO,CAAC5K,EAAE,CAACE,YAAY,CAAC,+BAA+B,CAAC,CAAC;EAClE;EAYA,OAAO,IAAI;AACb;AAEA,OAAO,SAASqL,yBAAyBA,CACvCvL,EAAyB,EACzByK,UAA8B,EACrB;EACT,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,IAAI,CAACD,wBAAwB,CAACxK,EAAE,EAAEiK,MAAM,CAAC,EAAE;IACzC,OAAO,KAAK;EACd;EACA,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;AAMA,OAAO,SAASuB,qBAAqBA,CAACxL,EAAyB,EAAEyK,UAA8B,EAAkB;EAC/G,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,MAAMgB,UAAU,GAAGvK,eAAe,CAAC+I,MAAM,CAAC;EAC1C,MAAMyB,WAAW,GAAG/M,QAAQ,CAACqB,EAAE,CAAC,GAAGyL,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEzL,EAAE,GAAGyL,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAErK,GAAG;EAEnE,IAAI,OAAO6I,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOyB,WAAW,IAAIzB,MAAM;EAC9B;EACA,IAAIyB,WAAW,KAAKf,SAAS,EAAE;IAC7B,MAAM,IAAIL,KAAK,+BAAAC,MAAA,CAA+BN,MAAM,EAAG;EACzD;EACA,OAAOyB,WAAW;AACpB;AAEA,OAAO,SAASC,yBAAyBA,CAAC3L,EAAyB,EAAEyK,UAA8B,EAAE;EACnG,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,MAAMiB,WAAW,GAAGF,qBAAqB,CAACxL,EAAE,EAAEiK,MAAM,CAAC;EACrD,MAAMmB,OAAO,GAAG3M,mBAAmB,CAACwL,MAAM,CAAC;EAC3C,OAAO;IACLA,MAAM,EAAEyB,WAAW;IACnBlK,UAAU,EAAEoK,uBAAuB,CACjCR,OAAO,CAACnB,MAAM,EACdmB,OAAO,CAACS,OAAO,EACfT,OAAO,CAACU,UAAU,EAClBJ,WAAW,CACZ;IACDK,IAAI,EAAEC,gBAAgB,CAACZ,OAAO,CAACa,QAAQ,CAAC;IAExCC,UAAU,EAAEd,OAAO,CAACc;EACtB,CAAC;AACH;AAEA,OAAO,SAASC,8BAA8BA,CAC5C1B,UAA8B,EAC6C;EAC3E,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,IAAI,OAAOR,MAAM,KAAK,QAAQ,EAAE;IAE9B,MAAM,IAAIK,KAAK,CAAC,kCAAkC,CAAC;EACrD;EACA,MAAMI,IAAI,GAAGxJ,eAAe,CAAC+I,MAAM,CAAC;EACpC,MAAMxE,UAAU,GAAGiF,IAAI,CAACjF,UAAU;EAClC,IAAI,CAACA,UAAU,EAAE;IACf,MAAM,IAAI6E,KAAK,CAAC,4BAA4B,CAAC;EAC/C;EACA,OAAO7E,UAAU;AACnB;AAMA,OAAO,SAAS2G,4BAA4BA,CAC1CpM,EAAyB,EAIzB;EAAA,IAHAqM,cAAc,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA3B,SAAA,GAAA2B,SAAA,MAAGtM,EAAE,CAAC4B,IAAI;EAAA,IACxB4K,SAAS,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA3B,SAAA,GAAA2B,SAAA,MAAG5N,EAAE,CAACkD,IAAI;EAAA,IACnB6K,OAAO,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA3B,SAAA,GAAA2B,SAAA,MAAG5N,EAAE,CAACgD,aAAa;EAE1B,IAAIgL,OAA4B,GAAG,IAAI;EACvC,IAAIC,WAAoC,GAAG,IAAI;EAC/C,IAAI;IACFD,OAAO,GAAG1M,EAAE,CAAC4M,aAAa,EAAE;IAC5B5M,EAAE,CAAC6M,WAAW,CAACnO,EAAE,CAACoO,UAAU,EAAEJ,OAAO,CAAC;IAEtC,MAAMK,KAAK,GAAG,CAAC;IACf,MAAMC,KAAK,GAAG,CAAC;IACf,MAAMC,MAAM,GAAG,CAAC;IAChB,MAAMC,MAAM,GAAG,CAAC;IAChB,MAAMC,KAAK,GAAG,IAAIC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9CpN,EAAE,CAACqN,UAAU,CACXrN,EAAE,CAAC8M,UAAU,EACbC,KAAK,EACLV,cAAc,EACdW,KAAK,EACLC,MAAM,EACNC,MAAM,EACNV,SAAS,EACTC,OAAO,EACPU,KAAK,CACN;IAEDR,WAAW,GAAG3M,EAAE,CAACsN,iBAAiB,EAAE;IACpCtN,EAAE,CAACuN,eAAe,CAAC7O,EAAE,CAAC8O,WAAW,EAAEb,WAAW,CAAC;IAC/C3M,EAAE,CAACyN,oBAAoB,CAAC/O,EAAE,CAAC8O,WAAW,EAAE9O,EAAE,CAACgP,iBAAiB,EAAEhP,EAAE,CAACoO,UAAU,EAAEJ,OAAO,EAAE,CAAC,CAAC;IACxF,MAAMiB,MAAM,GAAG3N,EAAE,CAAC4N,sBAAsB,CAAClP,EAAE,CAAC8O,WAAW,CAAC,KAAK9O,EAAE,CAACmP,oBAAoB;IAEpF7N,EAAE,CAAC6M,WAAW,CAACnO,EAAE,CAACoO,UAAU,EAAE,IAAI,CAAC;IACnC,OAAOa,MAAM;EACf,CAAC,SAAS;IACR3N,EAAE,CAAC8N,aAAa,CAACpB,OAAO,CAAC;IACzB1M,EAAE,CAAC+N,iBAAiB,CAACpB,WAAW,CAAC;EACnC;AACF;AAGA,MAAMqB,oBAAoB,GAAG;EAC3B,CAACtP,EAAE,CAACuP,GAAG,GAAG,CAAC;EACX,CAACvP,EAAE,CAACwP,WAAW,GAAG,CAAC;EACnB,CAACxP,EAAE,CAACyP,EAAE,GAAG,CAAC;EACV,CAACzP,EAAE,CAAC0P,UAAU,GAAG,CAAC;EAClB,CAAC1P,EAAE,CAACyC,GAAG,GAAG,CAAC;EACX,CAACzC,EAAE,CAAC2P,WAAW,GAAG,CAAC;EACnB,CAAC3P,EAAE,CAACkD,IAAI,GAAG,CAAC;EACZ,CAAClD,EAAE,CAAC4P,YAAY,GAAG,CAAC;EACpB,CAAC5P,EAAE,CAAC6P,eAAe,GAAG,CAAC;EACvB,CAAC7P,EAAE,CAACsH,aAAa,GAAG,CAAC;EACrB,CAACtH,EAAE,CAAC8P,KAAK,GAAG,CAAC;EACb,CAAC9P,EAAE,CAAC+P,SAAS,GAAG,CAAC;EACjB,CAAC/P,EAAE,CAACgQ,eAAe,GAAG;AACxB,CAAC;AAGD,MAAMC,UAAU,GAAG;EACjB,CAACjQ,EAAE,CAAC0G,KAAK,GAAG,CAAC;EACb,CAAC1G,EAAE,CAACkQ,YAAY,GAAG,CAAC;EACpB,CAAClQ,EAAE,CAACmQ,GAAG,GAAG,CAAC;EACX,CAACnQ,EAAE,CAACoQ,cAAc,GAAG,CAAC;EACtB,CAACpQ,EAAE,CAACqQ,KAAK,GAAG,CAAC;EACb,CAACrQ,EAAE,CAACsQ,UAAU,GAAG,CAAC;EAClB,CAACtQ,EAAE,CAACuQ,IAAI,GAAG,CAAC;EACZ,CAACvQ,EAAE,CAACgD,aAAa,GAAG;AACtB,CAAC;AAGD,OAAO,SAASwN,6BAA6BA,CAAClP,EAAyB,EAAEyK,UAA8B,EAAU;EAC/G,MAAMR,MAAM,GAAGD,gBAAgB,CAACS,UAAU,CAAC;EAC3C,MAAM0E,MAAM,GAAGxD,yBAAyB,CAAC3L,EAAE,EAAEiK,MAAM,CAAC;EAEpD,MAAMmF,QAAQ,GAAGpB,oBAAoB,CAACmB,MAAM,CAAC3N,UAAU,CAAC,IAAI,CAAC;EAC7D,MAAM6N,WAAW,GAAGV,UAAU,CAACQ,MAAM,CAACpD,IAAI,CAAC,IAAI,CAAC;EAChD,OAAOqD,QAAQ,GAAGC,WAAW;AAC/B;AAIA,SAASzD,uBAAuBA,CAC9BpK,UAAkB,EAClBqK,OAAgB,EAChBC,UAAmB,EACnB7B,MAAU,EACN;EAEJ,IAAIA,MAAM,KAAKvL,EAAE,CAACkD,IAAI,IAAIqI,MAAM,KAAKvL,EAAE,CAACyC,GAAG,EAAE;IAC3C,OAAO8I,MAAM;EACf;EAEA,QAAQzI,UAAU;IAChB,KAAK,GAAG;MAAE,OAAOqK,OAAO,IAAI,CAACC,UAAU,GAAGpN,EAAE,CAACwP,WAAW,GAAGxP,EAAE,CAACuP,GAAG;IACjE,KAAK,IAAI;MAAE,OAAOpC,OAAO,IAAI,CAACC,UAAU,GAAGpN,EAAE,CAAC0P,UAAU,GAAG1P,EAAE,CAACyP,EAAE;IAChE,KAAK,KAAK;MAAE,OAAOtC,OAAO,IAAI,CAACC,UAAU,GAAGpN,EAAE,CAAC2P,WAAW,GAAG3P,EAAE,CAACyC,GAAG;IACnE,KAAK,MAAM;MAAE,OAAO0K,OAAO,IAAI,CAACC,UAAU,GAAGpN,EAAE,CAAC4P,YAAY,GAAG5P,EAAE,CAACkD,IAAI;IACtE;MAAS,OAAOlD,EAAE,CAACkD,IAAI;EAAC;AAE5B;AAEA,OAAO,SAASoK,gBAAgBA,CAACC,QAAgB,EAAM;EAErD,QAAQA,QAAQ;IACd,KAAK,OAAO;MAAE,OAAOvN,EAAE,CAACgD,aAAa;IACrC,KAAK,OAAO;MAAE,OAAOhD,EAAE,CAACuQ,IAAI;IAC5B,KAAK,QAAQ;MAAE,OAAOvQ,EAAE,CAACoQ,cAAc;IACvC,KAAK,QAAQ;MAAE,OAAOpQ,EAAE,CAACqQ,KAAK;IAC9B,KAAK,QAAQ;MAAE,OAAOrQ,EAAE,CAACkQ,YAAY;IACrC,KAAK,QAAQ;MAAE,OAAOlQ,EAAE,CAACmQ,GAAG;IAC5B,KAAK,SAAS;MAAE,OAAOnQ,EAAE,CAACsQ,UAAU;IACpC,KAAK,SAAS;MAAE,OAAOtQ,EAAE,CAAC0G,KAAK;IAC/B;MAAS,OAAO1G,EAAE,CAACgD,aAAa;EAAC;AAErC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/vertex-formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAQ1E"}
1
+ {"version":3,"file":"vertex-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/vertex-formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAS1E"}
@@ -1,33 +1,27 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  export function getVertexFormat(type, components) {
3
3
  const base = getDataFormat(type);
4
-
5
4
  switch (components) {
6
5
  case 1:
7
6
  return base;
8
-
9
7
  case 2:
10
8
  return "".concat(base, "x2");
11
-
12
9
  case 3:
13
10
  return "".concat(base, "x3");
14
-
15
11
  case 4:
16
12
  return "".concat(base, "x4");
13
+ default:
14
+ throw new Error(String(components));
17
15
  }
18
16
  }
19
-
20
17
  function getDataFormat(type) {
21
18
  switch (type) {
22
19
  case GL.INT:
23
20
  return 'sint32';
24
-
25
21
  case GL.UNSIGNED_INT:
26
22
  return 'uint32';
27
-
28
23
  case GL.FLOAT:
29
24
  return 'float32';
30
-
31
25
  default:
32
26
  throw new Error(String(type));
33
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/converters/vertex-formats.ts"],"names":["GL","getVertexFormat","type","components","base","getDataFormat","INT","UNSIGNED_INT","FLOAT","Error","String"],"mappings":"AAAA,OAAOA,EAAP,MAAe,oBAAf;AAGA,OAAO,SAASC,eAAT,CAAyBC,IAAzB,EAAmCC,UAAnC,EAAqE;AAC1E,QAAMC,IAAI,GAAGC,aAAa,CAACH,IAAD,CAA1B;;AACA,UAAQC,UAAR;AACE,SAAK,CAAL;AAAQ,aAAOC,IAAP;;AACR,SAAK,CAAL;AAAQ,uBAAUA,IAAV;;AACR,SAAK,CAAL;AAAQ,uBAAUA,IAAV;;AACR,SAAK,CAAL;AAAQ,uBAAUA,IAAV;AAJV;AAMD;;AAED,SAASC,aAAT,CAAuBH,IAAvB,EAAkE;AAChE,UAAQA,IAAR;AAEE,SAAKF,EAAE,CAACM,GAAR;AAAa,aAAO,QAAP;;AACb,SAAKN,EAAE,CAACO,YAAR;AAAsB,aAAO,QAAP;;AACtB,SAAKP,EAAE,CAACQ,KAAR;AAAe,aAAO,SAAP;;AACf;AAAS,YAAM,IAAIC,KAAJ,CAAUC,MAAM,CAACR,IAAD,CAAhB,CAAN;AALX;AAOD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {VertexFormat} from '@luma.gl/api';\n\nexport function getVertexFormat(type: GL, components: number): VertexFormat {\n const base = getDataFormat(type);\n switch (components) {\n case 1: return base;\n case 2: return `${base}x2`;\n case 3: return `${base}x3`;\n case 4: return `${base}x4`;\n }\n}\n\nfunction getDataFormat(type: GL): 'sint32' | 'uint32' | 'float32' {\n switch (type) {\n // TODO\n case GL.INT: return 'sint32';\n case GL.UNSIGNED_INT: return 'uint32';\n case GL.FLOAT: return 'float32';\n default: throw new Error(String(type));\n }\n}"],"file":"vertex-formats.js"}
1
+ {"version":3,"file":"vertex-formats.js","names":["GL","getVertexFormat","type","components","base","getDataFormat","concat","Error","String","INT","UNSIGNED_INT","FLOAT"],"sources":["../../../src/adapter/converters/vertex-formats.ts"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {VertexFormat} from '@luma.gl/api';\n\nexport function getVertexFormat(type: GL, components: number): VertexFormat {\n const base = getDataFormat(type);\n switch (components) {\n case 1: return base;\n case 2: return `${base}x2`;\n case 3: return `${base}x3`;\n case 4: return `${base}x4`;\n default: throw new Error(String(components));\n }\n}\n\nfunction getDataFormat(type: GL): 'sint32' | 'uint32' | 'float32' {\n switch (type) {\n // TODO\n case GL.INT: return 'sint32';\n case GL.UNSIGNED_INT: return 'uint32';\n case GL.FLOAT: return 'float32';\n default: throw new Error(String(type));\n }\n}"],"mappings":"AAAA,OAAOA,EAAE,MAAM,oBAAoB;AAGnC,OAAO,SAASC,eAAeA,CAACC,IAAQ,EAAEC,UAAkB,EAAgB;EAC1E,MAAMC,IAAI,GAAGC,aAAa,CAACH,IAAI,CAAC;EAChC,QAAQC,UAAU;IAChB,KAAK,CAAC;MAAE,OAAOC,IAAI;IACnB,KAAK,CAAC;MAAE,UAAAE,MAAA,CAAUF,IAAI;IACtB,KAAK,CAAC;MAAE,UAAAE,MAAA,CAAUF,IAAI;IACtB,KAAK,CAAC;MAAE,UAAAE,MAAA,CAAUF,IAAI;IACtB;MAAS,MAAM,IAAIG,KAAK,CAACC,MAAM,CAACL,UAAU,CAAC,CAAC;EAAC;AAEjD;AAEA,SAASE,aAAaA,CAACH,IAAQ,EAAmC;EAChE,QAAQA,IAAI;IAEV,KAAKF,EAAE,CAACS,GAAG;MAAE,OAAO,QAAQ;IAC5B,KAAKT,EAAE,CAACU,YAAY;MAAE,OAAO,QAAQ;IACrC,KAAKV,EAAE,CAACW,KAAK;MAAE,OAAO,SAAS;IAC/B;MAAS,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACN,IAAI,CAAC,CAAC;EAAC;AAE3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"device-features.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-features.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAM3C,uCAAuC;AACvC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,CAiB/E;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,CAe9E;AA2CD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,qBAAqB,EAAE,aAAa,KAAA,EAAE,IAAI,GAAE;IAAC,QAAQ,CAAC,MAAA;CAAM,OAmBvG"}
1
+ {"version":3,"file":"device-features.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-features.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAK3C,uCAAuC;AACvC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,CAiB/E;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,CAe9E;AAgDD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,qBAAqB,EAAE,aAAa,KAAA,EAAE,IAAI,GAAE;IAAC,QAAQ,CAAC,MAAA;CAAM,OAsBvG"}
@@ -1,13 +1,11 @@
1
- import { isWebGL2 } from '../../context/context/webgl-checks';
2
- import { isOldIE } from './is-old-ie';
3
- import { getTextureFeatures, _checkFloat32ColorAttachment } from '../converters/texture-formats';
1
+ import { isWebGL2 } from "../../context/context/webgl-checks.js";
2
+ import { isOldIE } from "./is-old-ie.js";
3
+ import { getTextureFeatures, _checkFloat32ColorAttachment } from "../converters/texture-formats.js";
4
4
  export function getDeviceFeatures(gl) {
5
5
  const features = getWebGLFeatures(gl);
6
-
7
6
  for (const textureFeature of getTextureFeatures(gl)) {
8
7
  features.add(textureFeature);
9
8
  }
10
-
11
9
  return features;
12
10
  }
13
11
  export function getWebGLFeatures(gl) {
@@ -15,58 +13,53 @@ export function getWebGLFeatures(gl) {
15
13
  gl.getExtension('WEBGL_color_buffer_float');
16
14
  gl.getExtension('EXT_float_blend');
17
15
  const features = new Set();
18
-
19
16
  for (const feature of Object.keys(WEBGL_FEATURES)) {
20
17
  if (isFeatureSupported(gl, feature)) {
21
18
  features.add(feature);
22
19
  }
23
20
  }
24
-
25
21
  return features;
26
22
  }
27
-
28
23
  function isFeatureSupported(gl, feature) {
29
- const [webgl1Feature, webgl2Feature] = WEBGL_FEATURES[feature];
30
- ;
24
+ const featureInfo = WEBGL_FEATURES[feature];
25
+ if (!featureInfo) {
26
+ return false;
27
+ }
28
+ const [webgl1Feature, webgl2Feature] = featureInfo || [];
31
29
  const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
32
-
33
30
  if (typeof featureDefinition === 'boolean') {
34
31
  return featureDefinition;
35
32
  }
36
-
37
33
  switch (feature) {
38
34
  case 'texture-renderable-rgba32float-webgl':
39
35
  return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) : _checkFloat32ColorAttachment(gl);
40
-
41
36
  case 'glsl-derivatives':
42
37
  return canCompileGLSLExtension(gl, featureDefinition);
43
-
44
38
  case 'glsl-frag-data':
45
39
  return canCompileGLSLExtension(gl, featureDefinition, {
46
40
  behavior: 'require'
47
41
  });
48
-
49
42
  case 'glsl-frag-depth':
50
43
  return canCompileGLSLExtension(gl, featureDefinition);
51
-
52
44
  default:
53
45
  return Boolean(gl.getExtension(featureDefinition));
54
46
  }
55
47
  }
56
-
57
48
  const compiledGLSLExtensions = {};
58
- export function canCompileGLSLExtension(gl, extensionName, opts = {}) {
49
+ export function canCompileGLSLExtension(gl, extensionName) {
50
+ let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
59
51
  if (!isOldIE(opts)) {
60
52
  return true;
61
53
  }
62
-
63
54
  if (extensionName in compiledGLSLExtensions) {
64
55
  return compiledGLSLExtensions[extensionName];
65
56
  }
66
-
67
57
  const behavior = opts.behavior || 'enable';
68
58
  const source = "#extension GL_".concat(extensionName, " : ").concat(behavior, "\nvoid main(void) {}");
69
59
  const shader = gl.createShader(gl.VERTEX_SHADER);
60
+ if (!shader) {
61
+ throw new Error('shader');
62
+ }
70
63
  gl.shaderSource(shader, source);
71
64
  gl.compileShader(shader);
72
65
  const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/device-helpers/device-features.ts"],"names":["isWebGL2","isOldIE","getTextureFeatures","_checkFloat32ColorAttachment","getDeviceFeatures","gl","features","getWebGLFeatures","textureFeature","add","getExtension","Set","feature","Object","keys","WEBGL_FEATURES","isFeatureSupported","webgl1Feature","webgl2Feature","featureDefinition","Boolean","canCompileGLSLExtension","behavior","compiledGLSLExtensions","extensionName","opts","source","shader","createShader","VERTEX_SHADER","shaderSource","compileShader","canCompile","getShaderParameter","COMPILE_STATUS","deleteShader"],"mappings":"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","sourcesContent":["// Feature detection for WebGL\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport {DeviceFeature} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport {isOldIE} from './is-old-ie';\nimport {getTextureFeatures, _checkFloat32ColorAttachment} from '../converters/texture-formats';\n\n/** Get WebGPU style feature strings */\nexport function getDeviceFeatures(gl: WebGLRenderingContext): Set<DeviceFeature> {\n const features = getWebGLFeatures(gl);\n\n // texture features\n // features.add('texture-compression-bc'); \n for (const textureFeature of getTextureFeatures(gl)) {\n features.add(textureFeature);\n }\n\n // TODO\n // features.add('depth-clip-control'); // GPUPrimitiveState.clampDepth\n // features.add('depth24unorm-stencil8'); // GPUTextureFormat 'depth24unorm-stencil8'.\n // features.add('depth32float-stencil8'); // GPUTextureFormat 'depth32float-stencil8'.\n // features.add('timestamp-query'); // GPUQueryType \"timestamp-query\"\n // \"indirect-first-instance\"\n\n return features;\n}\n\n/** Extract all WebGL features */\nexport function getWebGLFeatures(gl: WebGLRenderingContext): Set<DeviceFeature> {\n // Enables EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend\n gl.getExtension('EXT_color_buffer_float');\n gl.getExtension('WEBGL_color_buffer_float');\n gl.getExtension('EXT_float_blend');\n\n const features = new Set<DeviceFeature>();\n for (const feature of Object.keys(WEBGL_FEATURES)) {\n // @ts-expect-error\n if (isFeatureSupported(gl, feature)) {\n // @ts-expect-error\n features.add(feature);\n }\n }\n return features;\n}\n\nfunction isFeatureSupported(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n const [webgl1Feature, webgl2Feature] = WEBGL_FEATURES[feature];;\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'boolean') {\n return featureDefinition;\n }\n\n switch (feature) {\n case 'texture-renderable-rgba32float-webgl':\n return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) :\n _checkFloat32ColorAttachment(gl);\n case 'glsl-derivatives':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n case 'glsl-frag-data':\n return canCompileGLSLExtension(gl, featureDefinition, {behavior: 'require'}); // TODO options\n case 'glsl-frag-depth':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n default:\n return Boolean(gl.getExtension(featureDefinition));\n }\n}\n\nconst compiledGLSLExtensions: Record<string, boolean> = {};\n\n/*\n * Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n * but fail to compile when the extension is enabled in the shader. Specifically,\n * the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n * in the list of supported extensions.\n * opts allows user agent to be overridden for testing\n * Inputs :\n * gl : WebGL context\n * cap : Key of WEBGL_FEATURES object identifying the extension\n * opts :\n * behavior : behavior of extension to be tested, by defualt `enable` is used\n * Returns : true, if shader is compiled successfully, false otherwise\n */\nexport function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName, opts: {behavior?} = {}) {\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (extensionName in compiledGLSLExtensions) {\n return compiledGLSLExtensions[extensionName];\n }\n\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGLSLExtensions[extensionName] = canCompile;\n return canCompile;\n}\n\n/** Defines luma.gl \"feature\" names and semantics\n * Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\n */\nconst WEBGL_FEATURES: Partial<Record<DeviceFeature, [boolean | string, boolean | string]>> = {\n 'webgl': [true, true],\n 'webgl2': [false, true],\n\n 'timer-query-webgl': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n\n // WEBGL1 SUPPORT\n 'vertex-array-object-webgl1': ['OES_vertex_array_object', true],\n 'instanced-rendering-webgl1': ['ANGLE_instanced_arrays', true],\n 'multiple-render-targets-webgl1': ['WEBGL_draw_buffers', true],\n 'index-uint32-webgl1': ['OES_element_index_uint', true],\n 'blend-minmax-webgl1': ['EXT_blend_minmax', true],\n 'texture-blend-float-webgl1': ['EXT_float_blend', 'EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n 'texture-formats-srgb-webgl1': ['EXT_sRGB', true],\n\n // TEXTURES\n 'texture-formats-depth-webgl1': ['WEBGL_depth_texture', true],\n 'texture-formats-float32-webgl1': ['OES_texture_float', true],\n 'texture-formats-float16-webgl1': ['OES_texture_half_float', true],\n\n 'texture-filter-linear-float32-webgl': ['OES_texture_float_linear', 'OES_texture_float_linear'],\n 'texture-filter-linear-float16-webgl': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],\n 'texture-filter-anisotropic-webgl': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n 'texture-renderable-rgba32float-webgl': ['WEBGL_color_buffer_float', 'EXT_color_buffer_float'], // Note override check\n 'texture-renderable-float32-webgl': [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],\n\n // GLSL extensions\n 'glsl-frag-data': ['WEBGL_draw_buffers', true],\n 'glsl-frag-depth': ['EXT_frag_depth', true],\n 'glsl-derivatives': ['OES_standard_derivatives', true],\n 'glsl-texture-lod': ['EXT_shader_texture_lod', true]\n};\n"],"file":"device-features.js"}
1
+ {"version":3,"file":"device-features.js","names":["isWebGL2","isOldIE","getTextureFeatures","_checkFloat32ColorAttachment","getDeviceFeatures","gl","features","getWebGLFeatures","textureFeature","add","getExtension","Set","feature","Object","keys","WEBGL_FEATURES","isFeatureSupported","featureInfo","webgl1Feature","webgl2Feature","featureDefinition","Boolean","canCompileGLSLExtension","behavior","compiledGLSLExtensions","extensionName","opts","arguments","length","undefined","source","concat","shader","createShader","VERTEX_SHADER","Error","shaderSource","compileShader","canCompile","getShaderParameter","COMPILE_STATUS","deleteShader"],"sources":["../../../src/adapter/device-helpers/device-features.ts"],"sourcesContent":["// Feature detection for WebGL\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport {DeviceFeature} from '@luma.gl/api';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport {isOldIE} from './is-old-ie';\nimport {getTextureFeatures, _checkFloat32ColorAttachment} from '../converters/texture-formats';\n\n/** Get WebGPU style feature strings */\nexport function getDeviceFeatures(gl: WebGLRenderingContext): Set<DeviceFeature> {\n const features = getWebGLFeatures(gl);\n\n // texture features\n // features.add('texture-compression-bc'); \n for (const textureFeature of getTextureFeatures(gl)) {\n features.add(textureFeature);\n }\n\n // TODO\n // features.add('depth-clip-control'); // GPUPrimitiveState.clampDepth\n // features.add('depth24unorm-stencil8'); // GPUTextureFormat 'depth24unorm-stencil8'.\n // features.add('depth32float-stencil8'); // GPUTextureFormat 'depth32float-stencil8'.\n // features.add('timestamp-query'); // GPUQueryType \"timestamp-query\"\n // \"indirect-first-instance\"\n\n return features;\n}\n\n/** Extract all WebGL features */\nexport function getWebGLFeatures(gl: WebGLRenderingContext): Set<DeviceFeature> {\n // Enables EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend\n gl.getExtension('EXT_color_buffer_float');\n gl.getExtension('WEBGL_color_buffer_float');\n gl.getExtension('EXT_float_blend');\n\n const features = new Set<DeviceFeature>();\n for (const feature of Object.keys(WEBGL_FEATURES)) {\n // @ts-expect-error\n if (isFeatureSupported(gl, feature)) {\n // @ts-expect-error\n features.add(feature);\n }\n }\n return features;\n}\n\nfunction isFeatureSupported(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {\n const featureInfo = WEBGL_FEATURES[feature];\n if (!featureInfo) {\n return false;\n }\n\n const [webgl1Feature, webgl2Feature] = featureInfo || [];\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'boolean') {\n return featureDefinition;\n }\n\n switch (feature) {\n case 'texture-renderable-rgba32float-webgl':\n return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) :\n _checkFloat32ColorAttachment(gl);\n case 'glsl-derivatives':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n case 'glsl-frag-data':\n return canCompileGLSLExtension(gl, featureDefinition, {behavior: 'require'}); // TODO options\n case 'glsl-frag-depth':\n return canCompileGLSLExtension(gl, featureDefinition); // TODO options\n default:\n return Boolean(gl.getExtension(featureDefinition));\n }\n}\n\nconst compiledGLSLExtensions: Record<string, boolean> = {};\n\n/*\n * Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n * but fail to compile when the extension is enabled in the shader. Specifically,\n * the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n * in the list of supported extensions.\n * opts allows user agent to be overridden for testing\n * Inputs :\n * gl : WebGL context\n * cap : Key of WEBGL_FEATURES object identifying the extension\n * opts :\n * behavior : behavior of extension to be tested, by defualt `enable` is used\n * Returns : true, if shader is compiled successfully, false otherwise\n */\nexport function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName, opts: {behavior?} = {}) {\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (extensionName in compiledGLSLExtensions) {\n return compiledGLSLExtensions[extensionName];\n }\n\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n if (!shader) {\n throw new Error('shader');\n }\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGLSLExtensions[extensionName] = canCompile;\n return canCompile;\n}\n\n/** Defines luma.gl \"feature\" names and semantics\n * Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\n */\nconst WEBGL_FEATURES: Partial<Record<DeviceFeature, [boolean | string, boolean | string]>> = {\n 'webgl': [true, true],\n 'webgl2': [false, true],\n\n 'timer-query-webgl': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n\n // WEBGL1 SUPPORT\n 'vertex-array-object-webgl1': ['OES_vertex_array_object', true],\n 'instanced-rendering-webgl1': ['ANGLE_instanced_arrays', true],\n 'multiple-render-targets-webgl1': ['WEBGL_draw_buffers', true],\n 'index-uint32-webgl1': ['OES_element_index_uint', true],\n 'blend-minmax-webgl1': ['EXT_blend_minmax', true],\n 'texture-blend-float-webgl1': ['EXT_float_blend', 'EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n 'texture-formats-srgb-webgl1': ['EXT_sRGB', true],\n\n // TEXTURES\n 'texture-formats-depth-webgl1': ['WEBGL_depth_texture', true],\n 'texture-formats-float32-webgl1': ['OES_texture_float', true],\n 'texture-formats-float16-webgl1': ['OES_texture_half_float', true],\n\n 'texture-filter-linear-float32-webgl': ['OES_texture_float_linear', 'OES_texture_float_linear'],\n 'texture-filter-linear-float16-webgl': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],\n 'texture-filter-anisotropic-webgl': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n 'texture-renderable-rgba32float-webgl': ['WEBGL_color_buffer_float', 'EXT_color_buffer_float'], // Note override check\n 'texture-renderable-float32-webgl': [false, 'EXT_color_buffer_float'],\n 'texture-renderable-float16-webgl': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],\n\n // GLSL extensions\n 'glsl-frag-data': ['WEBGL_draw_buffers', true],\n 'glsl-frag-depth': ['EXT_frag_depth', true],\n 'glsl-derivatives': ['OES_standard_derivatives', true],\n 'glsl-texture-lod': ['EXT_shader_texture_lod', true]\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import GL from '@luma.gl/constants';
2
- import { getWebGL2Context } from '../../context/context/webgl-checks';
2
+ import { getWebGL2Context } from "../../context/context/webgl-checks.js";
3
3
  export function getDeviceLimits(gl) {
4
4
  const gl2 = getWebGL2Context(gl);
5
5
  return {
@@ -33,15 +33,12 @@ export function getDeviceLimits(gl) {
33
33
  }
34
34
  export function getWebGLLimits(gl) {
35
35
  const gl2 = getWebGL2Context(gl);
36
-
37
36
  function get(pname) {
38
37
  return gl.getParameter(pname);
39
38
  }
40
-
41
39
  function get2(pname, defaultValue) {
42
40
  return gl2 ? gl2.getParameter(pname) : defaultValue || 0;
43
41
  }
44
-
45
42
  return {
46
43
  [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),
47
44
  [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),