@luma.gl/webgl 9.0.0-beta.5 → 9.0.0-beta.7

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 (192) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +128 -71
  3. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/sampler-parameters.js +20 -19
  5. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  6. package/dist/adapter/converters/shader-formats.js +40 -20
  7. package/dist/adapter/converters/texture-formats.d.ts +16 -11
  8. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  9. package/dist/adapter/converters/texture-formats.js +224 -205
  10. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  11. package/dist/adapter/converters/vertex-formats.js +22 -21
  12. package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -5
  13. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  14. package/dist/adapter/device-helpers/webgl-device-features.js +89 -43
  15. package/dist/adapter/device-helpers/webgl-device-info.d.ts +2 -1
  16. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -1
  17. package/dist/adapter/device-helpers/webgl-device-info.js +22 -19
  18. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +33 -48
  19. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/webgl-device-limits.js +42 -87
  21. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  22. package/dist/adapter/helpers/decode-webgl-types.js +47 -46
  23. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  24. package/dist/adapter/helpers/get-shader-layout.js +35 -34
  25. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  26. package/dist/adapter/helpers/parse-shader-compiler-log.js +3 -2
  27. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  28. package/dist/adapter/helpers/set-uniform.js +42 -41
  29. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  30. package/dist/adapter/helpers/webgl-topology-utils.js +40 -39
  31. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  32. package/dist/adapter/objects/constants-to-keys.js +2 -1
  33. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  34. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  35. package/dist/adapter/objects/webgl-renderbuffer.js +30 -17
  36. package/dist/adapter/objects/webgl-resource.d.ts +2 -24
  37. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  38. package/dist/adapter/objects/webgl-resource.js +6 -101
  39. package/dist/adapter/resources/webgl-buffer.d.ts +1 -1
  40. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  41. package/dist/adapter/resources/webgl-buffer.js +16 -15
  42. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  43. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  44. package/dist/adapter/resources/webgl-command-buffer.js +32 -31
  45. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  46. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  47. package/dist/adapter/resources/webgl-command-encoder.js +4 -2
  48. package/dist/adapter/resources/webgl-external-texture.js +6 -5
  49. package/dist/adapter/resources/webgl-framebuffer.d.ts +6 -10
  50. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-framebuffer.js +60 -53
  52. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  53. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  54. package/dist/adapter/resources/webgl-query-set.js +136 -0
  55. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  56. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-render-pass.js +20 -12
  58. package/dist/adapter/resources/webgl-render-pipeline.d.ts +4 -5
  59. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-render-pipeline.js +52 -61
  61. package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
  62. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgl-sampler.js +5 -4
  64. package/dist/adapter/resources/webgl-shader.d.ts +3 -2
  65. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-shader.js +15 -9
  67. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  68. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  69. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  70. package/dist/adapter/resources/webgl-texture.d.ts +6 -4
  71. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgl-texture.js +39 -32
  73. package/dist/adapter/resources/webgl-transform-feedback.d.ts +1 -1
  74. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-transform-feedback.js +10 -10
  76. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  77. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-vertex-array.js +10 -9
  79. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  80. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  81. package/dist/adapter/webgl-canvas-context.js +3 -2
  82. package/dist/adapter/webgl-device.d.ts +35 -30
  83. package/dist/adapter/webgl-device.d.ts.map +1 -1
  84. package/dist/adapter/webgl-device.js +110 -109
  85. package/dist/classic/accessor.d.ts.map +1 -1
  86. package/dist/classic/accessor.js +8 -7
  87. package/dist/classic/clear.d.ts.map +1 -1
  88. package/dist/classic/clear.js +5 -4
  89. package/dist/classic/copy-and-blit.d.ts +1 -1
  90. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  91. package/dist/classic/copy-and-blit.js +19 -19
  92. package/dist/classic/format-utils.d.ts.map +1 -1
  93. package/dist/classic/format-utils.js +16 -15
  94. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  95. package/dist/classic/typed-array-utils.js +20 -19
  96. package/dist/context/debug/spector.d.ts.map +1 -1
  97. package/dist/context/debug/spector.js +2 -1
  98. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  99. package/dist/context/debug/webgl-developer-tools.js +7 -6
  100. package/dist/context/{context → helpers}/create-browser-context.d.ts.map +1 -1
  101. package/dist/context/{context → helpers}/create-browser-context.js +2 -1
  102. package/dist/context/{context/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -3
  103. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  104. package/dist/context/helpers/webgl-context-data.js +21 -0
  105. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  106. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  107. package/dist/context/helpers/webgl-extensions.js +10 -0
  108. package/dist/context/parameters/unified-parameter-api.d.ts +3 -4
  109. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  110. package/dist/context/parameters/unified-parameter-api.js +7 -11
  111. package/dist/context/parameters/webgl-parameter-tables.d.ts +12 -13
  112. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  113. package/dist/context/parameters/webgl-parameter-tables.js +302 -295
  114. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  115. package/dist/context/state-tracker/deep-array-equal.js +2 -1
  116. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  117. package/dist/context/state-tracker/track-context-state.js +5 -4
  118. package/dist/context/state-tracker/with-parameters.d.ts +2 -3
  119. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  120. package/dist/context/state-tracker/with-parameters.js +6 -8
  121. package/dist/dist.dev.js +1635 -1387
  122. package/dist/index.cjs +1766 -1534
  123. package/dist/index.cjs.map +4 -4
  124. package/dist/index.d.ts +25 -25
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +24 -23
  127. package/dist/types.d.ts.map +1 -1
  128. package/dist/types.js +2 -1
  129. package/dist.min.js +6 -6
  130. package/package.json +4 -4
  131. package/src/adapter/converters/device-parameters.ts +114 -27
  132. package/src/adapter/converters/sampler-parameters.ts +12 -3
  133. package/src/adapter/converters/shader-formats.ts +47 -22
  134. package/src/adapter/converters/texture-formats.ts +138 -114
  135. package/src/adapter/converters/vertex-formats.ts +3 -3
  136. package/src/adapter/device-helpers/webgl-device-features.ts +102 -50
  137. package/src/adapter/device-helpers/webgl-device-info.ts +28 -19
  138. package/src/adapter/device-helpers/webgl-device-limits.ts +46 -150
  139. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  140. package/src/adapter/helpers/get-shader-layout.ts +4 -3
  141. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  142. package/src/adapter/helpers/set-uniform.ts +2 -1
  143. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  144. package/src/adapter/objects/constants-to-keys.ts +2 -1
  145. package/src/adapter/objects/webgl-renderbuffer.ts +36 -14
  146. package/src/adapter/objects/webgl-resource.ts +7 -125
  147. package/src/adapter/resources/webgl-buffer.ts +4 -3
  148. package/src/adapter/resources/webgl-command-buffer.ts +5 -5
  149. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  150. package/src/adapter/resources/webgl-external-texture.ts +6 -5
  151. package/src/adapter/resources/webgl-framebuffer.ts +61 -53
  152. package/src/adapter/resources/webgl-query-set.ts +171 -0
  153. package/src/adapter/resources/webgl-render-pass.ts +20 -11
  154. package/src/adapter/resources/webgl-render-pipeline.ts +54 -54
  155. package/src/adapter/resources/webgl-sampler.ts +2 -1
  156. package/src/adapter/resources/webgl-shader.ts +12 -5
  157. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  158. package/src/adapter/resources/webgl-texture.ts +14 -3
  159. package/src/adapter/resources/webgl-transform-feedback.ts +2 -7
  160. package/src/adapter/resources/webgl-vertex-array.ts +4 -3
  161. package/src/adapter/webgl-canvas-context.ts +6 -4
  162. package/src/adapter/webgl-device.ts +116 -107
  163. package/src/classic/accessor.ts +5 -4
  164. package/src/classic/clear.ts +14 -8
  165. package/src/classic/copy-and-blit.ts +11 -4
  166. package/src/classic/format-utils.ts +2 -1
  167. package/src/classic/typed-array-utils.ts +3 -7
  168. package/src/context/debug/spector.ts +9 -6
  169. package/src/context/debug/webgl-developer-tools.ts +27 -14
  170. package/src/context/{context → helpers}/create-browser-context.ts +3 -2
  171. package/src/context/helpers/webgl-context-data.ts +31 -0
  172. package/src/context/helpers/webgl-extensions.ts +17 -0
  173. package/src/context/parameters/unified-parameter-api.ts +6 -17
  174. package/src/context/parameters/webgl-parameter-tables.ts +69 -32
  175. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  176. package/src/context/state-tracker/track-context-state.ts +11 -6
  177. package/src/context/state-tracker/with-parameters.ts +8 -8
  178. package/src/index.ts +7 -6
  179. package/src/types.ts +2 -1
  180. package/dist/adapter/device-helpers/device-features.d.ts +0 -6
  181. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  182. package/dist/adapter/device-helpers/device-features.js +0 -65
  183. package/dist/adapter/device-helpers/device-limits.d.ts +0 -50
  184. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  185. package/dist/adapter/device-helpers/device-limits.js +0 -92
  186. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  187. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  188. package/dist/adapter/device-helpers/get-device-info.js +0 -87
  189. package/dist/context/context/context-data.d.ts.map +0 -1
  190. package/dist/context/context/context-data.js +0 -33
  191. package/src/context/context/context-data.ts +0 -44
  192. /package/dist/context/{context → helpers}/create-browser-context.d.ts +0 -0
@@ -1,105 +1,103 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
  // Tables describing WebGL parameters
4
5
  import { GL } from '@luma.gl/constants';
5
6
  // DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS
6
7
  /* eslint-disable no-shadow */
7
8
  export const GL_PARAMETER_DEFAULTS = {
8
- [GL.BLEND]: false,
9
- [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),
10
- [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,
11
- [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,
12
- [GL.BLEND_SRC_RGB]: GL.ONE,
13
- [GL.BLEND_DST_RGB]: GL.ZERO,
14
- [GL.BLEND_SRC_ALPHA]: GL.ONE,
15
- [GL.BLEND_DST_ALPHA]: GL.ZERO,
16
- [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD
17
- [GL.COLOR_WRITEMASK]: [true, true, true, true],
18
- [GL.CULL_FACE]: false,
19
- [GL.CULL_FACE_MODE]: GL.BACK,
20
- [GL.DEPTH_TEST]: false,
21
- [GL.DEPTH_CLEAR_VALUE]: 1,
22
- [GL.DEPTH_FUNC]: GL.LESS,
23
- [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD
24
- [GL.DEPTH_WRITEMASK]: true,
25
- [GL.DITHER]: true,
26
- [GL.CURRENT_PROGRAM]: null,
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,
27
28
  // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
28
- [GL.FRAMEBUFFER_BINDING]: null,
29
- [GL.RENDERBUFFER_BINDING]: null,
30
- [GL.VERTEX_ARRAY_BINDING]: null,
31
- [GL.ARRAY_BUFFER_BINDING]: null,
32
- [GL.FRONT_FACE]: GL.CCW,
33
- [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,
34
- [GL.LINE_WIDTH]: 1,
35
- [GL.POLYGON_OFFSET_FILL]: false,
36
- [GL.POLYGON_OFFSET_FACTOR]: 0,
37
- [GL.POLYGON_OFFSET_UNITS]: 0,
38
- [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,
39
- [GL.SAMPLE_COVERAGE]: false,
40
- [GL.SAMPLE_COVERAGE_VALUE]: 1.0,
41
- [GL.SAMPLE_COVERAGE_INVERT]: false,
42
- [GL.SCISSOR_TEST]: false,
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,
43
44
  // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box
44
- [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),
45
- [GL.STENCIL_TEST]: false,
46
- [GL.STENCIL_CLEAR_VALUE]: 0,
47
- [GL.STENCIL_WRITEMASK]: 0xffffffff,
48
- [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,
49
- [GL.STENCIL_FUNC]: GL.ALWAYS,
50
- [GL.STENCIL_REF]: 0,
51
- [GL.STENCIL_VALUE_MASK]: 0xffffffff,
52
- [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,
53
- [GL.STENCIL_BACK_REF]: 0,
54
- [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,
55
- [GL.STENCIL_FAIL]: GL.KEEP,
56
- [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,
57
- [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,
58
- [GL.STENCIL_BACK_FAIL]: GL.KEEP,
59
- [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,
60
- [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,
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,
61
62
  // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.
62
- [GL.VIEWPORT]: [0, 0, 1024, 1024],
63
- // WEBGL1 PIXEL PACK/UNPACK MODES
64
- [GL.PACK_ALIGNMENT]: 4,
65
- [GL.UNPACK_ALIGNMENT]: 4,
66
- [GL.UNPACK_FLIP_Y_WEBGL]: false,
67
- [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,
68
- [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,
69
- // WEBGL2 / EXTENSIONS
70
- // gl1: 'OES_standard_derivatives'
71
- [GL.TRANSFORM_FEEDBACK_BINDING]: null,
72
- [GL.COPY_READ_BUFFER_BINDING]: null,
73
- [GL.COPY_WRITE_BUFFER_BINDING]: null,
74
- [GL.PIXEL_PACK_BUFFER_BINDING]: null,
75
- [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,
76
- [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,
77
- [GL.READ_FRAMEBUFFER_BINDING]: null,
78
- [GL.RASTERIZER_DISCARD]: false,
79
- [GL.PACK_ROW_LENGTH]: 0,
80
- [GL.PACK_SKIP_PIXELS]: 0,
81
- [GL.PACK_SKIP_ROWS]: 0,
82
- [GL.UNPACK_ROW_LENGTH]: 0,
83
- [GL.UNPACK_IMAGE_HEIGHT]: 0,
84
- [GL.UNPACK_SKIP_PIXELS]: 0,
85
- [GL.UNPACK_SKIP_ROWS]: 0,
86
- [GL.UNPACK_SKIP_IMAGES]: 0
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
87
85
  };
88
86
  // SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API
89
87
  const enable = (gl, value, key) => value ? gl.enable(key) : gl.disable(key);
90
88
  const hint = (gl, value, key) => gl.hint(key, value);
91
89
  const pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);
92
90
  const bindFramebuffer = (gl, value, key) => {
93
- const target = (key === GL.FRAMEBUFFER_BINDING) ? GL.DRAW_FRAMEBUFFER : GL.READ_FRAMEBUFFER;
91
+ const target = key === 36006 ? 36009 : 36008;
94
92
  return gl.bindFramebuffer(target, value);
95
93
  };
96
94
  const bindBuffer = (gl, value, key) => {
97
95
  const bindingMap = {
98
- [GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,
99
- [GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,
100
- [GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,
101
- [GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,
102
- [GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER
96
+ [34964]: 34962,
97
+ [36662]: 36662,
98
+ [36663]: 36663,
99
+ [35053]: 35051,
100
+ [35055]: 35052
103
101
  };
104
102
  const glTarget = bindingMap[key];
105
103
  gl.bindBuffer(glTarget, value);
@@ -112,92 +110,107 @@ function isArray(array) {
112
110
  // WegGL constants are read by parameter names, but set by function names
113
111
  // NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'
114
112
  export const GL_PARAMETER_SETTERS = {
115
- [GL.BLEND]: enable,
116
- [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),
117
- [GL.BLEND_EQUATION_RGB]: 'blendEquation',
118
- [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',
119
- [GL.BLEND_SRC_RGB]: 'blendFunc',
120
- [GL.BLEND_DST_RGB]: 'blendFunc',
121
- [GL.BLEND_SRC_ALPHA]: 'blendFunc',
122
- [GL.BLEND_DST_ALPHA]: 'blendFunc',
123
- [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),
124
- [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),
125
- [GL.CULL_FACE]: enable,
126
- [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),
127
- [GL.DEPTH_TEST]: enable,
128
- [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),
129
- [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),
130
- [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),
131
- [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),
132
- [GL.DITHER]: enable,
133
- [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,
134
- [GL.CURRENT_PROGRAM]: (gl, value) => gl.useProgram(value),
135
- [GL.RENDERBUFFER_BINDING]: (gl, value) => gl.bindRenderbuffer(GL.RENDERBUFFER, value),
136
- [GL.TRANSFORM_FEEDBACK_BINDING]: (gl, value) => (gl).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),
137
- [GL.VERTEX_ARRAY_BINDING]: (gl, value) => (gl).bindVertexArray(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),
138
136
  // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
139
- [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,
140
- [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,
137
+ [36006]: bindFramebuffer,
138
+ [36010]: bindFramebuffer,
141
139
  // Buffers
142
- [GL.ARRAY_BUFFER_BINDING]: bindBuffer,
143
- [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,
144
- [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,
145
- [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,
146
- [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,
147
- [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),
148
- [GL.GENERATE_MIPMAP_HINT]: hint,
149
- [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),
150
- [GL.POLYGON_OFFSET_FILL]: enable,
151
- [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',
152
- [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',
153
- [GL.RASTERIZER_DISCARD]: enable,
154
- [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,
155
- [GL.SAMPLE_COVERAGE]: enable,
156
- [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',
157
- [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',
158
- [GL.SCISSOR_TEST]: enable,
159
- [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),
160
- [GL.STENCIL_TEST]: enable,
161
- [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),
162
- [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),
163
- [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),
164
- [GL.STENCIL_FUNC]: 'stencilFuncFront',
165
- [GL.STENCIL_REF]: 'stencilFuncFront',
166
- [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',
167
- [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',
168
- [GL.STENCIL_BACK_REF]: 'stencilFuncBack',
169
- [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',
170
- [GL.STENCIL_FAIL]: 'stencilOpFront',
171
- [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',
172
- [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',
173
- [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',
174
- [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',
175
- [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',
176
- [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),
177
- // WEBGL1 PIXEL PACK/UNPACK MODES
178
- [GL.PACK_ALIGNMENT]: pixelStorei,
179
- [GL.UNPACK_ALIGNMENT]: pixelStorei,
180
- [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,
181
- [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,
182
- [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,
183
- // WEBGL2 PIXEL PACK/UNPACK MODES
184
- // RASTERIZER_DISCARD ...
185
- [GL.PACK_ROW_LENGTH]: pixelStorei,
186
- [GL.PACK_SKIP_PIXELS]: pixelStorei,
187
- [GL.PACK_SKIP_ROWS]: pixelStorei,
188
- [GL.UNPACK_ROW_LENGTH]: pixelStorei,
189
- [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,
190
- [GL.UNPACK_SKIP_PIXELS]: pixelStorei,
191
- [GL.UNPACK_SKIP_ROWS]: pixelStorei,
192
- [GL.UNPACK_SKIP_IMAGES]: pixelStorei,
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,
193
206
  // Function-style setters
194
207
  framebuffer: (gl, framebuffer) => {
195
208
  // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class
196
209
  // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.
197
210
  const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;
198
- return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
211
+ return gl.bindFramebuffer(36160, handle);
199
212
  },
200
- blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),
213
+ blend: (gl, value) => value ? gl.enable(3042) : gl.disable(3042),
201
214
  blendColor: (gl, value) => gl.blendColor(...value),
202
215
  blendEquation: (gl, args) => {
203
216
  const separateModes = typeof args === 'number' ? [args, args] : args;
@@ -211,43 +224,43 @@ export const GL_PARAMETER_SETTERS = {
211
224
  clearDepth: (gl, value) => gl.clearDepth(value),
212
225
  clearStencil: (gl, value) => gl.clearStencil(value),
213
226
  colorMask: (gl, value) => gl.colorMask(...value),
214
- cull: (gl, value) => value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),
227
+ cull: (gl, value) => value ? gl.enable(2884) : gl.disable(2884),
215
228
  cullFace: (gl, value) => gl.cullFace(value),
216
- depthTest: (gl, value) => value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),
229
+ depthTest: (gl, value) => value ? gl.enable(2929) : gl.disable(2929),
217
230
  depthFunc: (gl, value) => gl.depthFunc(value),
218
231
  depthMask: (gl, value) => gl.depthMask(value),
219
232
  depthRange: (gl, value) => gl.depthRange(...value),
220
- dither: (gl, value) => value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),
233
+ dither: (gl, value) => value ? gl.enable(3024) : gl.disable(3024),
221
234
  derivativeHint: (gl, value) => {
222
235
  // gl1: 'OES_standard_derivatives'
223
- gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);
236
+ gl.hint(35723, value);
224
237
  },
225
238
  frontFace: (gl, value) => gl.frontFace(value),
226
- mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),
239
+ mipmapHint: (gl, value) => gl.hint(33170, value),
227
240
  lineWidth: (gl, value) => gl.lineWidth(value),
228
- polygonOffsetFill: (gl, value) => value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),
241
+ polygonOffsetFill: (gl, value) => value ? gl.enable(32823) : gl.disable(32823),
229
242
  polygonOffset: (gl, value) => gl.polygonOffset(...value),
230
243
  sampleCoverage: (gl, value) => gl.sampleCoverage(...value),
231
- scissorTest: (gl, value) => value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),
244
+ scissorTest: (gl, value) => value ? gl.enable(3089) : gl.disable(3089),
232
245
  scissor: (gl, value) => gl.scissor(...value),
233
- stencilTest: (gl, value) => value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),
246
+ stencilTest: (gl, value) => value ? gl.enable(2960) : gl.disable(2960),
234
247
  stencilMask: (gl, value) => {
235
248
  value = isArray(value) ? value : [value, value];
236
249
  const [mask, backMask] = value;
237
- gl.stencilMaskSeparate(GL.FRONT, mask);
238
- gl.stencilMaskSeparate(GL.BACK, backMask);
250
+ gl.stencilMaskSeparate(1028, mask);
251
+ gl.stencilMaskSeparate(1029, backMask);
239
252
  },
240
253
  stencilFunc: (gl, args) => {
241
254
  args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
242
255
  const [func, ref, mask, backFunc, backRef, backMask] = args;
243
- gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);
244
- gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);
256
+ gl.stencilFuncSeparate(1028, func, ref, mask);
257
+ gl.stencilFuncSeparate(1029, backFunc, backRef, backMask);
245
258
  },
246
259
  stencilOp: (gl, args) => {
247
260
  args = isArray(args) && args.length === 3 ? [...args, ...args] : args;
248
261
  const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;
249
- gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
250
- gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);
262
+ gl.stencilOpSeparate(1028, sfail, dpfail, dppass);
263
+ gl.stencilOpSeparate(1029, backSfail, backDpfail, backDppass);
251
264
  },
252
265
  viewport: (gl, value) => gl.viewport(...value)
253
266
  };
@@ -256,14 +269,14 @@ function getValue(glEnum, values, cache) {
256
269
  }
257
270
  // COMPOSITE_WEBGL_PARAMETER_
258
271
  export const GL_COMPOSITE_PARAMETER_SETTERS = {
259
- blendEquation: (gl, values, cache) => gl.blendEquationSeparate(getValue(GL.BLEND_EQUATION_RGB, values, cache), getValue(GL.BLEND_EQUATION_ALPHA, values, cache)),
260
- blendFunc: (gl, values, cache) => gl.blendFuncSeparate(getValue(GL.BLEND_SRC_RGB, values, cache), getValue(GL.BLEND_DST_RGB, values, cache), getValue(GL.BLEND_SRC_ALPHA, values, cache), getValue(GL.BLEND_DST_ALPHA, values, cache)),
261
- polygonOffset: (gl, values, cache) => gl.polygonOffset(getValue(GL.POLYGON_OFFSET_FACTOR, values, cache), getValue(GL.POLYGON_OFFSET_UNITS, values, cache)),
262
- sampleCoverage: (gl, values, cache) => gl.sampleCoverage(getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache), getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)),
263
- stencilFuncFront: (gl, values, cache) => gl.stencilFuncSeparate(GL.FRONT, getValue(GL.STENCIL_FUNC, values, cache), getValue(GL.STENCIL_REF, values, cache), getValue(GL.STENCIL_VALUE_MASK, values, cache)),
264
- stencilFuncBack: (gl, values, cache) => gl.stencilFuncSeparate(GL.BACK, getValue(GL.STENCIL_BACK_FUNC, values, cache), getValue(GL.STENCIL_BACK_REF, values, cache), getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)),
265
- stencilOpFront: (gl, values, cache) => gl.stencilOpSeparate(GL.FRONT, getValue(GL.STENCIL_FAIL, values, cache), getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache), getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)),
266
- stencilOpBack: (gl, values, cache) => gl.stencilOpSeparate(GL.BACK, getValue(GL.STENCIL_BACK_FAIL, values, cache), getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache), getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, 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))
267
280
  };
268
281
  // Setter functions intercepted for cache updates
269
282
  export const GL_HOOKED_SETTERS = {
@@ -282,39 +295,39 @@ export const GL_HOOKED_SETTERS = {
282
295
  }),
283
296
  // SPECIFIC SETTERS
284
297
  useProgram: (update, value) => update({
285
- [GL.CURRENT_PROGRAM]: value
298
+ [35725]: value
286
299
  }),
287
300
  bindRenderbuffer: (update, target, value) => update({
288
- [GL.RENDERBUFFER_BINDING]: value
301
+ [36007]: value
289
302
  }),
290
303
  bindTransformFeedback: (update, target, value) => update({
291
- [GL.TRANSFORM_FEEDBACK_BINDING]: value
304
+ [36389]: value
292
305
  }),
293
306
  bindVertexArray: (update, value) => update({
294
- [GL.VERTEX_ARRAY_BINDING]: value
307
+ [34229]: value
295
308
  }),
296
309
  bindFramebuffer: (update, target, framebuffer) => {
297
310
  switch (target) {
298
- case GL.FRAMEBUFFER:
311
+ case 36160:
299
312
  return update({
300
- [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,
301
- [GL.READ_FRAMEBUFFER_BINDING]: framebuffer
313
+ [36006]: framebuffer,
314
+ [36010]: framebuffer
302
315
  });
303
- case GL.DRAW_FRAMEBUFFER:
304
- return update({ [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer });
305
- case GL.READ_FRAMEBUFFER:
306
- return update({ [GL.READ_FRAMEBUFFER_BINDING]: framebuffer });
316
+ case 36009:
317
+ return update({ [36006]: framebuffer });
318
+ case 36008:
319
+ return update({ [36010]: framebuffer });
307
320
  default:
308
321
  return null;
309
322
  }
310
323
  },
311
324
  bindBuffer: (update, target, buffer) => {
312
325
  const pname = {
313
- [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],
314
- [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],
315
- [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],
316
- [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],
317
- [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]
326
+ [34962]: [34964],
327
+ [36662]: [36662],
328
+ [36663]: [36663],
329
+ [35051]: [35053],
330
+ [35052]: [35055]
318
331
  }[target];
319
332
  if (pname) {
320
333
  return update({ [pname]: buffer });
@@ -323,156 +336,150 @@ export const GL_HOOKED_SETTERS = {
323
336
  return { valueChanged: true };
324
337
  },
325
338
  blendColor: (update, r, g, b, a) => update({
326
- [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])
339
+ [32773]: new Float32Array([r, g, b, a])
327
340
  }),
328
341
  blendEquation: (update, mode) => update({
329
- [GL.BLEND_EQUATION_RGB]: mode,
330
- [GL.BLEND_EQUATION_ALPHA]: mode
342
+ [32777]: mode,
343
+ [34877]: mode
331
344
  }),
332
345
  blendEquationSeparate: (update, modeRGB, modeAlpha) => update({
333
- [GL.BLEND_EQUATION_RGB]: modeRGB,
334
- [GL.BLEND_EQUATION_ALPHA]: modeAlpha
346
+ [32777]: modeRGB,
347
+ [34877]: modeAlpha
335
348
  }),
336
349
  blendFunc: (update, src, dst) => update({
337
- [GL.BLEND_SRC_RGB]: src,
338
- [GL.BLEND_DST_RGB]: dst,
339
- [GL.BLEND_SRC_ALPHA]: src,
340
- [GL.BLEND_DST_ALPHA]: dst
350
+ [32969]: src,
351
+ [32968]: dst,
352
+ [32971]: src,
353
+ [32970]: dst
341
354
  }),
342
355
  blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) => update({
343
- [GL.BLEND_SRC_RGB]: srcRGB,
344
- [GL.BLEND_DST_RGB]: dstRGB,
345
- [GL.BLEND_SRC_ALPHA]: srcAlpha,
346
- [GL.BLEND_DST_ALPHA]: dstAlpha
356
+ [32969]: srcRGB,
357
+ [32968]: dstRGB,
358
+ [32971]: srcAlpha,
359
+ [32970]: dstAlpha
347
360
  }),
348
361
  clearColor: (update, r, g, b, a) => update({
349
- [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])
362
+ [3106]: new Float32Array([r, g, b, a])
350
363
  }),
351
364
  clearDepth: (update, depth) => update({
352
- [GL.DEPTH_CLEAR_VALUE]: depth
365
+ [2931]: depth
353
366
  }),
354
367
  clearStencil: (update, s) => update({
355
- [GL.STENCIL_CLEAR_VALUE]: s
368
+ [2961]: s
356
369
  }),
357
370
  colorMask: (update, r, g, b, a) => update({
358
- [GL.COLOR_WRITEMASK]: [r, g, b, a]
371
+ [3107]: [r, g, b, a]
359
372
  }),
360
373
  cullFace: (update, mode) => update({
361
- [GL.CULL_FACE_MODE]: mode
374
+ [2885]: mode
362
375
  }),
363
376
  depthFunc: (update, func) => update({
364
- [GL.DEPTH_FUNC]: func
377
+ [2932]: func
365
378
  }),
366
379
  depthRange: (update, zNear, zFar) => update({
367
- [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])
380
+ [2928]: new Float32Array([zNear, zFar])
368
381
  }),
369
382
  depthMask: (update, mask) => update({
370
- [GL.DEPTH_WRITEMASK]: mask
383
+ [2930]: mask
371
384
  }),
372
385
  frontFace: (update, face) => update({
373
- [GL.FRONT_FACE]: face
386
+ [2886]: face
374
387
  }),
375
388
  lineWidth: (update, width) => update({
376
- [GL.LINE_WIDTH]: width
389
+ [2849]: width
377
390
  }),
378
391
  polygonOffset: (update, factor, units) => update({
379
- [GL.POLYGON_OFFSET_FACTOR]: factor,
380
- [GL.POLYGON_OFFSET_UNITS]: units
392
+ [32824]: factor,
393
+ [10752]: units
381
394
  }),
382
395
  sampleCoverage: (update, value, invert) => update({
383
- [GL.SAMPLE_COVERAGE_VALUE]: value,
384
- [GL.SAMPLE_COVERAGE_INVERT]: invert
396
+ [32938]: value,
397
+ [32939]: invert
385
398
  }),
386
399
  scissor: (update, x, y, width, height) => update({
387
- [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])
400
+ [3088]: new Int32Array([x, y, width, height])
388
401
  }),
389
402
  stencilMask: (update, mask) => update({
390
- [GL.STENCIL_WRITEMASK]: mask,
391
- [GL.STENCIL_BACK_WRITEMASK]: mask
403
+ [2968]: mask,
404
+ [36005]: mask
392
405
  }),
393
406
  stencilMaskSeparate: (update, face, mask) => update({
394
- [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask
407
+ [face === 1028 ? 2968 : 36005]: mask
395
408
  }),
396
409
  stencilFunc: (update, func, ref, mask) => update({
397
- [GL.STENCIL_FUNC]: func,
398
- [GL.STENCIL_REF]: ref,
399
- [GL.STENCIL_VALUE_MASK]: mask,
400
- [GL.STENCIL_BACK_FUNC]: func,
401
- [GL.STENCIL_BACK_REF]: ref,
402
- [GL.STENCIL_BACK_VALUE_MASK]: mask
410
+ [2962]: func,
411
+ [2967]: ref,
412
+ [2963]: mask,
413
+ [34816]: func,
414
+ [36003]: ref,
415
+ [36004]: mask
403
416
  }),
404
417
  stencilFuncSeparate: (update, face, func, ref, mask) => update({
405
- [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,
406
- [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,
407
- [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask
418
+ [face === 1028 ? 2962 : 34816]: func,
419
+ [face === 1028 ? 2967 : 36003]: ref,
420
+ [face === 1028 ? 2963 : 36004]: mask
408
421
  }),
409
422
  stencilOp: (update, fail, zfail, zpass) => update({
410
- [GL.STENCIL_FAIL]: fail,
411
- [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,
412
- [GL.STENCIL_PASS_DEPTH_PASS]: zpass,
413
- [GL.STENCIL_BACK_FAIL]: fail,
414
- [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,
415
- [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass
423
+ [2964]: fail,
424
+ [2965]: zfail,
425
+ [2966]: zpass,
426
+ [34817]: fail,
427
+ [34818]: zfail,
428
+ [34819]: zpass
416
429
  }),
417
430
  stencilOpSeparate: (update, face, fail, zfail, zpass) => update({
418
- [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,
419
- [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,
420
- [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass
431
+ [face === 1028 ? 2964 : 34817]: fail,
432
+ [face === 1028 ? 2965 : 34818]: zfail,
433
+ [face === 1028 ? 2966 : 34819]: zpass
421
434
  }),
422
435
  viewport: (update, x, y, width, height) => update({
423
- [GL.VIEWPORT]: [x, y, width, height]
436
+ [2978]: [x, y, width, height]
424
437
  })
425
438
  };
426
439
  // GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT
427
440
  const isEnabled = (gl, key) => gl.isEnabled(key);
428
441
  // Exceptions for any keys that cannot be queried by gl.getParameters
429
442
  export const GL_PARAMETER_GETTERS = {
430
- [GL.BLEND]: isEnabled,
431
- [GL.CULL_FACE]: isEnabled,
432
- [GL.DEPTH_TEST]: isEnabled,
433
- [GL.DITHER]: isEnabled,
434
- [GL.POLYGON_OFFSET_FILL]: isEnabled,
435
- [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,
436
- [GL.SAMPLE_COVERAGE]: isEnabled,
437
- [GL.SCISSOR_TEST]: isEnabled,
438
- [GL.STENCIL_TEST]: isEnabled,
439
- [GL.RASTERIZER_DISCARD]: 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
440
453
  };
441
454
  export const NON_CACHE_PARAMETERS = new Set([
442
- // setter not intercepted
443
- GL.ACTIVE_TEXTURE,
444
- GL.TRANSFORM_FEEDBACK_ACTIVE,
445
- GL.TRANSFORM_FEEDBACK_PAUSED,
446
- // setters bindBufferRange/bindBufferBase cannot be pruned based on cache
447
- GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,
448
- GL.UNIFORM_BUFFER_BINDING,
449
- // states depending on VERTEX_ARRAY_BINDING
450
- GL.ELEMENT_ARRAY_BUFFER_BINDING,
451
- // states depending on READ_FRAMEBUFFER_BINDING
452
- GL.IMPLEMENTATION_COLOR_READ_FORMAT,
453
- GL.IMPLEMENTATION_COLOR_READ_TYPE,
454
- // states depending on FRAMEBUFFER_BINDING
455
- GL.READ_BUFFER,
456
- GL.DRAW_BUFFER0,
457
- GL.DRAW_BUFFER1,
458
- GL.DRAW_BUFFER2,
459
- GL.DRAW_BUFFER3,
460
- GL.DRAW_BUFFER4,
461
- GL.DRAW_BUFFER5,
462
- GL.DRAW_BUFFER6,
463
- GL.DRAW_BUFFER7,
464
- GL.DRAW_BUFFER8,
465
- GL.DRAW_BUFFER9,
466
- GL.DRAW_BUFFER10,
467
- GL.DRAW_BUFFER11,
468
- GL.DRAW_BUFFER12,
469
- GL.DRAW_BUFFER13,
470
- GL.DRAW_BUFFER14,
471
- GL.DRAW_BUFFER15,
472
- // states depending on ACTIVE_TEXTURE
473
- GL.SAMPLER_BINDING,
474
- GL.TEXTURE_BINDING_2D,
475
- GL.TEXTURE_BINDING_2D_ARRAY,
476
- GL.TEXTURE_BINDING_3D,
477
- GL.TEXTURE_BINDING_CUBE_MAP
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
478
485
  ]);