@luma.gl/webgl 9.0.0-beta.1 → 9.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +295 -156
  3. package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
  4. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.js +73 -67
  6. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +53 -46
  8. package/dist/adapter/converters/texture-formats.d.ts +17 -21
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +481 -879
  11. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +53 -61
  13. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  14. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  15. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  16. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  17. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  18. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  19. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  20. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  22. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  23. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  24. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  25. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  26. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  27. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  28. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  29. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  30. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  31. package/dist/adapter/helpers/set-uniform.js +68 -82
  32. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  33. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  34. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  35. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  36. package/dist/adapter/objects/constants-to-keys.js +19 -12
  37. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  38. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  39. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  40. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  41. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  42. package/dist/adapter/objects/webgl-resource.js +102 -147
  43. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  44. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-buffer.js +159 -117
  46. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  49. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  50. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  52. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  53. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -12
  54. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-framebuffer.js +174 -139
  56. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  57. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  58. package/dist/adapter/resources/webgl-query-set.js +136 -0
  59. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  60. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  62. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  63. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-render-pipeline.js +362 -221
  65. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  66. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  67. package/dist/adapter/resources/webgl-sampler.js +43 -33
  68. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  69. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-shader.js +114 -47
  71. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  72. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  73. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  74. package/dist/adapter/resources/webgl-texture.d.ts +8 -10
  75. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-texture.js +616 -694
  77. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  78. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  80. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  81. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  83. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +58 -36
  86. package/dist/adapter/webgl-device.d.ts +50 -44
  87. package/dist/adapter/webgl-device.d.ts.map +1 -1
  88. package/dist/adapter/webgl-device.js +427 -352
  89. package/dist/classic/accessor.d.ts.map +1 -1
  90. package/dist/classic/accessor.js +132 -101
  91. package/dist/classic/clear.d.ts +2 -2
  92. package/dist/classic/clear.d.ts.map +1 -1
  93. package/dist/classic/clear.js +73 -72
  94. package/dist/classic/copy-and-blit.d.ts +1 -1
  95. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  96. package/dist/classic/copy-and-blit.js +174 -175
  97. package/dist/classic/format-utils.d.ts +2 -2
  98. package/dist/classic/format-utils.d.ts.map +1 -1
  99. package/dist/classic/format-utils.js +39 -32
  100. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  101. package/dist/classic/typed-array-utils.js +96 -81
  102. package/dist/context/debug/spector.d.ts.map +1 -1
  103. package/dist/context/debug/spector.js +55 -50
  104. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  105. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  106. package/dist/context/debug/webgl-developer-tools.js +104 -77
  107. package/dist/context/{context → helpers}/create-browser-context.d.ts +1 -6
  108. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  109. package/dist/context/helpers/create-browser-context.js +67 -0
  110. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  111. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  112. package/dist/context/helpers/webgl-context-data.js +21 -0
  113. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  114. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  115. package/dist/context/helpers/webgl-extensions.js +10 -0
  116. package/dist/context/parameters/unified-parameter-api.d.ts +3 -4
  117. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  118. package/dist/context/parameters/unified-parameter-api.js +92 -47
  119. package/dist/context/parameters/webgl-parameter-tables.d.ts +109 -99
  120. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  121. package/dist/context/parameters/webgl-parameter-tables.js +463 -404
  122. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  123. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  124. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  125. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  126. package/dist/context/state-tracker/track-context-state.js +188 -123
  127. package/dist/context/state-tracker/with-parameters.d.ts +2 -3
  128. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  129. package/dist/context/state-tracker/with-parameters.js +42 -28
  130. package/dist/dist.dev.js +4465 -7235
  131. package/dist/dist.min.js +10 -0
  132. package/dist/index.cjs +2146 -3116
  133. package/dist/index.cjs.map +7 -0
  134. package/dist/index.d.ts +25 -31
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +19 -10
  137. package/dist/types.d.ts.map +1 -1
  138. package/dist/types.js +3 -1
  139. package/dist.min.js +9 -42
  140. package/package.json +10 -15
  141. package/src/adapter/converters/device-parameters.ts +114 -28
  142. package/src/adapter/converters/sampler-parameters.ts +12 -20
  143. package/src/adapter/converters/shader-formats.ts +47 -22
  144. package/src/adapter/converters/texture-formats.ts +183 -227
  145. package/src/adapter/converters/vertex-formats.ts +3 -3
  146. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  147. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  148. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  149. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  150. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  151. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  152. package/src/adapter/helpers/set-uniform.ts +3 -4
  153. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  154. package/src/adapter/objects/constants-to-keys.ts +3 -2
  155. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  156. package/src/adapter/objects/webgl-resource.ts +8 -141
  157. package/src/adapter/resources/webgl-buffer.ts +10 -14
  158. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  159. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  160. package/src/adapter/resources/webgl-external-texture.ts +7 -7
  161. package/src/adapter/resources/webgl-framebuffer.ts +65 -58
  162. package/src/adapter/resources/webgl-query-set.ts +171 -0
  163. package/src/adapter/resources/webgl-render-pass.ts +27 -18
  164. package/src/adapter/resources/webgl-render-pipeline.ts +148 -73
  165. package/src/adapter/resources/webgl-sampler.ts +7 -10
  166. package/src/adapter/resources/webgl-shader.ts +65 -11
  167. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  168. package/src/adapter/resources/webgl-texture.ts +43 -106
  169. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  170. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  171. package/src/adapter/webgl-canvas-context.ts +7 -11
  172. package/src/adapter/webgl-device.ts +142 -162
  173. package/src/classic/accessor.ts +5 -4
  174. package/src/classic/clear.ts +25 -20
  175. package/src/classic/copy-and-blit.ts +12 -6
  176. package/src/classic/format-utils.ts +2 -1
  177. package/src/classic/typed-array-utils.ts +3 -7
  178. package/src/context/debug/spector.ts +9 -6
  179. package/src/context/debug/webgl-developer-tools.ts +31 -20
  180. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  181. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  182. package/src/context/helpers/webgl-extensions.ts +17 -0
  183. package/src/context/parameters/unified-parameter-api.ts +6 -17
  184. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  185. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  186. package/src/context/state-tracker/track-context-state.ts +29 -23
  187. package/src/context/state-tracker/with-parameters.ts +8 -8
  188. package/src/index.ts +16 -56
  189. package/src/types.ts +2 -1
  190. package/dist/adapter/converters/device-parameters.js.map +0 -1
  191. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  192. package/dist/adapter/converters/shader-formats.js.map +0 -1
  193. package/dist/adapter/converters/texture-formats.js.map +0 -1
  194. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  195. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  196. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  197. package/dist/adapter/device-helpers/device-features.js +0 -96
  198. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  199. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  200. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  201. package/dist/adapter/device-helpers/device-limits.js +0 -87
  202. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  203. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  204. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  205. package/dist/adapter/device-helpers/get-device-info.js +0 -71
  206. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  207. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  208. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  209. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  210. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  211. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  212. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  213. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  214. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  215. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  216. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  217. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  218. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  219. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  220. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  221. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  222. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  223. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  224. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  225. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  226. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  227. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  228. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  229. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  230. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  231. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  232. package/dist/adapter/webgl-device.js.map +0 -1
  233. package/dist/classic/accessor.js.map +0 -1
  234. package/dist/classic/clear.js.map +0 -1
  235. package/dist/classic/copy-and-blit.js.map +0 -1
  236. package/dist/classic/format-utils.js.map +0 -1
  237. package/dist/classic/typed-array-utils.js.map +0 -1
  238. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  239. package/dist/context/context/create-browser-context.js +0 -53
  240. package/dist/context/context/create-browser-context.js.map +0 -1
  241. package/dist/context/context/create-headless-context.d.ts +0 -9
  242. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  243. package/dist/context/context/create-headless-context.js +0 -42
  244. package/dist/context/context/create-headless-context.js.map +0 -1
  245. package/dist/context/context/webgl-checks.d.ts +0 -13
  246. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  247. package/dist/context/context/webgl-checks.js +0 -31
  248. package/dist/context/context/webgl-checks.js.map +0 -1
  249. package/dist/context/debug/spector.js.map +0 -1
  250. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  251. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  252. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  253. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  254. package/dist/context/polyfill/context-data.js +0 -12
  255. package/dist/context/polyfill/context-data.js.map +0 -1
  256. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  257. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  258. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  259. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  260. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  261. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  262. package/dist/context/polyfill/polyfill-context.js +0 -87
  263. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  264. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  265. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  266. package/dist/context/polyfill/polyfill-table.js +0 -137
  267. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  268. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  269. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  270. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  271. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  272. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  273. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  274. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  275. package/dist/index.js.map +0 -1
  276. package/dist/types.js.map +0 -1
  277. package/src/adapter/device-helpers/device-features.ts +0 -161
  278. package/src/adapter/device-helpers/device-limits.ts +0 -155
  279. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  280. package/src/context/context/create-headless-context.ts +0 -51
  281. package/src/context/context/webgl-checks.ts +0 -51
  282. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  283. package/src/context/polyfill/polyfill-context.ts +0 -104
  284. package/src/context/polyfill/polyfill-table.ts +0 -167
  285. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
@@ -1,426 +1,485 @@
1
- import { isWebGL2 } from "../context/webgl-checks.js";
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Tables describing WebGL parameters
5
+ import { GL } from '@luma.gl/constants';
6
+ // DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS
7
+ /* eslint-disable no-shadow */
2
8
  export const GL_PARAMETER_DEFAULTS = {
3
- [3042]: false,
4
- [32773]: new Float32Array([0, 0, 0, 0]),
5
- [32777]: 32774,
6
- [34877]: 32774,
7
- [32969]: 1,
8
- [32968]: 0,
9
- [32971]: 1,
10
- [32970]: 0,
11
- [3106]: new Float32Array([0, 0, 0, 0]),
12
- [3107]: [true, true, true, true],
13
- [2884]: false,
14
- [2885]: 1029,
15
- [2929]: false,
16
- [2931]: 1,
17
- [2932]: 513,
18
- [2928]: new Float32Array([0, 1]),
19
- [2930]: true,
20
- [3024]: true,
21
- [35725]: null,
22
- [36006]: null,
23
- [36007]: null,
24
- [34229]: null,
25
- [34964]: null,
26
- [2886]: 2305,
27
- [33170]: 4352,
28
- [2849]: 1,
29
- [32823]: false,
30
- [32824]: 0,
31
- [10752]: 0,
32
- [32926]: false,
33
- [32928]: false,
34
- [32938]: 1.0,
35
- [32939]: false,
36
- [3089]: false,
37
- [3088]: new Int32Array([0, 0, 1024, 1024]),
38
- [2960]: false,
39
- [2961]: 0,
40
- [2968]: 0xffffffff,
41
- [36005]: 0xffffffff,
42
- [2962]: 519,
43
- [2967]: 0,
44
- [2963]: 0xffffffff,
45
- [34816]: 519,
46
- [36003]: 0,
47
- [36004]: 0xffffffff,
48
- [2964]: 7680,
49
- [2965]: 7680,
50
- [2966]: 7680,
51
- [34817]: 7680,
52
- [34818]: 7680,
53
- [34819]: 7680,
54
- [2978]: [0, 0, 1024, 1024],
55
- [3333]: 4,
56
- [3317]: 4,
57
- [37440]: false,
58
- [37441]: false,
59
- [37443]: 37444,
60
- [36389]: null,
61
- [36662]: null,
62
- [36663]: null,
63
- [35053]: null,
64
- [35055]: null,
65
- [35723]: 4352,
66
- [36010]: null,
67
- [35977]: false,
68
- [3330]: 0,
69
- [3332]: 0,
70
- [3331]: 0,
71
- [3314]: 0,
72
- [32878]: 0,
73
- [3316]: 0,
74
- [3315]: 0,
75
- [32877]: 0
9
+ [3042]: false,
10
+ [32773]: new Float32Array([0, 0, 0, 0]),
11
+ [32777]: 32774,
12
+ [34877]: 32774,
13
+ [32969]: 1,
14
+ [32968]: 0,
15
+ [32971]: 1,
16
+ [32970]: 0,
17
+ [3106]: new Float32Array([0, 0, 0, 0]), // TBD
18
+ [3107]: [true, true, true, true],
19
+ [2884]: false,
20
+ [2885]: 1029,
21
+ [2929]: false,
22
+ [2931]: 1,
23
+ [2932]: 513,
24
+ [2928]: new Float32Array([0, 1]), // TBD
25
+ [2930]: true,
26
+ [3024]: true,
27
+ [35725]: null,
28
+ // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
29
+ [36006]: null,
30
+ [36007]: null,
31
+ [34229]: null,
32
+ [34964]: null,
33
+ [2886]: 2305,
34
+ [33170]: 4352,
35
+ [2849]: 1,
36
+ [32823]: false,
37
+ [32824]: 0,
38
+ [10752]: 0,
39
+ [32926]: false,
40
+ [32928]: false,
41
+ [32938]: 1.0,
42
+ [32939]: false,
43
+ [3089]: false,
44
+ // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box
45
+ [3088]: new Int32Array([0, 0, 1024, 1024]),
46
+ [2960]: false,
47
+ [2961]: 0,
48
+ [2968]: 0xffffffff,
49
+ [36005]: 0xffffffff,
50
+ [2962]: 519,
51
+ [2967]: 0,
52
+ [2963]: 0xffffffff,
53
+ [34816]: 519,
54
+ [36003]: 0,
55
+ [36004]: 0xffffffff,
56
+ [2964]: 7680,
57
+ [2965]: 7680,
58
+ [2966]: 7680,
59
+ [34817]: 7680,
60
+ [34818]: 7680,
61
+ [34819]: 7680,
62
+ // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.
63
+ [2978]: [0, 0, 1024, 1024],
64
+ [36389]: null,
65
+ [36662]: null,
66
+ [36663]: null,
67
+ [35053]: null,
68
+ [35055]: null,
69
+ [35723]: 4352,
70
+ [36010]: null,
71
+ [35977]: false,
72
+ [3333]: 4,
73
+ [3317]: 4,
74
+ [37440]: false,
75
+ [37441]: false,
76
+ [37443]: 37444,
77
+ [3330]: 0,
78
+ [3332]: 0,
79
+ [3331]: 0,
80
+ [3314]: 0,
81
+ [32878]: 0,
82
+ [3316]: 0,
83
+ [3315]: 0,
84
+ [32877]: 0
76
85
  };
86
+ // SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API
77
87
  const enable = (gl, value, key) => value ? gl.enable(key) : gl.disable(key);
78
88
  const hint = (gl, value, key) => gl.hint(key, value);
79
89
  const pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);
80
90
  const bindFramebuffer = (gl, value, key) => {
81
- let target;
82
- if (key === 36006) {
83
- target = isWebGL2(gl) ? 36009 : 36160;
84
- } else {
85
- target = 36008;
86
- }
87
- return gl.bindFramebuffer(target, value);
91
+ const target = key === 36006 ? 36009 : 36008;
92
+ return gl.bindFramebuffer(target, value);
88
93
  };
89
94
  const bindBuffer = (gl, value, key) => {
90
- const bindingMap = {
91
- [34964]: 34962,
92
- [36662]: 36662,
93
- [36663]: 36663,
94
- [35053]: 35051,
95
- [35055]: 35052
96
- };
97
- const glTarget = bindingMap[key];
98
- gl.bindBuffer(glTarget, value);
95
+ const bindingMap = {
96
+ [34964]: 34962,
97
+ [36662]: 36662,
98
+ [36663]: 36663,
99
+ [35053]: 35051,
100
+ [35055]: 35052
101
+ };
102
+ const glTarget = bindingMap[key];
103
+ gl.bindBuffer(glTarget, value);
99
104
  };
105
+ // Utility
100
106
  function isArray(array) {
101
- return Array.isArray(array) || ArrayBuffer.isView(array) && !(array instanceof DataView);
107
+ return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));
102
108
  }
109
+ // Map from WebGL parameter names to corresponding WebGL setter functions
110
+ // WegGL constants are read by parameter names, but set by function names
111
+ // NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'
103
112
  export const GL_PARAMETER_SETTERS = {
104
- [3042]: enable,
105
- [32773]: (gl, value) => gl.blendColor(...value),
106
- [32777]: 'blendEquation',
107
- [34877]: 'blendEquation',
108
- [32969]: 'blendFunc',
109
- [32968]: 'blendFunc',
110
- [32971]: 'blendFunc',
111
- [32970]: 'blendFunc',
112
- [3106]: (gl, value) => gl.clearColor(...value),
113
- [3107]: (gl, value) => gl.colorMask(...value),
114
- [2884]: enable,
115
- [2885]: (gl, value) => gl.cullFace(value),
116
- [2929]: enable,
117
- [2931]: (gl, value) => gl.clearDepth(value),
118
- [2932]: (gl, value) => gl.depthFunc(value),
119
- [2928]: (gl, value) => gl.depthRange(...value),
120
- [2930]: (gl, value) => gl.depthMask(value),
121
- [3024]: enable,
122
- [35723]: hint,
123
- [35725]: (gl, value) => gl.useProgram(value),
124
- [36007]: (gl, value) => gl.bindRenderbuffer(36161, value),
125
- [36389]: (gl, value) => {
126
- var _bindTransformFeedbac, _ref;
127
- return (_bindTransformFeedbac = (_ref = gl).bindTransformFeedback) === null || _bindTransformFeedbac === void 0 ? void 0 : _bindTransformFeedbac.call(_ref, 36386, value);
128
- },
129
- [34229]: (gl, value) => gl.bindVertexArray(value),
130
- [36006]: bindFramebuffer,
131
- [36010]: bindFramebuffer,
132
- [34964]: bindBuffer,
133
- [36662]: bindBuffer,
134
- [36663]: bindBuffer,
135
- [35053]: bindBuffer,
136
- [35055]: bindBuffer,
137
- [2886]: (gl, value) => gl.frontFace(value),
138
- [33170]: hint,
139
- [2849]: (gl, value) => gl.lineWidth(value),
140
- [32823]: enable,
141
- [32824]: 'polygonOffset',
142
- [10752]: 'polygonOffset',
143
- [35977]: enable,
144
- [32926]: enable,
145
- [32928]: enable,
146
- [32938]: 'sampleCoverage',
147
- [32939]: 'sampleCoverage',
148
- [3089]: enable,
149
- [3088]: (gl, value) => gl.scissor(...value),
150
- [2960]: enable,
151
- [2961]: (gl, value) => gl.clearStencil(value),
152
- [2968]: (gl, value) => gl.stencilMaskSeparate(1028, value),
153
- [36005]: (gl, value) => gl.stencilMaskSeparate(1029, value),
154
- [2962]: 'stencilFuncFront',
155
- [2967]: 'stencilFuncFront',
156
- [2963]: 'stencilFuncFront',
157
- [34816]: 'stencilFuncBack',
158
- [36003]: 'stencilFuncBack',
159
- [36004]: 'stencilFuncBack',
160
- [2964]: 'stencilOpFront',
161
- [2965]: 'stencilOpFront',
162
- [2966]: 'stencilOpFront',
163
- [34817]: 'stencilOpBack',
164
- [34818]: 'stencilOpBack',
165
- [34819]: 'stencilOpBack',
166
- [2978]: (gl, value) => gl.viewport(...value),
167
- [3333]: pixelStorei,
168
- [3317]: pixelStorei,
169
- [37440]: pixelStorei,
170
- [37441]: pixelStorei,
171
- [37443]: pixelStorei,
172
- [3330]: pixelStorei,
173
- [3332]: pixelStorei,
174
- [3331]: pixelStorei,
175
- [3314]: pixelStorei,
176
- [32878]: pixelStorei,
177
- [3316]: pixelStorei,
178
- [3315]: pixelStorei,
179
- [32877]: pixelStorei,
180
- framebuffer: (gl, framebuffer) => {
181
- const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;
182
- return gl.bindFramebuffer(36160, handle);
183
- },
184
- blend: (gl, value) => value ? gl.enable(3042) : gl.disable(3042),
185
- blendColor: (gl, value) => gl.blendColor(...value),
186
- blendEquation: (gl, args) => {
187
- const separateModes = typeof args === 'number' ? [args, args] : args;
188
- gl.blendEquationSeparate(...separateModes);
189
- },
190
- blendFunc: (gl, args) => {
191
- const separateFuncs = (args === null || args === void 0 ? void 0 : args.length) === 2 ? [...args, ...args] : args;
192
- gl.blendFuncSeparate(...separateFuncs);
193
- },
194
- clearColor: (gl, value) => gl.clearColor(...value),
195
- clearDepth: (gl, value) => gl.clearDepth(value),
196
- clearStencil: (gl, value) => gl.clearStencil(value),
197
- colorMask: (gl, value) => gl.colorMask(...value),
198
- cull: (gl, value) => value ? gl.enable(2884) : gl.disable(2884),
199
- cullFace: (gl, value) => gl.cullFace(value),
200
- depthTest: (gl, value) => value ? gl.enable(2929) : gl.disable(2929),
201
- depthFunc: (gl, value) => gl.depthFunc(value),
202
- depthMask: (gl, value) => gl.depthMask(value),
203
- depthRange: (gl, value) => gl.depthRange(...value),
204
- dither: (gl, value) => value ? gl.enable(3024) : gl.disable(3024),
205
- derivativeHint: (gl, value) => {
206
- gl.hint(35723, value);
207
- },
208
- frontFace: (gl, value) => gl.frontFace(value),
209
- mipmapHint: (gl, value) => gl.hint(33170, value),
210
- lineWidth: (gl, value) => gl.lineWidth(value),
211
- polygonOffsetFill: (gl, value) => value ? gl.enable(32823) : gl.disable(32823),
212
- polygonOffset: (gl, value) => gl.polygonOffset(...value),
213
- sampleCoverage: (gl, value) => gl.sampleCoverage(...value),
214
- scissorTest: (gl, value) => value ? gl.enable(3089) : gl.disable(3089),
215
- scissor: (gl, value) => gl.scissor(...value),
216
- stencilTest: (gl, value) => value ? gl.enable(2960) : gl.disable(2960),
217
- stencilMask: (gl, value) => {
218
- value = isArray(value) ? value : [value, value];
219
- const [mask, backMask] = value;
220
- gl.stencilMaskSeparate(1028, mask);
221
- gl.stencilMaskSeparate(1029, backMask);
222
- },
223
- stencilFunc: (gl, args) => {
224
- args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
225
- const [func, ref, mask, backFunc, backRef, backMask] = args;
226
- gl.stencilFuncSeparate(1028, func, ref, mask);
227
- gl.stencilFuncSeparate(1029, backFunc, backRef, backMask);
228
- },
229
- stencilOp: (gl, args) => {
230
- args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
231
- const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;
232
- gl.stencilOpSeparate(1028, sfail, dpfail, dppass);
233
- gl.stencilOpSeparate(1029, backSfail, backDpfail, backDppass);
234
- },
235
- viewport: (gl, value) => gl.viewport(...value)
113
+ [3042]: enable,
114
+ [32773]: (gl, value) => gl.blendColor(...value),
115
+ [32777]: 'blendEquation',
116
+ [34877]: 'blendEquation',
117
+ [32969]: 'blendFunc',
118
+ [32968]: 'blendFunc',
119
+ [32971]: 'blendFunc',
120
+ [32970]: 'blendFunc',
121
+ [3106]: (gl, value) => gl.clearColor(...value),
122
+ [3107]: (gl, value) => gl.colorMask(...value),
123
+ [2884]: enable,
124
+ [2885]: (gl, value) => gl.cullFace(value),
125
+ [2929]: enable,
126
+ [2931]: (gl, value) => gl.clearDepth(value),
127
+ [2932]: (gl, value) => gl.depthFunc(value),
128
+ [2928]: (gl, value) => gl.depthRange(...value),
129
+ [2930]: (gl, value) => gl.depthMask(value),
130
+ [3024]: enable,
131
+ [35723]: hint,
132
+ [35725]: (gl, value) => gl.useProgram(value),
133
+ [36007]: (gl, value) => gl.bindRenderbuffer(36161, value),
134
+ [36389]: (gl, value) => gl.bindTransformFeedback?.(36386, value),
135
+ [34229]: (gl, value) => gl.bindVertexArray(value),
136
+ // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
137
+ [36006]: bindFramebuffer,
138
+ [36010]: bindFramebuffer,
139
+ // Buffers
140
+ [34964]: bindBuffer,
141
+ [36662]: bindBuffer,
142
+ [36663]: bindBuffer,
143
+ [35053]: bindBuffer,
144
+ [35055]: bindBuffer,
145
+ [2886]: (gl, value) => gl.frontFace(value),
146
+ [33170]: hint,
147
+ [2849]: (gl, value) => gl.lineWidth(value),
148
+ [32823]: enable,
149
+ [32824]: 'polygonOffset',
150
+ [10752]: 'polygonOffset',
151
+ [35977]: enable,
152
+ [32926]: enable,
153
+ [32928]: enable,
154
+ [32938]: 'sampleCoverage',
155
+ [32939]: 'sampleCoverage',
156
+ [3089]: enable,
157
+ [3088]: (gl, value) => gl.scissor(...value),
158
+ [2960]: enable,
159
+ [2961]: (gl, value) => gl.clearStencil(value),
160
+ [2968]: (gl, value) => gl.stencilMaskSeparate(1028, value),
161
+ [36005]: (gl, value) => gl.stencilMaskSeparate(1029, value),
162
+ [2962]: 'stencilFuncFront',
163
+ [2967]: 'stencilFuncFront',
164
+ [2963]: 'stencilFuncFront',
165
+ [34816]: 'stencilFuncBack',
166
+ [36003]: 'stencilFuncBack',
167
+ [36004]: 'stencilFuncBack',
168
+ [2964]: 'stencilOpFront',
169
+ [2965]: 'stencilOpFront',
170
+ [2966]: 'stencilOpFront',
171
+ [34817]: 'stencilOpBack',
172
+ [34818]: 'stencilOpBack',
173
+ [34819]: 'stencilOpBack',
174
+ [2978]: (gl, value) => gl.viewport(...value),
175
+ // WEBGL2 EXTENSIONS
176
+ // EXT_depth_clamp https://registry.khronos.org/webgl/extensions/EXT_depth_clamp/
177
+ [34383]: enable,
178
+ // WEBGL_provoking_vertex https://registry.khronos.org/webgl/extensions/WEBGL_provoking_vertex/
179
+ // [GL.PROVOKING_VERTEX_WEBL]: TODO - extension function needed
180
+ // WEBGL_polygon_mode https://registry.khronos.org/webgl/extensions/WEBGL_polygon_mode/
181
+ // POLYGON_MODE_WEBGL TODO - extension function needed
182
+ [10754]: enable,
183
+ // WEBGL_clip_cull_distance https://registry.khronos.org/webgl/extensions/WEBGL_clip_cull_distance/
184
+ [12288]: enable,
185
+ [12289]: enable,
186
+ [12290]: enable,
187
+ [12291]: enable,
188
+ [12292]: enable,
189
+ [12293]: enable,
190
+ [12294]: enable,
191
+ [12295]: enable,
192
+ // PIXEL PACK/UNPACK MODES
193
+ [3333]: pixelStorei,
194
+ [3317]: pixelStorei,
195
+ [37440]: pixelStorei,
196
+ [37441]: pixelStorei,
197
+ [37443]: pixelStorei,
198
+ [3330]: pixelStorei,
199
+ [3332]: pixelStorei,
200
+ [3331]: pixelStorei,
201
+ [3314]: pixelStorei,
202
+ [32878]: pixelStorei,
203
+ [3316]: pixelStorei,
204
+ [3315]: pixelStorei,
205
+ [32877]: pixelStorei,
206
+ // Function-style setters
207
+ framebuffer: (gl, framebuffer) => {
208
+ // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class
209
+ // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.
210
+ const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;
211
+ return gl.bindFramebuffer(36160, handle);
212
+ },
213
+ blend: (gl, value) => value ? gl.enable(3042) : gl.disable(3042),
214
+ blendColor: (gl, value) => gl.blendColor(...value),
215
+ blendEquation: (gl, args) => {
216
+ const separateModes = typeof args === 'number' ? [args, args] : args;
217
+ gl.blendEquationSeparate(...separateModes);
218
+ },
219
+ blendFunc: (gl, args) => {
220
+ const separateFuncs = args?.length === 2 ? [...args, ...args] : args;
221
+ gl.blendFuncSeparate(...separateFuncs);
222
+ },
223
+ clearColor: (gl, value) => gl.clearColor(...value),
224
+ clearDepth: (gl, value) => gl.clearDepth(value),
225
+ clearStencil: (gl, value) => gl.clearStencil(value),
226
+ colorMask: (gl, value) => gl.colorMask(...value),
227
+ cull: (gl, value) => value ? gl.enable(2884) : gl.disable(2884),
228
+ cullFace: (gl, value) => gl.cullFace(value),
229
+ depthTest: (gl, value) => value ? gl.enable(2929) : gl.disable(2929),
230
+ depthFunc: (gl, value) => gl.depthFunc(value),
231
+ depthMask: (gl, value) => gl.depthMask(value),
232
+ depthRange: (gl, value) => gl.depthRange(...value),
233
+ dither: (gl, value) => value ? gl.enable(3024) : gl.disable(3024),
234
+ derivativeHint: (gl, value) => {
235
+ // gl1: 'OES_standard_derivatives'
236
+ gl.hint(35723, value);
237
+ },
238
+ frontFace: (gl, value) => gl.frontFace(value),
239
+ mipmapHint: (gl, value) => gl.hint(33170, value),
240
+ lineWidth: (gl, value) => gl.lineWidth(value),
241
+ polygonOffsetFill: (gl, value) => value ? gl.enable(32823) : gl.disable(32823),
242
+ polygonOffset: (gl, value) => gl.polygonOffset(...value),
243
+ sampleCoverage: (gl, value) => gl.sampleCoverage(...value),
244
+ scissorTest: (gl, value) => value ? gl.enable(3089) : gl.disable(3089),
245
+ scissor: (gl, value) => gl.scissor(...value),
246
+ stencilTest: (gl, value) => value ? gl.enable(2960) : gl.disable(2960),
247
+ stencilMask: (gl, value) => {
248
+ value = isArray(value) ? value : [value, value];
249
+ const [mask, backMask] = value;
250
+ gl.stencilMaskSeparate(1028, mask);
251
+ gl.stencilMaskSeparate(1029, backMask);
252
+ },
253
+ stencilFunc: (gl, args) => {
254
+ args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
255
+ const [func, ref, mask, backFunc, backRef, backMask] = args;
256
+ gl.stencilFuncSeparate(1028, func, ref, mask);
257
+ gl.stencilFuncSeparate(1029, backFunc, backRef, backMask);
258
+ },
259
+ stencilOp: (gl, args) => {
260
+ args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
261
+ const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;
262
+ gl.stencilOpSeparate(1028, sfail, dpfail, dppass);
263
+ gl.stencilOpSeparate(1029, backSfail, backDpfail, backDppass);
264
+ },
265
+ viewport: (gl, value) => gl.viewport(...value)
236
266
  };
237
267
  function getValue(glEnum, values, cache) {
238
- return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];
268
+ return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];
239
269
  }
270
+ // COMPOSITE_WEBGL_PARAMETER_
240
271
  export const GL_COMPOSITE_PARAMETER_SETTERS = {
241
- blendEquation: (gl, values, cache) => gl.blendEquationSeparate(getValue(32777, values, cache), getValue(34877, values, cache)),
242
- blendFunc: (gl, values, cache) => gl.blendFuncSeparate(getValue(32969, values, cache), getValue(32968, values, cache), getValue(32971, values, cache), getValue(32970, values, cache)),
243
- polygonOffset: (gl, values, cache) => gl.polygonOffset(getValue(32824, values, cache), getValue(10752, values, cache)),
244
- sampleCoverage: (gl, values, cache) => gl.sampleCoverage(getValue(32938, values, cache), getValue(32939, values, cache)),
245
- stencilFuncFront: (gl, values, cache) => gl.stencilFuncSeparate(1028, getValue(2962, values, cache), getValue(2967, values, cache), getValue(2963, values, cache)),
246
- stencilFuncBack: (gl, values, cache) => gl.stencilFuncSeparate(1029, getValue(34816, values, cache), getValue(36003, values, cache), getValue(36004, values, cache)),
247
- stencilOpFront: (gl, values, cache) => gl.stencilOpSeparate(1028, getValue(2964, values, cache), getValue(2965, values, cache), getValue(2966, values, cache)),
248
- stencilOpBack: (gl, values, cache) => gl.stencilOpSeparate(1029, getValue(34817, values, cache), getValue(34818, values, cache), getValue(34819, values, cache))
272
+ blendEquation: (gl, values, cache) => gl.blendEquationSeparate(getValue(32777, values, cache), getValue(34877, values, cache)),
273
+ blendFunc: (gl, values, cache) => gl.blendFuncSeparate(getValue(32969, values, cache), getValue(32968, values, cache), getValue(32971, values, cache), getValue(32970, values, cache)),
274
+ polygonOffset: (gl, values, cache) => gl.polygonOffset(getValue(32824, values, cache), getValue(10752, values, cache)),
275
+ sampleCoverage: (gl, values, cache) => gl.sampleCoverage(getValue(32938, values, cache), getValue(32939, values, cache)),
276
+ stencilFuncFront: (gl, values, cache) => gl.stencilFuncSeparate(1028, getValue(2962, values, cache), getValue(2967, values, cache), getValue(2963, values, cache)),
277
+ stencilFuncBack: (gl, values, cache) => gl.stencilFuncSeparate(1029, getValue(34816, values, cache), getValue(36003, values, cache), getValue(36004, values, cache)),
278
+ stencilOpFront: (gl, values, cache) => gl.stencilOpSeparate(1028, getValue(2964, values, cache), getValue(2965, values, cache), getValue(2966, values, cache)),
279
+ stencilOpBack: (gl, values, cache) => gl.stencilOpSeparate(1029, getValue(34817, values, cache), getValue(34818, values, cache), getValue(34819, values, cache))
249
280
  };
281
+ // Setter functions intercepted for cache updates
250
282
  export const GL_HOOKED_SETTERS = {
251
- enable: (update, capability) => update({
252
- [capability]: true
253
- }),
254
- disable: (update, capability) => update({
255
- [capability]: false
256
- }),
257
- pixelStorei: (update, pname, value) => update({
258
- [pname]: value
259
- }),
260
- hint: (update, pname, hint) => update({
261
- [pname]: hint
262
- }),
263
- useProgram: (update, value) => update({
264
- [35725]: value
265
- }),
266
- bindRenderbuffer: (update, target, value) => update({
267
- [36007]: value
268
- }),
269
- bindTransformFeedback: (update, target, value) => update({
270
- [36389]: value
271
- }),
272
- bindVertexArray: (update, value) => update({
273
- [34229]: value
274
- }),
275
- bindFramebuffer: (update, target, framebuffer) => {
276
- switch (target) {
277
- case 36160:
278
- return update({
279
- [36006]: framebuffer,
280
- [36010]: framebuffer
281
- });
282
- case 36009:
283
- return update({
284
- [36006]: framebuffer
285
- });
286
- case 36008:
287
- return update({
288
- [36010]: framebuffer
289
- });
290
- default:
291
- return null;
292
- }
293
- },
294
- bindBuffer: (update, target, buffer) => {
295
- const pname = {
296
- [34962]: [34964],
297
- [36662]: [36662],
298
- [36663]: [36663],
299
- [35051]: [35053],
300
- [35052]: [35055]
301
- }[target];
302
- if (pname) {
303
- return update({
304
- [pname]: buffer
305
- });
306
- }
307
- return {
308
- valueChanged: true
309
- };
310
- },
311
- blendColor: (update, r, g, b, a) => update({
312
- [32773]: new Float32Array([r, g, b, a])
313
- }),
314
- blendEquation: (update, mode) => update({
315
- [32777]: mode,
316
- [34877]: mode
317
- }),
318
- blendEquationSeparate: (update, modeRGB, modeAlpha) => update({
319
- [32777]: modeRGB,
320
- [34877]: modeAlpha
321
- }),
322
- blendFunc: (update, src, dst) => update({
323
- [32969]: src,
324
- [32968]: dst,
325
- [32971]: src,
326
- [32970]: dst
327
- }),
328
- blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) => update({
329
- [32969]: srcRGB,
330
- [32968]: dstRGB,
331
- [32971]: srcAlpha,
332
- [32970]: dstAlpha
333
- }),
334
- clearColor: (update, r, g, b, a) => update({
335
- [3106]: new Float32Array([r, g, b, a])
336
- }),
337
- clearDepth: (update, depth) => update({
338
- [2931]: depth
339
- }),
340
- clearStencil: (update, s) => update({
341
- [2961]: s
342
- }),
343
- colorMask: (update, r, g, b, a) => update({
344
- [3107]: [r, g, b, a]
345
- }),
346
- cullFace: (update, mode) => update({
347
- [2885]: mode
348
- }),
349
- depthFunc: (update, func) => update({
350
- [2932]: func
351
- }),
352
- depthRange: (update, zNear, zFar) => update({
353
- [2928]: new Float32Array([zNear, zFar])
354
- }),
355
- depthMask: (update, mask) => update({
356
- [2930]: mask
357
- }),
358
- frontFace: (update, face) => update({
359
- [2886]: face
360
- }),
361
- lineWidth: (update, width) => update({
362
- [2849]: width
363
- }),
364
- polygonOffset: (update, factor, units) => update({
365
- [32824]: factor,
366
- [10752]: units
367
- }),
368
- sampleCoverage: (update, value, invert) => update({
369
- [32938]: value,
370
- [32939]: invert
371
- }),
372
- scissor: (update, x, y, width, height) => update({
373
- [3088]: new Int32Array([x, y, width, height])
374
- }),
375
- stencilMask: (update, mask) => update({
376
- [2968]: mask,
377
- [36005]: mask
378
- }),
379
- stencilMaskSeparate: (update, face, mask) => update({
380
- [face === 1028 ? 2968 : 36005]: mask
381
- }),
382
- stencilFunc: (update, func, ref, mask) => update({
383
- [2962]: func,
384
- [2967]: ref,
385
- [2963]: mask,
386
- [34816]: func,
387
- [36003]: ref,
388
- [36004]: mask
389
- }),
390
- stencilFuncSeparate: (update, face, func, ref, mask) => update({
391
- [face === 1028 ? 2962 : 34816]: func,
392
- [face === 1028 ? 2967 : 36003]: ref,
393
- [face === 1028 ? 2963 : 36004]: mask
394
- }),
395
- stencilOp: (update, fail, zfail, zpass) => update({
396
- [2964]: fail,
397
- [2965]: zfail,
398
- [2966]: zpass,
399
- [34817]: fail,
400
- [34818]: zfail,
401
- [34819]: zpass
402
- }),
403
- stencilOpSeparate: (update, face, fail, zfail, zpass) => update({
404
- [face === 1028 ? 2964 : 34817]: fail,
405
- [face === 1028 ? 2965 : 34818]: zfail,
406
- [face === 1028 ? 2966 : 34819]: zpass
407
- }),
408
- viewport: (update, x, y, width, height) => update({
409
- [2978]: [x, y, width, height]
410
- })
283
+ // GENERIC SETTERS
284
+ enable: (update, capability) => update({
285
+ [capability]: true
286
+ }),
287
+ disable: (update, capability) => update({
288
+ [capability]: false
289
+ }),
290
+ pixelStorei: (update, pname, value) => update({
291
+ [pname]: value
292
+ }),
293
+ hint: (update, pname, hint) => update({
294
+ [pname]: hint
295
+ }),
296
+ // SPECIFIC SETTERS
297
+ useProgram: (update, value) => update({
298
+ [35725]: value
299
+ }),
300
+ bindRenderbuffer: (update, target, value) => update({
301
+ [36007]: value
302
+ }),
303
+ bindTransformFeedback: (update, target, value) => update({
304
+ [36389]: value
305
+ }),
306
+ bindVertexArray: (update, value) => update({
307
+ [34229]: value
308
+ }),
309
+ bindFramebuffer: (update, target, framebuffer) => {
310
+ switch (target) {
311
+ case 36160:
312
+ return update({
313
+ [36006]: framebuffer,
314
+ [36010]: framebuffer
315
+ });
316
+ case 36009:
317
+ return update({ [36006]: framebuffer });
318
+ case 36008:
319
+ return update({ [36010]: framebuffer });
320
+ default:
321
+ return null;
322
+ }
323
+ },
324
+ bindBuffer: (update, target, buffer) => {
325
+ const pname = {
326
+ [34962]: [34964],
327
+ [36662]: [36662],
328
+ [36663]: [36663],
329
+ [35051]: [35053],
330
+ [35052]: [35055]
331
+ }[target];
332
+ if (pname) {
333
+ return update({ [pname]: buffer });
334
+ }
335
+ // targets that should not be cached
336
+ return { valueChanged: true };
337
+ },
338
+ blendColor: (update, r, g, b, a) => update({
339
+ [32773]: new Float32Array([r, g, b, a])
340
+ }),
341
+ blendEquation: (update, mode) => update({
342
+ [32777]: mode,
343
+ [34877]: mode
344
+ }),
345
+ blendEquationSeparate: (update, modeRGB, modeAlpha) => update({
346
+ [32777]: modeRGB,
347
+ [34877]: modeAlpha
348
+ }),
349
+ blendFunc: (update, src, dst) => update({
350
+ [32969]: src,
351
+ [32968]: dst,
352
+ [32971]: src,
353
+ [32970]: dst
354
+ }),
355
+ blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) => update({
356
+ [32969]: srcRGB,
357
+ [32968]: dstRGB,
358
+ [32971]: srcAlpha,
359
+ [32970]: dstAlpha
360
+ }),
361
+ clearColor: (update, r, g, b, a) => update({
362
+ [3106]: new Float32Array([r, g, b, a])
363
+ }),
364
+ clearDepth: (update, depth) => update({
365
+ [2931]: depth
366
+ }),
367
+ clearStencil: (update, s) => update({
368
+ [2961]: s
369
+ }),
370
+ colorMask: (update, r, g, b, a) => update({
371
+ [3107]: [r, g, b, a]
372
+ }),
373
+ cullFace: (update, mode) => update({
374
+ [2885]: mode
375
+ }),
376
+ depthFunc: (update, func) => update({
377
+ [2932]: func
378
+ }),
379
+ depthRange: (update, zNear, zFar) => update({
380
+ [2928]: new Float32Array([zNear, zFar])
381
+ }),
382
+ depthMask: (update, mask) => update({
383
+ [2930]: mask
384
+ }),
385
+ frontFace: (update, face) => update({
386
+ [2886]: face
387
+ }),
388
+ lineWidth: (update, width) => update({
389
+ [2849]: width
390
+ }),
391
+ polygonOffset: (update, factor, units) => update({
392
+ [32824]: factor,
393
+ [10752]: units
394
+ }),
395
+ sampleCoverage: (update, value, invert) => update({
396
+ [32938]: value,
397
+ [32939]: invert
398
+ }),
399
+ scissor: (update, x, y, width, height) => update({
400
+ [3088]: new Int32Array([x, y, width, height])
401
+ }),
402
+ stencilMask: (update, mask) => update({
403
+ [2968]: mask,
404
+ [36005]: mask
405
+ }),
406
+ stencilMaskSeparate: (update, face, mask) => update({
407
+ [face === 1028 ? 2968 : 36005]: mask
408
+ }),
409
+ stencilFunc: (update, func, ref, mask) => update({
410
+ [2962]: func,
411
+ [2967]: ref,
412
+ [2963]: mask,
413
+ [34816]: func,
414
+ [36003]: ref,
415
+ [36004]: mask
416
+ }),
417
+ stencilFuncSeparate: (update, face, func, ref, mask) => update({
418
+ [face === 1028 ? 2962 : 34816]: func,
419
+ [face === 1028 ? 2967 : 36003]: ref,
420
+ [face === 1028 ? 2963 : 36004]: mask
421
+ }),
422
+ stencilOp: (update, fail, zfail, zpass) => update({
423
+ [2964]: fail,
424
+ [2965]: zfail,
425
+ [2966]: zpass,
426
+ [34817]: fail,
427
+ [34818]: zfail,
428
+ [34819]: zpass
429
+ }),
430
+ stencilOpSeparate: (update, face, fail, zfail, zpass) => update({
431
+ [face === 1028 ? 2964 : 34817]: fail,
432
+ [face === 1028 ? 2965 : 34818]: zfail,
433
+ [face === 1028 ? 2966 : 34819]: zpass
434
+ }),
435
+ viewport: (update, x, y, width, height) => update({
436
+ [2978]: [x, y, width, height]
437
+ })
411
438
  };
439
+ // GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT
412
440
  const isEnabled = (gl, key) => gl.isEnabled(key);
441
+ // Exceptions for any keys that cannot be queried by gl.getParameters
413
442
  export const GL_PARAMETER_GETTERS = {
414
- [3042]: isEnabled,
415
- [2884]: isEnabled,
416
- [2929]: isEnabled,
417
- [3024]: isEnabled,
418
- [32823]: isEnabled,
419
- [32926]: isEnabled,
420
- [32928]: isEnabled,
421
- [3089]: isEnabled,
422
- [2960]: isEnabled,
423
- [35977]: isEnabled
443
+ [3042]: isEnabled,
444
+ [2884]: isEnabled,
445
+ [2929]: isEnabled,
446
+ [3024]: isEnabled,
447
+ [32823]: isEnabled,
448
+ [32926]: isEnabled,
449
+ [32928]: isEnabled,
450
+ [3089]: isEnabled,
451
+ [2960]: isEnabled,
452
+ [35977]: isEnabled
424
453
  };
425
- export const NON_CACHE_PARAMETERS = new Set([34016, 36388, 36387, 35983, 35368, 34965, 35739, 35738, 3074, 34853, 34854, 34855, 34856, 34857, 34858, 34859, 34860, 34861, 34862, 34863, 34864, 34865, 34866, 34867, 34868, 35097, 32873, 35869, 32874, 34068]);
426
- //# sourceMappingURL=webgl-parameter-tables.js.map
454
+ export const NON_CACHE_PARAMETERS = new Set([
455
+ 34016,
456
+ 36388,
457
+ 36387,
458
+ 35983,
459
+ 35368,
460
+ 34965,
461
+ 35739,
462
+ 35738,
463
+ 3074,
464
+ 34853,
465
+ 34854,
466
+ 34855,
467
+ 34856,
468
+ 34857,
469
+ 34858,
470
+ 34859,
471
+ 34860,
472
+ 34861,
473
+ 34862,
474
+ 34863,
475
+ 34864,
476
+ 34865,
477
+ 34866,
478
+ 34867,
479
+ 34868,
480
+ 35097,
481
+ 32873,
482
+ 35869,
483
+ 32874,
484
+ 34068
485
+ ]);