@luma.gl/webgl 8.6.0-alpha.5 → 9.0.0-alpha.2

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 (749) hide show
  1. package/README.md +3 -67
  2. package/dist/adapter/converters/device-parameters.d.ts +17 -0
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
  4. package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
  5. package/dist/adapter/converters/device-parameters.js.map +1 -0
  6. package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
  7. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
  8. package/dist/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  9. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  10. package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
  11. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/sampler-parameters.js +208 -0
  13. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +93 -0
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/texture-formats.js +954 -0
  17. package/dist/adapter/converters/texture-formats.js.map +1 -0
  18. package/dist/adapter/converters/vertex-formats.d.ts +4 -0
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
  20. package/dist/adapter/converters/vertex-formats.js +35 -0
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-features.d.ts +3 -6
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +27 -48
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +1 -0
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.js +7 -7
  31. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  32. package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
  33. package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
  34. package/dist/adapter/helpers/attribute-utils.js +81 -0
  35. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  36. package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
  37. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
  38. package/dist/adapter/helpers/get-shader-layout.js +306 -0
  39. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  40. package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
  41. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
  42. package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  43. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  44. package/dist/adapter/helpers/set-uniform.d.ts +4 -0
  45. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
  46. package/dist/adapter/helpers/set-uniform.js +115 -0
  47. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  48. package/dist/adapter/helpers/uniforms.d.ts +26 -0
  49. package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
  50. package/dist/adapter/helpers/uniforms.js +99 -0
  51. package/dist/adapter/helpers/uniforms.js.map +1 -0
  52. package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
  53. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
  54. package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  55. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  56. package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
  57. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
  58. package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
  59. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  60. package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
  61. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
  62. package/dist/{classes → adapter/objects}/webgl-resource.js +7 -3
  63. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  64. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
  65. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
  66. package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
  67. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  68. package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
  69. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
  70. package/dist/adapter/resources/webgl-buffer.js +164 -0
  71. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  72. package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
  74. package/dist/adapter/resources/webgl-command-buffer.js +65 -0
  75. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  76. package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
  78. package/dist/adapter/resources/webgl-command-encoder.js +53 -0
  79. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  80. package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
  81. package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-external-texture.js +2 -0
  83. package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.d.ts +40 -0
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-framebuffer.js +265 -0
  87. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  88. package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
  89. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
  90. package/dist/adapter/resources/webgl-render-pass.js +19 -0
  91. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  92. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
  93. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
  94. package/dist/adapter/resources/webgl-render-pipeline.js +400 -0
  95. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  96. package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
  97. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
  98. package/dist/adapter/resources/webgl-sampler.js +50 -0
  99. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  100. package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
  101. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
  102. package/dist/{esm/adapter → adapter/resources}/webgl-shader.js +13 -20
  103. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  104. package/dist/adapter/resources/webgl-texture.d.ts +193 -0
  105. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
  106. package/dist/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
  107. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  108. package/dist/adapter/webgl-canvas-context.d.ts +36 -0
  109. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
  110. package/dist/adapter/webgl-canvas-context.js +54 -0
  111. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  112. package/dist/adapter/webgl-device.d.ts +58 -76
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +184 -111
  115. package/dist/adapter/webgl-device.js.map +1 -1
  116. package/dist/classic/accessor.d.ts +32 -0
  117. package/dist/classic/accessor.d.ts.map +1 -0
  118. package/dist/{classes → classic}/accessor.js +33 -1
  119. package/dist/classic/accessor.js.map +1 -0
  120. package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
  121. package/dist/classic/buffer.d.ts.map +1 -0
  122. package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +53 -51
  123. package/dist/classic/buffer.js.map +1 -0
  124. package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
  125. package/dist/classic/typed-array-utils.d.ts.map +1 -0
  126. package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
  127. package/dist/classic/typed-array-utils.js.map +1 -0
  128. package/dist/context/context/context-state.d.ts.map +1 -1
  129. package/dist/context/context/context-state.js +1 -1
  130. package/dist/context/context/context-state.js.map +1 -1
  131. package/dist/context/context/create-context.d.ts +1 -0
  132. package/dist/context/context/create-context.d.ts.map +1 -1
  133. package/dist/context/context/create-context.js +12 -0
  134. package/dist/context/context/create-context.js.map +1 -1
  135. package/dist/context/context/device-pixels.d.ts +1 -1
  136. package/dist/context/context/device-pixels.d.ts.map +1 -1
  137. package/dist/context/context/device-pixels.js.map +1 -1
  138. package/dist/context/debug/spector.d.ts +18 -0
  139. package/dist/context/debug/spector.d.ts.map +1 -0
  140. package/dist/context/debug/spector.js +76 -0
  141. package/dist/context/debug/spector.js.map +1 -0
  142. package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
  143. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
  144. package/dist/context/debug/webgl-developer-tools.js +121 -0
  145. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
  147. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  148. package/dist/context/parameters/unified-parameter-api.js +4 -4
  149. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  150. package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
  151. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  152. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  154. package/dist/context/polyfill/polyfill-context.js +4 -3
  155. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  156. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  157. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  158. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  159. package/dist/context/state-tracker/track-context-state.js +25 -11
  160. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  161. package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
  162. package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
  163. package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  164. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
  165. package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
  166. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
  167. package/dist/es5/adapter/converters/texture-formats.js +1031 -0
  168. package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
  169. package/dist/es5/adapter/converters/vertex-formats.js +45 -0
  170. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
  171. package/dist/es5/adapter/device-helpers/device-features.js +46 -54
  172. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  173. package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
  174. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  175. package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
  176. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  177. package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
  178. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
  179. package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
  180. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
  181. package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  182. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  183. package/dist/es5/adapter/helpers/set-uniform.js +125 -0
  184. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
  185. package/dist/es5/adapter/helpers/uniforms.js +112 -0
  186. package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
  187. package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  188. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
  189. package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
  190. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
  191. package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
  192. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
  193. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
  194. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  195. package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
  196. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
  197. package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
  198. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
  199. package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
  200. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
  201. package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
  202. package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
  203. package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
  204. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
  205. package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
  206. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
  207. package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
  208. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
  209. package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
  210. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
  211. package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
  212. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
  213. package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
  214. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
  215. package/dist/es5/adapter/webgl-canvas-context.js +97 -0
  216. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
  217. package/dist/es5/adapter/webgl-device.js +253 -133
  218. package/dist/es5/adapter/webgl-device.js.map +1 -1
  219. package/dist/es5/{classes → classic}/accessor.js +25 -1
  220. package/dist/es5/classic/accessor.js.map +1 -0
  221. package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
  222. package/dist/es5/classic/buffer.js.map +1 -0
  223. package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
  224. package/dist/es5/classic/typed-array-utils.js.map +1 -0
  225. package/dist/es5/context/context/context-state.js +1 -1
  226. package/dist/es5/context/context/context-state.js.map +1 -1
  227. package/dist/es5/context/context/create-context.js +12 -0
  228. package/dist/es5/context/context/create-context.js.map +1 -1
  229. package/dist/es5/context/context/device-pixels.js.map +1 -1
  230. package/dist/es5/context/debug/spector.js +133 -0
  231. package/dist/es5/context/debug/spector.js.map +1 -0
  232. package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
  233. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
  234. package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
  235. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  236. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  237. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  238. package/dist/es5/context/polyfill/polyfill-context.js +4 -3
  239. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  240. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  241. package/dist/es5/context/state-tracker/track-context-state.js +26 -11
  242. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  243. package/dist/es5/index.js +65 -307
  244. package/dist/es5/index.js.map +1 -1
  245. package/dist/es5/init.js +1 -41
  246. package/dist/es5/init.js.map +1 -1
  247. package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
  248. package/dist/es5/types/webgl.js.map +1 -0
  249. package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
  250. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  251. package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  252. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
  253. package/dist/esm/adapter/converters/sampler-parameters.js +208 -0
  254. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
  255. package/dist/esm/adapter/converters/texture-formats.js +954 -0
  256. package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
  257. package/dist/esm/adapter/converters/vertex-formats.js +35 -0
  258. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
  259. package/dist/esm/adapter/device-helpers/device-features.js +27 -48
  260. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  261. package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
  262. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  263. package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
  264. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  265. package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
  266. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
  267. package/dist/esm/adapter/helpers/get-shader-layout.js +306 -0
  268. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
  269. package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
  270. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  271. package/dist/esm/adapter/helpers/set-uniform.js +115 -0
  272. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
  273. package/dist/esm/adapter/helpers/uniforms.js +99 -0
  274. package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
  275. package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
  276. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
  277. package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
  278. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
  279. package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
  280. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
  281. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
  282. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  283. package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
  284. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
  285. package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
  286. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
  287. package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
  288. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
  289. package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
  290. package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
  291. package/dist/esm/adapter/resources/webgl-framebuffer.js +265 -0
  292. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
  293. package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
  294. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
  295. package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -0
  296. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
  297. package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
  298. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
  299. package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +13 -20
  300. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  301. package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
  302. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
  303. package/dist/esm/adapter/webgl-canvas-context.js +54 -0
  304. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
  305. package/dist/esm/adapter/webgl-device.js +184 -111
  306. package/dist/esm/adapter/webgl-device.js.map +1 -1
  307. package/dist/esm/{classes → classic}/accessor.js +33 -1
  308. package/dist/esm/classic/accessor.js.map +1 -0
  309. package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
  310. package/dist/esm/classic/buffer.js.map +1 -0
  311. package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
  312. package/dist/esm/classic/typed-array-utils.js.map +1 -0
  313. package/dist/esm/context/context/context-state.js +1 -1
  314. package/dist/esm/context/context/context-state.js.map +1 -1
  315. package/dist/esm/context/context/create-context.js +12 -0
  316. package/dist/esm/context/context/create-context.js.map +1 -1
  317. package/dist/esm/context/context/device-pixels.js.map +1 -1
  318. package/dist/esm/context/debug/spector.js +76 -0
  319. package/dist/esm/context/debug/spector.js.map +1 -0
  320. package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
  321. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
  322. package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
  323. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  324. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  325. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  326. package/dist/esm/context/polyfill/polyfill-context.js +4 -3
  327. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  328. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  329. package/dist/esm/context/state-tracker/track-context-state.js +25 -11
  330. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  331. package/dist/esm/index.js +19 -31
  332. package/dist/esm/index.js.map +1 -1
  333. package/dist/esm/init.js +2 -31
  334. package/dist/esm/init.js.map +1 -1
  335. package/dist/esm/types/webgl.js +2 -0
  336. package/dist/esm/types/webgl.js.map +1 -0
  337. package/dist/index.d.ts +22 -46
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +19 -31
  340. package/dist/index.js.map +1 -1
  341. package/dist/init.d.ts +1 -4
  342. package/dist/init.d.ts.map +1 -1
  343. package/dist/init.js +2 -31
  344. package/dist/init.js.map +1 -1
  345. package/dist/types/webgl.d.ts +144 -0
  346. package/dist/types/webgl.d.ts.map +1 -0
  347. package/dist/types/webgl.js +2 -0
  348. package/dist/types/webgl.js.map +1 -0
  349. package/package.json +5 -5
  350. package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
  351. package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
  352. package/src/adapter/converters/sampler-parameters.ts +175 -0
  353. package/src/adapter/converters/texture-formats.ts +633 -0
  354. package/src/adapter/converters/vertex-formats.ts +22 -0
  355. package/src/adapter/device-helpers/device-features.ts +46 -123
  356. package/src/adapter/device-helpers/device-limits.ts +5 -2
  357. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  358. package/src/adapter/helpers/attribute-utils.ts +61 -0
  359. package/src/adapter/helpers/get-shader-layout.ts +388 -0
  360. package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
  361. package/src/adapter/helpers/set-uniform.ts +87 -0
  362. package/src/adapter/helpers/uniforms.ts +110 -0
  363. package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
  364. package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
  365. package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
  366. package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
  367. package/src/adapter/resources/webgl-buffer.ts +219 -0
  368. package/src/adapter/resources/webgl-command-buffer.ts +94 -0
  369. package/src/adapter/resources/webgl-command-encoder.ts +58 -0
  370. package/src/adapter/resources/webgl-external-texture.ts +92 -0
  371. package/src/adapter/resources/webgl-framebuffer.ts +279 -0
  372. package/src/adapter/resources/webgl-render-pass.ts +23 -0
  373. package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
  374. package/src/adapter/resources/webgl-sampler.ts +54 -0
  375. package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
  376. package/src/adapter/resources/webgl-texture.ts +1023 -0
  377. package/src/adapter/webgl-canvas-context.ts +74 -0
  378. package/src/adapter/webgl-device.ts +226 -275
  379. package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
  380. package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
  381. package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
  382. package/src/context/context/context-state.ts +4 -2
  383. package/src/context/context/create-context.ts +28 -1
  384. package/src/context/context/device-pixels.ts +9 -4
  385. package/src/context/debug/spector.ts +92 -0
  386. package/src/context/debug/webgl-developer-tools.ts +162 -0
  387. package/src/context/parameters/unified-parameter-api.ts +6 -4
  388. package/src/context/parameters/webgl-parameter-tables.ts +38 -36
  389. package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
  390. package/src/context/polyfill/polyfill-context.ts +4 -3
  391. package/src/context/state-tracker/deep-array-equal.ts +1 -1
  392. package/src/context/state-tracker/track-context-state.ts +27 -20
  393. package/src/index.ts +33 -102
  394. package/src/init.ts +2 -46
  395. package/src/types/webgl.ts +283 -0
  396. package/dist/_deprecated/context-api.d.ts +0 -85
  397. package/dist/_deprecated/context-api.d.ts.map +0 -1
  398. package/dist/_deprecated/context-api.js +0 -76
  399. package/dist/_deprecated/context-api.js.map +0 -1
  400. package/dist/_deprecated/features.d.ts +0 -27
  401. package/dist/_deprecated/features.d.ts.map +0 -1
  402. package/dist/_deprecated/features.js +0 -111
  403. package/dist/_deprecated/features.js.map +0 -1
  404. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  405. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  406. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  407. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  408. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  409. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  410. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  411. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  412. package/dist/adapter/webgl-shader.js.map +0 -1
  413. package/dist/classes/accessor.d.ts +0 -28
  414. package/dist/classes/accessor.d.ts.map +0 -1
  415. package/dist/classes/accessor.js.map +0 -1
  416. package/dist/classes/accessor.ts.disabled +0 -159
  417. package/dist/classes/clear.d.ts +0 -17
  418. package/dist/classes/clear.d.ts.map +0 -1
  419. package/dist/classes/clear.js +0 -105
  420. package/dist/classes/clear.js.map +0 -1
  421. package/dist/classes/copy-and-blit.d.ts +0 -86
  422. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  423. package/dist/classes/copy-and-blit.js +0 -338
  424. package/dist/classes/copy-and-blit.js.map +0 -1
  425. package/dist/classes/framebuffer.d.ts +0 -139
  426. package/dist/classes/framebuffer.d.ts.map +0 -1
  427. package/dist/classes/framebuffer.js +0 -656
  428. package/dist/classes/framebuffer.js.map +0 -1
  429. package/dist/classes/program-configuration.d.ts +0 -24
  430. package/dist/classes/program-configuration.d.ts.map +0 -1
  431. package/dist/classes/program-configuration.js +0 -73
  432. package/dist/classes/program-configuration.js.map +0 -1
  433. package/dist/classes/program.d.ts +0 -66
  434. package/dist/classes/program.d.ts.map +0 -1
  435. package/dist/classes/program.js +0 -379
  436. package/dist/classes/program.js.map +0 -1
  437. package/dist/classes/query.d.ts +0 -27
  438. package/dist/classes/query.d.ts.map +0 -1
  439. package/dist/classes/query.js +0 -145
  440. package/dist/classes/query.js.map +0 -1
  441. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  442. package/dist/classes/renderbuffer-formats.js.map +0 -1
  443. package/dist/classes/renderbuffer.d.ts +0 -60
  444. package/dist/classes/renderbuffer.d.ts.map +0 -1
  445. package/dist/classes/renderbuffer.js.map +0 -1
  446. package/dist/classes/shader.d.ts +0 -42
  447. package/dist/classes/shader.d.ts.map +0 -1
  448. package/dist/classes/shader.js +0 -118
  449. package/dist/classes/shader.js.map +0 -1
  450. package/dist/classes/texture-2d.d.ts +0 -9
  451. package/dist/classes/texture-2d.d.ts.map +0 -1
  452. package/dist/classes/texture-2d.js +0 -36
  453. package/dist/classes/texture-2d.js.map +0 -1
  454. package/dist/classes/texture-3d.d.ts +0 -29
  455. package/dist/classes/texture-3d.d.ts.map +0 -1
  456. package/dist/classes/texture-3d.js +0 -76
  457. package/dist/classes/texture-3d.js.map +0 -1
  458. package/dist/classes/texture-cube.d.ts +0 -28
  459. package/dist/classes/texture-cube.d.ts.map +0 -1
  460. package/dist/classes/texture-cube.js +0 -130
  461. package/dist/classes/texture-cube.js.map +0 -1
  462. package/dist/classes/texture-formats.d.ts +0 -37
  463. package/dist/classes/texture-formats.d.ts.map +0 -1
  464. package/dist/classes/texture-formats.js +0 -98
  465. package/dist/classes/texture-formats.js.map +0 -1
  466. package/dist/classes/texture.d.ts +0 -123
  467. package/dist/classes/texture.d.ts.map +0 -1
  468. package/dist/classes/texture.js.map +0 -1
  469. package/dist/classes/transform-feedback.d.ts +0 -33
  470. package/dist/classes/transform-feedback.d.ts.map +0 -1
  471. package/dist/classes/transform-feedback.js +0 -198
  472. package/dist/classes/transform-feedback.js.map +0 -1
  473. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  474. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  475. package/dist/classes/uniform-buffer-layout.js +0 -104
  476. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  477. package/dist/classes/uniforms.d.ts +0 -37
  478. package/dist/classes/uniforms.d.ts.map +0 -1
  479. package/dist/classes/uniforms.js +0 -250
  480. package/dist/classes/uniforms.js.map +0 -1
  481. package/dist/classes/vertex-array-object.d.ts +0 -76
  482. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  483. package/dist/classes/vertex-array-object.js +0 -261
  484. package/dist/classes/vertex-array-object.js.map +0 -1
  485. package/dist/classes/vertex-array.d.ts +0 -75
  486. package/dist/classes/vertex-array.d.ts.map +0 -1
  487. package/dist/classes/vertex-array.js +0 -408
  488. package/dist/classes/vertex-array.js.map +0 -1
  489. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  490. package/dist/classes/webgl-buffer.js.map +0 -1
  491. package/dist/classes/webgl-resource.d.ts.map +0 -1
  492. package/dist/classes/webgl-resource.js.map +0 -1
  493. package/dist/context/context/get-canvas.d.ts +0 -13
  494. package/dist/context/context/get-canvas.d.ts.map +0 -1
  495. package/dist/context/context/get-canvas.js +0 -31
  496. package/dist/context/context/get-canvas.js.map +0 -1
  497. package/dist/context/context/resize-context.d.ts +0 -20
  498. package/dist/context/context/resize-context.d.ts.map +0 -1
  499. package/dist/context/context/resize-context.js +0 -15
  500. package/dist/context/context/resize-context.js.map +0 -1
  501. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  502. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  503. package/dist/context/parameters/webgl-parameters.js +0 -2
  504. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  505. package/dist/debug/debug-program-configuration.d.ts +0 -2
  506. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  507. package/dist/debug/debug-program-configuration.js +0 -40
  508. package/dist/debug/debug-program-configuration.js.map +0 -1
  509. package/dist/debug/debug-uniforms.d.ts +0 -12
  510. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  511. package/dist/debug/debug-uniforms.js +0 -108
  512. package/dist/debug/debug-uniforms.js.map +0 -1
  513. package/dist/debug/debug-vertex-array.d.ts +0 -5
  514. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  515. package/dist/debug/debug-vertex-array.js +0 -118
  516. package/dist/debug/debug-vertex-array.js.map +0 -1
  517. package/dist/es5/_deprecated/context-api.js +0 -116
  518. package/dist/es5/_deprecated/context-api.js.map +0 -1
  519. package/dist/es5/_deprecated/features.js +0 -118
  520. package/dist/es5/_deprecated/features.js.map +0 -1
  521. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  522. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  523. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  524. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  525. package/dist/es5/classes/accessor.d.ts +0 -28
  526. package/dist/es5/classes/accessor.js.map +0 -1
  527. package/dist/es5/classes/accessor.ts.disabled +0 -159
  528. package/dist/es5/classes/clear.js +0 -135
  529. package/dist/es5/classes/clear.js.map +0 -1
  530. package/dist/es5/classes/copy-and-blit.js +0 -382
  531. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  532. package/dist/es5/classes/framebuffer.js +0 -807
  533. package/dist/es5/classes/framebuffer.js.map +0 -1
  534. package/dist/es5/classes/program-configuration.js +0 -119
  535. package/dist/es5/classes/program-configuration.js.map +0 -1
  536. package/dist/es5/classes/program.js +0 -471
  537. package/dist/es5/classes/program.js.map +0 -1
  538. package/dist/es5/classes/query.js +0 -222
  539. package/dist/es5/classes/query.js.map +0 -1
  540. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  541. package/dist/es5/classes/renderbuffer.js.map +0 -1
  542. package/dist/es5/classes/shader.js +0 -195
  543. package/dist/es5/classes/shader.js.map +0 -1
  544. package/dist/es5/classes/texture-2d.js.map +0 -1
  545. package/dist/es5/classes/texture-3d.js +0 -142
  546. package/dist/es5/classes/texture-3d.js.map +0 -1
  547. package/dist/es5/classes/texture-cube.js +0 -202
  548. package/dist/es5/classes/texture-cube.js.map +0 -1
  549. package/dist/es5/classes/texture-formats.js +0 -87
  550. package/dist/es5/classes/texture-formats.js.map +0 -1
  551. package/dist/es5/classes/texture.js.map +0 -1
  552. package/dist/es5/classes/transform-feedback.js +0 -267
  553. package/dist/es5/classes/transform-feedback.js.map +0 -1
  554. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  555. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  556. package/dist/es5/classes/uniforms.js +0 -232
  557. package/dist/es5/classes/uniforms.js.map +0 -1
  558. package/dist/es5/classes/vertex-array-object.js +0 -337
  559. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  560. package/dist/es5/classes/vertex-array.js +0 -465
  561. package/dist/es5/classes/vertex-array.js.map +0 -1
  562. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  563. package/dist/es5/classes/webgl-resource.js.map +0 -1
  564. package/dist/es5/context/context/get-canvas.js +0 -40
  565. package/dist/es5/context/context/get-canvas.js.map +0 -1
  566. package/dist/es5/context/context/resize-context.js +0 -23
  567. package/dist/es5/context/context/resize-context.js.map +0 -1
  568. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  569. package/dist/es5/debug/debug-program-configuration.js +0 -76
  570. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  571. package/dist/es5/debug/debug-uniforms.js +0 -156
  572. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  573. package/dist/es5/debug/debug-vertex-array.js +0 -126
  574. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  575. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  576. package/dist/es5/helpers/program-bindings.js +0 -2
  577. package/dist/es5/types/accessor.d.ts +0 -29
  578. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  579. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  580. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  581. package/dist/es5/webgl-utils/format-utils.js +0 -58
  582. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  583. package/dist/es5/webgl-utils/get-error.js +0 -49
  584. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  585. package/dist/es5/webgl-utils/index.js +0 -74
  586. package/dist/es5/webgl-utils/index.js.map +0 -1
  587. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  588. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  589. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  590. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  591. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  592. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  593. package/dist/esm/_deprecated/context-api.js +0 -76
  594. package/dist/esm/_deprecated/context-api.js.map +0 -1
  595. package/dist/esm/_deprecated/features.js +0 -111
  596. package/dist/esm/_deprecated/features.js.map +0 -1
  597. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  598. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  599. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  600. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  601. package/dist/esm/classes/accessor.d.ts +0 -28
  602. package/dist/esm/classes/accessor.js.map +0 -1
  603. package/dist/esm/classes/clear.js +0 -105
  604. package/dist/esm/classes/clear.js.map +0 -1
  605. package/dist/esm/classes/copy-and-blit.js +0 -338
  606. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  607. package/dist/esm/classes/framebuffer.js +0 -656
  608. package/dist/esm/classes/framebuffer.js.map +0 -1
  609. package/dist/esm/classes/program-configuration.js +0 -73
  610. package/dist/esm/classes/program-configuration.js.map +0 -1
  611. package/dist/esm/classes/program.js +0 -379
  612. package/dist/esm/classes/program.js.map +0 -1
  613. package/dist/esm/classes/query.js +0 -145
  614. package/dist/esm/classes/query.js.map +0 -1
  615. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  616. package/dist/esm/classes/renderbuffer.js.map +0 -1
  617. package/dist/esm/classes/shader.js +0 -118
  618. package/dist/esm/classes/shader.js.map +0 -1
  619. package/dist/esm/classes/texture-2d.js +0 -36
  620. package/dist/esm/classes/texture-2d.js.map +0 -1
  621. package/dist/esm/classes/texture-3d.js +0 -76
  622. package/dist/esm/classes/texture-3d.js.map +0 -1
  623. package/dist/esm/classes/texture-cube.js +0 -130
  624. package/dist/esm/classes/texture-cube.js.map +0 -1
  625. package/dist/esm/classes/texture-formats.js +0 -98
  626. package/dist/esm/classes/texture-formats.js.map +0 -1
  627. package/dist/esm/classes/texture.js.map +0 -1
  628. package/dist/esm/classes/transform-feedback.js +0 -198
  629. package/dist/esm/classes/transform-feedback.js.map +0 -1
  630. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  631. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  632. package/dist/esm/classes/uniforms.js +0 -250
  633. package/dist/esm/classes/uniforms.js.map +0 -1
  634. package/dist/esm/classes/vertex-array-object.js +0 -261
  635. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  636. package/dist/esm/classes/vertex-array.js +0 -408
  637. package/dist/esm/classes/vertex-array.js.map +0 -1
  638. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  639. package/dist/esm/classes/webgl-resource.js.map +0 -1
  640. package/dist/esm/context/context/get-canvas.js +0 -31
  641. package/dist/esm/context/context/get-canvas.js.map +0 -1
  642. package/dist/esm/context/context/resize-context.js +0 -15
  643. package/dist/esm/context/context/resize-context.js.map +0 -1
  644. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  645. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  646. package/dist/esm/debug/debug-program-configuration.js +0 -40
  647. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  648. package/dist/esm/debug/debug-uniforms.js +0 -108
  649. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  650. package/dist/esm/debug/debug-vertex-array.js +0 -118
  651. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  652. package/dist/esm/helpers/get-program-bindings.js +0 -228
  653. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  654. package/dist/esm/helpers/program-bindings.js +0 -2
  655. package/dist/esm/types/accessor.d.ts +0 -29
  656. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  657. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  658. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  659. package/dist/esm/webgl-utils/format-utils.js +0 -45
  660. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  661. package/dist/esm/webgl-utils/get-error.js +0 -41
  662. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  663. package/dist/esm/webgl-utils/index.js +0 -5
  664. package/dist/esm/webgl-utils/index.js.map +0 -1
  665. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  666. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  667. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  668. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  669. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  670. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  671. package/dist/helpers/get-program-bindings.d.ts +0 -8
  672. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  673. package/dist/helpers/get-program-bindings.js +0 -228
  674. package/dist/helpers/get-program-bindings.js.map +0 -1
  675. package/dist/helpers/program-bindings.d.ts +0 -41
  676. package/dist/helpers/program-bindings.d.ts.map +0 -1
  677. package/dist/helpers/program-bindings.js +0 -2
  678. package/dist/types/accessor.d.ts +0 -29
  679. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  680. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  681. package/dist/webgl-utils/attribute-utils.js +0 -182
  682. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  683. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  684. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  685. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  686. package/dist/webgl-utils/format-utils.d.ts +0 -3
  687. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  688. package/dist/webgl-utils/format-utils.js +0 -45
  689. package/dist/webgl-utils/format-utils.js.map +0 -1
  690. package/dist/webgl-utils/get-error.d.ts +0 -3
  691. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  692. package/dist/webgl-utils/get-error.js +0 -41
  693. package/dist/webgl-utils/get-error.js.map +0 -1
  694. package/dist/webgl-utils/index.d.ts +0 -5
  695. package/dist/webgl-utils/index.d.ts.map +0 -1
  696. package/dist/webgl-utils/index.js +0 -5
  697. package/dist/webgl-utils/index.js.map +0 -1
  698. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  699. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  700. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  701. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  702. package/dist/webgl-utils/request-animation-frame.js +0 -7
  703. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  704. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  705. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  706. package/dist/webgl-utils/texture-utils.js +0 -48
  707. package/dist/webgl-utils/texture-utils.js.map +0 -1
  708. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  709. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  710. package/src/.DS_Store +0 -0
  711. package/src/_deprecated/context-api.ts +0 -146
  712. package/src/_deprecated/features.ts +0 -159
  713. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  714. package/src/classes/accessor.d.ts +0 -28
  715. package/src/classes/accessor.js +0 -129
  716. package/src/classes/accessor.ts.disabled +0 -159
  717. package/src/classes/clear.ts +0 -108
  718. package/src/classes/copy-and-blit.ts +0 -460
  719. package/src/classes/framebuffer.ts +0 -763
  720. package/src/classes/program-configuration.ts +0 -77
  721. package/src/classes/program.ts +0 -431
  722. package/src/classes/query.ts +0 -171
  723. package/src/classes/renderbuffer.ts +0 -154
  724. package/src/classes/shader.ts +0 -129
  725. package/src/classes/texture-2d.ts +0 -35
  726. package/src/classes/texture-3d.ts +0 -123
  727. package/src/classes/texture-cube.ts +0 -162
  728. package/src/classes/texture-formats.ts +0 -171
  729. package/src/classes/texture.ts +0 -965
  730. package/src/classes/transform-feedback.ts +0 -191
  731. package/src/classes/uniform-buffer-layout.ts +0 -113
  732. package/src/classes/uniforms.ts +0 -394
  733. package/src/classes/vertex-array-object.ts +0 -339
  734. package/src/classes/vertex-array.ts +0 -484
  735. package/src/context/context/get-canvas.ts +0 -37
  736. package/src/context/context/resize-context.ts +0 -37
  737. package/src/context/parameters/webgl-parameters.ts +0 -197
  738. package/src/debug/debug-program-configuration.ts +0 -32
  739. package/src/debug/debug-uniforms.ts +0 -100
  740. package/src/debug/debug-vertex-array.ts +0 -123
  741. package/src/helpers/get-program-bindings.ts +0 -244
  742. package/src/helpers/program-bindings.ts +0 -46
  743. package/src/types/accessor.d.ts +0 -29
  744. package/src/webgl-utils/attribute-utils.ts +0 -171
  745. package/src/webgl-utils/format-utils.ts +0 -43
  746. package/src/webgl-utils/get-error.ts +0 -56
  747. package/src/webgl-utils/index.ts +0 -12
  748. package/src/webgl-utils/request-animation-frame.ts +0 -14
  749. package/src/webgl-utils/texture-utils.ts +0 -60
@@ -0,0 +1,76 @@
1
+ import { log, loadScript } from '@luma.gl/api';
2
+ const DEFAULT_SPECTOR_PROPS = {
3
+ spector: log.get('spector') || log.get('inspect')
4
+ };
5
+ const SPECTOR_CDN_URL = 'https://spectorcdn.babylonjs.com/spector.bundle.js';
6
+ const LOG_LEVEL = 1;
7
+ let spector = null;
8
+ let initialized = false;
9
+ export async function loadSpectorJS(props) {
10
+ if (!globalThis.SPECTOR) {
11
+ try {
12
+ await loadScript(SPECTOR_CDN_URL);
13
+ } catch (error) {
14
+ log.warn(error);
15
+ }
16
+ }
17
+ }
18
+ export function initializeSpectorJS(props) {
19
+ var _props, _props2;
20
+
21
+ props = { ...DEFAULT_SPECTOR_PROPS,
22
+ ...props
23
+ };
24
+
25
+ if (!((_props = props) !== null && _props !== void 0 && _props.spector)) {
26
+ return null;
27
+ }
28
+
29
+ if (!spector && globalThis.SPECTOR) {
30
+ log.probe(LOG_LEVEL, "SPECTOR found and initialized")();
31
+ spector = new globalThis.SPECTOR.Spector();
32
+
33
+ if (globalThis.luma) {
34
+ globalThis.luma.spector = spector;
35
+ }
36
+ }
37
+
38
+ if (!spector) {
39
+ return null;
40
+ }
41
+
42
+ if (!initialized) {
43
+ var _spector, _spector2;
44
+
45
+ initialized = true;
46
+ spector.spyCanvases();
47
+ (_spector = spector) === null || _spector === void 0 ? void 0 : _spector.onCaptureStarted.add(capture => log.info("Spector capture started:", capture)());
48
+ (_spector2 = spector) === null || _spector2 === void 0 ? void 0 : _spector2.onCapture.add(capture => {
49
+ var _spector3, _spector4, _spector5;
50
+
51
+ log.info("Spector capture complete:", capture)();
52
+ (_spector3 = spector) === null || _spector3 === void 0 ? void 0 : _spector3.getResultUI();
53
+ (_spector4 = spector) === null || _spector4 === void 0 ? void 0 : _spector4.resultView.display();
54
+ (_spector5 = spector) === null || _spector5 === void 0 ? void 0 : _spector5.resultView.addCapture(capture);
55
+ });
56
+ }
57
+
58
+ if ((_props2 = props) !== null && _props2 !== void 0 && _props2.canvas) {
59
+ var _spector6, _props3;
60
+
61
+ if (typeof props.spector === 'string' && props.spector !== props.canvas.id) {
62
+ return spector;
63
+ }
64
+
65
+ (_spector6 = spector) === null || _spector6 === void 0 ? void 0 : _spector6.startCapture((_props3 = props) === null || _props3 === void 0 ? void 0 : _props3.canvas, 500);
66
+ new Promise(resolve => setTimeout(resolve, 2000)).then(_ => {
67
+ var _spector7;
68
+
69
+ log.info("Spector capture stopped after 2 seconds")();
70
+ (_spector7 = spector) === null || _spector7 === void 0 ? void 0 : _spector7.stopCapture();
71
+ });
72
+ }
73
+
74
+ return spector;
75
+ }
76
+ //# sourceMappingURL=spector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/context/debug/spector.ts"],"names":["log","loadScript","DEFAULT_SPECTOR_PROPS","spector","get","SPECTOR_CDN_URL","LOG_LEVEL","initialized","loadSpectorJS","props","globalThis","SPECTOR","error","warn","initializeSpectorJS","probe","Spector","luma","spyCanvases","onCaptureStarted","add","capture","info","onCapture","getResultUI","resultView","display","addCapture","canvas","id","startCapture","Promise","resolve","setTimeout","then","_","stopCapture"],"mappings":"AACA,SAAQA,GAAR,EAAaC,UAAb,QAA8B,cAA9B;AAYA,MAAMC,qBAAmC,GAAG;AAC1CC,EAAAA,OAAO,EAAEH,GAAG,CAACI,GAAJ,CAAQ,SAAR,KAAsBJ,GAAG,CAACI,GAAJ,CAAQ,SAAR;AADW,CAA5C;AAKA,MAAMC,eAAe,GAAG,oDAAxB;AACA,MAAMC,SAAS,GAAG,CAAlB;AAEA,IAAIH,OAAY,GAAG,IAAnB;AACA,IAAII,WAAoB,GAAG,KAA3B;AAOA,OAAO,eAAeC,aAAf,CAA6BC,KAA7B,EAAmD;AACxD,MAAI,CAACC,UAAU,CAACC,OAAhB,EAAyB;AACvB,QAAI;AACF,YAAMV,UAAU,CAACI,eAAD,CAAhB;AACD,KAFD,CAEE,OAAMO,KAAN,EAAa;AACbZ,MAAAA,GAAG,CAACa,IAAJ,CAASD,KAAT;AACD;AACF;AACF;AAED,OAAO,SAASE,mBAAT,CAA6BL,KAA7B,EAAmD;AAAA;;AACxDA,EAAAA,KAAK,GAAG,EAAC,GAAGP,qBAAJ;AAA2B,OAAGO;AAA9B,GAAR;;AACA,MAAI,YAACA,KAAD,mCAAC,OAAON,OAAR,CAAJ,EAAqB;AACnB,WAAO,IAAP;AACD;;AAED,MAAI,CAACA,OAAD,IAAYO,UAAU,CAACC,OAA3B,EAAoC;AAClCX,IAAAA,GAAG,CAACe,KAAJ,CAAUT,SAAV,EAAqB,+BAArB;AACAH,IAAAA,OAAO,GAAG,IAAIO,UAAU,CAACC,OAAX,CAAmBK,OAAvB,EAAV;;AACA,QAAIN,UAAU,CAACO,IAAf,EAAqB;AACnBP,MAAAA,UAAU,CAACO,IAAX,CAAgBd,OAAhB,GAA0BA,OAA1B;AACD;AACF;;AAED,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,IAAP;AACD;;AAED,MAAI,CAACI,WAAL,EAAkB;AAAA;;AAChBA,IAAAA,WAAW,GAAG,IAAd;AAGAJ,IAAAA,OAAO,CAACe,WAAR;AAEA,gBAAAf,OAAO,UAAP,4CAASgB,gBAAT,CAA0BC,GAA1B,CAA+BC,OAAD,IAAsBrB,GAAG,CAACsB,IAAJ,6BAAqCD,OAArC,GAApD;AACA,iBAAAlB,OAAO,UAAP,8CAASoB,SAAT,CAAmBH,GAAnB,CAAwBC,OAAD,IAAsB;AAAA;;AAC3CrB,MAAAA,GAAG,CAACsB,IAAJ,8BAAsCD,OAAtC;AAGA,mBAAAlB,OAAO,UAAP,8CAASqB,WAAT;AACA,mBAAArB,OAAO,UAAP,8CAASsB,UAAT,CAAoBC,OAApB;AACA,mBAAAvB,OAAO,UAAP,8CAASsB,UAAT,CAAoBE,UAApB,CAA+BN,OAA/B;AACD,KAPD;AAQD;;AAED,iBAAIZ,KAAJ,oCAAI,QAAOmB,MAAX,EAAmB;AAAA;;AAEjB,QAAI,OAAOnB,KAAK,CAACN,OAAb,KAAyB,QAAzB,IAAqCM,KAAK,CAACN,OAAN,KAAkBM,KAAK,CAACmB,MAAN,CAAaC,EAAxE,EAA4E;AAC1E,aAAO1B,OAAP;AACD;;AAID,iBAAAA,OAAO,UAAP,8CAAS2B,YAAT,YAAsBrB,KAAtB,4CAAsB,QAAOmB,MAA7B,EAAqC,GAArC;AACA,QAAIG,OAAJ,CAAYC,OAAO,IAAIC,UAAU,CAACD,OAAD,EAAU,IAAV,CAAjC,EAAkDE,IAAlD,CAAuDC,CAAC,IAAI;AAAA;;AAC1DnC,MAAAA,GAAG,CAACsB,IAAJ;AACA,mBAAAnB,OAAO,UAAP,8CAASiC,WAAT;AAED,KAJD;AAKD;;AAED,SAAOjC,OAAP;AACD","sourcesContent":["// luma.gl, MIT license\nimport {log, loadScript} from '@luma.gl/api';\n\n/** Spector debug initialization options */\ntype SpectorProps = {\n /** Canvas to monitor */\n canvas?: HTMLCanvasElement | OffscreenCanvas;\n /** Whether debug is enabled. Auto-detected if ommitted */\n debug?: boolean;\n /** Whether spector is disabled */\n spector?: boolean | string | object;\n};\n\nconst DEFAULT_SPECTOR_PROPS: SpectorProps = {\n spector: log.get('spector') || log.get('inspect')\n};\n\n// https://github.com/BabylonJS/Spector.js#basic-usage\nconst SPECTOR_CDN_URL = 'https://spectorcdn.babylonjs.com/spector.bundle.js';\nconst LOG_LEVEL = 1;\n\nlet spector: any = null;\nlet initialized: boolean = false;\n\ndeclare global {\n var SPECTOR: any;\n}\n\n/** Loads spector from CDN if not already installed */\nexport async function loadSpectorJS(props?: SpectorProps) {\n if (!globalThis.SPECTOR) {\n try {\n await loadScript(SPECTOR_CDN_URL);\n } catch(error) {\n log.warn(error)\n }\n }\n}\n\nexport function initializeSpectorJS(props?: SpectorProps) {\n props = {...DEFAULT_SPECTOR_PROPS, ...props};\n if (!props?.spector) {\n return null;\n }\n\n if (!spector && globalThis.SPECTOR) {\n log.probe(LOG_LEVEL, \"SPECTOR found and initialized\")();\n spector = new globalThis.SPECTOR.Spector();\n if (globalThis.luma) {\n globalThis.luma.spector = spector;\n }\n }\n\n if (!spector) {\n return null;\n }\n\n if (!initialized) {\n initialized = true;\n\n // enables recording some extra information merged in the capture like texture memory sizes and formats\n spector.spyCanvases();\n // A callback when results are ready\n spector?.onCaptureStarted.add((capture: unknown) => log.info(`Spector capture started:`, capture)());\n spector?.onCapture.add((capture: unknown) => {\n log.info(`Spector capture complete:`, capture)();\n // Use undocumented Spector API to open the UI with our capture\n // See https://github.com/BabylonJS/Spector.js/blob/767ad1195a25b85a85c381f400eb50a979239eca/src/spector.ts#L124\n spector?.getResultUI()\n spector?.resultView.display();\n spector?.resultView.addCapture(capture)\n });\n }\n\n if (props?.canvas) {\n // @ts-expect-error If spector is specified as a canvas id, only monitor that canvas\n if (typeof props.spector === 'string' && props.spector !== props.canvas.id) {\n return spector;\n }\n\n // capture startup\n // spector?.captureCanvas(props?.canvas);\n spector?.startCapture(props?.canvas, 500); // 500 commands\n new Promise(resolve => setTimeout(resolve, 2000)).then(_ => {\n log.info(`Spector capture stopped after 2 seconds`)();\n spector?.stopCapture();\n // spector?.displayUI();\n });\n }\n\n return spector;\n}\n"],"file":"spector.js"}
@@ -0,0 +1,121 @@
1
+ import { log, loadScript } from '@luma.gl/api/';
2
+ import GL from '@luma.gl/constants';
3
+ const WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
4
+ const DEFAULT_DEBUG_CONTEXT_PROPS = {
5
+ debug: true,
6
+ throwOnError: false,
7
+ break: undefined,
8
+ webgl2: false
9
+ };
10
+
11
+ function getContextData(gl) {
12
+ gl.luma = gl.luma || {};
13
+ return gl.luma;
14
+ }
15
+
16
+ export async function loadWebGLDeveloperTools() {
17
+ if (!globalThis.WebGLDebugUtils) {
18
+ globalThis.global = globalThis.global || globalThis;
19
+ globalThis.global.module = {};
20
+ await loadScript(WEBGL_DEBUG_CDN_URL);
21
+ }
22
+ }
23
+ export function makeDebugContext(gl, props = {}) {
24
+ if (!gl) {
25
+ return null;
26
+ }
27
+
28
+ return props.debug ? getDebugContext(gl, props) : getRealContext(gl);
29
+ }
30
+
31
+ function getRealContext(gl) {
32
+ const data = getContextData(gl);
33
+ return data.realContext ? data.realContext : gl;
34
+ }
35
+
36
+ function getDebugContext(gl, props) {
37
+ if (!globalThis.WebGLDebugUtils) {
38
+ log.warn('webgl-debug not loaded')();
39
+ return gl;
40
+ }
41
+
42
+ const data = getContextData(gl);
43
+
44
+ if (data.debugContext) {
45
+ return data.debugContext;
46
+ }
47
+
48
+ globalThis.WebGLDebugUtils.init({ ...GL,
49
+ ...gl
50
+ });
51
+ const glDebug = globalThis.WebGLDebugUtils.makeDebugContext(gl, onGLError.bind(null, props), onValidateGLFunc.bind(null, props));
52
+
53
+ for (const key in GL) {
54
+ if (!(key in glDebug) && typeof GL[key] === 'number') {
55
+ glDebug[key] = GL[key];
56
+ }
57
+ }
58
+
59
+ class WebGLDebugContext {}
60
+
61
+ Object.setPrototypeOf(glDebug, Object.getPrototypeOf(gl));
62
+ Object.setPrototypeOf(WebGLDebugContext, glDebug);
63
+ const debugContext = Object.create(WebGLDebugContext);
64
+ data.realContext = gl;
65
+ data.debugContext = debugContext;
66
+ debugContext.debug = true;
67
+ return debugContext;
68
+ }
69
+
70
+ function getFunctionString(functionName, functionArgs) {
71
+ functionArgs = Array.from(functionArgs).map(arg => arg === undefined ? 'undefined' : arg);
72
+ let args = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, functionArgs);
73
+ args = "".concat(args.slice(0, 100)).concat(args.length > 100 ? '...' : '');
74
+ return "gl.".concat(functionName, "(").concat(args, ")");
75
+ }
76
+
77
+ function onGLError(props, err, functionName, args) {
78
+ args = Array.from(args).map(arg => arg === undefined ? 'undefined' : arg);
79
+ const errorMessage = globalThis.WebGLDebugUtils.glEnumToString(err);
80
+ const functionArgs = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, args);
81
+ const glName = props.webgl2 ? 'gl2' : 'gl1';
82
+ const message = "".concat(errorMessage, " in ").concat(glName, ".").concat(functionName, "(").concat(functionArgs, ")");
83
+ log.error(message)();
84
+ debugger;
85
+
86
+ if (props.throwOnError) {
87
+ throw new Error(message);
88
+ }
89
+ }
90
+
91
+ function onValidateGLFunc(props, functionName, functionArgs) {
92
+ let functionString;
93
+
94
+ if (log.level >= 1) {
95
+ functionString = getFunctionString(functionName, functionArgs);
96
+ log.log(1, functionString)();
97
+ }
98
+
99
+ if (props.break) {
100
+ functionString = functionString || getFunctionString(functionName, functionArgs);
101
+ const isBreakpoint = props.break && props.break.every(breakOn => functionString.indexOf(breakOn) !== -1);
102
+
103
+ if (isBreakpoint) {
104
+ debugger;
105
+ }
106
+ }
107
+
108
+ for (const arg of functionArgs) {
109
+ if (arg === undefined) {
110
+ functionString = functionString || getFunctionString(functionName, functionArgs);
111
+
112
+ if (props.throwOnError) {
113
+ throw new Error("Undefined argument: ".concat(functionString));
114
+ } else {
115
+ log.error("Undefined argument: ".concat(functionString))();
116
+ debugger;
117
+ }
118
+ }
119
+ }
120
+ }
121
+ //# sourceMappingURL=webgl-developer-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/context/debug/webgl-developer-tools.ts"],"names":["log","loadScript","GL","WEBGL_DEBUG_CDN_URL","DEFAULT_DEBUG_CONTEXT_PROPS","debug","throwOnError","break","undefined","webgl2","getContextData","gl","luma","loadWebGLDeveloperTools","globalThis","WebGLDebugUtils","global","module","makeDebugContext","props","getDebugContext","getRealContext","data","realContext","warn","debugContext","init","glDebug","onGLError","bind","onValidateGLFunc","key","WebGLDebugContext","Object","setPrototypeOf","getPrototypeOf","create","getFunctionString","functionName","functionArgs","Array","from","map","arg","args","glFunctionArgsToString","slice","length","err","errorMessage","glEnumToString","glName","message","error","Error","functionString","level","isBreakpoint","every","breakOn","indexOf"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {log, loadScript} from '@luma.gl/api/';\nimport GL from '@luma.gl/constants';\n\nconst WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';\n\ntype DebugContextProps = {\n debug?: boolean;\n throwOnError?: boolean;\n break?: string[];\n webgl2?: boolean;\n};\n\nconst DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {\n debug: true,\n throwOnError: false,\n break: undefined,\n webgl2: false,\n}\n\n// Helper to get shared context data\nfunction getContextData(gl: any) {\n gl.luma = gl.luma || {};\n return gl.luma;\n}\n\ndeclare global {\n var WebGLDebugUtils: any;\n}\n\n/**\n * Loads Khronos WebGLDeveloperTools from CDN if not already installed \n * const WebGLDebugUtils = require('webgl-debug');\n * @see https://github.com/KhronosGroup/WebGLDeveloperTools\n * @see https://github.com/vorg/webgl-debug\n */\nexport async function loadWebGLDeveloperTools(): Promise<void> {\n if (!globalThis.WebGLDebugUtils) {\n // @ts-expect-error Developer tools expects global to be set\n globalThis.global = globalThis.global || globalThis;\n // @ts-expect-error Developer tools expects global to be set\n globalThis.global.module = {};\n await loadScript(WEBGL_DEBUG_CDN_URL);\n }\n}\n\n// Returns (a potentially new) context with debug instrumentation turned off or on.\n// Note that this actually returns a new context\nexport function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext {\n // Return null to ensure we don't try to create a context in this case (TODO what case is that?)\n if (!gl) {\n return null;\n }\n\n return props.debug ? getDebugContext(gl, props) : getRealContext(gl);\n}\n\n// Returns the real context from either of the real/debug contexts\nfunction getRealContext(gl: WebGLRenderingContext): WebGLRenderingContext {\n const data = getContextData(gl);\n // If the context has a realContext member, it is a debug context so return the realContext\n return data.realContext ? data.realContext : gl;\n}\n\n// Returns the debug context from either of the real/debug contexts\nfunction getDebugContext(gl: WebGLRenderingContext, props: DebugContextProps): WebGLRenderingContext {\n if (!globalThis.WebGLDebugUtils) {\n log.warn('webgl-debug not loaded')();\n return gl;\n }\n\n const data = getContextData(gl);\n\n // If this already has a debug context, return it.\n if (data.debugContext) {\n return data.debugContext;\n }\n\n // Create a new debug context\n globalThis.WebGLDebugUtils.init({...GL, ...gl});\n const glDebug = globalThis.WebGLDebugUtils.makeDebugContext(\n gl,\n onGLError.bind(null, props),\n onValidateGLFunc.bind(null, props)\n );\n\n // Make sure we have all WebGL2 and extension constants (todo dynamic import to circumvent minification?)\n for (const key in GL) {\n if (!(key in glDebug) && typeof GL[key] === 'number') {\n glDebug[key] = GL[key];\n }\n }\n \n // Ensure we have a clean prototype on the instrumented object\n // Note: setPrototypeOf does come with perf warnings, but we already take a bigger perf reduction\n // by synchronizing the WebGL errors after each WebGL call.\n class WebGLDebugContext {}\n Object.setPrototypeOf(glDebug, Object.getPrototypeOf(gl));\n Object.setPrototypeOf(WebGLDebugContext, glDebug);\n const debugContext = Object.create(WebGLDebugContext);\n // Store the debug context\n data.realContext = gl;\n data.debugContext = debugContext;\n debugContext.debug = true;\n\n // Return it\n return debugContext;\n}\n\n// DEBUG TRACING\n\nfunction getFunctionString(functionName: string, functionArgs): string {\n // Cover bug in webgl-debug-tools\n functionArgs = Array.from(functionArgs).map(arg => arg === undefined ? 'undefined' : arg);\n let args = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, functionArgs);\n args = `${args.slice(0, 100)}${args.length > 100 ? '...' : ''}`;\n return `gl.${functionName}(${args})`;\n}\n\nfunction onGLError(props: DebugContextProps, err, functionName: string, args: any[]): void {\n // Cover bug in webgl-debug-tools\n args = Array.from(args).map(arg => arg === undefined ? 'undefined' : arg);\n const errorMessage = globalThis.WebGLDebugUtils.glEnumToString(err);\n const functionArgs = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, args);\n const glName = props.webgl2 ? 'gl2' : 'gl1';\n const message = `${errorMessage} in ${glName}.${functionName}(${functionArgs})`;\n log.error(message)();\n debugger; // eslint-disable-line\n if (props.throwOnError) {\n throw new Error(message);\n }\n}\n\n// Don't generate function string until it is needed\nfunction onValidateGLFunc(props: DebugContextProps, functionName: string, functionArgs: any[]): void {\n let functionString: string;\n if (log.level >= 1) {\n functionString = getFunctionString(functionName, functionArgs);\n log.log(1, functionString)();\n }\n\n if (props.break) {\n functionString = functionString || getFunctionString(functionName, functionArgs);\n const isBreakpoint =\n props.break && props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);\n if (isBreakpoint) {\n debugger; // eslint-disable-line\n }\n }\n\n for (const arg of functionArgs) {\n if (arg === undefined) {\n functionString = functionString || getFunctionString(functionName, functionArgs);\n if (props.throwOnError) {\n throw new Error(`Undefined argument: ${functionString}`);\n } else {\n log.error(`Undefined argument: ${functionString}`)();\n debugger; // eslint-disable-line\n }\n }\n }\n}\n"],"file":"webgl-developer-tools.js"}
@@ -1,8 +1,8 @@
1
- import { assert } from '@luma.gl/api';
2
1
  import { GL_PARAMETER_DEFAULTS, GL_PARAMETER_SETTERS, GL_COMPOSITE_PARAMETER_SETTERS, GL_PARAMETER_GETTERS } from './webgl-parameter-tables';
3
- import { isWebGL } from '../context/webgl-checks';
4
- export function setParameters(gl, parameters) {
5
- assert(isWebGL(gl), 'setParameters requires a WebGL context');
2
+ import WebGLDevice from '../../adapter/webgl-device';
3
+ export function setParameters(device, parameters) {
4
+ const webglDevice = WebGLDevice.attach(device);
5
+ const gl = webglDevice.gl;
6
6
 
7
7
  if (isObjectEmpty(parameters)) {
8
8
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/context/parameters/unified-parameter-api.ts"],"names":["assert","GL_PARAMETER_DEFAULTS","GL_PARAMETER_SETTERS","GL_COMPOSITE_PARAMETER_SETTERS","GL_PARAMETER_GETTERS","isWebGL","setParameters","gl","parameters","isObjectEmpty","compositeSetters","key","glConstant","Number","setter","cache","state","compositeSetter","getParameters","getter","getParameter","parameterKeys","Array","isArray","Object","keys","resetParameters","object"],"mappings":"AAGA,SAAQA,MAAR,QAAqB,cAArB;AAEA,SACEC,qBADF,EAEEC,oBAFF,EAGEC,8BAHF,EAIEC,oBAJF,QAKO,0BALP;AAOA,SAAQC,OAAR,QAAsB,yBAAtB;AAUA,OAAO,SAASC,aAAT,CAAuBC,EAAvB,EAAkDC,UAAlD,EAAkF;AACvFR,EAAAA,MAAM,CAACK,OAAO,CAACE,EAAD,CAAR,EAAc,wCAAd,CAAN;;AAEA,MAAIE,aAAa,CAACD,UAAD,CAAjB,EAA+B;AAC7B;AACD;;AAED,QAAME,gBAAgB,GAAG,EAAzB;;AAIA,OAAK,MAAMC,GAAX,IAAkBH,UAAlB,EAA8B;AAC5B,UAAMI,UAAU,GAAGC,MAAM,CAACF,GAAD,CAAzB;AACA,UAAMG,MAAM,GAAGZ,oBAAoB,CAACS,GAAD,CAAnC;;AACA,QAAIG,MAAJ,EAAY;AAEV,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9BJ,QAAAA,gBAAgB,CAACI,MAAD,CAAhB,GAA2B,IAA3B;AACD,OAFD,MAEO;AAKLA,QAAAA,MAAM,CAACP,EAAD,EAAKC,UAAU,CAACG,GAAD,CAAf,EAAsBC,UAAtB,CAAN;AACD;AACF;AACF;;AAUD,QAAMG,KAAK,GAAGR,EAAE,CAACS,KAAH,IAAYT,EAAE,CAACS,KAAH,CAASD,KAAnC;;AACA,MAAIA,KAAJ,EAAW;AACT,SAAK,MAAMJ,GAAX,IAAkBD,gBAAlB,EAAoC;AAElC,YAAMO,eAAe,GAAGd,8BAA8B,CAACQ,GAAD,CAAtD;AAGAM,MAAAA,eAAe,CAACV,EAAD,EAAKC,UAAL,EAAiBO,KAAjB,CAAf;AACD;AACF;AAGF;AAiBD,OAAO,SAASG,aAAT,CAAuBX,EAAvB,EAA2BC,UAA3B,EAAuC;AAE5CA,EAAAA,UAAU,GAAGA,UAAU,IAAIP,qBAA3B;;AAGA,MAAI,OAAOO,UAAP,KAAsB,QAA1B,EAAoC;AAElC,UAAMG,GAAG,GAAGH,UAAZ;AACA,UAAMW,MAAM,GAAGf,oBAAoB,CAACO,GAAD,CAAnC;AACA,WAAOQ,MAAM,GAAGA,MAAM,CAACZ,EAAD,EAAKI,GAAL,CAAT,GAAqBJ,EAAE,CAACa,YAAH,CAAgBT,GAAhB,CAAlC;AACD;;AAED,QAAMU,aAAa,GAAGC,KAAK,CAACC,OAAN,CAAcf,UAAd,IAA4BA,UAA5B,GAAyCgB,MAAM,CAACC,IAAP,CAAYjB,UAAZ,CAA/D;AAEA,QAAMQ,KAAK,GAAG,EAAd;;AACA,OAAK,MAAML,GAAX,IAAkBU,aAAlB,EAAiC;AAC/B,UAAMF,MAAM,GAAGf,oBAAoB,CAACO,GAAD,CAAnC;AACAK,IAAAA,KAAK,CAACL,GAAD,CAAL,GAAaQ,MAAM,GAAGA,MAAM,CAACZ,EAAD,EAAKM,MAAM,CAACF,GAAD,CAAX,CAAT,GAA6BJ,EAAE,CAACa,YAAH,CAAgBP,MAAM,CAACF,GAAD,CAAtB,CAAhD;AACD;;AACD,SAAOK,KAAP;AACD;AAQD,OAAO,SAASU,eAAT,CAAyBnB,EAAzB,EAA0D;AAC/DD,EAAAA,aAAa,CAACC,EAAD,EAAKN,qBAAL,CAAb;AACD;;AAKD,SAASQ,aAAT,CAAuBkB,MAAvB,EAA+B;AAC7B,OAAK,MAAMhB,GAAX,IAAkBgB,MAAlB,EAA0B;AACxB,WAAO,KAAP;AACD;;AACD,SAAO,IAAP;AACD","sourcesContent":["// Provides a unified API for getting and setting any WebGL parameter\n// Also knows default values of all parameters, enabling fast cache initialization\n// Provides base functionality for the state caching.\nimport {assert} from '@luma.gl/api';\nimport type {GLParameters} from './webgl-parameters';\nimport {\n GL_PARAMETER_DEFAULTS,\n GL_PARAMETER_SETTERS,\n GL_COMPOSITE_PARAMETER_SETTERS,\n GL_PARAMETER_GETTERS\n} from './webgl-parameter-tables';\n\nimport {isWebGL} from '../context/webgl-checks';\n\nexport type {GLParameters};\n\n/**\n * Sets any GL parameter regardless of function (gl.blendMode, ...)\n *\n * @note requires a `cache` object to be set on the context (gl.state.cache)\n * This object is used to fill in any missing values for composite setter functions\n */\nexport function setParameters(gl: WebGLRenderingContext, parameters: GLParameters): void {\n assert(isWebGL(gl), 'setParameters requires a WebGL context');\n\n if (isObjectEmpty(parameters)) {\n return;\n }\n\n const compositeSetters = {};\n\n // HANDLE PRIMITIVE SETTERS (and make note of any composite setters)\n\n for (const key in parameters) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n if (setter) {\n // Composite setters should only be called once, so save them\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n // if (gl[glConstant] !== undefined) {\n // TODO - added above check since this is being called on WebGL2 parameters in WebGL1...\n // TODO - deep equal on values? only call setter if value has changed?\n // NOTE - the setter will automatically update this.state\n setter(gl, parameters[key], glConstant);\n }\n }\n }\n\n // HANDLE COMPOSITE SETTERS\n\n // NOTE: any non-provided values needed by composite setters are filled in from state cache\n // The cache parameter is automatically retrieved from the context\n // This depends on `trackContextState`, which is technically a \"circular\" dependency.\n // But it is too inconvenient to always require a cache parameter here.\n // This is the ONLY external dependency in this module/\n // @ts-expect-error\n const cache = gl.state && gl.state.cache;\n if (cache) {\n for (const key in compositeSetters) {\n // TODO - avoid calling composite setters if values have not changed.\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n // Note - if `trackContextState` has been called,\n // the setter will automatically update this.state.cache\n compositeSetter(gl, parameters, cache);\n }\n }\n\n // Add a log for the else case?\n}\n\n/**\n * Reads the entire WebGL state from a context\n * @returns - a newly created map, with values keyed by GL parameters\n *\n * @note Copies the state from a context (gl.getParameter should not be overriden)\n * Reads the entire WebGL state from a context\n *\n * @note This can generates a huge amount of synchronous driver roundtrips and should be\n * considered a very slow operation, to be used only if/when a context already manipulated\n * by external code needs to be synchronized for the first time\n */\nexport function getParameters(gl: WebGLRenderingContext, parameters?: Record<keyof GLParameters, any>): GLParameters;\nexport function getParameters(gl: WebGLRenderingContext, parameters?: (keyof GLParameters)[]): GLParameters;\nexport function getParameters(gl: WebGLRenderingContext, parameters: keyof GLParameters): GLParameters;\n\nexport function getParameters(gl, parameters) {\n // default to querying all parameters\n parameters = parameters || GL_PARAMETER_DEFAULTS;\n // support both arrays of parameters and objects (keys represent parameters)\n\n if (typeof parameters === 'number') {\n // single GL enum\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n\n const state = {};\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\n\n/**\n * Reset all parameters to a (almost) pure context state\n * @note viewport and scissor will be set to the values in GL_PARAMETER_DEFAULTS,\n * NOT the canvas size dimensions, so they will have to be properly set after\n * calling this function.\n */\nexport function resetParameters(gl: WebGLRenderingContext): void {\n setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\n\n// Helpers\n\n// Returns true if given object is empty, false otherwise.\nfunction isObjectEmpty(object) {\n for (const key in object) {\n return false;\n }\n return true;\n}\n"],"file":"unified-parameter-api.js"}
1
+ {"version":3,"sources":["../../../../src/context/parameters/unified-parameter-api.ts"],"names":["GL_PARAMETER_DEFAULTS","GL_PARAMETER_SETTERS","GL_COMPOSITE_PARAMETER_SETTERS","GL_PARAMETER_GETTERS","WebGLDevice","setParameters","device","parameters","webglDevice","attach","gl","isObjectEmpty","compositeSetters","key","glConstant","Number","setter","cache","state","compositeSetter","getParameters","getter","getParameter","parameterKeys","Array","isArray","Object","keys","resetParameters","object"],"mappings":"AAKA,SACEA,qBADF,EAEEC,oBAFF,EAGEC,8BAHF,EAIEC,oBAJF,QAKO,0BALP;AAQA,OAAOC,WAAP,MAAwB,4BAAxB;AAUA,OAAO,SAASC,aAAT,CAAuBC,MAAvB,EAA+DC,UAA/D,EAA+F;AACpG,QAAMC,WAAW,GAAGJ,WAAW,CAACK,MAAZ,CAAmBH,MAAnB,CAApB;AACA,QAAMI,EAAE,GAAGF,WAAW,CAACE,EAAvB;;AAEA,MAAIC,aAAa,CAACJ,UAAD,CAAjB,EAA+B;AAC7B;AACD;;AAED,QAAMK,gBAAgB,GAAG,EAAzB;;AAIA,OAAK,MAAMC,GAAX,IAAkBN,UAAlB,EAA8B;AAC5B,UAAMO,UAAU,GAAGC,MAAM,CAACF,GAAD,CAAzB;AACA,UAAMG,MAAM,GAAGf,oBAAoB,CAACY,GAAD,CAAnC;;AACA,QAAIG,MAAJ,EAAY;AAEV,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9BJ,QAAAA,gBAAgB,CAACI,MAAD,CAAhB,GAA2B,IAA3B;AACD,OAFD,MAEO;AAKLA,QAAAA,MAAM,CAACN,EAAD,EAAKH,UAAU,CAACM,GAAD,CAAf,EAAsBC,UAAtB,CAAN;AACD;AACF;AACF;;AAUD,QAAMG,KAAK,GAAGP,EAAE,CAACQ,KAAH,IAAYR,EAAE,CAACQ,KAAH,CAASD,KAAnC;;AACA,MAAIA,KAAJ,EAAW;AACT,SAAK,MAAMJ,GAAX,IAAkBD,gBAAlB,EAAoC;AAElC,YAAMO,eAAe,GAAGjB,8BAA8B,CAACW,GAAD,CAAtD;AAGAM,MAAAA,eAAe,CAACT,EAAD,EAAKH,UAAL,EAAiBU,KAAjB,CAAf;AACD;AACF;AAGF;AAiBD,OAAO,SAASG,aAAT,CAAuBV,EAAvB,EAA2BH,UAA3B,EAAuC;AAE5CA,EAAAA,UAAU,GAAGA,UAAU,IAAIP,qBAA3B;;AAGA,MAAI,OAAOO,UAAP,KAAsB,QAA1B,EAAoC;AAElC,UAAMM,GAAG,GAAGN,UAAZ;AACA,UAAMc,MAAM,GAAGlB,oBAAoB,CAACU,GAAD,CAAnC;AACA,WAAOQ,MAAM,GAAGA,MAAM,CAACX,EAAD,EAAKG,GAAL,CAAT,GAAqBH,EAAE,CAACY,YAAH,CAAgBT,GAAhB,CAAlC;AACD;;AAED,QAAMU,aAAa,GAAGC,KAAK,CAACC,OAAN,CAAclB,UAAd,IAA4BA,UAA5B,GAAyCmB,MAAM,CAACC,IAAP,CAAYpB,UAAZ,CAA/D;AAEA,QAAMW,KAAK,GAAG,EAAd;;AACA,OAAK,MAAML,GAAX,IAAkBU,aAAlB,EAAiC;AAC/B,UAAMF,MAAM,GAAGlB,oBAAoB,CAACU,GAAD,CAAnC;AACAK,IAAAA,KAAK,CAACL,GAAD,CAAL,GAAaQ,MAAM,GAAGA,MAAM,CAACX,EAAD,EAAKK,MAAM,CAACF,GAAD,CAAX,CAAT,GAA6BH,EAAE,CAACY,YAAH,CAAgBP,MAAM,CAACF,GAAD,CAAtB,CAAhD;AACD;;AACD,SAAOK,KAAP;AACD;AAQD,OAAO,SAASU,eAAT,CAAyBlB,EAAzB,EAA0D;AAC/DL,EAAAA,aAAa,CAACK,EAAD,EAAKV,qBAAL,CAAb;AACD;;AAKD,SAASW,aAAT,CAAuBkB,MAAvB,EAA+B;AAC7B,OAAK,MAAMhB,GAAX,IAAkBgB,MAAlB,EAA0B;AACxB,WAAO,KAAP;AACD;;AACD,SAAO,IAAP;AACD","sourcesContent":["// Provides a unified API for getting and setting any WebGL parameter\n// Also knows default values of all parameters, enabling fast cache initialization\n// Provides base functionality for the state caching.\nimport {Device} from '@luma.gl/api';\nimport type {GLParameters} from '../../types/webgl';\nimport {\n GL_PARAMETER_DEFAULTS,\n GL_PARAMETER_SETTERS,\n GL_COMPOSITE_PARAMETER_SETTERS,\n GL_PARAMETER_GETTERS\n} from './webgl-parameter-tables';\n\nimport {isWebGL} from '../context/webgl-checks';\nimport WebGLDevice from '../../adapter/webgl-device';\n\nexport type {GLParameters};\n\n/**\n * Sets any GL parameter regardless of function (gl.blendMode, ...)\n *\n * @note requires a `cache` object to be set on the context (gl.state.cache)\n * This object is used to fill in any missing values for composite setter functions\n */\nexport function setParameters(device: Device | WebGLRenderingContext, parameters: GLParameters): void {\n const webglDevice = WebGLDevice.attach(device);\n const gl = webglDevice.gl;\n\n if (isObjectEmpty(parameters)) {\n return;\n }\n\n const compositeSetters = {};\n\n // HANDLE PRIMITIVE SETTERS (and make note of any composite setters)\n\n for (const key in parameters) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n if (setter) {\n // Composite setters should only be called once, so save them\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n // if (gl[glConstant] !== undefined) {\n // TODO - added above check since this is being called on WebGL2 parameters in WebGL1...\n // TODO - deep equal on values? only call setter if value has changed?\n // NOTE - the setter will automatically update this.state\n setter(gl, parameters[key], glConstant);\n }\n }\n }\n\n // HANDLE COMPOSITE SETTERS\n\n // NOTE: any non-provided values needed by composite setters are filled in from state cache\n // The cache parameter is automatically retrieved from the context\n // This depends on `trackContextState`, which is technically a \"circular\" dependency.\n // But it is too inconvenient to always require a cache parameter here.\n // This is the ONLY external dependency in this module/\n // @ts-expect-error\n const cache = gl.state && gl.state.cache;\n if (cache) {\n for (const key in compositeSetters) {\n // TODO - avoid calling composite setters if values have not changed.\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n // Note - if `trackContextState` has been called,\n // the setter will automatically update this.state.cache\n compositeSetter(gl, parameters, cache);\n }\n }\n\n // Add a log for the else case?\n}\n\n/**\n * Reads the entire WebGL state from a context\n * @returns - a newly created map, with values keyed by GL parameters\n *\n * @note Copies the state from a context (gl.getParameter should not be overriden)\n * Reads the entire WebGL state from a context\n *\n * @note This can generates a huge amount of synchronous driver roundtrips and should be\n * considered a very slow operation, to be used only if/when a context already manipulated\n * by external code needs to be synchronized for the first time\n */\nexport function getParameters(gl: WebGLRenderingContext, parameters?: Record<keyof GLParameters, any>): GLParameters;\nexport function getParameters(gl: WebGLRenderingContext, parameters?: (keyof GLParameters)[]): GLParameters;\nexport function getParameters(gl: WebGLRenderingContext, parameters: keyof GLParameters): GLParameters;\n\nexport function getParameters(gl, parameters) {\n // default to querying all parameters\n parameters = parameters || GL_PARAMETER_DEFAULTS;\n // support both arrays of parameters and objects (keys represent parameters)\n\n if (typeof parameters === 'number') {\n // single GL enum\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n\n const state = {};\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\n\n/**\n * Reset all parameters to a (almost) pure context state\n * @note viewport and scissor will be set to the values in GL_PARAMETER_DEFAULTS,\n * NOT the canvas size dimensions, so they will have to be properly set after\n * calling this function.\n */\nexport function resetParameters(gl: WebGLRenderingContext): void {\n setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\n\n// Helpers\n\n// Returns true if given object is empty, false otherwise.\nfunction isObjectEmpty(object) {\n for (const key in object) {\n return false;\n }\n return true;\n}\n"],"file":"unified-parameter-api.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/context/parameters/webgl-parameter-tables.ts"],"names":["GL","isWebGL2","GL_PARAMETER_DEFAULTS","BLEND","BLEND_COLOR","Float32Array","BLEND_EQUATION_RGB","FUNC_ADD","BLEND_EQUATION_ALPHA","BLEND_SRC_RGB","ONE","BLEND_DST_RGB","ZERO","BLEND_SRC_ALPHA","BLEND_DST_ALPHA","COLOR_CLEAR_VALUE","COLOR_WRITEMASK","CULL_FACE","CULL_FACE_MODE","BACK","DEPTH_TEST","DEPTH_CLEAR_VALUE","DEPTH_FUNC","LESS","DEPTH_RANGE","DEPTH_WRITEMASK","DITHER","CURRENT_PROGRAM","FRAMEBUFFER_BINDING","RENDERBUFFER_BINDING","VERTEX_ARRAY_BINDING","ARRAY_BUFFER_BINDING","FRONT_FACE","CCW","GENERATE_MIPMAP_HINT","DONT_CARE","LINE_WIDTH","POLYGON_OFFSET_FILL","POLYGON_OFFSET_FACTOR","POLYGON_OFFSET_UNITS","SAMPLE_ALPHA_TO_COVERAGE","SAMPLE_COVERAGE","SAMPLE_COVERAGE_VALUE","SAMPLE_COVERAGE_INVERT","SCISSOR_TEST","SCISSOR_BOX","Int32Array","STENCIL_TEST","STENCIL_CLEAR_VALUE","STENCIL_WRITEMASK","STENCIL_BACK_WRITEMASK","STENCIL_FUNC","ALWAYS","STENCIL_REF","STENCIL_VALUE_MASK","STENCIL_BACK_FUNC","STENCIL_BACK_REF","STENCIL_BACK_VALUE_MASK","STENCIL_FAIL","KEEP","STENCIL_PASS_DEPTH_FAIL","STENCIL_PASS_DEPTH_PASS","STENCIL_BACK_FAIL","STENCIL_BACK_PASS_DEPTH_FAIL","STENCIL_BACK_PASS_DEPTH_PASS","VIEWPORT","PACK_ALIGNMENT","UNPACK_ALIGNMENT","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_COLORSPACE_CONVERSION_WEBGL","BROWSER_DEFAULT_WEBGL","TRANSFORM_FEEDBACK_BINDING","COPY_READ_BUFFER_BINDING","COPY_WRITE_BUFFER_BINDING","PIXEL_PACK_BUFFER_BINDING","PIXEL_UNPACK_BUFFER_BINDING","FRAGMENT_SHADER_DERIVATIVE_HINT","READ_FRAMEBUFFER_BINDING","RASTERIZER_DISCARD","PACK_ROW_LENGTH","PACK_SKIP_PIXELS","PACK_SKIP_ROWS","UNPACK_ROW_LENGTH","UNPACK_IMAGE_HEIGHT","UNPACK_SKIP_PIXELS","UNPACK_SKIP_ROWS","UNPACK_SKIP_IMAGES","enable","gl","value","key","disable","hint","pixelStorei","bindFramebuffer","target","DRAW_FRAMEBUFFER","FRAMEBUFFER","READ_FRAMEBUFFER","bindBuffer","ARRAY_BUFFER","COPY_READ_BUFFER","COPY_WRITE_BUFFER","PIXEL_PACK_BUFFER","PIXEL_UNPACK_BUFFER","isArray","array","Array","ArrayBuffer","isView","GL_PARAMETER_SETTERS","blendColor","clearColor","colorMask","cullFace","clearDepth","depthFunc","depthRange","depthMask","useProgram","bindRenderbuffer","RENDERBUFFER","bindTransformFeedback","TRANSFORM_FEEDBACK","bindVertexArray","frontFace","lineWidth","scissor","clearStencil","stencilMaskSeparate","FRONT","viewport","framebuffer","handle","blend","blendEquation","args","blendEquationSeparate","blendFunc","length","blendFuncSeparate","cull","depthTest","dither","derivativeHint","mipmapHint","polygonOffsetFill","polygonOffset","sampleCoverage","scissorTest","stencilTest","stencilMask","mask","backMask","stencilFunc","func","ref","backFunc","backRef","stencilFuncSeparate","stencilOp","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","getValue","glEnum","values","cache","undefined","GL_COMPOSITE_PARAMETER_SETTERS","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","capability","pname","DRAW_FRAMEBUFFER_BINDING","buffer","valueChanged","r","g","b","a","mode","modeRGB","modeAlpha","src","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","depth","s","zNear","zFar","face","width","factor","units","invert","x","y","height","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","NON_CACHE_PARAMETERS","Set","ACTIVE_TEXTURE","TRANSFORM_FEEDBACK_ACTIVE","TRANSFORM_FEEDBACK_PAUSED","TRANSFORM_FEEDBACK_BUFFER_BINDING","UNIFORM_BUFFER_BINDING","ELEMENT_ARRAY_BUFFER_BINDING","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","READ_BUFFER","DRAW_BUFFER0","DRAW_BUFFER1","DRAW_BUFFER2","DRAW_BUFFER3","DRAW_BUFFER4","DRAW_BUFFER5","DRAW_BUFFER6","DRAW_BUFFER7","DRAW_BUFFER8","DRAW_BUFFER9","DRAW_BUFFER10","DRAW_BUFFER11","DRAW_BUFFER12","DRAW_BUFFER13","DRAW_BUFFER14","DRAW_BUFFER15","SAMPLER_BINDING","TEXTURE_BINDING_2D","TEXTURE_BINDING_2D_ARRAY","TEXTURE_BINDING_3D","TEXTURE_BINDING_CUBE_MAP"],"mappings":"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","sourcesContent":["// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\nimport {GLParameters} from './webgl-parameters';\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS: GLParameters = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n [GL.CURRENT_PROGRAM]: null,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.RENDERBUFFER_BINDING]: null,\n [GL.VERTEX_ARRAY_BINDING]: null,\n [GL.ARRAY_BUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.TRANSFORM_FEEDBACK_BINDING]: null,\n [GL.COPY_READ_BUFFER_BINDING]: null,\n [GL.COPY_WRITE_BUFFER_BINDING]: null,\n [GL.PIXEL_PACK_BUFFER_BINDING]: null,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));\nconst hint = (gl, value, key) => gl.hint(key, value);\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst bindFramebuffer = (gl, value, key) => {\n let target;\n if (key === GL.FRAMEBUFFER_BINDING) {\n target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n } else {\n // GL.READ_FRAMEBUFFER_BINDING\n target = GL.READ_FRAMEBUFFER;\n }\n return gl.bindFramebuffer(target, value);\n};\n\nconst bindBuffer = (gl, value, key) => {\n const target = ({\n [GL.ARRAY_BUFFER_BINDING]: [GL.ARRAY_BUFFER],\n [GL.COPY_READ_BUFFER_BINDING]: [GL.COPY_READ_BUFFER],\n [GL.COPY_WRITE_BUFFER_BINDING]: [GL.COPY_WRITE_BUFFER],\n [GL.PIXEL_PACK_BUFFER_BINDING]: [GL.PIXEL_PACK_BUFFER],\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: [GL.PIXEL_UNPACK_BUFFER]\n })[key];\n\n gl.bindBuffer(target, value);\n};\n\n// Utility\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n\n [GL.CURRENT_PROGRAM]: (gl, value) => gl.useProgram(value),\n [GL.RENDERBUFFER_BINDING]: (gl, value) => gl.bindRenderbuffer(GL.RENDERBUFFER, value),\n [GL.TRANSFORM_FEEDBACK_BINDING]: (gl, value) => gl.bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),\n [GL.VERTEX_ARRAY_BINDING]: (gl, value) => gl.bindVertexArray(value),\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,\n\n // Buffers\n [GL.ARRAY_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,\n\n [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n\n colorMask: (gl, value) => gl.colorMask(...value),\n\n cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),\n cullFace: (gl, value) => gl.cullFace(value),\n\n depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n\n dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),\n\n derivativeHint: (gl, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl, value) => gl.frontFace(value),\n\n mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n\n scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),\n scissor: (gl, value) => gl.scissor(...value),\n\n stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update, capability) =>\n update({\n [capability]: true\n }),\n disable: (update, capability) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update, pname, value) =>\n update({\n [pname]: value\n }),\n hint: (update, pname, hint) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n useProgram: (update, value) => update({\n [GL.CURRENT_PROGRAM]: value,\n }),\n bindRenderbuffer: (update, target, value) => update({\n [GL.RENDERBUFFER_BINDING]: value\n }),\n bindTransformFeedback: (update, target, value) => update({\n [GL.TRANSFORM_FEEDBACK_BINDING]: value\n }),\n bindVertexArray: (update, value) => update({\n [GL.VERTEX_ARRAY_BINDING]: value\n }),\n\n bindFramebuffer: (update, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n bindBuffer: (update, target, buffer) => {\n const pname = ({\n [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],\n [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],\n [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],\n [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],\n [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]\n })[target];\n\n if (pname) {\n return update({[pname]: buffer});\n }\n // targets that should not be cached\n return {valueChanged: true};\n },\n\n blendColor: (update, r, g, b, a) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update, r, g, b, a) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update, depth) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update, s) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update, r, g, b, a) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update, zNear, zFar) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update, mask) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n\nexport const NON_CACHE_PARAMETERS = new Set([\n // setter not intercepted\n GL.ACTIVE_TEXTURE,\n GL.TRANSFORM_FEEDBACK_ACTIVE,\n GL.TRANSFORM_FEEDBACK_PAUSED,\n\n // setters bindBufferRange/bindBufferBase cannot be pruned based on cache\n GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,\n GL.UNIFORM_BUFFER_BINDING,\n\n // states depending on VERTEX_ARRAY_BINDING\n GL.ELEMENT_ARRAY_BUFFER_BINDING,\n // states depending on READ_FRAMEBUFFER_BINDING\n GL.IMPLEMENTATION_COLOR_READ_FORMAT,\n GL.IMPLEMENTATION_COLOR_READ_TYPE,\n // states depending on FRAMEBUFFER_BINDING\n GL.READ_BUFFER,\n GL.DRAW_BUFFER0,\n GL.DRAW_BUFFER1,\n GL.DRAW_BUFFER2,\n GL.DRAW_BUFFER3,\n GL.DRAW_BUFFER4,\n GL.DRAW_BUFFER5,\n GL.DRAW_BUFFER6,\n GL.DRAW_BUFFER7,\n GL.DRAW_BUFFER8,\n GL.DRAW_BUFFER9,\n GL.DRAW_BUFFER10,\n GL.DRAW_BUFFER11,\n GL.DRAW_BUFFER12,\n GL.DRAW_BUFFER13,\n GL.DRAW_BUFFER14,\n GL.DRAW_BUFFER15,\n // states depending on ACTIVE_TEXTURE\n GL.SAMPLER_BINDING,\n GL.TEXTURE_BINDING_2D,\n GL.TEXTURE_BINDING_2D_ARRAY,\n GL.TEXTURE_BINDING_3D,\n GL.TEXTURE_BINDING_CUBE_MAP\n]);\n"],"file":"webgl-parameter-tables.js"}
1
+ {"version":3,"sources":["../../../../src/context/parameters/webgl-parameter-tables.ts"],"names":["GL","isWebGL2","GL_PARAMETER_DEFAULTS","BLEND","BLEND_COLOR","Float32Array","BLEND_EQUATION_RGB","FUNC_ADD","BLEND_EQUATION_ALPHA","BLEND_SRC_RGB","ONE","BLEND_DST_RGB","ZERO","BLEND_SRC_ALPHA","BLEND_DST_ALPHA","COLOR_CLEAR_VALUE","COLOR_WRITEMASK","CULL_FACE","CULL_FACE_MODE","BACK","DEPTH_TEST","DEPTH_CLEAR_VALUE","DEPTH_FUNC","LESS","DEPTH_RANGE","DEPTH_WRITEMASK","DITHER","CURRENT_PROGRAM","FRAMEBUFFER_BINDING","RENDERBUFFER_BINDING","VERTEX_ARRAY_BINDING","ARRAY_BUFFER_BINDING","FRONT_FACE","CCW","GENERATE_MIPMAP_HINT","DONT_CARE","LINE_WIDTH","POLYGON_OFFSET_FILL","POLYGON_OFFSET_FACTOR","POLYGON_OFFSET_UNITS","SAMPLE_ALPHA_TO_COVERAGE","SAMPLE_COVERAGE","SAMPLE_COVERAGE_VALUE","SAMPLE_COVERAGE_INVERT","SCISSOR_TEST","SCISSOR_BOX","Int32Array","STENCIL_TEST","STENCIL_CLEAR_VALUE","STENCIL_WRITEMASK","STENCIL_BACK_WRITEMASK","STENCIL_FUNC","ALWAYS","STENCIL_REF","STENCIL_VALUE_MASK","STENCIL_BACK_FUNC","STENCIL_BACK_REF","STENCIL_BACK_VALUE_MASK","STENCIL_FAIL","KEEP","STENCIL_PASS_DEPTH_FAIL","STENCIL_PASS_DEPTH_PASS","STENCIL_BACK_FAIL","STENCIL_BACK_PASS_DEPTH_FAIL","STENCIL_BACK_PASS_DEPTH_PASS","VIEWPORT","PACK_ALIGNMENT","UNPACK_ALIGNMENT","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_COLORSPACE_CONVERSION_WEBGL","BROWSER_DEFAULT_WEBGL","TRANSFORM_FEEDBACK_BINDING","COPY_READ_BUFFER_BINDING","COPY_WRITE_BUFFER_BINDING","PIXEL_PACK_BUFFER_BINDING","PIXEL_UNPACK_BUFFER_BINDING","FRAGMENT_SHADER_DERIVATIVE_HINT","READ_FRAMEBUFFER_BINDING","RASTERIZER_DISCARD","PACK_ROW_LENGTH","PACK_SKIP_PIXELS","PACK_SKIP_ROWS","UNPACK_ROW_LENGTH","UNPACK_IMAGE_HEIGHT","UNPACK_SKIP_PIXELS","UNPACK_SKIP_ROWS","UNPACK_SKIP_IMAGES","enable","gl","value","key","disable","hint","pixelStorei","bindFramebuffer","target","DRAW_FRAMEBUFFER","FRAMEBUFFER","READ_FRAMEBUFFER","bindBuffer","ARRAY_BUFFER","COPY_READ_BUFFER","COPY_WRITE_BUFFER","PIXEL_PACK_BUFFER","PIXEL_UNPACK_BUFFER","isArray","array","Array","ArrayBuffer","isView","GL_PARAMETER_SETTERS","blendColor","clearColor","colorMask","cullFace","clearDepth","depthFunc","depthRange","depthMask","useProgram","bindRenderbuffer","RENDERBUFFER","bindTransformFeedback","TRANSFORM_FEEDBACK","bindVertexArray","frontFace","lineWidth","scissor","clearStencil","stencilMaskSeparate","FRONT","viewport","framebuffer","handle","blend","blendEquation","args","blendEquationSeparate","blendFunc","length","blendFuncSeparate","cull","depthTest","dither","derivativeHint","mipmapHint","polygonOffsetFill","polygonOffset","sampleCoverage","scissorTest","stencilTest","stencilMask","mask","backMask","stencilFunc","func","ref","backFunc","backRef","stencilFuncSeparate","stencilOp","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","getValue","glEnum","values","cache","undefined","GL_COMPOSITE_PARAMETER_SETTERS","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","capability","pname","DRAW_FRAMEBUFFER_BINDING","buffer","valueChanged","r","g","b","a","mode","modeRGB","modeAlpha","src","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","depth","s","zNear","zFar","face","width","factor","units","invert","x","y","height","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","NON_CACHE_PARAMETERS","Set","ACTIVE_TEXTURE","TRANSFORM_FEEDBACK_ACTIVE","TRANSFORM_FEEDBACK_PAUSED","TRANSFORM_FEEDBACK_BUFFER_BINDING","UNIFORM_BUFFER_BINDING","ELEMENT_ARRAY_BUFFER_BINDING","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","READ_BUFFER","DRAW_BUFFER0","DRAW_BUFFER1","DRAW_BUFFER2","DRAW_BUFFER3","DRAW_BUFFER4","DRAW_BUFFER5","DRAW_BUFFER6","DRAW_BUFFER7","DRAW_BUFFER8","DRAW_BUFFER9","DRAW_BUFFER10","DRAW_BUFFER11","DRAW_BUFFER12","DRAW_BUFFER13","DRAW_BUFFER14","DRAW_BUFFER15","SAMPLER_BINDING","TEXTURE_BINDING_2D","TEXTURE_BINDING_2D_ARRAY","TEXTURE_BINDING_3D","TEXTURE_BINDING_CUBE_MAP"],"mappings":"AACA,OAAOA,EAAP,MAAe,oBAAf;AACA,SAAQC,QAAR,QAAuB,yBAAvB;AAMA,OAAO,MAAMC,qBAAmC,GAAG;AACjD,GAACF,EAAE,CAACG,KAAJ,GAAY,KADqC;AAEjD,GAACH,EAAE,CAACI,WAAJ,GAAkB,IAAIC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAjB,CAF+B;AAGjD,GAACL,EAAE,CAACM,kBAAJ,GAAyBN,EAAE,CAACO,QAHqB;AAIjD,GAACP,EAAE,CAACQ,oBAAJ,GAA2BR,EAAE,CAACO,QAJmB;AAKjD,GAACP,EAAE,CAACS,aAAJ,GAAoBT,EAAE,CAACU,GAL0B;AAMjD,GAACV,EAAE,CAACW,aAAJ,GAAoBX,EAAE,CAACY,IAN0B;AAOjD,GAACZ,EAAE,CAACa,eAAJ,GAAsBb,EAAE,CAACU,GAPwB;AAQjD,GAACV,EAAE,CAACc,eAAJ,GAAsBd,EAAE,CAACY,IARwB;AASjD,GAACZ,EAAE,CAACe,iBAAJ,GAAwB,IAAIV,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAjB,CATyB;AAUjD,GAACL,EAAE,CAACgB,eAAJ,GAAsB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,CAV2B;AAWjD,GAAChB,EAAE,CAACiB,SAAJ,GAAgB,KAXiC;AAYjD,GAACjB,EAAE,CAACkB,cAAJ,GAAqBlB,EAAE,CAACmB,IAZyB;AAajD,GAACnB,EAAE,CAACoB,UAAJ,GAAiB,KAbgC;AAcjD,GAACpB,EAAE,CAACqB,iBAAJ,GAAwB,CAdyB;AAejD,GAACrB,EAAE,CAACsB,UAAJ,GAAiBtB,EAAE,CAACuB,IAf6B;AAgBjD,GAACvB,EAAE,CAACwB,WAAJ,GAAkB,IAAInB,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,CAAjB,CAhB+B;AAiBjD,GAACL,EAAE,CAACyB,eAAJ,GAAsB,IAjB2B;AAkBjD,GAACzB,EAAE,CAAC0B,MAAJ,GAAa,IAlBoC;AAmBjD,GAAC1B,EAAE,CAAC2B,eAAJ,GAAsB,IAnB2B;AAqBjD,GAAC3B,EAAE,CAAC4B,mBAAJ,GAA0B,IArBuB;AAsBjD,GAAC5B,EAAE,CAAC6B,oBAAJ,GAA2B,IAtBsB;AAuBjD,GAAC7B,EAAE,CAAC8B,oBAAJ,GAA2B,IAvBsB;AAwBjD,GAAC9B,EAAE,CAAC+B,oBAAJ,GAA2B,IAxBsB;AAyBjD,GAAC/B,EAAE,CAACgC,UAAJ,GAAiBhC,EAAE,CAACiC,GAzB6B;AA0BjD,GAACjC,EAAE,CAACkC,oBAAJ,GAA2BlC,EAAE,CAACmC,SA1BmB;AA2BjD,GAACnC,EAAE,CAACoC,UAAJ,GAAiB,CA3BgC;AA4BjD,GAACpC,EAAE,CAACqC,mBAAJ,GAA0B,KA5BuB;AA6BjD,GAACrC,EAAE,CAACsC,qBAAJ,GAA4B,CA7BqB;AA8BjD,GAACtC,EAAE,CAACuC,oBAAJ,GAA2B,CA9BsB;AA+BjD,GAACvC,EAAE,CAACwC,wBAAJ,GAA+B,KA/BkB;AAgCjD,GAACxC,EAAE,CAACyC,eAAJ,GAAsB,KAhC2B;AAiCjD,GAACzC,EAAE,CAAC0C,qBAAJ,GAA4B,GAjCqB;AAkCjD,GAAC1C,EAAE,CAAC2C,sBAAJ,GAA6B,KAlCoB;AAmCjD,GAAC3C,EAAE,CAAC4C,YAAJ,GAAmB,KAnC8B;AAqCjD,GAAC5C,EAAE,CAAC6C,WAAJ,GAAkB,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,IAAP,EAAa,IAAb,CAAf,CArC+B;AAsCjD,GAAC9C,EAAE,CAAC+C,YAAJ,GAAmB,KAtC8B;AAuCjD,GAAC/C,EAAE,CAACgD,mBAAJ,GAA0B,CAvCuB;AAwCjD,GAAChD,EAAE,CAACiD,iBAAJ,GAAwB,UAxCyB;AAyCjD,GAACjD,EAAE,CAACkD,sBAAJ,GAA6B,UAzCoB;AA0CjD,GAAClD,EAAE,CAACmD,YAAJ,GAAmBnD,EAAE,CAACoD,MA1C2B;AA2CjD,GAACpD,EAAE,CAACqD,WAAJ,GAAkB,CA3C+B;AA4CjD,GAACrD,EAAE,CAACsD,kBAAJ,GAAyB,UA5CwB;AA6CjD,GAACtD,EAAE,CAACuD,iBAAJ,GAAwBvD,EAAE,CAACoD,MA7CsB;AA8CjD,GAACpD,EAAE,CAACwD,gBAAJ,GAAuB,CA9C0B;AA+CjD,GAACxD,EAAE,CAACyD,uBAAJ,GAA8B,UA/CmB;AAgDjD,GAACzD,EAAE,CAAC0D,YAAJ,GAAmB1D,EAAE,CAAC2D,IAhD2B;AAiDjD,GAAC3D,EAAE,CAAC4D,uBAAJ,GAA8B5D,EAAE,CAAC2D,IAjDgB;AAkDjD,GAAC3D,EAAE,CAAC6D,uBAAJ,GAA8B7D,EAAE,CAAC2D,IAlDgB;AAmDjD,GAAC3D,EAAE,CAAC8D,iBAAJ,GAAwB9D,EAAE,CAAC2D,IAnDsB;AAoDjD,GAAC3D,EAAE,CAAC+D,4BAAJ,GAAmC/D,EAAE,CAAC2D,IApDW;AAqDjD,GAAC3D,EAAE,CAACgE,4BAAJ,GAAmChE,EAAE,CAAC2D,IArDW;AAuDjD,GAAC3D,EAAE,CAACiE,QAAJ,GAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,IAAP,EAAa,IAAb,CAvDkC;AAyDjD,GAACjE,EAAE,CAACkE,cAAJ,GAAqB,CAzD4B;AA0DjD,GAAClE,EAAE,CAACmE,gBAAJ,GAAuB,CA1D0B;AA2DjD,GAACnE,EAAE,CAACoE,mBAAJ,GAA0B,KA3DuB;AA4DjD,GAACpE,EAAE,CAACqE,8BAAJ,GAAqC,KA5DY;AA6DjD,GAACrE,EAAE,CAACsE,kCAAJ,GAAyCtE,EAAE,CAACuE,qBA7DK;AAiEjD,GAACvE,EAAE,CAACwE,0BAAJ,GAAiC,IAjEgB;AAkEjD,GAACxE,EAAE,CAACyE,wBAAJ,GAA+B,IAlEkB;AAmEjD,GAACzE,EAAE,CAAC0E,yBAAJ,GAAgC,IAnEiB;AAoEjD,GAAC1E,EAAE,CAAC2E,yBAAJ,GAAgC,IApEiB;AAqEjD,GAAC3E,EAAE,CAAC4E,2BAAJ,GAAkC,IArEe;AAsEjD,GAAC5E,EAAE,CAAC6E,+BAAJ,GAAsC7E,EAAE,CAACmC,SAtEQ;AAuEjD,GAACnC,EAAE,CAAC8E,wBAAJ,GAA+B,IAvEkB;AAwEjD,GAAC9E,EAAE,CAAC+E,kBAAJ,GAAyB,KAxEwB;AAyEjD,GAAC/E,EAAE,CAACgF,eAAJ,GAAsB,CAzE2B;AA0EjD,GAAChF,EAAE,CAACiF,gBAAJ,GAAuB,CA1E0B;AA2EjD,GAACjF,EAAE,CAACkF,cAAJ,GAAqB,CA3E4B;AA4EjD,GAAClF,EAAE,CAACmF,iBAAJ,GAAwB,CA5EyB;AA6EjD,GAACnF,EAAE,CAACoF,mBAAJ,GAA0B,CA7EuB;AA8EjD,GAACpF,EAAE,CAACqF,kBAAJ,GAAyB,CA9EwB;AA+EjD,GAACrF,EAAE,CAACsF,gBAAJ,GAAuB,CA/E0B;AAgFjD,GAACtF,EAAE,CAACuF,kBAAJ,GAAyB;AAhFwB,CAA5C;;AAqFP,MAAMC,MAAM,GAAG,CAACC,EAAD,EAAKC,KAAL,EAAYC,GAAZ,KAAqBD,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUG,GAAV,CAAH,GAAoBF,EAAE,CAACG,OAAH,CAAWD,GAAX,CAA7D;;AACA,MAAME,IAAI,GAAG,CAACJ,EAAD,EAAKC,KAAL,EAAYC,GAAZ,KAAoBF,EAAE,CAACI,IAAH,CAAQF,GAAR,EAAaD,KAAb,CAAjC;;AACA,MAAMI,WAAW,GAAG,CAACL,EAAD,EAAKC,KAAL,EAAYC,GAAZ,KAAoBF,EAAE,CAACK,WAAH,CAAeH,GAAf,EAAoBD,KAApB,CAAxC;;AAEA,MAAMK,eAAe,GAAG,CAACN,EAAD,EAAKC,KAAL,EAAYC,GAAZ,KAAoB;AAC1C,MAAIK,MAAJ;;AACA,MAAIL,GAAG,KAAK3F,EAAE,CAAC4B,mBAAf,EAAoC;AAClCoE,IAAAA,MAAM,GAAG/F,QAAQ,CAACwF,EAAD,CAAR,GAAezF,EAAE,CAACiG,gBAAlB,GAAqCjG,EAAE,CAACkG,WAAjD;AACD,GAFD,MAEO;AAELF,IAAAA,MAAM,GAAGhG,EAAE,CAACmG,gBAAZ;AACD;;AACD,SAAOV,EAAE,CAACM,eAAH,CAAmBC,MAAnB,EAA2BN,KAA3B,CAAP;AACD,CATD;;AAWA,MAAMU,UAAU,GAAG,CAACX,EAAD,EAAKC,KAAL,EAAYC,GAAZ,KAAoB;AACrC,QAAMK,MAAM,GAAI;AACd,KAAChG,EAAE,CAAC+B,oBAAJ,GAA2B,CAAC/B,EAAE,CAACqG,YAAJ,CADb;AAEd,KAACrG,EAAE,CAACyE,wBAAJ,GAA+B,CAACzE,EAAE,CAACsG,gBAAJ,CAFjB;AAGd,KAACtG,EAAE,CAAC0E,yBAAJ,GAAgC,CAAC1E,EAAE,CAACuG,iBAAJ,CAHlB;AAId,KAACvG,EAAE,CAAC2E,yBAAJ,GAAgC,CAAC3E,EAAE,CAACwG,iBAAJ,CAJlB;AAKd,KAACxG,EAAE,CAAC4E,2BAAJ,GAAkC,CAAC5E,EAAE,CAACyG,mBAAJ;AALpB,GAAD,CAMZd,GANY,CAAf;AAQAF,EAAAA,EAAE,CAACW,UAAH,CAAcJ,MAAd,EAAsBN,KAAtB;AACD,CAVD;;AAaA,SAASgB,OAAT,CAAiBC,KAAjB,EAAwB;AACtB,SAAOC,KAAK,CAACF,OAAN,CAAcC,KAAd,KAAwBE,WAAW,CAACC,MAAZ,CAAmBH,KAAnB,CAA/B;AACD;;AAKD,OAAO,MAAMI,oBAAoB,GAAG;AAClC,GAAC/G,EAAE,CAACG,KAAJ,GAAYqF,MADsB;AAElC,GAACxF,EAAE,CAACI,WAAJ,GAAkB,CAACqF,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACuB,UAAH,CAAc,GAAGtB,KAAjB,CAFC;AAGlC,GAAC1F,EAAE,CAACM,kBAAJ,GAAyB,eAHS;AAIlC,GAACN,EAAE,CAACQ,oBAAJ,GAA2B,eAJO;AAKlC,GAACR,EAAE,CAACS,aAAJ,GAAoB,WALc;AAMlC,GAACT,EAAE,CAACW,aAAJ,GAAoB,WANc;AAOlC,GAACX,EAAE,CAACa,eAAJ,GAAsB,WAPY;AAQlC,GAACb,EAAE,CAACc,eAAJ,GAAsB,WARY;AASlC,GAACd,EAAE,CAACe,iBAAJ,GAAwB,CAAC0E,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACwB,UAAH,CAAc,GAAGvB,KAAjB,CATL;AAUlC,GAAC1F,EAAE,CAACgB,eAAJ,GAAsB,CAACyE,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACyB,SAAH,CAAa,GAAGxB,KAAhB,CAVH;AAWlC,GAAC1F,EAAE,CAACiB,SAAJ,GAAgBuE,MAXkB;AAYlC,GAACxF,EAAE,CAACkB,cAAJ,GAAqB,CAACuE,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC0B,QAAH,CAAYzB,KAAZ,CAZF;AAalC,GAAC1F,EAAE,CAACoB,UAAJ,GAAiBoE,MAbiB;AAclC,GAACxF,EAAE,CAACqB,iBAAJ,GAAwB,CAACoE,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC2B,UAAH,CAAc1B,KAAd,CAdL;AAelC,GAAC1F,EAAE,CAACsB,UAAJ,GAAiB,CAACmE,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC4B,SAAH,CAAa3B,KAAb,CAfE;AAgBlC,GAAC1F,EAAE,CAACwB,WAAJ,GAAkB,CAACiE,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC6B,UAAH,CAAc,GAAG5B,KAAjB,CAhBC;AAiBlC,GAAC1F,EAAE,CAACyB,eAAJ,GAAsB,CAACgE,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC8B,SAAH,CAAa7B,KAAb,CAjBH;AAkBlC,GAAC1F,EAAE,CAAC0B,MAAJ,GAAa8D,MAlBqB;AAmBlC,GAACxF,EAAE,CAAC6E,+BAAJ,GAAsCgB,IAnBJ;AAqBlC,GAAC7F,EAAE,CAAC2B,eAAJ,GAAsB,CAAC8D,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC+B,UAAH,CAAc9B,KAAd,CArBH;AAsBlC,GAAC1F,EAAE,CAAC6B,oBAAJ,GAA2B,CAAC4D,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACgC,gBAAH,CAAoBzH,EAAE,CAAC0H,YAAvB,EAAqChC,KAArC,CAtBR;AAuBlC,GAAC1F,EAAE,CAACwE,0BAAJ,GAAiC,CAACiB,EAAD,EAAKC,KAAL;AAAA;;AAAA,oCAAeD,EAAE,CAACkC,qBAAlB,0DAAe,2BAAAlC,EAAE,EAAyBzF,EAAE,CAAC4H,kBAA5B,EAAgDlC,KAAhD,CAAjB;AAAA,GAvBC;AAwBlC,GAAC1F,EAAE,CAAC8B,oBAAJ,GAA2B,CAAC2D,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACoC,eAAH,CAAmBnC,KAAnB,CAxBR;AA0BlC,GAAC1F,EAAE,CAAC4B,mBAAJ,GAA0BmE,eA1BQ;AA2BlC,GAAC/F,EAAE,CAAC8E,wBAAJ,GAA+BiB,eA3BG;AA8BlC,GAAC/F,EAAE,CAAC+B,oBAAJ,GAA2BqE,UA9BO;AA+BlC,GAACpG,EAAE,CAACyE,wBAAJ,GAA+B2B,UA/BG;AAgClC,GAACpG,EAAE,CAAC0E,yBAAJ,GAAgC0B,UAhCE;AAiClC,GAACpG,EAAE,CAAC2E,yBAAJ,GAAgCyB,UAjCE;AAkClC,GAACpG,EAAE,CAAC4E,2BAAJ,GAAkCwB,UAlCA;AAoClC,GAACpG,EAAE,CAACgC,UAAJ,GAAiB,CAACyD,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACqC,SAAH,CAAapC,KAAb,CApCE;AAqClC,GAAC1F,EAAE,CAACkC,oBAAJ,GAA2B2D,IArCO;AAsClC,GAAC7F,EAAE,CAACoC,UAAJ,GAAiB,CAACqD,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACsC,SAAH,CAAarC,KAAb,CAtCE;AAuClC,GAAC1F,EAAE,CAACqC,mBAAJ,GAA0BmD,MAvCQ;AAwClC,GAACxF,EAAE,CAACsC,qBAAJ,GAA4B,eAxCM;AAyClC,GAACtC,EAAE,CAACuC,oBAAJ,GAA2B,eAzCO;AA0ClC,GAACvC,EAAE,CAAC+E,kBAAJ,GAAyBS,MA1CS;AA2ClC,GAACxF,EAAE,CAACwC,wBAAJ,GAA+BgD,MA3CG;AA4ClC,GAACxF,EAAE,CAACyC,eAAJ,GAAsB+C,MA5CY;AA6ClC,GAACxF,EAAE,CAAC0C,qBAAJ,GAA4B,gBA7CM;AA8ClC,GAAC1C,EAAE,CAAC2C,sBAAJ,GAA6B,gBA9CK;AA+ClC,GAAC3C,EAAE,CAAC4C,YAAJ,GAAmB4C,MA/Ce;AAgDlC,GAACxF,EAAE,CAAC6C,WAAJ,GAAkB,CAAC4C,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACuC,OAAH,CAAW,GAAGtC,KAAd,CAhDC;AAiDlC,GAAC1F,EAAE,CAAC+C,YAAJ,GAAmByC,MAjDe;AAkDlC,GAACxF,EAAE,CAACgD,mBAAJ,GAA0B,CAACyC,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACwC,YAAH,CAAgBvC,KAAhB,CAlDP;AAmDlC,GAAC1F,EAAE,CAACiD,iBAAJ,GAAwB,CAACwC,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACyC,mBAAH,CAAuBlI,EAAE,CAACmI,KAA1B,EAAiCzC,KAAjC,CAnDL;AAoDlC,GAAC1F,EAAE,CAACkD,sBAAJ,GAA6B,CAACuC,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACyC,mBAAH,CAAuBlI,EAAE,CAACmB,IAA1B,EAAgCuE,KAAhC,CApDV;AAqDlC,GAAC1F,EAAE,CAACmD,YAAJ,GAAmB,kBArDe;AAsDlC,GAACnD,EAAE,CAACqD,WAAJ,GAAkB,kBAtDgB;AAuDlC,GAACrD,EAAE,CAACsD,kBAAJ,GAAyB,kBAvDS;AAwDlC,GAACtD,EAAE,CAACuD,iBAAJ,GAAwB,iBAxDU;AAyDlC,GAACvD,EAAE,CAACwD,gBAAJ,GAAuB,iBAzDW;AA0DlC,GAACxD,EAAE,CAACyD,uBAAJ,GAA8B,iBA1DI;AA2DlC,GAACzD,EAAE,CAAC0D,YAAJ,GAAmB,gBA3De;AA4DlC,GAAC1D,EAAE,CAAC4D,uBAAJ,GAA8B,gBA5DI;AA6DlC,GAAC5D,EAAE,CAAC6D,uBAAJ,GAA8B,gBA7DI;AA8DlC,GAAC7D,EAAE,CAAC8D,iBAAJ,GAAwB,eA9DU;AA+DlC,GAAC9D,EAAE,CAAC+D,4BAAJ,GAAmC,eA/DD;AAgElC,GAAC/D,EAAE,CAACgE,4BAAJ,GAAmC,eAhED;AAiElC,GAAChE,EAAE,CAACiE,QAAJ,GAAe,CAACwB,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC2C,QAAH,CAAY,GAAG1C,KAAf,CAjEI;AAoElC,GAAC1F,EAAE,CAACkE,cAAJ,GAAqB4B,WApEa;AAqElC,GAAC9F,EAAE,CAACmE,gBAAJ,GAAuB2B,WArEW;AAsElC,GAAC9F,EAAE,CAACoE,mBAAJ,GAA0B0B,WAtEQ;AAuElC,GAAC9F,EAAE,CAACqE,8BAAJ,GAAqCyB,WAvEH;AAwElC,GAAC9F,EAAE,CAACsE,kCAAJ,GAAyCwB,WAxEP;AA4ElC,GAAC9F,EAAE,CAACgF,eAAJ,GAAsBc,WA5EY;AA6ElC,GAAC9F,EAAE,CAACiF,gBAAJ,GAAuBa,WA7EW;AA8ElC,GAAC9F,EAAE,CAACkF,cAAJ,GAAqBY,WA9Ea;AA+ElC,GAAC9F,EAAE,CAACmF,iBAAJ,GAAwBW,WA/EU;AAgFlC,GAAC9F,EAAE,CAACoF,mBAAJ,GAA0BU,WAhFQ;AAiFlC,GAAC9F,EAAE,CAACqF,kBAAJ,GAAyBS,WAjFS;AAkFlC,GAAC9F,EAAE,CAACsF,gBAAJ,GAAuBQ,WAlFW;AAmFlC,GAAC9F,EAAE,CAACuF,kBAAJ,GAAyBO,WAnFS;AAsFlCuC,EAAAA,WAAW,EAAE,CAAC5C,EAAD,EAAK4C,WAAL,KAAqB;AAGhC,UAAMC,MAAM,GAAGD,WAAW,IAAI,YAAYA,WAA3B,GAAyCA,WAAW,CAACC,MAArD,GAA8DD,WAA7E;AACA,WAAO5C,EAAE,CAACM,eAAH,CAAmB/F,EAAE,CAACkG,WAAtB,EAAmCoC,MAAnC,CAAP;AACD,GA3FiC;AA4FlCC,EAAAA,KAAK,EAAE,CAAC9C,EAAD,EAAKC,KAAL,KAAgBA,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUxF,EAAE,CAACG,KAAb,CAAH,GAAyBsF,EAAE,CAACG,OAAH,CAAW5F,EAAE,CAACG,KAAd,CA5FnB;AA6FlC6G,EAAAA,UAAU,EAAE,CAACvB,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACuB,UAAH,CAAc,GAAGtB,KAAjB,CA7FO;AA8FlC8C,EAAAA,aAAa,EAAE,CAAC/C,EAAD,EAAKgD,IAAL,KAAc;AAC3BA,IAAAA,IAAI,GAAG/B,OAAO,CAAC+B,IAAD,CAAP,GAAgBA,IAAhB,GAAuB,CAACA,IAAD,EAAOA,IAAP,CAA9B;AACAhD,IAAAA,EAAE,CAACiD,qBAAH,CAAyB,GAAGD,IAA5B;AACD,GAjGiC;AAkGlCE,EAAAA,SAAS,EAAE,CAAClD,EAAD,EAAKgD,IAAL,KAAc;AACvBA,IAAAA,IAAI,GAAG/B,OAAO,CAAC+B,IAAD,CAAP,IAAiBA,IAAI,CAACG,MAAL,KAAgB,CAAjC,GAAqC,CAAC,GAAGH,IAAJ,EAAU,GAAGA,IAAb,CAArC,GAA0DA,IAAjE;AACAhD,IAAAA,EAAE,CAACoD,iBAAH,CAAqB,GAAGJ,IAAxB;AACD,GArGiC;AAuGlCxB,EAAAA,UAAU,EAAE,CAACxB,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACwB,UAAH,CAAc,GAAGvB,KAAjB,CAvGO;AAwGlC0B,EAAAA,UAAU,EAAE,CAAC3B,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC2B,UAAH,CAAc1B,KAAd,CAxGO;AAyGlCuC,EAAAA,YAAY,EAAE,CAACxC,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACwC,YAAH,CAAgBvC,KAAhB,CAzGK;AA2GlCwB,EAAAA,SAAS,EAAE,CAACzB,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACyB,SAAH,CAAa,GAAGxB,KAAhB,CA3GQ;AA6GlCoD,EAAAA,IAAI,EAAE,CAACrD,EAAD,EAAKC,KAAL,KAAgBA,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUxF,EAAE,CAACiB,SAAb,CAAH,GAA6BwE,EAAE,CAACG,OAAH,CAAW5F,EAAE,CAACiB,SAAd,CA7GtB;AA8GlCkG,EAAAA,QAAQ,EAAE,CAAC1B,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC0B,QAAH,CAAYzB,KAAZ,CA9GS;AAgHlCqD,EAAAA,SAAS,EAAE,CAACtD,EAAD,EAAKC,KAAL,KAAgBA,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUxF,EAAE,CAACoB,UAAb,CAAH,GAA8BqE,EAAE,CAACG,OAAH,CAAW5F,EAAE,CAACoB,UAAd,CAhH5B;AAiHlCiG,EAAAA,SAAS,EAAE,CAAC5B,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC4B,SAAH,CAAa3B,KAAb,CAjHQ;AAkHlC6B,EAAAA,SAAS,EAAE,CAAC9B,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC8B,SAAH,CAAa7B,KAAb,CAlHQ;AAmHlC4B,EAAAA,UAAU,EAAE,CAAC7B,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC6B,UAAH,CAAc,GAAG5B,KAAjB,CAnHO;AAqHlCsD,EAAAA,MAAM,EAAE,CAACvD,EAAD,EAAKC,KAAL,KAAgBA,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUxF,EAAE,CAAC0B,MAAb,CAAH,GAA0B+D,EAAE,CAACG,OAAH,CAAW5F,EAAE,CAAC0B,MAAd,CArHrB;AAuHlCuH,EAAAA,cAAc,EAAE,CAACxD,EAAD,EAAKC,KAAL,KAAe;AAE7BD,IAAAA,EAAE,CAACI,IAAH,CAAQ7F,EAAE,CAAC6E,+BAAX,EAA4Ca,KAA5C;AACD,GA1HiC;AA4HlCoC,EAAAA,SAAS,EAAE,CAACrC,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACqC,SAAH,CAAapC,KAAb,CA5HQ;AA8HlCwD,EAAAA,UAAU,EAAE,CAACzD,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACI,IAAH,CAAQ7F,EAAE,CAACkC,oBAAX,EAAiCwD,KAAjC,CA9HO;AAgIlCqC,EAAAA,SAAS,EAAE,CAACtC,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACsC,SAAH,CAAarC,KAAb,CAhIQ;AAkIlCyD,EAAAA,iBAAiB,EAAE,CAAC1D,EAAD,EAAKC,KAAL,KACjBA,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUxF,EAAE,CAACqC,mBAAb,CAAH,GAAuCoD,EAAE,CAACG,OAAH,CAAW5F,EAAE,CAACqC,mBAAd,CAnIZ;AAoIlC+G,EAAAA,aAAa,EAAE,CAAC3D,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC2D,aAAH,CAAiB,GAAG1D,KAApB,CApII;AAsIlC2D,EAAAA,cAAc,EAAE,CAAC5D,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC4D,cAAH,CAAkB,GAAG3D,KAArB,CAtIG;AAwIlC4D,EAAAA,WAAW,EAAE,CAAC7D,EAAD,EAAKC,KAAL,KAAgBA,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUxF,EAAE,CAAC4C,YAAb,CAAH,GAAgC6C,EAAE,CAACG,OAAH,CAAW5F,EAAE,CAAC4C,YAAd,CAxIhC;AAyIlCoF,EAAAA,OAAO,EAAE,CAACvC,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAACuC,OAAH,CAAW,GAAGtC,KAAd,CAzIU;AA2IlC6D,EAAAA,WAAW,EAAE,CAAC9D,EAAD,EAAKC,KAAL,KAAgBA,KAAK,GAAGD,EAAE,CAACD,MAAH,CAAUxF,EAAE,CAAC+C,YAAb,CAAH,GAAgC0C,EAAE,CAACG,OAAH,CAAW5F,EAAE,CAAC+C,YAAd,CA3IhC;AA4IlCyG,EAAAA,WAAW,EAAE,CAAC/D,EAAD,EAAKC,KAAL,KAAe;AAC1BA,IAAAA,KAAK,GAAGgB,OAAO,CAAChB,KAAD,CAAP,GAAiBA,KAAjB,GAAyB,CAACA,KAAD,EAAQA,KAAR,CAAjC;AACA,UAAM,CAAC+D,IAAD,EAAOC,QAAP,IAAmBhE,KAAzB;AACAD,IAAAA,EAAE,CAACyC,mBAAH,CAAuBlI,EAAE,CAACmI,KAA1B,EAAiCsB,IAAjC;AACAhE,IAAAA,EAAE,CAACyC,mBAAH,CAAuBlI,EAAE,CAACmB,IAA1B,EAAgCuI,QAAhC;AACD,GAjJiC;AAkJlCC,EAAAA,WAAW,EAAE,CAAClE,EAAD,EAAKgD,IAAL,KAAc;AACzBA,IAAAA,IAAI,GAAG/B,OAAO,CAAC+B,IAAD,CAAP,IAAiBA,IAAI,CAACG,MAAL,KAAgB,CAAjC,GAAqC,CAAC,GAAGH,IAAJ,EAAU,GAAGA,IAAb,CAArC,GAA0DA,IAAjE;AACA,UAAM,CAACmB,IAAD,EAAOC,GAAP,EAAYJ,IAAZ,EAAkBK,QAAlB,EAA4BC,OAA5B,EAAqCL,QAArC,IAAiDjB,IAAvD;AACAhD,IAAAA,EAAE,CAACuE,mBAAH,CAAuBhK,EAAE,CAACmI,KAA1B,EAAiCyB,IAAjC,EAAuCC,GAAvC,EAA4CJ,IAA5C;AACAhE,IAAAA,EAAE,CAACuE,mBAAH,CAAuBhK,EAAE,CAACmB,IAA1B,EAAgC2I,QAAhC,EAA0CC,OAA1C,EAAmDL,QAAnD;AACD,GAvJiC;AAwJlCO,EAAAA,SAAS,EAAE,CAACxE,EAAD,EAAKgD,IAAL,KAAc;AACvBA,IAAAA,IAAI,GAAG/B,OAAO,CAAC+B,IAAD,CAAP,IAAiBA,IAAI,CAACG,MAAL,KAAgB,CAAjC,GAAqC,CAAC,GAAGH,IAAJ,EAAU,GAAGA,IAAb,CAArC,GAA0DA,IAAjE;AACA,UAAM,CAACyB,KAAD,EAAQC,MAAR,EAAgBC,MAAhB,EAAwBC,SAAxB,EAAmCC,UAAnC,EAA+CC,UAA/C,IAA6D9B,IAAnE;AACAhD,IAAAA,EAAE,CAAC+E,iBAAH,CAAqBxK,EAAE,CAACmI,KAAxB,EAA+B+B,KAA/B,EAAsCC,MAAtC,EAA8CC,MAA9C;AACA3E,IAAAA,EAAE,CAAC+E,iBAAH,CAAqBxK,EAAE,CAACmB,IAAxB,EAA8BkJ,SAA9B,EAAyCC,UAAzC,EAAqDC,UAArD;AACD,GA7JiC;AA+JlCnC,EAAAA,QAAQ,EAAE,CAAC3C,EAAD,EAAKC,KAAL,KAAeD,EAAE,CAAC2C,QAAH,CAAY,GAAG1C,KAAf;AA/JS,CAA7B;;AAkKP,SAAS+E,QAAT,CAAkBC,MAAlB,EAA0BC,MAA1B,EAAkCC,KAAlC,EAAyC;AACvC,SAAOD,MAAM,CAACD,MAAD,CAAN,KAAmBG,SAAnB,GAA+BF,MAAM,CAACD,MAAD,CAArC,GAAgDE,KAAK,CAACF,MAAD,CAA5D;AACD;;AAGD,OAAO,MAAMI,8BAA8B,GAAG;AAC5CtC,EAAAA,aAAa,EAAE,CAAC/C,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KACbnF,EAAE,CAACiD,qBAAH,CACE+B,QAAQ,CAACzK,EAAE,CAACM,kBAAJ,EAAwBqK,MAAxB,EAAgCC,KAAhC,CADV,EAEEH,QAAQ,CAACzK,EAAE,CAACQ,oBAAJ,EAA0BmK,MAA1B,EAAkCC,KAAlC,CAFV,CAF0C;AAM5CjC,EAAAA,SAAS,EAAE,CAAClD,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KACTnF,EAAE,CAACoD,iBAAH,CACE4B,QAAQ,CAACzK,EAAE,CAACS,aAAJ,EAAmBkK,MAAnB,EAA2BC,KAA3B,CADV,EAEEH,QAAQ,CAACzK,EAAE,CAACW,aAAJ,EAAmBgK,MAAnB,EAA2BC,KAA3B,CAFV,EAGEH,QAAQ,CAACzK,EAAE,CAACa,eAAJ,EAAqB8J,MAArB,EAA6BC,KAA7B,CAHV,EAIEH,QAAQ,CAACzK,EAAE,CAACc,eAAJ,EAAqB6J,MAArB,EAA6BC,KAA7B,CAJV,CAP0C;AAa5CxB,EAAAA,aAAa,EAAE,CAAC3D,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KACbnF,EAAE,CAAC2D,aAAH,CACEqB,QAAQ,CAACzK,EAAE,CAACsC,qBAAJ,EAA2BqI,MAA3B,EAAmCC,KAAnC,CADV,EAEEH,QAAQ,CAACzK,EAAE,CAACuC,oBAAJ,EAA0BoI,MAA1B,EAAkCC,KAAlC,CAFV,CAd0C;AAkB5CvB,EAAAA,cAAc,EAAE,CAAC5D,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KACdnF,EAAE,CAAC4D,cAAH,CACEoB,QAAQ,CAACzK,EAAE,CAAC0C,qBAAJ,EAA2BiI,MAA3B,EAAmCC,KAAnC,CADV,EAEEH,QAAQ,CAACzK,EAAE,CAAC2C,sBAAJ,EAA4BgI,MAA5B,EAAoCC,KAApC,CAFV,CAnB0C;AAuB5CG,EAAAA,gBAAgB,EAAE,CAACtF,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KAChBnF,EAAE,CAACuE,mBAAH,CACEhK,EAAE,CAACmI,KADL,EAEEsC,QAAQ,CAACzK,EAAE,CAACmD,YAAJ,EAAkBwH,MAAlB,EAA0BC,KAA1B,CAFV,EAGEH,QAAQ,CAACzK,EAAE,CAACqD,WAAJ,EAAiBsH,MAAjB,EAAyBC,KAAzB,CAHV,EAIEH,QAAQ,CAACzK,EAAE,CAACsD,kBAAJ,EAAwBqH,MAAxB,EAAgCC,KAAhC,CAJV,CAxB0C;AA8B5CI,EAAAA,eAAe,EAAE,CAACvF,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KACfnF,EAAE,CAACuE,mBAAH,CACEhK,EAAE,CAACmB,IADL,EAEEsJ,QAAQ,CAACzK,EAAE,CAACuD,iBAAJ,EAAuBoH,MAAvB,EAA+BC,KAA/B,CAFV,EAGEH,QAAQ,CAACzK,EAAE,CAACwD,gBAAJ,EAAsBmH,MAAtB,EAA8BC,KAA9B,CAHV,EAIEH,QAAQ,CAACzK,EAAE,CAACyD,uBAAJ,EAA6BkH,MAA7B,EAAqCC,KAArC,CAJV,CA/B0C;AAqC5CK,EAAAA,cAAc,EAAE,CAACxF,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KACdnF,EAAE,CAAC+E,iBAAH,CACExK,EAAE,CAACmI,KADL,EAEEsC,QAAQ,CAACzK,EAAE,CAAC0D,YAAJ,EAAkBiH,MAAlB,EAA0BC,KAA1B,CAFV,EAGEH,QAAQ,CAACzK,EAAE,CAAC4D,uBAAJ,EAA6B+G,MAA7B,EAAqCC,KAArC,CAHV,EAIEH,QAAQ,CAACzK,EAAE,CAAC6D,uBAAJ,EAA6B8G,MAA7B,EAAqCC,KAArC,CAJV,CAtC0C;AA4C5CM,EAAAA,aAAa,EAAE,CAACzF,EAAD,EAAKkF,MAAL,EAAaC,KAAb,KACbnF,EAAE,CAAC+E,iBAAH,CACExK,EAAE,CAACmB,IADL,EAEEsJ,QAAQ,CAACzK,EAAE,CAAC8D,iBAAJ,EAAuB6G,MAAvB,EAA+BC,KAA/B,CAFV,EAGEH,QAAQ,CAACzK,EAAE,CAAC+D,4BAAJ,EAAkC4G,MAAlC,EAA0CC,KAA1C,CAHV,EAIEH,QAAQ,CAACzK,EAAE,CAACgE,4BAAJ,EAAkC2G,MAAlC,EAA0CC,KAA1C,CAJV;AA7C0C,CAAvC;AAwDP,OAAO,MAAMO,iBAAiB,GAAG;AAG/B3F,EAAAA,MAAM,EAAE,CAAC4F,MAAD,EAAqBC,UAArB,KACND,MAAM,CAAC;AACL,KAACC,UAAD,GAAc;AADT,GAAD,CAJuB;AAO/BzF,EAAAA,OAAO,EAAE,CAACwF,MAAD,EAAqBC,UAArB,KACPD,MAAM,CAAC;AACL,KAACC,UAAD,GAAc;AADT,GAAD,CARuB;AAW/BvF,EAAAA,WAAW,EAAE,CAACsF,MAAD,EAAqBE,KAArB,EAA4B5F,KAA5B,KACX0F,MAAM,CAAC;AACL,KAACE,KAAD,GAAS5F;AADJ,GAAD,CAZuB;AAe/BG,EAAAA,IAAI,EAAE,CAACuF,MAAD,EAAqBE,KAArB,EAA4BzF,IAA5B,KACJuF,MAAM,CAAC;AACL,KAACE,KAAD,GAASzF;AADJ,GAAD,CAhBuB;AAqB/B2B,EAAAA,UAAU,EAAE,CAAC4D,MAAD,EAAqB1F,KAArB,KAA+B0F,MAAM,CAAC;AAChD,KAACpL,EAAE,CAAC2B,eAAJ,GAAsB+D;AAD0B,GAAD,CArBlB;AAwB/B+B,EAAAA,gBAAgB,EAAE,CAAC2D,MAAD,EAAqBpF,MAArB,EAA6BN,KAA7B,KAAuC0F,MAAM,CAAC;AAC9D,KAACpL,EAAE,CAAC6B,oBAAJ,GAA2B6D;AADmC,GAAD,CAxBhC;AA2B/BiC,EAAAA,qBAAqB,EAAE,CAACyD,MAAD,EAAqBpF,MAArB,EAA6BN,KAA7B,KAAuC0F,MAAM,CAAC;AACnE,KAACpL,EAAE,CAACwE,0BAAJ,GAAiCkB;AADkC,GAAD,CA3BrC;AA8B/BmC,EAAAA,eAAe,EAAE,CAACuD,MAAD,EAAqB1F,KAArB,KAA+B0F,MAAM,CAAC;AACrD,KAACpL,EAAE,CAAC8B,oBAAJ,GAA2B4D;AAD0B,GAAD,CA9BvB;AAkC/BK,EAAAA,eAAe,EAAE,CAACqF,MAAD,EAAqBpF,MAArB,EAA6BqC,WAA7B,KAA6C;AAC5D,YAAQrC,MAAR;AACE,WAAKhG,EAAE,CAACkG,WAAR;AACE,eAAOkF,MAAM,CAAC;AACZ,WAACpL,EAAE,CAACuL,wBAAJ,GAA+BlD,WADnB;AAEZ,WAACrI,EAAE,CAAC8E,wBAAJ,GAA+BuD;AAFnB,SAAD,CAAb;;AAIF,WAAKrI,EAAE,CAACiG,gBAAR;AACE,eAAOmF,MAAM,CAAC;AAAC,WAACpL,EAAE,CAACuL,wBAAJ,GAA+BlD;AAAhC,SAAD,CAAb;;AACF,WAAKrI,EAAE,CAACmG,gBAAR;AACE,eAAOiF,MAAM,CAAC;AAAC,WAACpL,EAAE,CAAC8E,wBAAJ,GAA+BuD;AAAhC,SAAD,CAAb;;AACF;AACE,eAAO,IAAP;AAXJ;AAaD,GAhD8B;AAiD/BjC,EAAAA,UAAU,EAAE,CAACgF,MAAD,EAAqBpF,MAArB,EAA6BwF,MAA7B,KAAwC;AAClD,UAAMF,KAAK,GAAI;AACb,OAACtL,EAAE,CAACqG,YAAJ,GAAmB,CAACrG,EAAE,CAAC+B,oBAAJ,CADN;AAEb,OAAC/B,EAAE,CAACsG,gBAAJ,GAAuB,CAACtG,EAAE,CAACyE,wBAAJ,CAFV;AAGb,OAACzE,EAAE,CAACuG,iBAAJ,GAAwB,CAACvG,EAAE,CAAC0E,yBAAJ,CAHX;AAIb,OAAC1E,EAAE,CAACwG,iBAAJ,GAAwB,CAACxG,EAAE,CAAC2E,yBAAJ,CAJX;AAKb,OAAC3E,EAAE,CAACyG,mBAAJ,GAA0B,CAACzG,EAAE,CAAC4E,2BAAJ;AALb,KAAD,CAMXoB,MANW,CAAd;;AAQA,QAAIsF,KAAJ,EAAW;AACT,aAAOF,MAAM,CAAC;AAAC,SAACE,KAAD,GAASE;AAAV,OAAD,CAAb;AACD;;AAED,WAAO;AAACC,MAAAA,YAAY,EAAE;AAAf,KAAP;AACD,GA/D8B;AAiE/BzE,EAAAA,UAAU,EAAE,CAACoE,MAAD,EAAqBM,CAArB,EAAgCC,CAAhC,EAA2CC,CAA3C,EAAsDC,CAAtD,KACVT,MAAM,CAAC;AACL,KAACpL,EAAE,CAACI,WAAJ,GAAkB,IAAIC,YAAJ,CAAiB,CAACqL,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAjB;AADb,GAAD,CAlEuB;AAsE/BrD,EAAAA,aAAa,EAAE,CAAC4C,MAAD,EAAqBU,IAArB,KACbV,MAAM,CAAC;AACL,KAACpL,EAAE,CAACM,kBAAJ,GAAyBwL,IADpB;AAEL,KAAC9L,EAAE,CAACQ,oBAAJ,GAA2BsL;AAFtB,GAAD,CAvEuB;AA4E/BpD,EAAAA,qBAAqB,EAAE,CAAC0C,MAAD,EAAqBW,OAArB,EAA8BC,SAA9B,KACrBZ,MAAM,CAAC;AACL,KAACpL,EAAE,CAACM,kBAAJ,GAAyByL,OADpB;AAEL,KAAC/L,EAAE,CAACQ,oBAAJ,GAA2BwL;AAFtB,GAAD,CA7EuB;AAkF/BrD,EAAAA,SAAS,EAAE,CAACyC,MAAD,EAAqBa,GAArB,EAA0BC,GAA1B,KACTd,MAAM,CAAC;AACL,KAACpL,EAAE,CAACS,aAAJ,GAAoBwL,GADf;AAEL,KAACjM,EAAE,CAACW,aAAJ,GAAoBuL,GAFf;AAGL,KAAClM,EAAE,CAACa,eAAJ,GAAsBoL,GAHjB;AAIL,KAACjM,EAAE,CAACc,eAAJ,GAAsBoL;AAJjB,GAAD,CAnFuB;AA0F/BrD,EAAAA,iBAAiB,EAAE,CAACuC,MAAD,EAAqBe,MAArB,EAA6BC,MAA7B,EAAqCC,QAArC,EAA+CC,QAA/C,KACjBlB,MAAM,CAAC;AACL,KAACpL,EAAE,CAACS,aAAJ,GAAoB0L,MADf;AAEL,KAACnM,EAAE,CAACW,aAAJ,GAAoByL,MAFf;AAGL,KAACpM,EAAE,CAACa,eAAJ,GAAsBwL,QAHjB;AAIL,KAACrM,EAAE,CAACc,eAAJ,GAAsBwL;AAJjB,GAAD,CA3FuB;AAkG/BrF,EAAAA,UAAU,EAAE,CAACmE,MAAD,EAAqBM,CAArB,EAAgCC,CAAhC,EAA2CC,CAA3C,EAAsDC,CAAtD,KACVT,MAAM,CAAC;AACL,KAACpL,EAAE,CAACe,iBAAJ,GAAwB,IAAIV,YAAJ,CAAiB,CAACqL,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAjB;AADnB,GAAD,CAnGuB;AAuG/BzE,EAAAA,UAAU,EAAE,CAACgE,MAAD,EAAqBmB,KAArB,KACVnB,MAAM,CAAC;AACL,KAACpL,EAAE,CAACqB,iBAAJ,GAAwBkL;AADnB,GAAD,CAxGuB;AA4G/BtE,EAAAA,YAAY,EAAE,CAACmD,MAAD,EAAqBoB,CAArB,KACZpB,MAAM,CAAC;AACL,KAACpL,EAAE,CAACgD,mBAAJ,GAA0BwJ;AADrB,GAAD,CA7GuB;AAiH/BtF,EAAAA,SAAS,EAAE,CAACkE,MAAD,EAAqBM,CAArB,EAAgCC,CAAhC,EAA2CC,CAA3C,EAAsDC,CAAtD,KACTT,MAAM,CAAC;AACL,KAACpL,EAAE,CAACgB,eAAJ,GAAsB,CAAC0K,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV;AADjB,GAAD,CAlHuB;AAsH/B1E,EAAAA,QAAQ,EAAE,CAACiE,MAAD,EAAqBU,IAArB,KACRV,MAAM,CAAC;AACL,KAACpL,EAAE,CAACkB,cAAJ,GAAqB4K;AADhB,GAAD,CAvHuB;AA2H/BzE,EAAAA,SAAS,EAAE,CAAC+D,MAAD,EAAqBxB,IAArB,KACTwB,MAAM,CAAC;AACL,KAACpL,EAAE,CAACsB,UAAJ,GAAiBsI;AADZ,GAAD,CA5HuB;AAgI/BtC,EAAAA,UAAU,EAAE,CAAC8D,MAAD,EAAqBqB,KAArB,EAAoCC,IAApC,KACVtB,MAAM,CAAC;AACL,KAACpL,EAAE,CAACwB,WAAJ,GAAkB,IAAInB,YAAJ,CAAiB,CAACoM,KAAD,EAAQC,IAAR,CAAjB;AADb,GAAD,CAjIuB;AAqI/BnF,EAAAA,SAAS,EAAE,CAAC6D,MAAD,EAAqB3B,IAArB,KACT2B,MAAM,CAAC;AACL,KAACpL,EAAE,CAACyB,eAAJ,GAAsBgI;AADjB,GAAD,CAtIuB;AA0I/B3B,EAAAA,SAAS,EAAE,CAACsD,MAAD,EAAqBuB,IAArB,KACTvB,MAAM,CAAC;AACL,KAACpL,EAAE,CAACgC,UAAJ,GAAiB2K;AADZ,GAAD,CA3IuB;AA+I/B5E,EAAAA,SAAS,EAAE,CAACqD,MAAD,EAAqBwB,KAArB,KACTxB,MAAM,CAAC;AACL,KAACpL,EAAE,CAACoC,UAAJ,GAAiBwK;AADZ,GAAD,CAhJuB;AAoJ/BxD,EAAAA,aAAa,EAAE,CAACgC,MAAD,EAAqByB,MAArB,EAA6BC,KAA7B,KACb1B,MAAM,CAAC;AACL,KAACpL,EAAE,CAACsC,qBAAJ,GAA4BuK,MADvB;AAEL,KAAC7M,EAAE,CAACuC,oBAAJ,GAA2BuK;AAFtB,GAAD,CArJuB;AA0J/BzD,EAAAA,cAAc,EAAE,CAAC+B,MAAD,EAAqB1F,KAArB,EAA4BqH,MAA5B,KACd3B,MAAM,CAAC;AACL,KAACpL,EAAE,CAAC0C,qBAAJ,GAA4BgD,KADvB;AAEL,KAAC1F,EAAE,CAAC2C,sBAAJ,GAA6BoK;AAFxB,GAAD,CA3JuB;AAgK/B/E,EAAAA,OAAO,EAAE,CAACoD,MAAD,EAAqB4B,CAArB,EAAwBC,CAAxB,EAA2BL,KAA3B,EAAkCM,MAAlC,KACP9B,MAAM,CAAC;AACL,KAACpL,EAAE,CAAC6C,WAAJ,GAAkB,IAAIC,UAAJ,CAAe,CAACkK,CAAD,EAAIC,CAAJ,EAAOL,KAAP,EAAcM,MAAd,CAAf;AADb,GAAD,CAjKuB;AAqK/B1D,EAAAA,WAAW,EAAE,CAAC4B,MAAD,EAAqB3B,IAArB,KACX2B,MAAM,CAAC;AACL,KAACpL,EAAE,CAACiD,iBAAJ,GAAwBwG,IADnB;AAEL,KAACzJ,EAAE,CAACkD,sBAAJ,GAA6BuG;AAFxB,GAAD,CAtKuB;AA2K/BvB,EAAAA,mBAAmB,EAAE,CAACkD,MAAD,EAAqBuB,IAArB,EAA2BlD,IAA3B,KACnB2B,MAAM,CAAC;AACL,KAACuB,IAAI,KAAK3M,EAAE,CAACmI,KAAZ,GAAoBnI,EAAE,CAACiD,iBAAvB,GAA2CjD,EAAE,CAACkD,sBAA/C,GAAwEuG;AADnE,GAAD,CA5KuB;AAgL/BE,EAAAA,WAAW,EAAE,CAACyB,MAAD,EAAqBxB,IAArB,EAA2BC,GAA3B,EAAgCJ,IAAhC,KACX2B,MAAM,CAAC;AACL,KAACpL,EAAE,CAACmD,YAAJ,GAAmByG,IADd;AAEL,KAAC5J,EAAE,CAACqD,WAAJ,GAAkBwG,GAFb;AAGL,KAAC7J,EAAE,CAACsD,kBAAJ,GAAyBmG,IAHpB;AAIL,KAACzJ,EAAE,CAACuD,iBAAJ,GAAwBqG,IAJnB;AAKL,KAAC5J,EAAE,CAACwD,gBAAJ,GAAuBqG,GALlB;AAML,KAAC7J,EAAE,CAACyD,uBAAJ,GAA8BgG;AANzB,GAAD,CAjLuB;AA0L/BO,EAAAA,mBAAmB,EAAE,CAACoB,MAAD,EAAqBuB,IAArB,EAA2B/C,IAA3B,EAAiCC,GAAjC,EAAsCJ,IAAtC,KACnB2B,MAAM,CAAC;AACL,KAACuB,IAAI,KAAK3M,EAAE,CAACmI,KAAZ,GAAoBnI,EAAE,CAACmD,YAAvB,GAAsCnD,EAAE,CAACuD,iBAA1C,GAA8DqG,IADzD;AAEL,KAAC+C,IAAI,KAAK3M,EAAE,CAACmI,KAAZ,GAAoBnI,EAAE,CAACqD,WAAvB,GAAqCrD,EAAE,CAACwD,gBAAzC,GAA4DqG,GAFvD;AAGL,KAAC8C,IAAI,KAAK3M,EAAE,CAACmI,KAAZ,GAAoBnI,EAAE,CAACsD,kBAAvB,GAA4CtD,EAAE,CAACyD,uBAAhD,GAA0EgG;AAHrE,GAAD,CA3LuB;AAiM/BQ,EAAAA,SAAS,EAAE,CAACmB,MAAD,EAAqB+B,IAArB,EAA2BC,KAA3B,EAAkCC,KAAlC,KACTjC,MAAM,CAAC;AACL,KAACpL,EAAE,CAAC0D,YAAJ,GAAmByJ,IADd;AAEL,KAACnN,EAAE,CAAC4D,uBAAJ,GAA8BwJ,KAFzB;AAGL,KAACpN,EAAE,CAAC6D,uBAAJ,GAA8BwJ,KAHzB;AAIL,KAACrN,EAAE,CAAC8D,iBAAJ,GAAwBqJ,IAJnB;AAKL,KAACnN,EAAE,CAAC+D,4BAAJ,GAAmCqJ,KAL9B;AAML,KAACpN,EAAE,CAACgE,4BAAJ,GAAmCqJ;AAN9B,GAAD,CAlMuB;AA2M/B7C,EAAAA,iBAAiB,EAAE,CAACY,MAAD,EAAqBuB,IAArB,EAA2BQ,IAA3B,EAAiCC,KAAjC,EAAwCC,KAAxC,KACjBjC,MAAM,CAAC;AACL,KAACuB,IAAI,KAAK3M,EAAE,CAACmI,KAAZ,GAAoBnI,EAAE,CAAC0D,YAAvB,GAAsC1D,EAAE,CAAC8D,iBAA1C,GAA8DqJ,IADzD;AAEL,KAACR,IAAI,KAAK3M,EAAE,CAACmI,KAAZ,GAAoBnI,EAAE,CAAC4D,uBAAvB,GAAiD5D,EAAE,CAAC+D,4BAArD,GAAoFqJ,KAF/E;AAGL,KAACT,IAAI,KAAK3M,EAAE,CAACmI,KAAZ,GAAoBnI,EAAE,CAAC6D,uBAAvB,GAAiD7D,EAAE,CAACgE,4BAArD,GAAoFqJ;AAH/E,GAAD,CA5MuB;AAkN/BjF,EAAAA,QAAQ,EAAE,CAACgD,MAAD,EAAqB4B,CAArB,EAAwBC,CAAxB,EAA2BL,KAA3B,EAAkCM,MAAlC,KACR9B,MAAM,CAAC;AACL,KAACpL,EAAE,CAACiE,QAAJ,GAAe,CAAC+I,CAAD,EAAIC,CAAJ,EAAOL,KAAP,EAAcM,MAAd;AADV,GAAD;AAnNuB,CAA1B;;AA0NP,MAAMI,SAAS,GAAG,CAAC7H,EAAD,EAAKE,GAAL,KAAaF,EAAE,CAAC6H,SAAH,CAAa3H,GAAb,CAA/B;;AAGA,OAAO,MAAM4H,oBAAoB,GAAG;AAClC,GAACvN,EAAE,CAACG,KAAJ,GAAYmN,SADsB;AAElC,GAACtN,EAAE,CAACiB,SAAJ,GAAgBqM,SAFkB;AAGlC,GAACtN,EAAE,CAACoB,UAAJ,GAAiBkM,SAHiB;AAIlC,GAACtN,EAAE,CAAC0B,MAAJ,GAAa4L,SAJqB;AAKlC,GAACtN,EAAE,CAACqC,mBAAJ,GAA0BiL,SALQ;AAMlC,GAACtN,EAAE,CAACwC,wBAAJ,GAA+B8K,SANG;AAOlC,GAACtN,EAAE,CAACyC,eAAJ,GAAsB6K,SAPY;AAQlC,GAACtN,EAAE,CAAC4C,YAAJ,GAAmB0K,SARe;AASlC,GAACtN,EAAE,CAAC+C,YAAJ,GAAmBuK,SATe;AAYlC,GAACtN,EAAE,CAAC+E,kBAAJ,GAAyBuI;AAZS,CAA7B;AAeP,OAAO,MAAME,oBAAoB,GAAG,IAAIC,GAAJ,CAAQ,CAE1CzN,EAAE,CAAC0N,cAFuC,EAG1C1N,EAAE,CAAC2N,yBAHuC,EAI1C3N,EAAE,CAAC4N,yBAJuC,EAO1C5N,EAAE,CAAC6N,iCAPuC,EAQ1C7N,EAAE,CAAC8N,sBARuC,EAW1C9N,EAAE,CAAC+N,4BAXuC,EAa1C/N,EAAE,CAACgO,gCAbuC,EAc1ChO,EAAE,CAACiO,8BAduC,EAgB1CjO,EAAE,CAACkO,WAhBuC,EAiB1ClO,EAAE,CAACmO,YAjBuC,EAkB1CnO,EAAE,CAACoO,YAlBuC,EAmB1CpO,EAAE,CAACqO,YAnBuC,EAoB1CrO,EAAE,CAACsO,YApBuC,EAqB1CtO,EAAE,CAACuO,YArBuC,EAsB1CvO,EAAE,CAACwO,YAtBuC,EAuB1CxO,EAAE,CAACyO,YAvBuC,EAwB1CzO,EAAE,CAAC0O,YAxBuC,EAyB1C1O,EAAE,CAAC2O,YAzBuC,EA0B1C3O,EAAE,CAAC4O,YA1BuC,EA2B1C5O,EAAE,CAAC6O,aA3BuC,EA4B1C7O,EAAE,CAAC8O,aA5BuC,EA6B1C9O,EAAE,CAAC+O,aA7BuC,EA8B1C/O,EAAE,CAACgP,aA9BuC,EA+B1ChP,EAAE,CAACiP,aA/BuC,EAgC1CjP,EAAE,CAACkP,aAhCuC,EAkC1ClP,EAAE,CAACmP,eAlCuC,EAmC1CnP,EAAE,CAACoP,kBAnCuC,EAoC1CpP,EAAE,CAACqP,wBApCuC,EAqC1CrP,EAAE,CAACsP,kBArCuC,EAsC1CtP,EAAE,CAACuP,wBAtCuC,CAAR,CAA7B","sourcesContent":["// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\nimport type {GLParameters} from '../../types/webgl';\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS: GLParameters = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n [GL.CURRENT_PROGRAM]: null,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.RENDERBUFFER_BINDING]: null,\n [GL.VERTEX_ARRAY_BINDING]: null,\n [GL.ARRAY_BUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.TRANSFORM_FEEDBACK_BINDING]: null,\n [GL.COPY_READ_BUFFER_BINDING]: null,\n [GL.COPY_WRITE_BUFFER_BINDING]: null,\n [GL.PIXEL_PACK_BUFFER_BINDING]: null,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));\nconst hint = (gl, value, key) => gl.hint(key, value);\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst bindFramebuffer = (gl, value, key) => {\n let target;\n if (key === GL.FRAMEBUFFER_BINDING) {\n target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n } else {\n // GL.READ_FRAMEBUFFER_BINDING\n target = GL.READ_FRAMEBUFFER;\n }\n return gl.bindFramebuffer(target, value);\n};\n\nconst bindBuffer = (gl, value, key) => {\n const target = ({\n [GL.ARRAY_BUFFER_BINDING]: [GL.ARRAY_BUFFER],\n [GL.COPY_READ_BUFFER_BINDING]: [GL.COPY_READ_BUFFER],\n [GL.COPY_WRITE_BUFFER_BINDING]: [GL.COPY_WRITE_BUFFER],\n [GL.PIXEL_PACK_BUFFER_BINDING]: [GL.PIXEL_PACK_BUFFER],\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: [GL.PIXEL_UNPACK_BUFFER]\n })[key];\n\n gl.bindBuffer(target, value);\n};\n\n// Utility\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n\n [GL.CURRENT_PROGRAM]: (gl, value) => gl.useProgram(value),\n [GL.RENDERBUFFER_BINDING]: (gl, value) => gl.bindRenderbuffer(GL.RENDERBUFFER, value),\n [GL.TRANSFORM_FEEDBACK_BINDING]: (gl, value) => gl.bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),\n [GL.VERTEX_ARRAY_BINDING]: (gl, value) => gl.bindVertexArray(value),\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,\n\n // Buffers\n [GL.ARRAY_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,\n\n [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n\n colorMask: (gl, value) => gl.colorMask(...value),\n\n cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),\n cullFace: (gl, value) => gl.cullFace(value),\n\n depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n\n dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),\n\n derivativeHint: (gl, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl, value) => gl.frontFace(value),\n\n mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n\n scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),\n scissor: (gl, value) => gl.scissor(...value),\n\n stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\ntype UpdateFunc = (params: Record<string, any>) => void;\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update: UpdateFunc, capability) =>\n update({\n [capability]: true\n }),\n disable: (update: UpdateFunc, capability) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update: UpdateFunc, pname, value) =>\n update({\n [pname]: value\n }),\n hint: (update: UpdateFunc, pname, hint) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n useProgram: (update: UpdateFunc, value) => update({\n [GL.CURRENT_PROGRAM]: value,\n }),\n bindRenderbuffer: (update: UpdateFunc, target, value) => update({\n [GL.RENDERBUFFER_BINDING]: value\n }),\n bindTransformFeedback: (update: UpdateFunc, target, value) => update({\n [GL.TRANSFORM_FEEDBACK_BINDING]: value\n }),\n bindVertexArray: (update: UpdateFunc, value) => update({\n [GL.VERTEX_ARRAY_BINDING]: value\n }),\n\n bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n bindBuffer: (update: UpdateFunc, target, buffer) => {\n const pname = ({\n [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],\n [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],\n [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],\n [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],\n [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]\n })[target];\n\n if (pname) {\n return update({[pname]: buffer});\n }\n // targets that should not be cached\n return {valueChanged: true};\n },\n\n blendColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update: UpdateFunc, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update: UpdateFunc, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update: UpdateFunc, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update: UpdateFunc, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update: UpdateFunc, depth: number) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update: UpdateFunc, s: number) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update: UpdateFunc, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update: UpdateFunc, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update: UpdateFunc, zNear: number, zFar: number) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update: UpdateFunc, mask: number) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update: UpdateFunc, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update: UpdateFunc, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update: UpdateFunc, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update: UpdateFunc, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update: UpdateFunc, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update: UpdateFunc, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update: UpdateFunc, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update: UpdateFunc, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update: UpdateFunc, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update: UpdateFunc, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n\nexport const NON_CACHE_PARAMETERS = new Set([\n // setter not intercepted\n GL.ACTIVE_TEXTURE,\n GL.TRANSFORM_FEEDBACK_ACTIVE,\n GL.TRANSFORM_FEEDBACK_PAUSED,\n\n // setters bindBufferRange/bindBufferBase cannot be pruned based on cache\n GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,\n GL.UNIFORM_BUFFER_BINDING,\n\n // states depending on VERTEX_ARRAY_BINDING\n GL.ELEMENT_ARRAY_BUFFER_BINDING,\n // states depending on READ_FRAMEBUFFER_BINDING\n GL.IMPLEMENTATION_COLOR_READ_FORMAT,\n GL.IMPLEMENTATION_COLOR_READ_TYPE,\n // states depending on FRAMEBUFFER_BINDING\n GL.READ_BUFFER,\n GL.DRAW_BUFFER0,\n GL.DRAW_BUFFER1,\n GL.DRAW_BUFFER2,\n GL.DRAW_BUFFER3,\n GL.DRAW_BUFFER4,\n GL.DRAW_BUFFER5,\n GL.DRAW_BUFFER6,\n GL.DRAW_BUFFER7,\n GL.DRAW_BUFFER8,\n GL.DRAW_BUFFER9,\n GL.DRAW_BUFFER10,\n GL.DRAW_BUFFER11,\n GL.DRAW_BUFFER12,\n GL.DRAW_BUFFER13,\n GL.DRAW_BUFFER14,\n GL.DRAW_BUFFER15,\n // states depending on ACTIVE_TEXTURE\n GL.SAMPLER_BINDING,\n GL.TEXTURE_BINDING_2D,\n GL.TEXTURE_BINDING_2D_ARRAY,\n GL.TEXTURE_BINDING_3D,\n GL.TEXTURE_BINDING_CUBE_MAP\n]);\n"],"file":"webgl-parameter-tables.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/context/polyfill/get-parameter-polyfill.ts"],"names":["GL","isWebGL2","OES_element_index","WEBGL_draw_buffers","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_texture_filter_anisotropic","WEBGL_debug_renderer_info","GL_FRAGMENT_SHADER_DERIVATIVE_HINT","GL_DONT_CARE","GL_GPU_DISJOINT_EXT","GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT","GL_UNMASKED_VENDOR_WEBGL","GL_UNMASKED_RENDERER_WEBGL","getWebGL2ValueOrZero","gl","undefined","WEBGL_PARAMETERS","READ_BUFFER","COLOR_ATTACHMENT0","RASTERIZER_DISCARD","SAMPLES","getParameter","ext","getExtension","GPU_DISJOINT_EXT","UNMASKED_VENDOR_WEBGL","VENDOR","UNMASKED_RENDERER_WEBGL","RENDERER","luma","extensions","MAX_TEXTURE_MAX_ANISOTROPY_EXT","MAX_3D_TEXTURE_SIZE","MAX_ARRAY_TEXTURE_LAYERS","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","MAX_COLOR_ATTACHMENTS","MAX_COLOR_ATTACHMENTS_WEBGL","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_DRAW_BUFFERS","MAX_DRAW_BUFFERS_WEBGL","MAX_ELEMENT_INDEX","MAX_ELEMENTS_INDICES","MAX_ELEMENTS_VERTICES","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_SAMPLES","MAX_SERVER_WAIT_TIMEOUT","MAX_TEXTURE_LOD_BIAS","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","MAX_UNIFORM_BLOCK_SIZE","MAX_UNIFORM_BUFFER_BINDINGS","MAX_VARYING_COMPONENTS","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_VERTEX_UNIFORM_BLOCKS","MAX_VERTEX_UNIFORM_COMPONENTS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET","UNIFORM_BUFFER_OFFSET_ALIGNMENT","getParameterPolyfill","originalGetParameter","pname","limit","value","result"],"mappings":"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","sourcesContent":["/* eslint-disable no-inline-comments, max-len, camelcase */\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = (gl) => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: (gl) => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl) => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] || \n gl.getExtension('EXT_texture_filter_anisotropic');\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: (gl) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n (gl) => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n"],"file":"get-parameter-polyfill.js"}
1
+ {"version":3,"sources":["../../../../src/context/polyfill/get-parameter-polyfill.ts"],"names":["GL","isWebGL2","OES_element_index","WEBGL_draw_buffers","EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2","EXT_texture_filter_anisotropic","WEBGL_debug_renderer_info","GL_FRAGMENT_SHADER_DERIVATIVE_HINT","GL_DONT_CARE","GL_GPU_DISJOINT_EXT","GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT","GL_UNMASKED_VENDOR_WEBGL","GL_UNMASKED_RENDERER_WEBGL","getWebGL2ValueOrZero","gl","undefined","WEBGL_PARAMETERS","READ_BUFFER","COLOR_ATTACHMENT0","RASTERIZER_DISCARD","SAMPLES","getParameter","ext","getExtension","GPU_DISJOINT_EXT","UNMASKED_VENDOR_WEBGL","VENDOR","UNMASKED_RENDERER_WEBGL","RENDERER","luma","extensions","MAX_TEXTURE_MAX_ANISOTROPY_EXT","MAX_3D_TEXTURE_SIZE","MAX_ARRAY_TEXTURE_LAYERS","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","MAX_COLOR_ATTACHMENTS","MAX_COLOR_ATTACHMENTS_WEBGL","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_DRAW_BUFFERS","MAX_DRAW_BUFFERS_WEBGL","MAX_ELEMENT_INDEX","MAX_ELEMENTS_INDICES","MAX_ELEMENTS_VERTICES","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_SAMPLES","MAX_SERVER_WAIT_TIMEOUT","MAX_TEXTURE_LOD_BIAS","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","MAX_UNIFORM_BLOCK_SIZE","MAX_UNIFORM_BUFFER_BINDINGS","MAX_VARYING_COMPONENTS","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_VERTEX_UNIFORM_BLOCKS","MAX_VERTEX_UNIFORM_COMPONENTS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET","UNIFORM_BUFFER_OFFSET_ALIGNMENT","getParameterPolyfill","originalGetParameter","pname","limit","value","result"],"mappings":"AACA,OAAOA,EAAP,MAAe,oBAAf;AACA,SAAQC,QAAR,QAAuB,yBAAvB;AAEA,MAAMC,iBAAiB,GAAG,mBAA1B;AACA,MAAMC,kBAAkB,GAAG,oBAA3B;AACA,MAAMC,wBAAwB,GAAG,0BAAjC;AACA,MAAMC,+BAA+B,GAAG,iCAAxC;AACA,MAAMC,8BAA8B,GAAG,gCAAvC;AACA,MAAMC,yBAAyB,GAAG,2BAAlC;AAEA,MAAMC,kCAAkC,GAAG,MAA3C;AACA,MAAMC,YAAY,GAAG,MAArB;AACA,MAAMC,mBAAmB,GAAG,MAA5B;AACA,MAAMC,iCAAiC,GAAG,MAA1C;AACA,MAAMC,wBAAwB,GAAG,MAAjC;AACA,MAAMC,0BAA0B,GAAG,MAAnC;;AAEA,MAAMC,oBAAoB,GAAIC,EAAD,IAAS,CAACd,QAAQ,CAACc,EAAD,CAAT,GAAgB,CAAhB,GAAoBC,SAA1D;;AAIA,MAAMC,gBAAgB,GAAG;AACvB,GAACjB,EAAE,CAACkB,WAAJ,GAAmBH,EAAD,IAAS,CAACd,QAAQ,CAACc,EAAD,CAAT,GAAgBf,EAAE,CAACmB,iBAAnB,GAAuCH,SAD3C;AAIvB,GAACR,kCAAD,GAAuCO,EAAD,IAAS,CAACd,QAAQ,CAACc,EAAD,CAAT,GAAgBN,YAAhB,GAA+BO,SAJvD;AAMvB,GAAChB,EAAE,CAACoB,kBAAJ,GAAyBN,oBANF;AAQvB,GAACd,EAAE,CAACqB,OAAJ,GAAcP,oBARS;AAWvB,GAACJ,mBAAD,GAAuB,CAACK,EAAD,EAAKO,YAAL,KAAsB;AAC3C,UAAMC,GAAG,GAAGtB,QAAQ,CAACc,EAAD,CAAR,GACRA,EAAE,CAACS,YAAH,CAAgBnB,+BAAhB,CADQ,GAERU,EAAE,CAACS,YAAH,CAAgBpB,wBAAhB,CAFJ;AAGA,WAAOmB,GAAG,IAAIA,GAAG,CAACE,gBAAX,GAA8BH,YAAY,CAACC,GAAG,CAACE,gBAAL,CAA1C,GAAmE,CAA1E;AACD,GAhBsB;AAmBvB,GAACb,wBAAD,GAA4B,CAACG,EAAD,EAAKO,YAAL,KAAsB;AAChD,UAAMC,GAAG,GAAGR,EAAE,CAACS,YAAH,CAAgBjB,yBAAhB,CAAZ;AACA,WAAOe,YAAY,CAAEC,GAAG,IAAIA,GAAG,CAACG,qBAAZ,IAAsC1B,EAAE,CAAC2B,MAA1C,CAAnB;AACD,GAtBsB;AAwBvB,GAACd,0BAAD,GAA8B,CAACE,EAAD,EAAKO,YAAL,KAAsB;AAClD,UAAMC,GAAG,GAAGR,EAAE,CAACS,YAAH,CAAgBjB,yBAAhB,CAAZ;AACA,WAAOe,YAAY,CAAEC,GAAG,IAAIA,GAAG,CAACK,uBAAZ,IAAwC5B,EAAE,CAAC6B,QAA5C,CAAnB;AACD,GA3BsB;AA8BvB,GAAClB,iCAAD,GAAqC,CAACI,EAAD,EAAKO,YAAL,KAAsB;AAAA;;AACzD,UAAMC,GAAG,GAAG,aAAAR,EAAE,CAACe,IAAH,6EAASC,UAAT,4EAAsBzB,8BAAtB,MACVS,EAAE,CAACS,YAAH,CAAgB,gCAAhB,CADF;AAEA,WAAOD,GAAG,GAAGD,YAAY,CAACC,GAAG,CAACS,8BAAL,CAAf,GAAsD,GAAhE;AACD,GAlCsB;AAqCvB,GAAChC,EAAE,CAACiC,mBAAJ,GAA0BnB,oBArCH;AAsCvB,GAACd,EAAE,CAACkC,wBAAJ,GAA+BpB,oBAtCR;AAuCvB,GAACd,EAAE,CAACmC,6BAAJ,GAAoCrB,oBAvCb;AAwCvB,GAACd,EAAE,CAACoC,qBAAJ,GAA4B,CAACrB,EAAD,EAAKO,YAAL,KAAsB;AAChD,QAAI,CAACrB,QAAQ,CAACc,EAAD,CAAb,EAAmB;AACjB,YAAMQ,GAAG,GAAGR,EAAE,CAACS,YAAH,CAAgBrB,kBAAhB,CAAZ;AACA,aAAOoB,GAAG,GAAGD,YAAY,CAACC,GAAG,CAACc,2BAAL,CAAf,GAAmD,CAA7D;AACD;;AACD,WAAOrB,SAAP;AACD,GA9CsB;AA+CvB,GAAChB,EAAE,CAACsC,wCAAJ,GAA+CxB,oBA/CxB;AAgDvB,GAACd,EAAE,CAACuC,2BAAJ,GAAkCzB,oBAhDX;AAiDvB,GAACd,EAAE,CAACwC,sCAAJ,GAA6C1B,oBAjDtB;AAkDvB,GAACd,EAAE,CAACyC,gBAAJ,GAAwB1B,EAAD,IAAQ;AAC7B,QAAI,CAACd,QAAQ,CAACc,EAAD,CAAb,EAAmB;AACjB,YAAMQ,GAAG,GAAGR,EAAE,CAACS,YAAH,CAAgBrB,kBAAhB,CAAZ;AACA,aAAOoB,GAAG,GAAGA,GAAG,CAACmB,sBAAP,GAAgC,CAA1C;AACD;;AACD,WAAO1B,SAAP;AACD,GAxDsB;AAyDvB,GAAChB,EAAE,CAAC2C,iBAAJ,GAEG5B,EAAD,IAASA,EAAE,CAACS,YAAH,CAAgBtB,iBAAhB,IAAqC,UAArC,GAAkD,KA3DtC;AA4DvB,GAACF,EAAE,CAAC4C,oBAAJ,GAEG7B,EAAD,IAASA,EAAE,CAACS,YAAH,CAAgBtB,iBAAhB,IAAqC,QAArC,GAAgD,KA9DpC;AA+DvB,GAACF,EAAE,CAAC6C,qBAAJ,GAEG9B,EAAD,IAAQ,QAjEa;AAkEvB,GAACf,EAAE,CAAC8C,6BAAJ,GAAoChC,oBAlEb;AAmEvB,GAACd,EAAE,CAAC+C,2BAAJ,GAAkCjC,oBAnEX;AAoEvB,GAACd,EAAE,CAACgD,+BAAJ,GAAsClC,oBApEf;AAqEvB,GAACd,EAAE,CAACiD,WAAJ,GAAkBnC,oBArEK;AAsEvB,GAACd,EAAE,CAACkD,uBAAJ,GAA8BpC,oBAtEP;AAuEvB,GAACd,EAAE,CAACmD,oBAAJ,GAA2BrC,oBAvEJ;AAwEvB,GAACd,EAAE,CAACoD,6CAAJ,GAAoDtC,oBAxE7B;AAyEvB,GAACd,EAAE,CAACqD,uCAAJ,GAA8CvC,oBAzEvB;AA0EvB,GAACd,EAAE,CAACsD,0CAAJ,GAAiDxC,oBA1E1B;AA2EvB,GAACd,EAAE,CAACuD,sBAAJ,GAA6BzC,oBA3EN;AA4EvB,GAACd,EAAE,CAACwD,2BAAJ,GAAkC1C,oBA5EX;AA6EvB,GAACd,EAAE,CAACyD,sBAAJ,GAA6B3C,oBA7EN;AA8EvB,GAACd,EAAE,CAAC0D,4BAAJ,GAAmC5C,oBA9EZ;AA+EvB,GAACd,EAAE,CAAC2D,yBAAJ,GAAgC7C,oBA/ET;AAgFvB,GAACd,EAAE,CAAC4D,6BAAJ,GAAoC9C,oBAhFb;AAiFvB,GAACd,EAAE,CAAC6D,wBAAJ,GAA+B/C,oBAjFR;AAkFvB,GAACd,EAAE,CAAC8D,wBAAJ,GAA+BhD,oBAlFR;AAmFvB,GAACd,EAAE,CAAC+D,+BAAJ,GAAsCjD;AAnFf,CAAzB;AAwFA,OAAO,SAASkD,oBAAT,CAA8BjD,EAA9B,EAAkCkD,oBAAlC,EAAwDC,KAAxD,EAA+D;AAGpE,QAAMC,KAAK,GAAGlD,gBAAgB,CAACiD,KAAD,CAA9B;AACA,QAAME,KAAK,GAAG,OAAOD,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACpD,EAAD,EAAKkD,oBAAL,EAA2BC,KAA3B,CAAnC,GAAuEC,KAArF;AACA,QAAME,MAAM,GAAGD,KAAK,KAAKpD,SAAV,GAAsBoD,KAAtB,GAA8BH,oBAAoB,CAACC,KAAD,CAAjE;AACA,SAAOG,MAAP;AACD","sourcesContent":["/* eslint-disable no-inline-comments, max-len, camelcase */\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = (gl) => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: (gl) => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl) => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||\n gl.getExtension('EXT_texture_filter_anisotropic');\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: (gl) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n (gl) => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n (gl) => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n"],"file":"get-parameter-polyfill.js"}